403Webshell
Server IP : 209.209.40.120  /  Your IP : 216.73.217.112
Web Server : Microsoft-IIS/10.0
System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586
User : NEWWWW$ ( 0)
PHP Version : 8.3.30
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /SolidCP/Portal/bin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /SolidCP/Portal/bin/AjaxControlToolkit.dll
MZ����@���	�!�L�!This program cannot be run in DOS mode.

$PEL�7�N�!�a��a b@ @b�b@�d�aWb� b��a  H.text��a �a `.rsrc�b�a@@.reloc b�a@B��aHD[l�	��
YP ��
�_��z��F��ס�M���n8h-P�eMݽ��?g��k(ƚ��~!���q�
��W���ۀ����%O9��lW
�6�]*��.���V�*����:i��u_���MyG���M���΄�U0�{:
:�s;
}:
{:
(<
o=
(>
<o?

+d	�
п(@
oA
,G�}(@
(B
u},.rpoC
(D
-{:
(E
sF
oG
&X	�i2�{:
*00�4(@
�
rp�M(@
sH
�(I
&*(J
*0v{K
-d}K
К(@
oL
t�
,DoM
,:oN
,2oN
��(@
oO
t�,r!poP
,}K
{K
�*F(E
u6�6*0B(Q
r_p�
(E
(R
�(S
�6o>
oT
�(U
*0ZuM
(V
,G,DoW
(S
�6oX
(Y
,!{Z
-s[
}Z
{Z
(\
*�,+{Z
,#{Z
(E
(]
{Z
o^
}Z
(_
*05uM
(V
,$,!(S
�6��rsp�s�**"(c
*0H(d
(V
-*(e
��(@
of
t�
,og
-��(@
oh
*0o(i
(V
-*oj
ok
��
oj
ol
8*�om
tErsp(Y
,}(S
�6(e
��(@
of
t�
	,U	og
-Mн(@
�D			on
�	oo
op
�

sb
�
(q
oh
or
�B(@
of
tB,goz,^or
��(@
of
t�os
~t
os
3/op
�~u
�~��(q
oh
X�i?���*Z(v
}w
}x
*0�	sy

(z
({
{x
o)o|
,,j(z
o}
u�(~
,R��(@
(
,@(�
r�p�
	{x
o(�	(U
r�pr�ps�
o�
&*0�
{w
o�
oT

(z
({
{x
o)o|
,H(z
o}
u�(~
-.(�
r�p���(U
(�
&�.{x
o,,1(z
({
{x
o+o|

	,	(z
��o�
(+-��o�
&(7r�po�
(
-A(�
r�p�{w
o�
oT
�r�p�(U
(�
&�}s�o�o�(�
,	oy-)(�
rCp��(U
(�
&�+(+-�o�
(�
		,		o�-)(�
rCp��(U
(�
&��(z
({
{x
o*o|


,\
(z
o}
u�(~
-
+:
+
%X
��(�

	{w
(�
-�
(z
o�
o�,o�,o�,	{w
(�
,qo�,h(�
9�(�
r�p��(U
(�
3g,&(�
rZp��(U
o�(�
+3,&(�
r�p��(U
o�	(�
�,o�,o���o�o�(�
��R(�
r�p�o�
oT
�o�
�(�
�o�
�(U
(�
&�*ALo�)2@TTRp0s�8(@
(
u8�8�8q8�8-D(�
r�p�
{w
o�
oT
��8(@
oT
�(U
(�
&**"(�
*6r�p(�
*0s�

o}ow+o
s�o�
o�
-�ݾu2,o�
�o�
9�o9�o�-o�~Q(C-wo�~O(B,o�(�
-os�*o�,Co�ow+o

	s�o�
o�
-��u2,o�
�o�
=K���*$7�!�0{
s�

o�ow
+B	o
s�o,,o�~P(C-o�(�
-s�o�
	o�
-��	u2,o�
�o�
*N`0�o�

(�
8��9�o�9�o�o�
(�
9�o�ov�i3t
o�ow	+9	o
s�o�,o�	%X
�o�
(�
-+		o�
-��	u2

,
o�
�-�X�i?>���**fF�Bo�
+.o�
*0�,og-(�
*ok~Z(c,,o�
-*ooo�
.*olo�
(�
*ok~[(c,o�
-*olo�
(�
*on(�
(�
�*0�{w
o�

~W{w
o�
(�
��~To�o�
+)	�o�
o�
(�
��o�&X	�i2���(@
o�
r&p��o�&��(@
o�
r&p��o�&*0V,o�-*{w
o�

o�-*o�~T(N,*o�ow	+9	o
s�
	o�,	o�%X�o�
(�
,��	o�
-��	u2

,
o�
�o�ow+qo
s�o�,Vo�(~
-o�r(po�
+`o�(~
-o�r<po�
+`,-	o�
-��u2,o�
�,�***FF��~20u,o�-*o�~To�
{w
o�
o�ow+)o
s�
	o�,	%X
�o�
o�o�
-��u2		,	o�
�o�ow
+q
o
s�o�,Vo�(~
-o�r(po�
+`o�(~
-o�r<po�
+`,-	
o�
-��
u2,o�
�-!��(@
o�
r&p��o�&-!��(@
o�
r&p��o�&*96o�~0H,o�-rVprnps�
zo�s�
o�,o�o�o�*o�*0o�s�
o�,o�*��6(�
(�
}�
�6(�
}�
*{�
*0Q{�
-B(�
,{�
(�
�6o�
}�
+{�
(�
�6o�
}�
{�
*{�
*"}�
*�(�
-(�
�6.{�
o�
**�(�
,(�
�63*{�
o�
*
*n|�
�6}�
}�
*J(�
o
(�
*0(�
o

(�

*0Go�
�E
o�
+�o�

	�.	�X�i2�,s�
*2(�
o
*2(�
o
*2(�
o
*2(�
o
*2(�
o
*2(�
o
*6(�
o	
*6(�
o

*2(�
o
*6(�
o
*Z(�
}�
(�
*0go�
rp(Y
,Mop
{�
o>
(�
,5{�
o�
,(op
�
{�
o�
s�
�(q
*(�
*(�
*(�
*(�
*&(J*"(I*&(K*:(�
}*V(�
}}*r(�
}}}*~o�
r�po�
%-&~�
t�*Jo�
r�po�
*0"(e
�3(@
of
t3
o�*{*{*6(U{*�{-o�
r�p(�
}{*{*0F{-7o�
,/�L(@
o�
�Lr�p(�
(Q
o�
}{*�{-$o�
(�
}{-(�	s�
z*0/(�

,*o�
+o�

,*o�
-�*:(�
(%*�(�
(�
(UoP,(RoZ(�
o�
o�
**
*0&oP,(Ro�

(~
-oY**08o�
-*(�
s�

oNo�
s�
o_o�
*0Bo�
-*s�

(>
("o�
oLo�
1oLs�
o�
*04}(!�}�oP,r�p(Ro�
*0{
}(&*"}*"o�
*&o[*o\*o`*"oa*oP*"oY*oZ*R(Jr�p(�
**(J*01
o�
-
+(�
,(�
o�

+
�&�***(�
*"(�
*j{-s�
}{*j{-s�
}{*�o�
r:po�
%-&����*^o�
r:p��o�
*r�p*{*"}*0Sr&p
+91rVp(�

(oo�
(Q
(�
o�
(�

X(oo�
2�*(O*�{rZp(>
oT
r�p(�
o�
*0Hr�p(�
s
}{rZp(>
oT
r�p(
o�
o
(
*0(X�&�}*		n{-s
o
(
*f}o
o
o	
*&.(j*.�(@
*~o�
r�po�
%-&~�
t�*Jo�
r�po�
*(O*~o�
rpo�
%-&~�
t�*Jo�
rpo�
*(O*~o�
rpo�
%-&~�
t�*Jo�
rpo�
*(O*~o�
r"po�
%-&~�
t�*Jo�
r"po�
*(O*0+(>

o
+uy-
o
-�-r6ps

z
+ ��(@
(�
,
+o
�(@
(
-�	,o~(�(�+>o~r�p(�
(�(�o~r�p(�
(�(�o
+4�(@
(�
-�
(@
(�
,+o
�(@
(
-�,(�(�*6r�p(�*6r�p(�*0�o
(mo
r�pr�p(�
o
o�
1Qr�p(�
r&p
(l,{,{o

+(
o
o

	,
	(
,*�r�p(o
r�pr&po
(
*N(}(oo
*(�*Nr�p(�(z*(�*0go
o

+7	o
tM
o>
o
,	u�4(�,	u� 	o�
-��	u2,o�
�**CO�r&p}r&p}} (J*01
o�
-
+(�
,(�
o�

+
�&�***{ *"} *{*"}*{*"}*j{!-s
}!{!*0�rp
8�1rp(�

r p(�

r0p(�o
oYr0p(�

r4p(�

r0p(�o
o[o�
r0p(�

rNp(�

X(�o
?n���rRp(�

*j{"-s
}"{"*0�rp
8�1rp(�

r p(�

r0p(�o
oYr0p(�

r4p(�

r0p(�o
o[o�
r0p(�

rVp(�

rNp(�

X(�o
?b���rRp(�

*�{#r|p(>
oT
r�p(�
o�
*�{#r|p(>
oT
r�p(�
o�
*Nr�p(
(�*0 o�
s�
*0�r�p(�
s
}#(
(�:�r�ps
}{o 
r�pr�po!
{o 
r�prpo!
{o 
rprpo!
{o 
r0prpo!
{o 
rHprZpo!
o
{o"
*0�!(X{9�{-
(#
o$
+{
,o�
1{o%
o&
o'
�ao(
o�
1&{o%
o'
�ao(
o)
o*

�ao(
o�
1'{o%

o*
�ao(
o)
{o 
r`p{o�
o!
o'
o+
*B(�-(
*0@(_r�p{o�
o�
rfp(�o,
r�p(�o,
*>(-
}$*�{$o$
}#r�po.
'r�po.
r�po.
*(�*Jr�p}((�*{(*"}(*{%*"}%*j{'-s�
}'{'*0`"(�(�o�
-%o�
o
�(@
r	po
(�{%,s/

{%o
(�o0
*0�#rv	ps
}&{&o%
r~	po)
rv	ps

o 
r�	p(�o!
{&o
o"
+o
(�o1
o"
X(�o2
2�o
{&o"
(	
*�{&o 
r`p{&o�
o!
(�*z(�r�	p{&o�
o�
*0�$s6

8"s7
o8
o9
&
8�s:
o#

r�	po)
o#
r�	po)
o#
r�	po)
o#
r�	pr�	p~)�	�(�
o;
o<
r�	pr�	p~)�	�r
p(
o!
o=
o>
&rv	ps
o%
r
po)
o%

r
po)
o%
r"
pr6
po;
o
o"
	X
	~)��i?����X~)�i?���o<
r>
prpo!
o<
rL
prd
po!
o<
rh
prpo!
o#
r�	pr�
po;
(�o0
(�*0�	%�A
��r�
p�r�
p�r�
p�r�
p�r�
p�r�
p�r�
p�r�
p�r�
p�	r�
p�
r�
p�rp�rp�
rp�r*p�r8p�rFp�rTp�rbp�rpp�r~p����r�
p�r�p�r�
p�r�p�r�p�r�p�r�p�r�p�r�p�	r�p�
r�p�r�p�r
p�
rp�r&p�r4p�rBp�rPp�r^p�rlp�rzp����
	r�
p�	r�p�	r�
p�	r�p�	r�p�	r�p�	r�p�	r�p�	r�p�		r�p�	
r�p�	r
p�	r
p�	
r"
p�	r0
p�	r>
p�	rL
p�	r�p�	rZ
p�	rh
p�	rv
p�	���r�
p�r�
p�r�
p�r�
p�r�
p�r�
p�r�
p�r�
p�r�
p�	r�
p�
r�
p�rp�rp�
rp�r,p�r:p�rHp�rVp�rdp�rrp�r�p����r�
p�r�p�r�
p�r�p�r�p�r�p�r�p�r�p�r�p�	r�p�
r�p�rp�rp�
r(p�r6p�rDp�rRp�r`p�rnp�r|p�r�p����r�
p�r�p�r�
p�r�p�r�p�r�p�r�p�r�p�r�p�	r�p�
rp�rp�r$p�
r2p�r@p�rNp�r\p�rjp�rxp�r�p�r�p����r�
p�r�p�r�
p�r�p�r�p�r�p�r�p�r�p�r�p�	rp�
rp�r p�r.p�
r<p�rJp�r�p�rXp�rfp�rtp�r�p�r�p����r�
p�r�
p�r�
p�r�p�r�p�r�p�r�p�r�p�r�p�	r�p�
rp�rp�rp�
r*p�r8p�rFp�rTp�rbp�rpp�r~p�r�p����		r�
p�	r�p�	r�
p�	r�p�	r�p�	r�p�	r�p�	r�p�	r�p�		r�p�	
r�p�	r
p�	rp�	
r&p�	r4p�	rBp�	rPp�	r^p�	rlp�	rzp�	r�p�	�	��

r�
p�
r�p�
r�
p�
r�p�
r�p�
r�p�
r�
p�
r�p�
r�p�
	r�p�

r�p�
r�p�
rp�

rp�
r"p�
r0p�
r>p�
rLp�
rZp�
rhp�
rvp�
�
��r�
p�r�p�r�
p�r�p�r�p�r�p�r�p�r�p�r�p�	r�p�
r�p�r�p�rp�
r�p�rp�rp�r,p�r:p�rHp�rVp�rdp����r�
p�rrp�r�
p�r�p�r�p�r�p�r�p�r�p�r�p�	r�p�
r�p�r�p�r�p�
rp�rp�rrp�r(p�r6p�rDp�rRp�r�p���)*(�*(@
*"(A
*0)&{-
(B
tM|-(+
3�*0)&{-
(D
tM|-(+
3�*
*0"(e
�3(@
of
t3
o�*^{.,*r`p(+*6r`p(+*{+*6r�p(+*�o�-rppsE
zr�p(+*R}.(F
(G
*0@'s�

(>
(���(#o�
(�(~
-s�
o�
*0o(
{*oH
,{*oI

+N(�

o�
+o�

o�
--�-sDo�oF
,
{*oJ
*"(�*6(X
(�*0"r�pr&p(+
(~
-*o�
*6r�p(+*0"(�
,o�
*0!(Q
r�p�
oW
�(U
*�(�,(�&o�
��sK
oL
(
*(�*r{,-(�(�
(%*0,)sM

(�oN
o
o"
oW
(�*0i)(�,@(�(~
-3o�
(�o�
tZ
,oO
(~
-oO
(�{/,{/~P
oQ
},*0)*{/
(B
t[|/(+
3�*0)*{/
(D
t[|/(+
3�*ro�
,o�
oR
(S
*�(T
(�,(�o�
,(�*Z{-,
{-o_**0}+(!�}+�*0J+(�,o�
-*o�o�o�
sU

o�o��O�sV
*F(�,(�**0G)(�,>
(�(~
,	(�
+o�
(�o�
tZ
,(�oW
*�(�-o�
(�(�
��**&o�*0,-*o}

9�oY
,=or
��(@
of
t�,oZ
-~0o�
(	+��-9�o\
o]
-o\
o^
�+
	,<o\
�u(@
(�
,�u(_

+o`
(Q
oa

o\
��(@
(�
,(or
�(@
of
,t�(b

+**j{3-s�}3{3*
*{2*"}2*Frpr&p(+*6rp(+*{1*"}1*(�*.,o>
&*0�-
({
oc
+}o
tEor
�g(@
of
,Zo}
,	oY
-H
,C(�
r.p�
	(>
o(
�	o�
�	oW
�	(U
o�
sd
zo�
:x����u2,o�
�*��&o�&*�o�
o�
-*o�
o�
�8*No�
�8o�
*6r&p(+*&(+*&(
+*&(+*&(+*&(+*"o�
*0.��
rp��0*Jse
}*(f
*B{4%-&~�
*�,(�{4(i
,}4{4(�*0O/(~
,*
+oj
(k
,
X
o�
2�
ol

2Xom
�on
*f(o
,{4(~
�**jP-r&p(+(�QP*vQP-~�
+Po(
(+*0�0-*o�r�pop
,A(~
-9o�
+o
,o�
%,�,o�r�po�
oq
o�or
+os

	(�o�
-��,o�
�*f�(�*Fr�pr&p(+*6r�p(+*Fr�pr&p(+*6r�p(+*Fr�pr&p(+*6r�p(+*>((~
�*Frpr&p(+*6rp(+*6rFp(+*6rFp(+*0k(�(�(~
,'((~
,((~
,
((~
-0(�(~
,rnpsu
z((~
,r�psu
z*(�*Fr�pr&p(+*6r�p(+*Frpr&p(+*6rp(+*6r$p(
+*6r$p(+*6r4p(
+*6r4p(+*6rDp(
+*6rDp(+*6rVp(
+*6rVp(+*6rlp(+*6rlp(
+*J|5r~p(�*N|5r~p(�*J|6r�p(�*N|6r�p(�*�(�{5(�{6(�*(
*2�u(_
*0/1�F
(}
-*(~
(
r�p(�
*0�2s�
�=s�
�>s�
�?s�
�@( �u(@
~A-�*s�
�A~Ao�
~B-�+s�
�B~B
( �e(@
o�
( �F(@
o�
*~@*0l3-r�ps�
z-r�ps�
z-uX-u
({

oc
8~o
tE
or
o�
8�o
t		o>


�B(@
(�
,
	uB8�
�](@
(�
,
	u]
8�
�7(@
(�
,	u7+v
�(@
(�
,	u�+X
�(@
(�
,	u�+:
�(@
(�
,	u+
о(@
(�
,		u�o�
:	����u2,o�
�o�
,oz-	9%	o1	9,o�(~
-	o�oY
-o�
+9�
o}
9�	,"o\
��(@
(
,r�psE
zo\
o]
:�o\
o^
:�~@o\
o�
-O~@o�
+((�
o\
(�
oA
,(�
+	(�
-���Lo�
�,
o�
+$,o{-o`
(Q
oa
,,t�oB
,,t�o�
	,t�o�
8�,4
-,t�oB

,	
o�
t�o�
+v,[
-,t�oB

,0
u,o�o�
1o�+	
o�
t�o�
+
,	
o�
o,
o�
:v����u2,o�
�o>
o�
+h��(@
(B
t,?o�,6uM,8o�
o
o�
&r�po�
o,
*X�i2�*ALs�q[5�A��"(#*04s�
((
('*Jo>
s�
()*0t5o�
o�

($o�
8;o�
-r�ps

zo
o
+-o
tM
	u,o�
o�
,+	o�
-��u2		,	o�
�9�s�
o�
o 
r�pr�po!
o 
r�pr�po!
o
o"
o�
(�
-(�	sE
zo�
,To>
rp��

r8p�
�
r�p�
�
r�p�
�
r4 p�
(�
(�
o�
:�����,o�
�*A4C:}Ng0�6o>

s�
o�
uQr> po�
t�
rH po�
tRrR po�
t�u,oC,	oD	o�
		(D
,
o�
	s�
z	o�

	�(@
(B
t,o�,
�i
�i.
o�
	s�
z�i�
++
�,

�

�o�
(Q
(�
�
X

�i2�	o�
�5u,	o�
o�
o�
r^ po�
(
�s�
-0rb po�
,,oC,#rR poEo�
+rp po�
o�
*s�+5p0?7o�
s�

o�
+o�
(2o�
o�
-��
,o�
�* 3
0/o�
o�(�
*R|I{I(�
*0 8o�
,r| psE
z-~=o�
,*o�

~?%
(�
-~=o�
:�s�

s�
�(@
o�

+
�to�
X
�i2�~C-�,s�
�C~Co�
o�
+)(�

	o�(
,	o�((o�
(�
-���Zo�
�s�
8�,
(�
-x�3(@
(�
�iY+J�t3	o�o�X(1	o�
-	o�
-		o�
X�i2�o
(
,�(@
(
:R���~D-�-s�
�D~Do�
o�
-~=o�
�
,(�
�o�
&�*AL�6�2�	/�0/o�
o�(�
*R|I{I(�
*0�9o�
,r| psE
z~>o�
,*o�
~?%(�
~>o�
,�Ls�
s�
�(@
o�
+�t
	o�
X�i2�~E-�.s�
�E~Eo�
o�
+,(�
o�(
,o�()o�
(�
-���Zo�
�s�
+h��(@
(�
�iY+1�t�		o�	o�Xs1o�
X�i2�o
(
,�(@
(
:x���~F-�/s�
�F~Fo�
o�
+-(�

o�
o

{H
{Go
o�
(�
-���]o�
�(�
s�
s�
o�
+'(�


o�
-
o�

o�
(�
-���^o�
�s�

~>o�
�,(�
�o�
&�*A|�9��:	24f/^�,m��{H(�
-{Ho�
o�
*r&p*Z}G}H}I*0 :s�

(0o�
{Go�
*02;� 
{G{Go�
,(0(0o�
**R� � o�
*^� � o�
�*b(0o�
{Go�
a*�~J(�
,r� p(�
�J~J*�~K(�
,rK!p(�
�K~K*�~L(�
,r�!p(�
�L~L*�~M(�
,,(7r�"po�
�M~M(�
,r�"psE
z~M*{N*"}N*"(>*�(�
(:o�
-u�-+}N*2{N��*0=<u"
(B,*{N-
{N�*{N-*(?o?�*0/{N,(?
(�
**f(�
,(�
*o�
*.(B�*���s>�O��s>�P��s>�Q*�~R(�
,,(7r�#po�
�R~R(�
,r�#psE
z~R*{S*"}S*"(I*�(�
(Eo�
-u�-+}S*2{S��*0==u#
(M,*{S-
{S�*{S-*(JoJ�*0/{S,(J
(�
**f(�
,(�
*o�
*.(M�*F��sI�T*�~U(�
,,(7r�$po�
�U~U(�
,r%psE
z~U*{V*"}V*"(T*�(�
(Po�
-u�-+}V*2{V��*0=>u$
(X,*{V-
{V�*{V-*(UoU�*0/{V,(U
(�
**f(�
,(�
*o�
*.(X�*V ���sT�W*�~X(�
,,(7r&po�
�X~X(�
,rB&psE
z~X*{Y*"}Y*"(_*�(�
([o�
-u�-+}Y*2{Y��*0=?u%
(c,*{Y-
{Y�*{Y-*(`o`�*0/{Y,(`
(�
**f(�
,(�
*o�
*.(c�*���s_�Z��s_�[*�~\(�
,,(7rK'po�
�\~\(�
,rq'psE
z~\*{]*"}]*"(j*z(�
(fo�
-+}]*0-@(frz(po�
{]�o�

-*s_*0-@(fr�(po�
{]�o�

-*sj*�(fr�(po�
{]-+og�o�
*�(fr�(po�
{]�o�
t�*�(fr�(po�
{]�o�
��*�(fr�(po�
{]���o�
*�~^(�
,,(7r�(po�
�^~^(�
,r�(psE
z~^*{_*"}_*"(u*z(�
(qo�
-+}_*�(qr�)po�
{_�o�
��*0(@(qr*poC
{_�o�

t3*�~`(�
,,(8r*po�
�`~`(�
,rO*psE
z~`*{a*"}a*"(|*z(�
(xo�
-+}a*0-@(xrf+po�
{a�o�

-*su*�~b(�
,,(8r�+po�
�b~b(�
,r�+psE
z~b*{c*"}c*"(�*z(�
(~o�
-+}c*�(~r�,po�
{c�o�
t�*�(~r�,po�
{c�o�
*�(~r�,po�
{c�o�
t�*0-@(~r�,po�
{c�o�

-*s>*�(~r�,po�
{c�o�
��*0-@(~r�,po�
{c�o�

-*su*�~d(�
,,(8r
-po�
�d~d(�
,r5-psE
z~d*{e*"}e*"(�*z(�
(�o�
-+}e*0-@(�r�,po�
{e�o�

-*su*0mA(�rD.poC
{e��(Y-+oQ���(N-+oF��o�

-*s�*�~f(�
,,(8r\.po�
�f~f(�
,r�.psE
z~f*{g*"}g*"(�*z(�
(�o�
-+}g*0-@(�r�,po�
{g�o�

-*su*0-@(�r�/po�
{g�o�

-*sj*�(�r�/po�
{g-+og�o�
*0-@(�r�/po�
{g�o�

-*su*0-@(�r�/po�
{g�o�

-*sI*�(�r�/po�
{g(N-+oF�o�
*�(�r�/po�
{g�o�
��*�(�r�/po�
{g���o�
*0-@(�r�/po�
{g�o�

-*su*0;A(�r�/poC
{g����o�

-*s�*0;A(�r0poC
{g����o�

-*s�*�~h(�
,,(8r)0po�
�h~h(�
,rY0psE
z~h*{i*"}i*"(�*z(�
(�o�
-+}i*�(�r�,po�
{i�o�
t�*�(�r�,po�
{i�o�
*0-@(�r�/po�
{i�o�

-*sj*�(�r�/po�
{i-+og�o�
*�~j(�
,,(8rp1po�
�j~j(�
,r�1psE
z~j*{k*"}k*"(�*z(�
(�o�
-+}k*�(�r�,po�
{k�o�
t�*�(�r�,po�
{k�o�
*�~l(�
,,(8r�2po�
�l~l(�
,r�2psE
z~l*{m*"}m*"(�*z(�
(�o�
-+}m*0-@(�r�3po�
{m�o�

-*s�*0-@(�r�3po�
{m�o�

-*s�*�~n(�
,,(7r4po�
�n~n(�
,r24psE
z~n*{o*"}o*"(�*z(�
(�o�
-+}o*�(�r;5po�
{o�o�
��*01(�rI5poC
{o�
����o�
&*�(�rS5poC
{o�o�
&*�~p(�
,,(7r_5po�
�p~p(�
,r5psE
z~p*{q*"}q*"(�*z(�
(�o�
-+}q*0-@(�r�6po�
{q�o�

-*s�*�~r(�
,,(7r�6po�
�r~r(�
,r�6psE
z~r*{s*"}s*"(�*z(�
(�o�
-+}s*�(�r�7po�
{s�o�
*0-@(�r�7po�
{s�o�

-*s|*�~t(�
,,(9r�7po�
�t~t(�
,r)8psE
z~t*{u*"}u*"(�*z(�
(�o�
-+}u*0-@(�r�6po�
{u�o�

-*s�*�(�rX9poC
{u�o�
&*�(�rb9poC
{u�o�
&*{w*"}w*{x*"}x*{v*"}v*(�
*:(�
}w*0_(�
(�
,rp9ps�
z-r�9ps�
zo�

.o�
.	o�

r�p(
(�}w*v(�-r�9ps�
z(�*R(�-
(��**�~�
}}~�
}~~�
}}�(
*0L~�
}}~�
}~~�
}}�(
}}}~}}�*{}*{~*{*{�*:(�(�*�r�9p(+%-.&(o
- o�
o
�7(@
r�9po
*r&p*6r�9p(+*�r(:p(+%-.&(o
- o�
o
�7(@
rD:po
*r&p*6r(:p(+*Frz:p~�
(+*6rz:p(+*Fr�:p~�
(+*6r�:p(+*6r�:p(+*6r�:p(+*Fr�:p~�
(+*6r�:p(+*J|�r~p(�*N|�r~p(�*J|�r�p(�*N|�r�p(�*0OB(�u
,o�
-
r�:p(�+r&p(�(�{�(�{�(�*"(�
*
*0#C�D
Ї(@
�Ј(@
�*�{�,{�o�*{�,r�:psE
z{�*"}�*n{�,{�o�*{�*"}�*n{�,{�o�*{�*"}�*n{�,{�o*{�*{�*v5}�(�
}�}�*&(*0�D5}�(�
}�-0(Q
r2;p�
r@;p����(U
oN
+%(Q
rJ;p�r@;p�(U
oN
(#
r^;pr|;po;
}�*Z(}�}�*0Eu!
,s`(�
**(�*(�*:(�(�*6r�;p(
+*6r�;p(+*0Fr�;p�`(+*6r�;p(+*Fr�;pr�;p(+*6r�;p(+*0Fr�;p�`(+*6r�;p(+*6r�;p(+*6r�;p(+*Fr�;p~�
(+*6r�;p(+*Fr$<p~�
(+*6r$<p(+*�}�<}�}�}�(�
*0wG(	
s�

oW
rP<p(�
oN
o
o"
s"	}�{�oW
rh<p(�
oN
{�oW
o�
o
{�o"
*0�H(�
o�
(sL	
(�
(�
(Q
r�<p�(Q
(�
�(U
oI	f(Q
(�
oK	{�,
{�o�
{�oH	o$	{�r&po�o�
( {�l(�
�eo�
(�
("
o�
(!	o�
o�
o�
	oJ	o�
*jo�
({�TJ�*0	I(*0)J
~�%(�
~�s
�
,(�
�*
0'K
~�%(�
~�o
�
,(�
�*
0�L{�@�o�
o
-}���o�
( o�
�e
(�
(
,}�ݕ~�%(�
o�
o
o

+
j(

~�	o
-�~�	o
{�el(�
~�o	
o


+
o
(
,X
o�
-��
,
o�
�~�o
Y2�~�o

o�
+o�
(Y
,Xo�
-��,o�
�{�/}�݁�,(�
�o�
(!o�
t�	o�
o�
	o
t�
o�
o�
	o

{�o�(i
,	}��}��
&}��*Ad�'�#&IZm��
0!(Q
r�<p�
o�
�(U
*0!(Q
r�<p�
o�
�(U
*0*(Q
r�<p�
o�
���(U
*0)M{�
(B
t,|�(+
3�*0)M{�
(D
t,|�(+
3�*{�*"}�*{�*"}�*{�*"}�*.s
��*&(j*j{�-s
}�{�*~�
*~�
*
*0�Nr&=ps

r0=ps
o 
r�	pr:=po!
r�=poN
o
r�=p(xr�=p(�
s
o"
o
o"
r�=ps
o 
r�	pr�=po!
r�=poN
o.(~
-o%

o.o)
(t,o 
rHprZpo!
o
o"
o0,So
��r�=p�o/�r>p�r>p(x�r8>p�(�
s
o"

+ho
��r�=p�(-	o
o5�r>p�(-	o
o7�r8>p�(�
s
o"
	X
	(-o
2�o
o"
*0Oo�
s3
*"(-
*�(
r�	prL>po
rd>prr>po
*{�*"}�*{�*"}�*vr&p}�r&p}�(�
*Nr|>p(�(z*(�*(�*Nr�>p(�(z*(<*N(,(oo
*(?*Nr�>p(�(z*(<*Nr�>p(�(z*(<*R~�
}�(J*V~�
}�(J*01
o�
-
+(�
,(�
o�

+
�&�***j{�-s�
}�{�*{�*"}�*R(Er�>po�
*N(Er�>po�
*{�*"}�*j{�-s�
}�{�*0."(
{�,s/

{�o
(Oo0
*04/
+o
(Oo1
o"
X
(Oo2
2�(	
*Rr&p}�(L*Nr&p}�(L*{�*"}�*0�Pr0=ps

s6
o<
r>
prpo!
o<
rL
prpo!
o<
rh
prpo!
s7
o8
o9
&s:

o=
	o>
&	o
	o
	r(?po�
(Ts
o
o"
	o
o"
(Oo0
(Q*Jr&p}�(�
*�r&p}�(�
}�}�*{�*"}�*{�*"}�*(
*0M-rj?prz?ps�
zr�?po�
r@p(

o�
o>
o�
rAp(�
(
*:(�(�*6r5Ap(+*6r5Ap(+*FrGAp �(
+*6rGAp(+*6rmAp(+*6rmAp(+*:r�Ap(
+*6r�Ap(+*0&/(�(~
-(�(Q
(
-**N(Q
(�
(�*6r�Ap(+*6r�Ap(+*6r�Ap(+*6r�Ap(+*FrBp~�
(+*6rBp(+*FrBp~�
(+*6rBp(+*FrMBp~�
(+*6rMBp(+*{�*"}�*{�*"}�*{�*"}�*{�*"}�*{�*"}�*{�*"}�*{�*"}�*{�*"}�*{�*"}�*{�*"}�*{�*"}�*{�*"}�*{�*"}�*{�*"}�*{�*"}�**�( 
(y ,(�(�rmBpo�
*:(�
(%*0�Q(
(�
(xEf+k(�
,ao!
1Xo"
o9(~%-&of
((|%-&oh
(}(�%-&on
(�+(�
{�o#
{�o$
*0GR(x
E*(z(~
,#r�Bps�
z(�(~
,r�Bps�
z*�o
o
s%
}�o
{�o"
(�*0�R(x
E,+R(�-s�(�(�-6s�(�+((�-s�(�(�-s�(�(�-s�(�{�(�o&
{�(�o'
{�(�o(
{�(�o)
*0�Sr�Bp�(z�(����(����(����(*

o�
o+
o,
tf-Ys�(z(�(�(�o��&
�/o�
o+
(�
(�l(�
~-
o.
*	*l!�0�Tr7Cp(�(���(/

o�
o+
o,
tf-Ms�(�(�o��&
�/o�
o+
(�
(�l(�
~-
o.
*	*<Q0�U(0
(1

(2
#�?4rgCp*(3
(4
#@4r�Cp(2
(4
�)(5
*(6
(4
#@4r�Cp(3
(4
�)(5
*r�Cp(6
(4
�)(5
*0Vr�Cp
s7
r�Dpo8
*:(�
}�*0%Ws:

��sK
o;
o
o"
*0FXt
o�
t,o<
t�r�Dpo7(�o5(�(/
o=
*:(�
}�*0�Yrv	ps

o 
r�	preEpo!
o
o"
s>
{�o�o?
o
o"
r�Eps
o
{�o~s
o"
o
o"
r�Eps

	o
{�o|s
o"
o
	o"
r�Eps
o 
r�	pr�Epo!
o%
r�Epr�Epo
o
o"
s@
r�EpoN
o
o"
rv	ps
{�o�
o
{�o>
rFpo
o 
r�	pr1Fpo!
o
s>
		o?
	o"
o
o"
*:(�
}�*0%Ws:

��sK
o;
o
o"
*0LXt
o�
t,o<
t�r[Fpo9on
o7o5(�(A
o=
*:(�
}�*0fZrv	ps

o 
r�	preEpo!
o
o"
r�Eps
o
{�o~s
o"
o
o"
r�Eps
o
{�o|s
o"
o
o"
r�Eps

	o%
r�Epr�Epo
	o 
r�	pr�Epo!
o
	o"
s@
r�EpoN
	o
o"
rv	ps
{�o�
o
{�o>
rFpo
o 
r�	pr1Fpo!
o
s>
o?
o"
o
o"
*Zo
rGps
o"
*(�
*0:-rTGps�
zu�-Й(@
o(

rfGpsd
z(C
*6(D
t�*(E
*(F
*(
*�(
}���sK
}�{�{�oG
*0	[s�
*Nr�Gp}�}�*>}�}�*�(�{�-#��sK
}�o�
{�oG
*V{�,{�(�*0UW{�-o�
(�
(�oH
*s:

r�GpoN
{�o
o"
{�(�
oH
*Fr
Hpr&p(+*6r
Hp(+*Fr�pr&p(+*6r�p(+*Fr.Hpr&p(+*6r.Hp(+*FrLHpr&p(+*6rLHp(+*6rlp(+*6rlp(+*6r$p(
+*6r$p(+*6r4p(
+*6r4p(+*J|�r~p(�*N|�r~p(�*J|�r�p(�*N|�r�p(�*�(�{�(�{�(�*(I
*(K
*0,\{�-}�o�

,(�
}�{�*�(�,
(�oL
-(M
*(�*�(N
(�,
(�oL
-*o�
(�*�(O
(�,
(�oL
-*(�*�(�,
(�oL
-(P
*�b(@
(�*(Q
*o�
*(�
*"(R
*NrfHp(�(z*(<*NrzHp(�(z*(<*(�
*:(�
}�*{�**{��*�s���s���~���*���(@
(�
,r&p*(S
*(T
*{�*V(�
}�}�*(�
*J{4o�
(Y
*0�](�({

{�9�{��i>�sU
8`sV		oV
}4	{4or
�B(@
of
tB
	9 	{4or
�h(@
of
th9�o�9�{�	�WsW
(+@�	{4or
�(@
of
t�	{4or
��(@
of
,Aog
-8�i(@
oY
�D

oZ
�
oo
sb
		{4op
	{4�~t
��(q
}4	{4o[
Xo�
?����o\
s�

*2(�(e
*2(�(]
*2(�(R
*2(�(^
*2(�(_
*2(�(`
*6(�(a
*6(�(b
*2(�(c
*2(�({
*(�*J|�r�Hp(�*N|�r�Hp(�*J|�r�Hp(�*N|�r�Hp(�*J|�r�Hp(�*N|�r�Hp(�*J|r�Hp(�*N|r�Hp(�*J|r�Hp(�*N|r�Hp(�*J|rIp(�*N|rIp(�*0P(�{�(�{�(�{�(�{(�{(�{(�*(�*(d
*NrIp(�(z*(�*Nr4Ip(�(z*(<*NrLIp(�(z*(<*NrfIp(�(z*(<*NrxIp(�(z*(�*&(j*{*"}*j{-s�
}{*0."(y{,s/

{o
(o0
*04/
+o
(o1
o"
X
(o2
2�(	
*N(	(oo
**(J*01
o�
-
+(�
,(�
o�

+
�&�***�o�
r�Ipo�
%-&����*^o�
r�Ip��o�
*j{-sf
}{*"}*0Fr&p
+,1rVp(�

(og
o�
(�

X(oh
2�*(O*~o�
r�Ipo�
%-&r&pt�*0Y^(
o�
1Go�
Yo�
r�Ip(i
,r�Ip(i
,r�Ip(�

o�
r�Ipo�
*0#V(i

r�Ips7
r&po8

*0�_
8�o
(og
o"
(-W(-O(og
oq-(og
o#
r~	po)
+(og
o#
(rJpo)
+&o
(og
opo1
o"
X(og
opo2
2�X
(oh
?2���*0�`(X�&�}
+ko
oj
u,R(-0oq-o#
r~	po)
+.o#
(rJpo)
+o#
ok
o#
(ok
X
o
ol
2�*		n{-s
o
(
*0D`o
o
o	

+ o
oj
u,o|X
o
ol
2�*(*
*01a(E
u�}sm

sn
{oo
o(
*r&p*
*(p
*"(�
*0�C�D
Ш(@
�Щ(@
�М(@
�Н(@
�О(@
�П(@
�Р(@
�С(@
�Т(@
�	Ф(@
�
У(@
�Х(@
�Ц(@
�
Ч(@
�й(@
�Ь(@
�Э(@
�Ы(@
�б(@
�а(@
�в(@
�Я(@
�е(@
�г(@
�д(@
�ж(@
�и(@
�з(@
�к(@
�*
*{*{ *{!*{"*>{"(~
�*.(.*�(�
}} }!}"*(q
*(r
*{6*"}6*{7*"}7*{8*"}8*(�
*(s
*(t
*0!bs;

(u
o=
sXoG
&*(E
*�(A,(A(E
o}
t**0/c~@(B��q�{A
(E
({
o|
*0,d(v
r&Jpow

,��+~@�i2*^(v
r&Jp��ox
*n~@(B��q�{A*(@*2(E
t�*0"e(D(F(Dsy

oz
*0�f({

{?-}s|
}?~@+^��q�{As}
{A(F{Asy

	{Boz
	o~
{?o
&X�i2�{?o�
*
*0,g(?(@(A(GsW
(Do�
*0Gh~�

(E,7(�
t�s�
r>Jp(B��oh
o�
(�

*0!i~�

(Jo�
& s�
(@-W(Q
rZJp�
	(�
(_
�	(�
(_
�	(FoW
�	~�
�	�	(U
o�
&8�s�
(Q
r3Mp	�(D�o�
�(Fo�
�~�
��(�
(_
�(�
(_
�(FoW
�(Fo>
oT
�(U
o�
&oF
o(
*0Dju�
,2oS,((E
oN
К(@
oO
t�(�
*(�
*02r�Up~@(B��q�{Ar�Up(

(�
*^r�Upo�
(�
(�
*0kku�
-*(E
oN
К(@
oO
t�(�
r
Vpo�

oVoUo�
	o�
�
	,	o�
�oT*?Y
0�l��
��rLVpsR����rfVpsR����r�VpsR����r�VpsR����r�VpsR����r�VpsR���@*>}A}B*{C*"}C*{D*{E*�(�
}C}D}E(�
*RoE
(v
}F*2{FoD*(�
*N{A{5(Y
*0@msX}5~@�Ys�
(+
.{FoC{Fo�
*0:n~@�i��
+~@��q�{A�X�i2�s�
*
*
*(�
*FrWpr&p(+*6rWp(+*(�*(�
*(�
*{X*"}X*{Y*"}Y*{Z*"}Z*{[*"}[*(�
*Nr&Wp(�(z*(�*{\*0Co}\(l-3o
(oo>
(�
-(p{\o0
*}\*{]*"}]*0D(_(o,(l-rBWp(oo�
o�
r\Wp(q��o,
*:}](<*NrpWp(�(z*0po�
sx
*(t*"(-
*f(
r�Wpr�Wpo
*{^*"}^*N(ys�(p*0Dq(zo�
1.(l-&o
(zo�
u�
,o�
o
(u*0Uq(s(zo�
1?(l-7o
(zo�
u�
,r�Wpo�
o�
*r�Wpsu
z*Jr&p}^(w*(*NrXp(�(z*(<*o�*(�
*r,Xp*(�*r6Xp*(�*rDXp*(�*rXXp*rtXp*(�*r�Xp*r�Xp*(�*r�Xp*r�Xp*(�*r�Xp*rYp*(�*r Yp*r:Yp*(�*rVYp*rrYp*(�*r�Yp*r�Yp*(�*r�Yp*r�Yp*(�*rZp*r6Zp*(�*rbZp*(�*rlZp*(�*rvZp*r�Zp*(�*r�Zp*r�Zp*(�*r�Zp*r�Zp*(�*r�Zp*r�Zp*(�*r�Zp*r�Zp*(�*r�Zp*r[p*(�*r&[p*r&[p*(�*r0[p*r0[p*(�*r8[p*r8[p*(�*rD[p*rV[p*(�*rj[p*r|[p*(�*r�[p*r�[p*(�*r�[p*r�[p*(�*r�[p*r�[p*(�*r \p*r \p*(�*r0\p*rJ\p*(�*rf\p*r�;p*(�*&.(�
*{_*"}_*{`*"}`*{a*"}a*{b*"}b*{c*"}c*�(
(�(�(�(�(�o�
*0�rr�\ps�

(�(�o�
&(�
-	P(�
r�\po�
&�`o�
&(~
-r�\po�
&o�
&+A(�,9(��fo(
o�
(�3r�\pr�\p(�
o�
&,$r�\po�
&�o(
o�
o�
&o(
*0Yso�
s�

(�
o�
o�
r&p+�
r�\p(�
(�
X�i2�*0Ct��(@
(�
,$t�
(~
,(
,o�
o�
*(S
*(�
*F�6(@
o�
*(�
*(�
*(�
*Frz:p~�
(+*6rz:p(+*Fr�\pr]p(+*6r�\p(+*Fr]pr&]p(+*6r]p(+*Fr@]prh]p(+*6r@]p(+*6r~]p(+*6r~]p(+*6r�]p(+*6r�]p(+*6r�]p(+*6r�]p(+*6r�]p(+*6r�]p(+*Fr�]p~�
(+*6r�]p(+*6r�:p(+*6r�:p(+*0;ur�]p�F(+
(}
-
�F*(~
(�
s�
*04v(}
-�F+(~
(�
s�

r�]p( +*6r^p(!+*6r^p("+*Fr0^p~�
(+*6r0^p(+*FrP^p~�
(+*6rP^p(+*Frl^p~�
(+*6rl^p(+*Fr�^p~�
(+*6r�^p(+*Fr�^p~�
(+*6r�^p(+*0;ur�^p�F(+
(}
-
�F*(~
(�
s�
*02wr�^p(}
-�F+(~
(�
s�
( +*0;ur�^p�F(+
(}
-
�F*(~
(�
s�
*02wr�^p(}
-�F+(~
(�
s�
( +*(�*�~�
}f~�
}i~�
}j(J*0)x{m
(B
t-|m(#+
3�*0)x{m
(D
t-|m(#+
3�*0)x{n
(B
t-|n(#+
3�*0)x{n
(D
t-|n(#+
3�*~o�
r_po�
%-&~�
t�*Jo�
r_po�
*~o�
r2_po�
%-&~�
t�*Jo�
r2_po�
*~o�
r`_po�
%-&~�
t�*Jo�
r`_po�
*&(
�*�{l-{d*(�o�
o�*0,yo�
(B(%
,o�
(F�&�**%~o�
r�_po�
%-&~�
t�*Jo�
r�_po�
*�o�
r�_po�
%-&(�
�u�u*^o�
r�_p�uo�
*�o�
r�_po�
%-&(�
�u�u*^o�
r�_p�uo�
*�o�
r�_po�
%-&(�
�u�u*^o�
r�_p�uo�
*(*
*"(�
*{g*"}g*{e*"}e*{h*"}h*No�
(B(%*�o�
(B{l,(�o�
o�*{d��*0Io�
(B{l,(�o�
o�(�
*{d,{do�
(�
*~�
*�o�
(B{l,(�o�
o�*{d,{do�
*~�
*0'zo�
(B(%
,o�
,o�
**�o�
o
o�
~oo�
��*{l*"}l*F(�o�
o�*F(�o�
o�*0zo�
(B(%
o�
*0M{{l,(�o�
+
{d��
-&o�
,o�
o
o�
o�
,(E*Z{n,
{no�
*Z{m,
{mo�
*0|
~�
}fo�
o
o�
o�
>�,
~�
(Y
,o�
o
o�
o�
8�o�
o
o�
o�

+L	o
t�r`pr�po�
r
`pr&po�
o�
,o�
o
o�
o�
+	o�
-��	u2,o�
�-)~s}f~s~�
~�
s�
oC*o�
~�
(Y
,4~t}f~to�
o�
(�
s�
oC*o�
-4~t}f~to�
o�
(�
s�
oC*o�
/4~v}f~vo�
o�
(�
s�
oC*~�
o�
o�
(�
s�
{l,(G
(�o�
o�
o�+}doD*lX�0K} ��G
s�
jo�
&�io�
0	o�

�o�
+�,o�
�	*.?
0�~(X(�(3o�o�
o
o�
~oo�

,o�
(Y
-:�o�
(E9�o�
o�
9�{f~�
(Y
,1(&,�i(�
r`p(:(
+r&p+r&`p{f(�
o�
o�
o�

	r>`po�
rR`p(
o�
	o�
	rX`po�
*Jo
o
o	
*0�^(�~qo�
($-o�
o
o�
~oo�

($-,
~�
(Y
,[(J}i~�
{l,%(�o�
o�,'(�o�
o�+{d,{do�
(K&*0)sM

o
o"
o�
*0Nrv	ps

o
o"
(5@�~�
o�
o
��(@
rf`po
r�`pr�`p(
o*
(�
-h���rUap�o*
		�ao(
�rkap�o*


�ao(
�r{ap�(�
+r�ap(�
o 
r�apo!
(53($:�s�
}ko�
-{ko�
o
{ko"
{ko 
r`p{ko�
r`pr�po�
o!
(5.o�
~�
(�
,{ko%
o�
(_
o)
o*
(�
-){ko%

o*
�ao(
o)
+{ko%

r�apo)
(5@,r�ap
o*


(�
-&	r^bpo*
�ao(
rVp(�

{k,{ko 
r�ap	o!
s�
($-]rv	ps
o
o"
rlbp
o 
r�ap	o!
o 
r�prr>po!
o
o"
r�bp
+o
o"
rcp
o*
(�
:�o*
�ao(
rtcpo�
1^	r^bpo*
�ao(
o*
�ao(
rtcpo�
o�
(�
kY(�
rzcp(�

+	r�cp(�

~�
(i
-{g,F(&,!(&�i1{g-	r�cp(�

+}g	r�cp(�

o�
+.o�
~�
(�
,	rdpo�
(_
rVp(�

o�
o<
r�ap	o!
o�
}j+$($,o
o
o
{ko"
o�
*0l"(_($:Y{i~�
(i
,r(dp{io�
{j~�
(i
,r@dp{jo�
{k,%rPdp{ko�
r`pr�po�
o�
rddpo�
o
o�
o,
r|dpo�
o�
o�
(�
o,
()~�
(�
,r�dp()(_
o,
(-~�
(�
,r�dp(-(_
o,
(+~�
(�
,r�dp(+(_
o,
('~�
(i
,!('o�

,r�dpo�
o�
*0�o�
sQ
*~rep�or,ep�pr+fp�q*�rufp�rr�fp�sr�fp�trQgp�ur�gp�v*.r�gp�w*"(-
*b(
ok

ok
*(�
*{}*"}}*:(
}}*{~*"}~*{*"}*Z(V}~}*{�*"}�*{�*"}�*Z(�
}�}�*Zrhpo
oW
(�
*(a*(�*Frhpr&p(+*6rhp(+*FrAhpr&p(+*6rAhp(+*Frchpr&p(+*6rchp(+*Fr�hpr&p(+*6r�hp(+*Fr�hpr&p(+*6r�hp(+*(a*(�*
*2��(�*Fr�hpr&p(+*6r�hp(+*Fr�hpr&p(+*6r�hp(+*(�*(�
*Frip~�
(+*6rip(+*(�*(�
*f(�(�(%}�*{�*"}�*6(�{�*r{�,
{�o�
-o�*�{�,
{�o�
-s.	}�{�*Fo�rvZp(Y
*0��(�rip
r�ipr�iprjpr(jp(�

	r,jpr0p(�

	��r:jp��rhjp��r|jp��r�jp�(�
r�jp (�

{�~�-��s�
��~�o�
,Mr�jp	��r�jp��rkp��rHkp�(�
r�jp (�

	rtkpr�kp(�

	r�=pr�kp(�

	r�kpr�p (�

	r�kpr�p (�

	r�kpr�p (�

	rlpr�p (�

	r(lpr�p (�

	rRlpr�p (�

	rrlpr�p (�

	r�lpr�p (�

{�,
{�	o�
	*0o�(���(@
r�lprmp(�
o�
o�
o�
(X
(�
,+rmp(�(�tk
,o�
(�o�
*0s.	}�{�-}�(�
,(�
o�
,*}�{�s�o�
{�s�o�
{�s�o�
{�s�o�
{�s�o�
{�s�o�
{�s�o�
{�s�o�
{�s�o�
{�s�o�
{�s�o�
{�s�o�
{�s�o�
{�s�o�
{�s�o�
{�s�o�
{�s�o�
{�s�o�
{�s�o�
{�s�o�
{�s�o�
{�s�o�
{�s�o�
{�s�o�
{�s�o�
{�s�o�
{�s�o�
{�s�o�
{�s�o�
*>(o
(o
&*Nr$mp(�(z*(�*NrLmp(�(z*0�o�
s�
*(�*"(-
*�(
r�	prL>po
rd>prr>po
r�WprZmpo
*Nrdmp(�(z*(<*&(J*0l�(
(#
#Y@(�

�ao(
o.
(#

#Y@(�
�ao(
o.
(#
r~	po.
*"}�*�(_{�,r�mp{�o�
o�
*&-(�*0��(�(<
r> po�
o!
(<
r�mprpo!
(<
r�mprpo!
(<
r0prpo!
o�
(�,(<
r�pr�mpo!
(#
(�

�ao(
o.
*0Z(�
(�
,rp9ps�
z-r�9ps�
zo�

.o�
.	o�

.�(�
}�*r(�
-r�9ps�
z}�*{�*{�*"}�*0"r�mpr&p(+
(~
,(X

*6r�mp(+*(�*0)�{�
(B
t.|�($+
3�*0)�{�
(D
t.|�($+
3�*0)�{�
(B
t.|�($+
3�*0)�{�
(D
t.|�($+
3�*0)�{�
(B
tw|�(%+
3�*0)�{�
(D
tw|�(%+
3�*&(�
*0X{�-Isc}�{�oW
rnp(�
oN
{�oW
o�
o
{�o�
{�*2(�of*6(�og*2(�oj*6(�ok*2(�oh*6(�oi*2(�or*6(�os*2(�ot*6(�ou*2(�ov*6(�ow*2(�od*6(�oe*2(�ol*6(�om*2(�on*6(�oo*2(�op*6(�oq*n{�-s�}�{�*(
*{�*"}�*{�*"}�*{�*�,uR-u0,}�o�*r,npsu
z~o�
r�npo�
u�%-&~�
*bo�
r�npo�
o�*~o�
r�npo�
u�%-&~�
*bo�
r�npo�
o�*>o�(~
�*{�*"}�*n{�-o�}�{�*0C(
o�
,3o�
��sK
oL
(�
-o�
o
,(�*0v}�o�
,`o�
��sK
o�
o�
o
-(�o�
o
,!(�
,o�
r�npo�
-(�}�o�
*0]}�(�&o�
,?{�-7o�
r�npo�
-%o�
o
-	(�+(�
,(�(�
*0^�(	
(�,o�
r�npo�
,o�(�
(�o�+o�

o
&o�
-��
,o�
�*9S
0O�(�(
(�,$(#
rJpo)
(#
r�npo)
(�o�
+q	o�

oG(�(Y
,~�
oH(�(~
-oG(~
,(�oH(�(~
-oL(~
,(�oM	o�
-��
	,	o�
�(�ol2(�o�2
(�on-+2N(�o�/@(�o�oK,o�(�(~
-(�o�(�oH*E}�
0A�(�

-4(�o�+o�
o�

-o�
-��
,o�
�*5
08/o
ol
Y
+#o
oj
u�,o
o�
Y
/�*0`�{�,(o
-{�*{�, {�,{�%��sK
o�

o�(~
-vo�
o�
-.(�
rop�oW
��(U
s�
zuS
-.(�
reop�oW
��(U
s�
z-*o�,r�opsE
zo�o�

	-)(�
r7pp�oW
�(U
sE
z(�}�	}�{�, {�,{�%��sK
o�
}�{�*�(�,(o
,	(�
-*(�~P
o�
*�(�
o�-(�,(�(�
o�(�
*0n�
s�
-Ko�
r�npo�

	,Y	��
.Ns�
+o�
X2�o�
+"o�
u<,
ok
o�
9�o

8�
o
sU		(Q
r�pp�oW
�(Q
(�
�(U
oN
o
	o"
	oFo�(�	oKo�(�	o�
X
X
o�
:Y����
u2,o�
�,o�
r�np-+��o�
*��90;�-*s�
o�o�o
,o$
o�*0-}�(�,o�(~
-o$
�}��*$$0d�}�(�
,3s
}�(���s
o
{�o
&+o�,o�u0}�{�*(
*R}�{�o
&*0�
ub,	o�
*�{�,r�pps�
z{�,(�}�*"(�*Z{�,
{�o
*Z{�,
{�o
*Z{�,
{�o
*�uR}�{�-r�ppr)qpsd
z(
*0@�(	

r=qpo

0o�
Yo
+r=qpo

o�

rGqpr&po�
rKqpr&po�
rOqpr&po�

{�ox3{�oz(~
,(rSqps
z{�o�(~
,r�qps
zs�&(�
	o!
1
	(�+(��-r�qpo�
rX`p(
�(�
o�
o
(>
r�qpo
rrp(5
rX`p(�
*nu�pJ{�o�(�*0�{�o�9�
s�{�ox
	@�{�oz{�o�{�o�{�o�o�
9�o!
>�o"
o9{�{�o~%-&of
o{�{�o|%-&oh
o}{�{�o�%-&on
o�+{�o�{�o�o�
*(�*0��s


(�
o�
o
(>
r{rpo
sp
r�rpoi
r�pok
r�rpoe
r�pog
r�rpom
oo
r&p
{�ox:�s;(0
o6r�po8o:o
{�{�o~%-&of
o{�{�o|%-&oh
o}{�{�o�%-&on
o�+c{�o���

r�rp�
o
+ �	r�rpr�rp(�

X�i2�r�rp	(�

��r�rp	r�sp(
�r
tp	r�tp(
�r�tp	r�tp(
�	rvup(�
�r1vp	rQvp(
�s
	+g�
s;(0
	 �o
Zl(
o6
o8o:o
X{�o�0X�i2�{�ox-o
1o
Yo
*0��{�o�o"
(�
(~
,{�o�(�
r�vps7
r&p
o
+o
	(�(�

o�
-��,o�
�	o8
*O%t0�К(@
oL
t�
(�
*�%{�X}�{�{�Yo
*0l�(�
r{wps7
o
}�s�
}�o
>0r�wps

o

8�
o
	o(
o
o(
o�
Yo�
r�po�
,Y��r�p�o
І(@
�(�
o�
,6o>
�o�
o�
+І(@
(�
o�
-rprRp(
{�o(
o�

o�
:����
u2,o�
���s
		o
**M�=0L�{�o�(�
(~
,/s
o 
{�o�o
o$
(�
*0:�s!

s"
sn
oo
�
,o�
��
,o�
�o(
*	

)

*
*Js�
}�(#
*Vr�wp#(&+*6r�wp('+*Vr�wp#Y@(&+*6r�wp('+*Fr�wpr&p(+*6r�wp(+*Fr�wpr&p(+*6r�wp(+*Fr	xpr&p(+*6r	xp(+*6r'xp(+*6r'xp(+*6rSxp(
+*6rSxp(+*6r_xp((+*6r_xp()+*6rwxp(
+*6rwxp(+*Fr�xpr&p(+*6r�xp(+*Fr�xp �(
+*6r�xp(+*6r�xp(+*6r�xp(+*Fr�xp~�
(+*6r�xp(+*6r�xp(+*6r�xp(+*(�*(%
*ryp*(&
*('
*j('
}�o
o"
*{�*"}�*0jr}yp��(@
s(
}�r�yp�~(@
s(
}�s)
}�(*
{�{�o+
{�{�o+
*J{�(,
t�*:{�(-
*J{�(,
t~*{�*:(�(�*
*6r�yp(+*6r�yp(+*0(�
-rp
(Q
(/
*N(Q
(�
(�*Fr�yp~�
(+*6r�yp(+*Fr�yp~�
(+*6r�yp(+*6r�yp(
+*6r�yp(+*6r	zp(
+*6r	zp(+*Frzp~�
(+*6rzp(+*6r7zp(+*6r7zp(+*FrIzp~�
(+*6rIzp(+*Frozp~�
(+*6rozp(+*Fr�zp~�
(+*6r�zp(+*Fr�pr&p(+*6r�p(+*Fr�zpr&p(+*6r�zp(+*Fr�zpr&p(+*6r�zp(+*Fr�zpr&p(+*6r�zp(+*Fr{pr&p(+*6r{p(+*Fr/{pr&p(+*6r/{p(+*6rM{p(
+*6rM{p(+*6rQ{p(
+*6rQ{p(+*6rU{p(+*6rU{p(+*Frk{pr&p(+*6rk{p(+*6r�{p(+*6r�{p(+*6r�{p(*+*6r�{p(++*J|�r�{p(�*N|�r�{p(�*J|�r�{p(�*N|�r�{p(�*J|�r�{p(�*N|�r�{p(�*J|�r|p(�*N|�r|p(�*6s0
}�*6s0
}�*0V|�(1
,|�(2
(Z{�(�{�(�{�(�{�(�(�*0��(�-r%|prA|ps�
z-r�|p+r�|p
o�
(�
o�
,o�
(�
(�oH
*(Q
r�|p�(��-r�}p+r~p�(U
��(@
(�(�
(3
*(
*(t*Nr~p(�(z*(<*{�*"}�*{�*"}�*{�*"}�*0��s6

o<
r>
prpo!
o<
rL
prpo!
o<
rh
prpo!
o#
r6
po)
o#
r�Epo)
s7
s:
o8
o9
&o=
o>
&(_,o
(_o"
s7
s:
o8
o9
&o=
o>
&s(b(ar&po�
(ao#
r�Epo)
(ao#
r�Epo)
(a#5@s4
o�
(a#@s4
o+
(ao#
r�	p(co;
(ao#
r"
pr6
po;
o
(ao"
(o0
(*�(ao�
o
(_,(_o�
o
(z*�(_,(_}(o5
(|*�(_r~p(ao�
o�
(_,r0~p(_o�
o�
*Jr�
p}�(*�(
s<(`(_r&po�
rJ~p(d*b(_rZ~po�(f*(i*(6
*(7
*(8
*0 C�D
�(@
�s9
s:
*0�u�
,(~*s�
*0��-rt~ps�
zs�

r�~po�o�
o�o;
+(<
(=
(>
o�
(?
-���uo�
�s@
o�or
+os

	(~oA
o�
-��,o�
�r�~poB
o�
*2)[|!��-r�~ps�
z�(@
(�
-�(@
oA
,(�**0/�-r�~ps�
zs�
r�~poC
-r�~psE
zr�~poD
u�o�oE
+ZoF
(G
r�~p(�
,>(G
r�~p(�
,*o�(G
(H
-+(H
o(
oI
o�
-��,o�
�r�~poC
,cr�~poD
u�,OoJ
+%o

	ux	,o�(�oK
o�
-��u2,o�
�*Jg��2(L
*0%�s�
��~��&
s��oM
*�(�
sN
}�(�
sO
}�*{�*"}�*{�*{�*(�*2~�o�
*Z(~
,*~�o,+*0��-rkps�
zs�
oQ
o�oR
oS

+#	o
t`o�oQ
oT
oI
	o�
-��	u2,o�
�oU
,MoV
oW
+o
t�o�(�oK
o�
-��u2,o�
�*,/[�+�0
�-rups�
z,
oX
(~
,*r�pr�p(
sY

sZ
s[
o\
�S(�
r�p�

oX
�
o�
�
(U

		s]
(
o�
o^
o_
s`
z�
,o�
�oa
oV
oW
8'o
t�({
oQ
o|
,	o�
,k(�
rC�p�oX
�o>
o�
�oQ
�(U
su
(
o�
o^
oQ
(�s`
zoV
ob
.\(�
r�p�

oQ
�
oX
�
(U
su
(
o�
o^
oQ
(�s`
zoV
oc
(�		o�
o�
:����u2,o�
�*ALC	LSfC^�
�:�0]�sZ
s[

od
,9+/oe
(�
-	of
�-og
3oh
-oi
od
-��
,o�
�**CO
(j
*
*�r�p(k
ol
(m
r��p(Y
*Zr��p(k
ol
(m
*0��s!

r��p(n
��oo
&o(
(�r�p
s

	rG�p(�
(k
op
~�-��sq
��~�(-+os
8ot
sp
			r> p(�
(k
op
(.+ov
og
		rS�p(�
(k
ow
~�-��sx
��~�(/+~�-��sz
��~�(0+(1+oo
	s;

	r]�p(�
(k
o|
ov
(}
o6
	rq�p(�
(k
o|
ov
o8
o:
o
o�
:���,o�
�(2+*A}�0��sp

r`p(k
o|
ov
oe
r��p(k
o|
ov
oi
r> p(k
o|
ov
og
r��p(k
o|
ov
ok
r��p(k
o|
ov
oo
*0��s;
rՂp(k
o|
ov
r�p(Q
(
o6rr>p(k
o|
ov
o8r%�p(k
op
~�-��s�
��~�(3+(4+o:*0��s!

r/�p(n
��oo
&,r̃p�o�
&-r�p�o�
&o(
(�r�p(k
op
~�-��s�
��~�(5+
	(2+*(�
*(�
*04�~�o�
-#Ђ(@
o�
t�
~�o�
*04�~�o�
-#Ѓ(@
o�
t�
~�o�
*04�~�o�
-#�(@
o�
t�
~�o�
*{�*"}�*{�*"}�*0��s�
}�s�
}�(�
r&p(�
,o�
o
o�
o�
-[o�
(�
{�,]o�
o�
o>
r�p(Q
rB�p�(��r&p�(U
(
+o�
o
o�
o�
(�}�(�
**0!�(�
{�9o�
o�
(~
:�o�
o�
(~
:�o�

s�(�9{�o�
-{�o�
}�{�:�(Q
rG�p�{�(�
-!o�
o
o^
r�rpro�po�
+{�o(
�rw�p�(��r��p�{�(�(n
�(U
}�r&po�
r&po�
{�o�
{�o�
+(�
{�o�
(�
-�ݾ��o�
�
{�o�
+3(�
o�
o�
(Y
,o�
o�
(Y
,
(�
-����o�
�	-P{�o�
{�o�
{�o�
	+	(�
}�	(�
-��	��o�
�*(>$b@���(o
-%o�
,o�
(�,o�
o�
o�
(�
*0�
o�
o�
rw�po�
o�
r��po�

(~
:�	(~
:�o�
rDžpo�
o�
o�
o�
rw�po�
o�
r��po�
o�
(0


#�v@(�
o�
o�
o�
o�
o�
r��po�
,o�
o�
<�o�
r��po�
%-&r&po�
�,�o�

+c
�r�p(Y
,r)�prK�po�
s�
+9rU�p(Y
,r)�pre�po�
s�
+
X

�i2�s�
	(�
(�		(�ru�po�
(Q
r��p�(��	(��(U
o�
�,o�
�
*�[�0��o�
8[(�

{�:A(�-)(�
r	�p�

{��
(U
s

zr��po�
{�o�
o�~�o�
,)(�
r��p�{��(U
s

zo�
(�
o�
(�
{�s�
o�
�&�o�
	(�8I�o�
{�(Y
9%(Q
r��p�o�
�(U
o�
o�
r��po�
,o�

Yo�
	s
(Q
o�
o�
+no
�~	-rpo�
	(�
t�

o�
(Q
r��p�
(��(��(U
o�
o�
-��u2,o�
��,o�
�r��po�
X�i?�����(�
o�
�rƉpo�
{�o�
}�(�
:�������o�
�*A|����{�v���>nv04�
o�(�8��o�(~
,
+No��		,�	o�

+$
�
{�	oX
(�
-
+X
�i2�o�(~
-Po��,�o�

+&
�{�oX
(�
-
+X
�i2�X�i?-���,C(�+&�{�o�
(Y
,+X�i2�_
*0��rVps�

o�

8�(�
-{�:�{�(i
,erVpo�
&{�o�
&r^ po�
&(�
o�
o�
&r^ po�
&o�o�
o�
��o�
&{�r^ po�
&{�o�
rԉp(Q
(�
o�
&(�
::������o�
�o(
*��0��s�

�;�o�

8[
�
�:�o�
8�-8	-
8�-	8�:�s�
s�(�o�
+i�o�
rԉp(Q
(�
o�
,*(�
r؉p���(U
s

zoq
X�i2�	op
-*(�
rV�p���(U
s

z		s�

}�
o�
X�i?���
X

�i?����*Fo�
rԊp(�
*0��
(~
,~�
*
8P	oj

.;	.5"./'.)<.#>.\.
... /%-o�
Xs�

1
o�
&	X"0/YEJXf�t�";�8�'.<YEt\.+l(�+vr�po�
&+hr�po�
&+Zr��po�
&+Lr�po�
&+>r�po�
&+0r�po�
&+"r�po�
&+ /
(�+X	X
	o�
?����-*1
o�
&o(
*0/r�po�
&(Q
r�p�
���o�
&*�s�
��s�
��s�
��r,�ps7
��*:}�(�
*r(�
}�}�}�*Ro�
o�
(�*0:�(�{�o�
s�
o�

�
,o�
��
,o�
�*	"
.
�{�(�
,{�(�
}�{�*0.�t�
{�{�(Y
,{�{�(Y
**b{�o�
{�o�
a*�(�
(�
�(@
o�
o�
(�
*&(�
*6rًp(
+*6rًp(+*:r�p(6+*6r�p(7+*Fr��p~�
(8+*6r��p(9+*Fr�p~�
(8+*6r�p(9+*(�*(�
*:(�(�*�(�o�
o�
o�
(X
(�
,+rmp(�*Fr�pr1�p(+*6r�p(+*FrO�pr&p(+*6rO�p(+*6rm�p(:+*6rm�p(;+*J|�r~p(�*N|�r~p(�*J|�r�p(�*N|�r�p(�*6r��p(
+*6r��p(+*�(�{�(�{�(�*6r��p(<+*6r��p(=+*6r��p(+*6r��p(+*Nrьp(�(z*(�*Nr�p(�(z*(�*�u�}�{�-r
�pr)qpsd
z(�
*0b^{�o�,{�o��o(
+r�p
(�
o�
o
(>
rW�pr��p(
o
r��p(5
*
*
*(�
*{�*{�*{�*(�
*:(�
}�*&(�*V(�
}�}�*6{�(�
*0)*{�
(B
t[|�(+
3�*0)*{�
(D
t[|�(+
3�*(�
*J(�
o�
th*:(�
o�
*:(�
o�
&*:(�
o�
*Z{�,
{�oQ
*6(�
o�
*R(�
~P
o�*V(�
~P
o�*R(�
~P
o�*J(�
~P
o�*"}�*�{�-$o�
(�
}�{�-(�	s�
z{�*0"(e
�3(@
of
t3
o�*"o�
*^o�
r�p��o�
*�o�
r�po�
,o�
r�po�
��**^o�
r%�p�{o�
*0@o�
r%�po�

-*�{*^o�
rA�p�ko�
*0@o�
rA�po�

-*�k*^o�
rc�p��o�
*0@o�
rc�po�

-*��*^o�
r��p��o�
*0@o�
r��po�

-*��*Jo�
r��po�
*0!@o�
r��po�

-r&p*t�*0//(�

/"o�
o�
1o�
o�
o�

*"(�
*(�
*"(�
*2oo�
*6oo�
*2oo�
*6oo�
*(�
*�(�
o(�
o�
o(�
o�
*2oo'
*6oo+
*2oo*
*6oo�
*2oo�
*6oo�
*2oo�
*6oo�
*2oo�
*2oo�
*�oo�
oo�
oo#
rюpr�po
*2oo�
*foo�
oo�
*2oo�
*foo
oo
*�{�-s�
}�{�r��poN
{�*�{�-s�}�{�r
�poN
{�*�{�-sM
}�{�r�poN
{�*�{�-s
}�{�r3�poN
{�*0A{�-2s6
}�{�rI�poN
{�o8
oo9
&{�*0H{�-9s7
}�{�o=
oo>
&{�o=
o o>
&{�*j{�-s:
}�{�*j{�-s:
}�{�*o"*0$o�
,s�

(>
(#o�
**o$*0�o�
9�s�

o�o�
s�
(!rU�poo�
o�
rs�poo�
o�
r��poo�
o�
r��poo�
o�
rُpoo�
o�
r��po��ko,
r�po��{o,
o�
**:(
(%*�(
o�o>+o�
o�
*r(
(o
-o�o
*0�o
ol
2o
oj
o.jo
o
oo
oo"
o o
oo"
o
oo"
o
oo"
o
oo"
**�o+o,o-o.o/*�(�-(#
(=o.
(
*0�oo
oo	
or;�po�
orw�po�
o r��po�
oo�
o(�
o
(�-Noo#
(=o.
(o
-.oo#
#r��po.
oo#
'r�po.
*�oo

oo<
r�pr)�po!
*0E(o
-oo#
(rJpo.
*o(�
o�
o(�
o+
*�or1�po�
oo#
r~	po.
oo#
(rJpo.
*0C/(o
,o	
o
ooo
*oo�

(�
oW
(o
*0d�ooo
oo�
o
o�
o�
��
o�
o
oo�
o

ooo
ooo
*&o4*o5*0��o�
-*oo�
o
�(Q
(

o
�3so�.	o�3aoo�
o
�o�s%
o:o
-	o<+:oo�
2
o
o
+~�
o�
+o�
.	o�
**2~P
o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*0"�(
~�o
t/
,o
*0"�(
~�o
t/
,o
*0[�o
:O
o)
3
8�o)
-o�
o�

8�o)
3^
o�
o
+-o
t�o'
o
o
(�
1
X
o�
-��~u2,o�
�o)
3`
o�
o
+/o
t�
o'
o
	o
(�
1
X
o�
-��u2,o�
�o�
o�
2&o�
o'
o
o�
o�
Yo�
+o�
o'
o
o�
o;*N:��<�0hra�p
(o
-Xo�
o
o�
o
o�
ro�po�
-&o�
o
o�
o
o�
r}�po�
,r��p(�

*Vs�
��s�
��*(
*6r�]p(+*6r�]p(+*Fr�]p~�
(+*6r�]p(+*Fr��p~�
(+*6r��p(+*6r�:p(?+*6r�:p(@+*Fr��p~�
(+*6r��p(+*Fr0^p~�
(+*6r0^p(+*FrP^p~�
(+*6rP^p(+*Frl^p~�
(+*6rl^p(+*Fr�^p~�
(+*6r�^p(+*Frבp~�
(+*6rבp(+*(�*( 
*Fr�pr&p(+*6r�p(+*FrA�pr&p(+*6rA�p(+*6rk�p(+*Rrk�p(+(]*6r��p(+*6r��p(+*Fr��pr&p(+*6r��p(+*Fr��pr&p(+*6r��p(+*Frђpr&p(+*6rђp(+*Fr�pr&p(+*6r�p(+*Fr
�p �(
+*6r
�p(+*Fr'�pr&p(+*6r'�p(+*FrK�pr&p(+*6rK�p(+*Fr{�pr&p(+*6r{�p(+*6r��p(+*6r��p(+*6r��p(+*6r��p(+*(�*:(�(�*Fr	xpr&p(+*6r	xp(+*Fr��pr&p(+*6r��p(+*6rݓp(
+*6rݓp(+*6r��p(
+*6r��p(+*6r�p(
+*6r�p(+*6r/�p(
+*6r/�p(+*FrK�p ��(
+*6rK�p(+*Fre�p ��(
+*6re�p(+*Fr��pr&p(+*6r��p(+*Fr��pr&p(+*6r��p(+*Fr��pr&p(+*6r��p(+*�(�(�(|/r�psu
z(�(~/rM�psu
z*0n�(�%-&~�
�
	,�	o�
�i28�(~
-.�(~
-$�(Q
(
,�(Q
(
-~!
*s"
*0<(Q
r��p�
(#
���($
���(U
(�*�(}(oo
(oo
(oo
*�o�
rŕpo�
%-&�@�@*^o�
rŕp�@o�
*(O*jrەp(�(�(z*(�*(*00���
s��s��s��}(J*J(�~�o
*J(�~�o
*09�(�~�o
t
,	o�*r�pr&ps%
(�
*n{�,~P
o�}�*02�([&(�o�

(~
-(�o�

(~
-(Q
(&
i(�}�(�o�

9�9�r
�pr�po�
r�pr%�po�
r)�pr(jpo�
rtkpr�kpo�
r�Up(Y
,r&p(�rKqpr&po�
rGqpr&po�
rKqpr&po�
rGqpr&po�
(i
}�(�(�o�

(~
-}�{�**
*01
o�
-
+(�
,(�
o�

+
�&�***�o�
r7�po�
%-&����*^o�
r7�p��o�
*�o�
rg�po�
%-&����*^o�
rg�p��o�
*�o�
r{�po�
%-&����*^o�
r{�p��o�
*�o�
r��po�
%-&����*^o�
r��p��o�
*�o�
r��po�
%-&����*^o�
r��p��o�
*~o�
r��po�
%-&r�pt�*Jo�
r��po�
*~o�
r)�po�
%-&~�
t�*Jo�
r)�po�
*J(�rI�p(�*(O*~o�
r[�po�
%-&~�
t�*Jo�
r[�po�
*J(�r��p(�*(O*�o�
o
�(@
r��po
*(O*�o�
o
�(@
rӗpo
*(O*�o�
o
�(@
r�po
*(O*�o�
o
�(@
rO�po
*(O*�o�
o
�(@
r��po
*(O*�o�
r٘po�
%-&����*^o�
r٘p��o�
*~o�
r�po�
%-&~�
t�*Jo�
r�po�
*�o�
rŕpo�
%-&�@�@*�o�
rŕp�@o�
{,(�,(�*~o�
r��po�
%-&~�
t�*Jo�
r��po�
*~o�
r1�po�
%-&~�
t�*Jo�
r1�po�
*>#Y@(�
*>#Y@(�
*0?r&p
+(1rVp(�

{�o�
(�

X{�i2�*(O*j{-s'
}{*"}*0Fr&p
+,1rVp(�

(�o(
o�
(�

X(�o)
2�*(O*(
*Frq�po�
(�
*Fr��po�
(�
*Fr��po�
(�
*Frřpo�
(�
*r{,(�,{o�
*"}*0#V(i

r�Ips7
r&po8

*0��r&p
r&po�
0r&p+(�
	o�
1 (
o
	o
(
,�&�,	
++o�
o
�(@
rߙpr��p(
o

*/L0-{o
o�
o
r��po*
1
�	
�&
�*&&0&�(X(�~�
(�
(�rd
p(�
(�(�r�kprtkpo�
r�pr
�po�
r%�pr�po�
r(jpr)�po�
(�
(�(�(Q
(�
(�
o�
o�

+q(�,'o
oj
u�o<
rHprZpo!
o
oj
o>
Р(@
(�
,o
oj
u�(�o�
X
o
ol
2�*0L(_r�p(�o�
r-�p(�o�
rU�p(�o�
rs�p(�o�
*0��(
(#
#Y@(�
�ao(
o.
(#

#Y@(�
�ao(
o.
(�-5
+%{�o�o
{�o"
X
{�i2�*o
{�o"
*.s�
��*&-(�*0��(�(<
r> po�
o!
(<
r�mprpo!
(<
r�mprpo!
(<
r0prpo!
o�
(�,(<
r�pr�mpo!
(#
(�

�ao(
o.
*(+
*(,
*"(�*:(�
}	*{	*0&�(�
,*u
,{	{	�**2|	(-
*2~o�
*�s��s��~�*(�
*(.
*{*"}*{*"}*(�
*:(�
}*F{o�
o
*6(�o/
*s0
z6(�o�
*J(�oj
t9*s0
z6(�o"
*2(�o
*6(�o1
*:(�o2
*2(�ol
*2(�o3
*:(�o4
*F(�o
s	*2(�o
*:(�
}*F{o
t9*:}(G
*F{o
t9*2{o�
*2{o5
*0)�{#
(B
t0|#(A+
3�*0)�{#
(D
t0|#(A+
3�*j{"-(�
}"{"*"}"*�(6
(~
,(W
(7
(6
*"(7
*{*"}*V{-~�
*{*"}*V{-~�
*{*"}*V{-~�
*{*"}*V{-~�
*{*"}*V{-~�
*{*"}*V{-~�
*{*"}*V{-~�
*{*"}*V{-~�
*{*"}*V{-~�
*{*"}*V{-~�
*{*"}*V{-~�
*{*"}*V{ -~�
*{ *"} *V{-~�
*{*"}*V{-~�
*{*"}*V{!-~�
*{!*"}!*0��(O
(8
9�� (@
r��p(9
(3o�
t=
(:
o�
tk
oN,o,(;o�
X
+o,(9o,(:X
o�
rۚp(;
(Q
o�
(<
o�
r��p((;
(Q
o�
(<
o�
r�p(!(<
o�
r%�p(-(<
o�
r?�p()(<
o�
rY�p(+(<
o�
r��p('(<
o�
r��po�
(<
o�
r՛p((<
o�
r��p((<
o�
r�p(#(<
o�
r?�p(%(<
o�
ra�p(/(<
o�
r��p(1(<
o�
r��p((<
o�
rӜp((<
o�
r��poH(<
o�
r�poh(<
o�
r?�poF(<
o�
rQ�pof(<
o�
rs�p((<
o�
r��p(Q
(�
(<
oP(~
-oR,oP(=
(+(�
(o0EG7�*o�
r��pr۝p(<
o�
r�p(Q
(�
(<
*(o>
o?
(o>
o@
(o>
oA
oj,	o^o�
XX
od,oj,	X
+	X
o�
r-�p(<
o�
r9�p(<
o�
rI�p(<
o�
r��pr]�p(<
o�
r�p(Q
(�
(<
*(oB
oC
(oB
oD
��(oB
oC
�o
�o�
(oE
		�o�
(oE
(�
		�o�
(oE
(�
	oJ,oJ�]o(
+		o�
r��p(<
o�
r��p	(<
o�
rÞpol(Q
(�
(<
(oB
oF
r&p
(oB
oG
(oB
oH
(�
(~
,	r&p
+,(oB
oG
rVp(oB
oH
(

oL,r&p+

ob,9
(~
-0(I

��o�
	�o�
XX
o�
rӞp(<
o�
r�p
(<
o�
r��pr�p(<
o�
r�p(Q
(�
(<
*(oB
oC

(oB
oD
��(oB
oC
�o
�o�
(oE
�o�
(oE
(�
�o�
(oE
(�
oJ,oJ�]o(
+o�
r��p
(<
o�
r��p(<
o�
rÞpol(Q
(�
(<
o�
r��pr=�p(<
o�
r�p(Q
(�
(<
*(oB
oF
r&p(oB
oG
(oB
oH
(�
(~
,	r&p+,(oB
oG
rVp(oB
oH
(
oL,r&p+ob,9(~
-0(I
��o�
	�o�
XX
o�
rӞp(<
o�
r�p(<
o�
r��prm�p(<
o�
r�p(Q
(�
(<
*V(:
o�
uk�*0I�(3o�
t=
(:
o�
tkr&p(7
r&p(J
r&p
(-To�
oX
()(Y
,<((7
((~
,(6
(J
+((J
oH
	,<o�
o�
,/(+o�
,"(+s
o�
o�

�&
�	9�o�
o�
9�oP(~
,(�
oK
r&p(oB
oG
(~
-C(oB
oH
(~
-,(oB
oG
rVp(oB
oH
(
o0YE$$$8o�
((L
&��&
��o�
o�
ob,S(~
-Jo0.	o038�;�o�
		�o�
,	�o�
XYo,(;o�

o0.;oP(~
-
oP(=
+(�
oB
oC
o�

YZX

.
	,o�
((M
&�&
�	-:((7
((~
,(6
(J
+((J
oH	9�(!(~
,(-(~
:�o0Emmmm8Z(!(~
:�(!((/
o�
o�
��
�8&((7
((~
,(6
(J
+((J

�	-:(#(7
(%(~
,(6
(J
+(%(J
oH	9�(-(~
:�(-((/
o�
o�
��
�8&((7
((~
,(6
(J
+((J

�	:1(/(7
(1(~
,(6
(J
+(1(J
oH8�o�
((L

(!(~
-a(!((L

(N

�&
�	-:(#(7
(%(~
,(6
(J
+(%(J
oH	9k(-(~
:[(-((L

(O

�&
�	:1(/(7
(1(~
,(6
(J
+(1(J
oH8�o�
((M
(!(~
-a(!((M
(P

�&
�	-:(#(7
(%(~
,(6
(J
+(%(J
oH	,n(-(~
-a(-((M
(Q

�&
�	-:(/(7
(1(~
,(6
(J
+(1(J
oH	,i{#,ao�
	sR
{#oS
oT

	-:oH((7
((~
,(6
(J
+((J
	-^��r��p�o�
�r˟p��rџp�(�
� (@
rٟpoW
(�
(3
	*p�����0(X8�(8��>��80�}r&p}r&p}r&p}r&p}r&p}r&p}r&p}r&p}r&p}r&p}r&p}r&p}r&p}r&p} r&p}!(K
*0X�
(<+?o�
r�Ip(Y
,-
+ r�po�
o*
.-*,
Xo�
2�*0\�
(<+Ao�
r�Ip(Y
,-
+"r�po�
o*
.-+,
Xo�
2�*0#_(9
(:(<YXo�
*0��-rr>ps�
zs!

s!
r&p

8�r�p	o�
o*
.yoU
-$	o�
o�
&oV
	o�
8|	o�
r�p(Y
,r�po�
&8W	o�
rp(Y
9@rpo�
&8/r�p	o�
o*
3~	o�
r#�p(i
,j	o�
rNp(i
,VoU
-!	o�
o�
&oV
r&p8�r'�p	o�
o*
;�	o�
o�
&8�	o�
r#�p(Y
,oU
-oV
rpo�
&+j	o�
rNp(Y
,VoU
,No(
(Q
(/
Y1+o�
&X2�oV
rpo�
&r&p	X
	o�
?2���o(
*Nr=�p(�(z*(<*rM�p*(?*�(
s<(`(_r&po�
rW�p(d*b(_rg�po�(f*(i*:(
}'*{'*{(*"}(*R(v
t})*2{)oW
*Jr��p��oS*2{)o�*Jr��p��oS*2{)o�*Jr%�p�{oS*2{)o�*JrA�p�koS*0x�sy

r��pr��poR,o�
&r��pr٠poR,o�
&r%�pr��poR,o�
&rA�pr�poR,o�
&*03�{)({
o|

,oX
,oY
oZ
s[
**0/�{)({
o|

-r9�psd
z{)o�
*2(E
t�*0<� s�

(Q
s\
sn
(ToH(Too
o(
*(�
*(�
*�u�}*{*-r_�pr)qpsd
z(�
*0W�{*o'
~�
(]
,{* �s^
o+
{*o*
~�
(]
,{* ,s^
o�
{*o
&(_

o(
r=qpo

1 o(
o(
r=qpo

o�

+o�
Yo

rGqpr&po�
rKqpr&po�
rOqpr&po�

r��po�
-r��prϡpo�

s�
{*o�(B+oa
t�8�
r��po�
&	oG(~
,
{*o�+	oGr
�pob
&	oIu�,oc
o�
&+r1�po�
&	oW
o�
&rX`po�
&	oL(~
,
{*o�+	oLr
�pob
&	oNu�,oc
o�
&+r]�po�
&	oW
o�
&rX`po�
&r��po�
&X�i?��rX`po�
&o(
*(d
*(�
*0���Er��pom
tE�r��pom
tE�

+G	�,9o�
�+(@
��+(@
s9
�(q
oh
X	�i2�(e
**(J*~o�
r٢po�
%-&~�
t�*Jo�
r٢po�
*{-*"}-*{,*"},*(�
*"(�
*�o�
r�po�
%-&����*^o�
r�p��o�
*~o�
r�po�
%-&~�
t�*Jo�
r�po�
*~o�
r�po�
%-&~�
t�*Jo�
r�po�
*~o�
rpo�
%-&~�
t�*Jo�
rpo�
*~o�
r�po�
%-&~�
t�*Jo�
r�po�
*�o�
r!�po�
%-&�p�p*^o�
r!�p�po�
*~o�
r;�po�
%-&~�
t�*Jo�
r;�po�
*~o�
ra�po�
%-&~�
t�*Jo�
ra�po�
*{+*"}+*{0*"}0*0�(
{-,-s/
}/{-{/o
o
{/o"
{,9�s/

{,o
{.o�
9�(p9�o�
r��p(�
s'
oN
of
o
o"
sg
o�
r��p(�
oN
oh

	�{sK
oi
	oj
o
o"
o
	o"
	o�
(y*o
o"
*0T�u�-*u�oW

o�
Yo�
(v-*r��p(�
o�
,u$,of
*0o�
r��p(�
o�
(}
rǣpo�
(}
r�po�
(}
r�po�
r#�po�
(�
o�
r�	po�
r~	pok
{.o�
,
r1�pok
ol
(}{/,&{/of
{/oo
{/of
+(^o�
om
om
om
om
om
*�{.o�
,
r1�pok
Lol
*0�{/,{/of
(
o�
o�

r=�po�
(v,o�
-r~	pok
(rJpok
ol
on
om
(Qo
*0W(_r]�pr#�po�
(�
o�
{.,,rq�p{.o�
o�
r}�p{.o�
o,
*"}.*(�
*5*(o
*(p
*0�o�
�
,o�
o=9�o>o�
o:
o�
1r��po:
o?(�oq
,r��prˤp(�o6
o�
1rϤpo6
(�or
."r�pА(@
��(s
(�o�
-r��pr	�p(�,r�pr	�p(�ot
o�
1r%�pot
(�(��,o�
�*�00�oW
,o�
o�
ou

(~
-o�
o�
-

rE�po�
o�
, (v
(�
o�
o�

(~
-	"o�
o<L.	o<3Ho�
-3o�
(�
,"o'
(�
,o*
(�
-
rW�pok
ow
,o�
ox
-
o�
oy
o<
oz
o

+	o
t�o{
o
	o�
-�*�o
�(@
rq�p~�
o|
*0[�r��po�
r
p(

rӥp(}
o�
r�p(�
(Q
r�p�o�
�(U
(3
*0So=,J�(@
r�p(9
�(@
rq�pr>�p(3
�(@
rc�pr��p(�
*.(�*2(<
*Nr>�p(�(z*(�*jrZ�p(�(�(z*(�*Nrp�p(�(z*(�**(J*^(�o�~�o
*^(�o�~�o
*01
o�
-
+(�
,(�
o�

+
�&�***2(�o�*6(�o�*�o�
r��po�
%-&����*^o�
r��p��o�
*�o�
rg�po�
%-&����*^o�
rg�p��o�
*~o�
r�Ipo�
%-&r&pt�*Jo�
r�Ipo�
*2(�o�*6(�o�*2(�o�*6(�o�*2(�o�*6(�o�*2(�o�*6(�o�*2(�o�*6(�o�*2(�o�*6(�o�*2(�o�*6(�o�*2(�o�*6(�o�*2(�o�*6(�o�*2(�o�*6(�o�*2(�o�*6(�o�*('
*"(+
*(*
*"(�
*(~
*"(�
*j{4-s-	}4{4*j{9-s}9{9*j{:-s}:{:*0�o�
s�
r��po
*�(w
,(�,&
(�-r&p+r��pr��p(�
o�
(
*�(_r�mp(�o�
o�
{5,r8�p{5o�
o�
*0W�(
(�o�(�o�
(�}5(�o�(�o�
s6

o
o	
rX�po�
o#
r��po)
s7
%}7s:
o
(�o"
r��po�
o=
o>
&o8
o9
&s7
s:
%}6r�po�
o
(�o"
o=
o>
&o8
o9
&s7
%}8s:
o
(�o"
r8�po�
o=
o>
&o8
o9
&o
o"
*0@(�os�o�
(�os
o�
(�os�o�
*0e�(�os>o�
(�os�o�
(�os�o�
(�os
o�
(�oso�
(�os�o�
(�os�o�
(�oso�
(�os�o�
(�os�o�
(�os�o�
(�os�o�
(�os�o�
sC(�oo�
s�
	r��p%oN
o{(�o	o�
(�os�o�
(�os�o�
sl(�oo�
s�r��p%	oN
	o{(�oo�
(�osDo�
(�os�o�
(�oso�
(�os�o�
s@(�oo�
o-
s9r��po6r��po8o�
s9r�po6r>�po8o�
s9rV�po6r��po8o�
s9r��po6r�po8o�
s9r�po6r8�po8o�
s9rX�po6r��po8o�
s9r��po6r��po8o�
s9rʮpo6rޮpo8o�
(�os�o�
s@(�oo�
o-
s9r�po6r��po8o�
s9r�po6r�po8o�
s9r,�po6r6�po8o�
s9rJ�po6rT�po8o�
s9rh�po6rr�po8o�
s9r��po6r��po8o�
s9r��po6r��po8o�
(�os�o�
(�osBo�
(�osUo�
(�oso�
(�os>o�
(�oso�
(�os�o�
(�os�o�
(�os(	o�
(�os�o�
(�os�	o�
(�osno�
(�os�o�
(�os&	o�
(�osSo�
(�os;o�
(�os�o�
(�os�o�
(�os�o�
(�os�o�
(�os^o�
(�os�o�
(�os�o�
*0��(�oo�
o�(�ooh
-a(�o�(�o�
,(�o�(�o�
&{8of
(�o
u�o#
r¯pr�Epo;
+T(�o(�o�o
+ (�oog
o�ouX
(�ooh
2�(�oo�
o�(�ooh
-h(�o�(�o�
,(�o�(�o�
&{7of
(�o
u�o#
r�pr�Epo;
}5+d(�o�o+<(�oog
o�ou(�oog
o�orX(�ooh
2�o'
(�
-1o
oj
u�o#
o'

�ao(
o.
o*
(�
-2o
oj
u�o#

o*
�ao(
o.
o�
(�,(�-{6o#
r�po)
(�o�o�*0(X�&�};*		n{;-s
o
(
*�o	
(�o(�o(�o�*"(-
*f(
ok

ok
*6r�p(
+*6r�p(+*Fr�pr&p(+*6r�p(+*6r/�p(
+*6r/�p(+*FrI�pr&p(+*6rI�p(+*(�*(�
*:(�
}<*{<*2(�(~
**(�*r(�
}=}>}?*{=*"}=*{>*"}>*{?*"}?*Fre�p"�?(C+*6re�p(D+*6r��p(E+*6r��p(F+*Fr��p"?(C+*6r��p(D+*6r��p(E+*6r��p(F+*6rٱp(E+*6rٱp(F+*6r��p(E+*6r��p(F+*6r�p(E+*6r�p(F+*6r9�p(E+*6r9�p(F+*FrS�p"��L?(C+*6rS�p(D+*Fru�p"@(C+*6ru�p(D+*Fr��p"?(C+*6r��p(D+*Fr��p"�@(C+*6r��p(D+*6r��p(G+*6r��p(H+*Frٲp �(G+*6rٲp(H+*6r��p(G+*6r��p(H+*Fr%�p"@(C+*6r%�p(D+*Fr?�p"@(C+*6r?�p(D+*:r[�pd(G+*6r[�p(H+*Fr��p"?(C+*6r��p(D+*Fr��p~�
(I+*6r��p(J+*Fr��p~�
(I+*6r��p(J+*Frӳp~�
(I+*6rӳp(J+*Fr��p~�
(I+*6r��p(J+*Fr�p~�
(I+*6r�p(J+*Fr�p~�
(I+*6r�p(J+*FrI�p~�
(I+*6rI�p(J+*6rm�p(E+*6rm�p(F+*Fr��p~�
(I+*6r��p(J+*j{@-s�
}@{@*(
*(�
*j{A-s�
}A{A**V(�
}�
}�
*{�
*{�
*0U�s!

r��po�
&{�
�6o�
&r��po�
&{�
��o�
&rɴpo�
&o(
*0;�u�
,/(�
{�
{�
o�
,(�
{�
{�
o�
**0:/ �Ԟ�
 )UU�Z(�
{�
o�
X
 )UU�Z(�
{�
o�
X
*r(�
}�
}�
}�
*{�
*{�
*{�
*0s�s!

r��po�
&{�
�6o�
&rϴpo�
&{�
��o�
&r�po�
&{�
��o�
&rɴpo�
&o(
*0S�u�
,G(�
{�
{�
o�
,/(�
{�
{�
o�
,(�
{�
{�
o�
**0S/ �OY
 )UU�Z(�
{�
o�
X
 )UU�Z(�
{�
o�
X
 )UU�Z(�
{�
o�
X
*V(�
}�
}�
*{�
*{�
*0U�s!

r��po�
&{�
�6o�
&r�po�
&{�
��o�
&rɴpo�
&o(
*0;�u�
,/(�
{�
{�
o�
,(�
{�
{�
o�
**0:/ � 
 )UU�Z(�
{�
o�
X
 )UU�Z(�
{�
o�
X
*0�s�
}Bs�
}C(o�
+1(�

o
o"
{Bo�
os�
o�
&(�
-����o�
�(o�
+l(�
o
o"
u�,,u�{Co�
o�
o�
s�
o�
&+$u�
{C	o�
	o�
s�
o�
&(�
-����o�
�*#>a|y�0\(_r�p{Bo,
r)�p{Co,
r;�p((b
o,
rK�po�
o
o�
o,
*�o�
o�
-*o�
o�
�8*No�
�8o�
*(G*0[�~D,*r_�p(�
t�
,9s��Eo~EЙ(@
(�
~Eoo��F�D*.($~F*(�
*(�
*]*:(�(�*0��(�(0
EWN 7+q(c(e(k(C+S(e(k(C+<(e(k(C+%(c+(c(e(k(C(P(~
,r&p(Q*0K(�(X
o�
tko�
o�
o�
o�
(X
(�
,+rmp(�*Fr��pr&p(+*�(n-r��psu
zr��p(+*Frߵpr��p(+*6rߵp(+*6r�p(K+*0��r�p(L+
ERJ4*(c(e(k(C*(e(k(C*(e(k(C*(c*(c(e(k(C*6r"�p(+*6r"�p(+*6rJ�p(+*6rJ�p(+*Frr�pr&p(+*6rr�p(+*6r��p(+*6r��p(+*6r��p(+*6r��p(+*6rطp(+*6rطp(+*Fr��pr&p(+*6r��p(+*Fr"�pr&p(+*6r"�p(+*6r4�p(M+*6r4�p(N+*FrR�pr�p(+*6rR�p(+*Frh�pr��p(+*6rh�p(+*Fr��pr̸p(+*6r��p(+*6r�p(O+*6r�p(P+*6r
�p(Q+*6r
�p(R+*6r(�p(+*6r(�p(+*FrR�pr&p(+*0P�
(~
,(�

(S+(=

(SrR�poK
(+oB
oC
(UoB
oF
(Wo>
o�
(Yo>
o�
([oB
oD
��
	oB
oC
�	o
�o�
oE
�o�
oE
(�
�o�
oE
(�
(]o>
o?
(_oB
oG
oB
oH
(�
(~
,r&p(a*oB
oG
rVpoB
oH
(
(a*6rj�p(+*6rj�p(+*Fr��pr&p(+*6r��p(+*Fr��pr&p(+*6r��p(+*Fr�pr&p(+*6r�p(+*Fr"�pr&p(+*6r"�p(+*FrZ�pr&p(+*6rZ�p(+*Fr~�pr&p(+*6r~�p(+*Fr��pr&p(+*6r��p(+*6r�p(+*6r�p(+*6r�p(S+*6r�p(T+*Fr"�prH�p(+*6r"�p(+*Frx�pr��p(+*6rx�p(+*6rʻp(S+*6rʻp(T+*FrÞp l(
+*�(Q
(�
o�
.r�psu
zrÞp(+*0K�(,
(0(~
:-.@"(;YE�@i8���r$�p�r:�p�rP�p�rf�p�(	+��*��rx�p�r��p�(	+��*��r��p�r��p�r�p�r�p�r*�p�rR�p�rt�p�r��p�(	+��*	
+$	
oj

	9.	..
	,.�
X

	o�
2�**(�*0S�sR
r��p(�oUr��poJ%o~
r��p(�
o�
sRr
�p(�oUr
�poJ%o~
r�p(�
o�
s6
o<
r>
prpo!
o<
rL
prpo!
o<
rh
prpo!
o#
r�Wpr
po;
s7

o8
	o9
&s:
	o=
o>
&o
o
o"
o
o"
(�o0
(�r��psXo�
(�r
�psXo�
(�*�rd�p}Js�
}Ks�
}L(o*{J*"}J*0��r0=ps

r0=ps
s6
o<
r>
prpo!
o<
rL
prpo!
o<
rh
prp�po!
s7

o8
	o9
&s:
	o=
o>
&o
o
o"
o
rt�p(�s
o"
o
r^ ps
o"
s:
	o=
o>
&o
{Ko#
r�Wpr|�po;
{K �o�
o
{Ko"
s7

o8
	o9
&s:
	o=
o>
&o
o
o"
o
r��p(�s
o"
o
r^ ps
o"
s:
	o=
o>
&o
{Lo%
r�Wpr��po;
{Lo�
r��pr��p(�r��ps�
o
{Lo�
r��pr��p(�rd�ps�
o
{Lo�
r��prȾp(�r־ps�
o
{Lo�
r��pr�p(�r�ps�
o
o
{Lo"
(�o0
(�r��p{KsXo�
(�r�p{LsXo�
(p*0H{Ko<
r`p{Ko�
o!
{Lo 
r`p{Lo�
o!
(�*f(�r�p(ro,
*"(x*&(y*V(�
}T}U*{T*{U*0&�(�
,*uB
,{T{T�**2|T(-
*2~So�
*�sx�Qsx�R~R�S*�(��D(@
r*�prmp(�
(�*0�(�(~
:�(�(�u�
-rf�psu
zoX
(X
(i
,r��psu
zo;(~
,o=(~
,r��psu
zo?(~
,
oA(~
-rR�psu
zs�
oW
r�p(�
oN
o#
r~	po)
o
o"
oW
o�
o�
o
(�r&po�
(�*Fr�pr&p(+*6r�p(+*Fr#�p~�
(+*6r#�p(+*6rA�p(+*6rA�p(+*Fri�p~�
(+*6ri�p(+*Fr��p~�
(+*6r��p(+*(�**V(
#r��po�
*(�
*Fr
Hpr&p(+*6r
Hp(+*Fr��pr&p(+*6r��p(+*{Z*"}Z*{[*"}[*6r$p(
+*6r$p(+*6r4p(
+*6r4p(+*J|Yr~p(�*N|Yr~p(�*J|Xr�p(�*N|Xr�p(�*6r��p(+*6r��p(+*6r�p(+*6r�p(+*6r-�p(+*6r-�p(+*6rK�p(U+*6rK�p(V+*6rc�p(+*6rc�p(+*{\*"}\*6r�p(W+*6r�p(X+*Frw�pr&p(+*6rw�p(+*00�(�(�@(�r&p(Y
,r��psu
z(�r&p(Y
,r��psu
z
o�
o�
o
o

+"	o
tMoW
r�p(Y
,
+	o�
-��	u2,o�
�:�s�
(�(i
o�
o 
r`pr�po�
o 
r�pr�po�
o 
r�pr�po�
o 
r/�pr;�po�
o�
o�
o
o"
*e.�(
*(�
*~`*{_*"}_*{^*"}^*J{^~](
*0��
(�%
9�s�
o�
o�
o�
+"o
t�{^o�
,o�
o�
-��u2,o�
�o�
+o�

o�
	o
o�
-��,o�
�*'/Vs!�0��
(�%
9�s�
o�
o�
o�
+#o
t�(�o�
,o�
o�
-��u2,o�
�o�
+o�

o�
	o
o�
-��,o�
�*'0Wt!�0a�-rC�ps�
z~�
(Y
,rY�ps�
z
(�%
,.o�
o�
.(�	sE
zo�
(�o�
*0M�-rY�ps�
z
(�%
,1o�
(�o
,o�
(�o
us,**0B�-rY�ps�
z
(�%
,"o�
(�o
us,o�
*~�
*0B�-rY�ps�
z
(�%
,"o�
(�o
us,o�
*~�
*0Z�-rY�ps�
z
(�%
,>o�
(�o
,(o�
(�o
us,*rm�ps�
z**0��s�

(�%9�o�
o�
o�
+Mo
t�{^o�
,2(
o�
o
, (
o�
o
us
	,	o�
o�
-��u2,o�
�*'Z�n(
,(
o�
,(
**.r��p�]*.s��`*(�
*6r��p(
+*6r��p(+*6r��p(Y+*6r��p(Z+*6r��p(
+*6r��p(+*6r��p([+*6r��p(\+*Jr�p"���=(]+k*6r�p(^+*6r-�p(+*6r-�p(+*0��(�(�/&(�
rG�p�
(X
�(U
s�
z(�/&(�
r��p�(X
�(U
s�
z(�"5&(�
r��p�(X
�(U
s�
z*(�*('
*B(�(�*{c*�}c(#
{c-r1�p+r~	po)
*{f*{d*{e*{e*0)�u!
,o�
o�
sB	(�
**Z}d}e}f*:(�(�*0N(��L(@
r6�prmp(�
o�
o�
o�
(X
(�
,+rmp(�*Frx�pr&p(+*6rx�p(+*Fr��pr&p(+*6r��p(+*(�
*('
*Jo�
{mo!*No�
{mo"*Jo�
{mo#*�(�0o�
{mo$*r��pr��ps�
zJo�
{mo+*�1(o�
{mo,(�1(�(�*r	zpr.�ps�
z*Jo�
{mo�*No�
{mo�*Jo�
{mo/*No�
{mo0*Jo�
{mo'*No�
{mo(*Jo�
{mo-*No�
{mo.*Jo�
{mo1*No�
{mo2*Jo�
{mo3*No�
{mo4*Jo�
{mo5*No�
{mo6*{o*"}o*6o�
{p*jo�
}p{mo**(W
*�(N
o�
{mrv�p(�
oN
{mo�
*�(	
s}m(o
-o
{mo"
*0��(�
(�
(�r��pr��po
r�apr��po
r`po�
r��p(�
o
r��p(�
(�
o
ol
8�r`po�
r��p(Q
(�
(
o
{o-r�pr�po�
{p-J0#r�	p(�r�rp(�(
o
+mr�	p(�r�rp(�(
o
+JY0#r�	p(�r�rp(�(
o
+!r�	p(�r�rp(�(
o
Lol
r�=po�
om
X(�X?����om
*0B�(�
o�
o

r&pr&pr&po�
&o�
{mo�
o&*J(
~lo
*J(
~lo
*0"�(
~lo
tP
,o
	*{n*0�s
	
o	o	}n*0�s
	
o	*.s�
�l*0A�(
-rH ps�
z�;�o�

�i3�}q�}r*{q*{r*{s*"}s*Fr�pr&p(+*6r�p(+*6rM{p(
+*6rM{p(+*6rQ{p(
+*6rQ{p(+*6r<�p(?+*6r<�p(@+*6r\�p(+*6r\�p(+*J|wr~p(�*N|wr~p(�*J|xr�p(�*N|xr�p(�*�(�{w(�{x(�*(�*:(�(�*Frn�pr&p(+*6rn�p(+*Nr��p(�(z*(�*Nr��p(�(z*(<*N(ys�(p*(t*Nr��p(�(z*(*	*(�*(�
*"(0	*:(�
}�*{�*0&�(�
,*u]
,{�{��**2|�(-
*2~�o�
*�s0	��s0	��~���*Fr��p"�?(]+*6r��p(^+*6r�:p(
+*6r�:p(+*6r��p(+*6r��p(+*6r�p(+*6r�p(+*6rًp(
+*6rًp(+*(�*(J
*B(%
}�*{�*"(�
*nu+-r�psu
z("
*ru+-r�psu
z(�
*6(j
t+*{�*"}�*{�*"}�*vr&p}�r&p}�(
*6r�wp(
+*6r�wp(+*:r�wpd(
+*6r�wp(+*Fr�xp �(
+*6r�xp(+*6rSxp(
+*6rSxp(+*6r��p(+*6r��p(+*6r��p(_+*6r��p(`+*6r_xp((+*6r_xp()+*6r�xp(+*6r�xp(+*6r��p(+*6r��p(+*6r��p(+*6r��p(+*6r�p(+*6r�p(+*6r�xp(+*6r�xp(+*6r&�p(+*6r&�p(+*6rH�p(
+*6rH�p(+*
*6r\�p(a+*6r\�p(b+*6r'xp(+*6r'xp(+*6r��p(+*6r��p(+*6r��p(+*6r��p(+*Fr��p"���=(]+*6r��p(^+*Fr�xp~�
(+*6r�xp(+*Frz:p~�
(+*6rz:p(+*Fr�p~�
(+*6r�p(+*Fr*�p~�
(+*6r*�p(+*FrN�p~�
(+*6rN�p(+*Frh�p~�
(+*6rh�p(+*Fr��p~�
(+*6r��p(+*:(�(�*Fr�xp~�
(+*6r�xp(+*6rwxp(
+*6rwxp(+*Fr	xp~�
(+*6r	xp(+*Fr�wp~�
(+*6r�wp(+*Fr�wpr&p(+*6r�wp(+*Nr��p(�(z*(�*&(�	*"(�	*&(�	*:(�
}�*V(�
}�}�*r(�
}�}�}�*~o�
r�po�
%-&~�
t�*Jo�
r�po�
*j(�	-~�
*{�o�
*6(�	o�
*j(�	-~�
*{�o�
*6(�	o�
*Z(�	-*{�o�
*6(�	o�
*j(�	-~�
*{�o�
*6(�	o�
*j(�	-~�
*{�o�
*6(�	o
*2(�	o�
*j(�	-~�
*(�	o�
*6(�	o�
*j(�	-~�
*(�	o�
*6(�	o�
*j(�	-~�
*(�	o�
*6(�	o�
*�{�-o�	}�(�
,{�o�
{�*6{���*2(�
o�
*0"(e
�3(@
of
t3
o�*{�*6(�	{�*�{�-o�
r�p(�
}�{�*{�*0F{�-7o�	,/�L(@
o�	�Lr�p(�
(Q
o�
}�{�*�{�-$o�
(�
}�{�-(�	s�
z*0/(�

,*o�
+o�

,*o�
-�*04�-r��ps�
zo�	o�	
,ol
*o�	o�
*V-r��ps�
zom
*:(�
(%*0F(
(�	(�	oc+(�
o�	,(�	o�	(�
o�
o�
*2o�
s-
**
*n(�	,(�	o�
&(�
*0&o�	,(�	o�

(~
-o�	**�o�	o�	o�	(�	o
*"(�
*0��oW
,o�
o�
o�	L.	o�	3(�	(�	,(�	ox
-(�	o�
(�
oz
o
+o
t�
(�
o{
o
o�
-��u2,o�
�*b+�0��o�	-0o�	
(�
, o�	(�
,o�	(�
-I(�
o�
r��po�
-(�
o�
r��po�
,r�pok
*rW�pok
*08o�
-*(�
s�

o�	o�
s�
o�	o�
*0Bo�
-*s�

(>
("o�
o�	o�
1o�	s�
o�
*�(!o�	,r�p(�	o�
*0{�
}�(&*"}�*o�	*o�	*"o�
*&o�	*o�	*o�	*"o�	*o�	*"o�	*o�	*{�*"}�*{�*"}�*(�
*0��(�
t*
o�
o�
��o�
o
(�
o�
o
o�
o

(�

	r(�po�
s�
o�
rT�ps
%��	s
o
r��pr��p(�
*0Fo(

o�
(�
o�
o
(>
o�
r�9po�
o�
o
o�

*
*0&bs;

(�
o=
(E
sHoG
&*(�
*(�
*J|�r��p(�*N|�r��p(�*J|�r��p(�*N|�r��p(�*�(�{�(�{�(�{�(�	{�(�	*0��-*o�r�pop
,|(~
-to�r�pop
,(~
,Xo�r8�pop
,(~
,<o�r�po�
&o�r8�p(Q
rR�p�
	�	(U
oq
o�or
+os
(�	o�
-��,o�
�*��(�*(�
*�{�-.s;
}�{�(<
o=
{�s�	oG
&{�*RoE
(v
}�*Z{�oE
tOo�*08�{�oE
({
r��po|

{�oE
��o�
�&�*44Z{�oE
tOo�*08�{�oE
({
r	zpo|

{�oE
��o�
�&�*44Z{�oE
tOo�*03�{�oE
({
r7zpo|

{�oE
��o�
*0�{�:�sy
}�{�rj�pr��ps�
o�
&{�r	zpr��ps�
o�
&{�r��pr��ps�
o�
&{�r��pr��ps�
o�
&{�r�pr&�ps�
o�
&{�*0F�{�oE
tO
({
rH�po|
o�-��o�
*��o�
*0F�{�oE
tO
({
r�ypo|
o�-�Ro�
*�Ro�
*(�
*03�~�(�
, r`�p�n(@
o�
s

��~�*~�*��*V(�	r��p~�o�
*V(�	r��p~�o�
*Fr(�pr&p(+*6r(�p(+*FrJ�pr&p(+*6rJ�p(+*Frp�pr&p(+*6rp�p(+*>(�	(~
�*Fr��pr&p(+*6r��p(+*Fr��pr&p(+*6r��p(+*>(
(~
�*Fr��pr&p(+*6r��p(+*Vr��p#�?(&+*6r��p('+*Vr�wp#�������(&+*6r�wp('+*Vr�wp#�������(&+*6r�wp('+*Fr��pr&p(+*6r��p(+*6r�:p(
+*6r�:p(+*Fr�ypr&p(+*6r�yp(+*(�*(�
*(�
*
*
*0%,o�
-*o�
(

,s�
**0��s�

o�
o�

+H	o
tuM,2uS-*oW
,"oW
o�
,(
,
oW
o�
&	o�
-��	u2,o�
�~�
o�
o�
*Tf0!�
o>
o(
r�po*
.
*(�
*jrT�p(�(�(z*(�*Nrd�p(�(z*(�*0Q�
(E
oN
9;Ъ(@
oO
t�9r�Ipr�Ipo�

+	om

	o�
,1	o�
1(	o�
r�Ip(Y
-�	o�
r��p(Y
-�o�
o�
,	(�

+z(�
o�
(�
r�Ipr�Ipo�
+om
o�
,4o�
1*o�
r�Ip(Y
-�o�
r��p(Y
-�(�
	(�

(�
o�
om
r�Ipr�Ipo�

o*
,
*(�
*( 
*2(E
t4*0�� s�

(Q
s\
sn
1r�po�
("
o�
o
�4(@
r��po
o�
6ol
om
("
o�("
oo
o(
*(�
*j(
s
}�}�*"}�*{�*"}�*{�*(�
*V(�
}�}�*r(�
}�}�}�*6r��p(
+*6r��p(+*Fr��p �(
+*6r��p(+*:r�p
(
+*6r�p(+*Fr&�p~�
(+*6r&�p(+*FrV�p~�
(+*6rV�p(+*Frr�p~�
(+*6rr�p(+*6rk�p(+*Rrk�p(+(<
*6r��p(+*6r��p(+*Fr��pr&p(+*6r��p(+*Fr��pr&p(+*6r��p(+*Fr��pr&p(+*6r��p(+*6r:�p(+*6r:�p(+*FrV�p~�
(+*6rV�p(+*6r~�p(+*6r~�p(+*6r��p(+*6r��p(+*J|�r~p(�*N|�r~p(�*J|�r�p(�*N|�r�p(�*Fr;�p~�
(+*6r;�p(+*Fra�p~�
(+*6ra�p(+*Fr0^p~�
(+*6r0^p(+*FrP^p~�
(+*6rP^p(+*Frl^p~�
(+*6rl^p(+*Fr�^p~�
(+*6r�^p(+*Fr��p~�
(+*6r��p(+*Fr�p~�
(+*6r�p(+*Fr<�p~�
(+*6r<�p(+*�(�{�(�{�(�*Js�
s
(�
*(�*{�*"}�*{�*"}�*{�*"}�*{�*"}�*{�*"}�*{�*"}�*(�
*(�
*2(E
t�*0!bs;

(<
o=
s�
oG
&*0��(~
:�(r
o�
u+
-$(Q
r\�p��(U
su
z(r

+o�
	oG	3	+	X
	o�
ol
2�.({
r��po|
��o�
o�
*
*0
��-r��ps�
z(r
o�
9(Q
r��p�(r
o�
oW
�(U
s

o�
&(r
o�
(y
s!

(r
o�
o

88
o
t+ov(y
(Q
r��p�~�
�-	+���(Q
-r��p+r��p��(U
�(�
(_
�-rL>p+
(
(_
�-r&p+r��p�o�
&,3(Q
r$�p�oW
�(U
s
o
+A(Q
r.�p�oW
�(U
s
o
	X
o�
&
o�
:�����
u2,o�
� s�
(r
o'
(�
-(r
o'
(
.r
p+1(r
o'
(	
#O@Y(

rtcp(�
	(Q
r8�p
�(�
(_
�(
(_
�(r
oW
�(�
(_
�(�
(_
�o(
��(r
o*
�a�(r
o'
�a�	~�
�
(
(_
�	�(�
-r!�p+rJp�(U
o�
&o(
* s�


(Q
r1�p�(�
(_
�(
(_
�(r
oW
�~�
�o�
&rh�ps
o�
&
o(
*A�K�0D�-rx�ps�
zo

oj
c�om

(r
o�
t+(y
*0��s�

oN
o
К(@
oL
t� s�
o
o
+o
tM
	(

o�
&o�
-��u2,o�
�o(
*B(j0J,A,ob,obr��p(x
*-!o`,o`r��p(x
*o^*r&p*0b�(�
(
(r
o�
o
+$o
t+
oW
(~
,r��psE
zo�
-��u2,o�
�* 0P0i�-rx�ps�
zo

oj
c�om

(r
o�
t+К(@
oL
t�
	-r��p+r��p(|
*0�(�

(}
*0>�r
Vpo�

o>
o�
(
,o�
o�
�
,o�
�*'3
0fo
,1o
o
rˤpo
,o
o
om
(t
+%o
,o
o
rh�p(Y
,(
(
*0�К(@
oL
t�
9�(r
r��po�
�+(@
o
t+
	9�	�+(@
(�
oN
		oW
o_а(@
oL
t�({
r�po|
o
o�
	o"
�%({
r�po|
o�
o�
o
�({
r�po|
	o�
	oW
(t
o�
�
,o�
�*�&�%/�
0<oT

+X(Q
(�
(�
o�
-�(Q
(�
(�
*0�(r

o�
9�o�
К(@
oL
t�9�r"�po�

o�
а(@
oL
t�({
r�po|
o
o�
o4
�%({
r�po|
o�
o�
o
�oF
o�
ol
1.({
r��po|
o�
ol
Y(
��o�
o�
	o�
�
	,	o�
�*`'�%A��
0@(v
rB�pow

,��**0:@(v
rB�pow

,	��.(v
rB�p��ox
o�
*RoE
(v
}�*0T�sy

rj�pr��ps
r��pr��ps
rB�pr��ps�

o�
&o�
&	o�
&*2{�o�
*6{�o�
*2{�o
*2{�o�
*('
*�}�}�#^@s4
}�(J*J(
~�o
*J(
~�o
*0E_o�

+(�
oG	o�
-Y
Xo�
0(�
ol
2�/
*(O*�{�1{�*(�
ol
-*{�*0�/r0�ps�
z(�
ol
-{�-}�*o�
;�o�
.*o�
(�
ol
/(�
o�
oG	ow(�
ol
2(�
ol
Y}�}�+}�}�o�
.*o�
(�
ol
/(�
o�
oG	ow*2o
tc*0./o�

2(�
ol
2*(�
(�
oG	*0$/(�
o/

/r0�ps�
zo�
*{�*"}�*('
*"(+
*(*
*"(�
*(~
*"(�
*�o�
r�po�
%-&����*^o�
r�p��o�
*{�*"}�*~o�
r<�po�
%-&~�
t�*Jo�
r<�po�
*(�
**F(O,(�
**{�*"}�*{�*�(�
-(
.r0�prn�ps�
z}�*{�*"}�*0p(
o�
o
}�{�17{�o�
o�
(�
ol
/-(�
o�
oG	ow*(�
ol
1o�
*0"�(
~�o
u[
,oQ
*0Fu+
,
o
o"
*u-&(�
r��p�o>
�(U
s�
z*Vt+o�(
*0:u+
,!ov,o�
(�
ol
/(�
o�(
*sD	*0o�
s�

rB�po
*0;�
+#(�
oG	o�
,X
3+X(�
ol
2�*0�s�
(�
tQ
,vr��po�
��o�
o�
(�
o�
r\�po�
tR+3(�

	(�
ol
/(�
	oG	���o�
X�i2�*0�s�

r��po�
��o�
s
(�
o

+	o
t+o�
��o�
	o�
-��	u2,o�
�r\�po�
s�
(�
*.)W00t�
,{
(
{ 
��o�
*(
*07s!

("
}
o�
��} 
{
-
{ 
-**0��(#
(ok
(w
-

rB�po�
{�,
r1�pok
o'

(�
--o'
(
3o'
�ao(
ok
(
(rJpok
*0��o�
oR
{�,+{�."{�3{�-{�3{�,o�
o'

(�
-o'
�ao(
ok
+
r
pok
o�
rn�p(�
o�

rz�p(�
(�
o�
r1�pok
ol
on
om
{�3{�,{�3{�-o�
*0�o�
r��p(�
o�

r��p(�
(�
o�
{�.	{�3
r��pok
{�,Sr1�pok
{�.{�-r��po�
+
r��po�

|��ao(
ok
ol
{�.	{�3(�
{�-J{�.	{�38(�
ol

Y+ (�
oG	o�
,o|Y/�+K(�
o
+o
t+
	o�
,	o|o�
-��u2,o�
�{�,	{�3(�
om
**)S�{�,3o�
r��p(�
o�
r1�pok
ol
om
*0zr&p
{�,Gr�p(�

{�E+?r�p(�

+1r.�p(�

+#{�YE+r:�p
*0%o�

([o�
,	o�
.**2~P
o�
*0i/{�2{�(�
ol
2}�
+3o�
3(�
oG	ow+(�
oG	owX
(�
ol
2�*0U/rJ�po
,Fr^ po*

.5Xom
(#
,#(�

o�
.o�
~P
o�
*0J(_rl�p(�
�oo,
r��p(�
��o,
r��p(�
��o,
*.s�
��*"(-
*b(
ok
ok
*($
*{�*"}�**('
*j{�-s�
}�{�*(�
*j{�-s�
}�{�*(�
*
*"(�
*{�*"}�*{�*"}�*j{�-s�
}�{�*(�
*V(�
(�
(�
*{�*"}�*{�*"}�*(�
*V(�
(�
(�
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*6r��p(d+*6r��p(e+*0?	o�
r��po�
-s%

o�
r��po�
o�
r��po�
t�*Fr�hpr&p(f+*6r�hp(g+*0[{�-.s'}�{�r�poN
o
{�o"
+{�o
-o
{�o"
{�*Fr�pr&p(f+*6r�p(g+*2(�
s&
*0&o�
{�,{�o�
(~
�**�o�
r4�po�
-o�
r4�ps�
o�
o�
r4�po�
t�*('
*"((
*6rP�p(h+*6rP�p(i+*{�*"}�*{�*"}�*6rx�p(j+*6rx�p(k+*{�*"}�*6rc�p(l+*6rc�p(m+*{�*"}�*{�*"}�*6o
s�*{�*"}�*6r��p(d+*6r��p(e+*Fr��pr&p(f+*6r��p(g+*{�*"}�*0v^o�
o
o)
o*

o�
o�
o
o)
o+
o�
Yo�
o�
o
Ѝ(@
r��po
r�kprtkpo�
(�

*br�p(��(d+*6r�p(e+**f}�~�
}�(,
*0V
-
ok
s-
o.
+ o
�~
(�
(/
oh
o�
-��u2,o�
�*,C0�(�
o
o
}�{�,B{�o0
+(1

{�,{�oF
(2
-����o�
�}�o
ol
Y+(o
oj
u�,o
oj
oF
Y/�*+(S0B(
(�
s�
}�(o
-+,-o3
u<
	,	ok
o4
{�	ok
o4
9�(�
,(~
�+(�
,(�
��+o

+G
o
,(5
o�
&	(3		o &XX
o�
-��
u2,o�
�(,(,
o&X
(�
9>�{�9�{�o0
8�(1


sa}�
{�
{�oW
o�

{�
{�o�
o`
{�(Q
r4�p�oW
�
{�oX
�(U
oN
o

{�o"
(2
:^������o�
�(&&sv}�{�rD�poe{�(�
om{�oW
os(,#{�o�
o
rD�po�
ou+a{�o�
o
rT�prh�pr��pr��po6
ou{�r��pok{�rh�pog{�r��poi{�(�o�{�o�
r��p(�
o�{�(�
oW
o�
o
{�o"
(�
o
ol
Y*�T�M��0F
s'

(Q
r��p�����(U
oN
(,(o
*09(,/(,'s
(o
(�
o
o"
**0�(�
-*
(�
9�(
-es'
s'

s'

	(�
.(�
-o
o"
o
	o"
8do
	o"
o
o"
8Fs6
(7
o
o
o	
s:
#Y@s4
o�
s:

(�
Edd8�s7
(�
3 o=
o>
&o=
o>
&+o=
o>
&o=
o>
&o8
o9
&+rs7
	s7

	o=
o>
&
o=
o>
&(�
- o8

o9
&o8
	o9
&+o8
	o9
&o8

o9
&(-s(�
o
o
o"
o
o"
+s'
(-
o
o"
(Q
r��p�o����(U
oN
{�-s8
}�sQ

}�
}�{�
o9
*0�...r�pr"�psd
zs
sVo/(
(3(3(,o
3B-?,<o:
u;,/(^
,%s�

	(�
oa
o;
o
	o"
o(�
o
o"
,o$
sVo0o�*(�
*(�
*0@{@{={@{>{@{?{A(#}C{Bo
&*0�sm}>}?}=(<
9�(,|sn}@o=
}As
}B}C(>
{As?
-
�os
o
{Bo
&�
o�
(I�{C*o:
u�-
o:
u�,6o:
u�
	-o:
t�o@

	{>{?("*o:
u;9�o:
t;oA
:�o:
t;{>o
{>{?12{>+Yo
o
Y{?0�+0{>+Xo
o
X{?2�{?o
**i/�p0((~
,*(

(B
(Q
r4�p�(�������(U
(rh�p(�
oC

oD
(oE
	Y�oF
1.+	�	X�oF
oG
X	�iY2�+,	�iY+	�	Y�oF
oG
Y0�	Y�oG
oH
*F,rr�psI
z*0�(
Y(J
sK
(
(B

	3*o
8o
/��	1��s%
sL
({
oc
8�o
tE		o}

	o\
oM
,
~N
3
	o�

oh
	o�
(�
(Y
,*	o�
	o�
om
oh
	o�
oO
o�
:s����u2,o�
�~�oh
oP
�X�o�
:���u2,o�
�YY �oQ
>�oR
oS
,toR
om
u�,��+lu�%
,
(Q
(
-O*,,o>
oM
,o>
o]
,(Q
(T
**r��p(r��p(
sE
z �3oR
oU
oV
oW
+p(X
~�om
t?~�oO
(%X��oh
~�-�OsY
��~�oZ
([
-����o�
�*Adx�D�96NK}�^(�
,(>
(\
*0�-*(
u�
-!o�. .*(u�
+(u�
,r(�
o]
o^
+9o
�~
-(�
t�(�
,(�
(/
oh
o�
-��u2,o�
�*[F�0�QQ(�
,(o
,*{�:�s'
o#
r��prJpo;
o#
r�pr~	po;
s�r�poN
o#
r^;pr|;po;
(-o#
r>
pr�po;
+(o
Qo
o"
}�o
o"
+{�r�po�
QQ{�t*(�
*0�u;
-ݏok
-	}F�~{G(3ok
Yo
+
o
({
{G(o|

	,(	o}
u�,��X}E}F�
{Do
&�*��
0asp}Go=

s
}D}E}Fs?
�qs
o
{Do
&{FR{E*z(<
,((>
o3*(�
*b,*{H{Io4*0rsr}I}H(<
,;o=

,1{I(:	-�ssY
o_
*{Io4(>
*�o\o�3o\o�((>
o5*(�
*b,*{J{Ko6*0�st}K}J(<
,d(,\{K(;o=

(',(��oh
	,	-�usY
o`
*{Ko6(>
*(�
*�,*{L{Mo7{L(*0�sv}M}L(<
,w{M-2..r0�ps%
(�
o
oj
t9s`}M{M(:o=

	,	-�wsY
oZ
*{Mo7*01/o
ol
Y
+o
o
oj
o�
Y
/�*0�u�
9�o1o�
9�o�
(Q
oa
o�
%,qr>�p(Y
-6rL�p(Y
-2rZ�p(Y
-/rd�p(Y
-+rr�p(Y
-'+.(+*(,*(**()*((**6~�(8*6~�(8*6~�(8*0Mo:
-(<
,oWoYo!-r��psE
z�
o�
(I�~�(8*11p6~�(8*6~�(8*6~�(8*6~�(8*6~�(8*0((
o

,���ob
&*0n((c
(<
,X(.O(o
ol
/<(�
,4(�
od
(�
(�
o
(oj
u9(%*6(;*0}-(�
(Q+QP,	Pok
+s-
Q(�
,3-/s-
QP(�
(�
o\o�o�
oh
+QPo\(%*0>".4(B
(�
oe
. (o�
u9s[o2�&�*::p0H(�
o
ol
-.(,%s'

o�
oN
(o
oo
*(�
*&(,*0(D
o�
*
*
*
*0(D
oo
*0V
YE((+&o
oj
t9*o
Zoj
t9*r�pr"�psd
zZ{�,{�oe
**0V�QQ��Q�:�o�

�i/*�Q�Q�i1�iY��QPP�i(f
*0B (F,3%
,.	r#�p(Y
-*�(Q
(/
�(Q
(/
(<*{�*"}�*(H*N~�
(I(G*N~�
(I(G*�o�
o�
-*o�
o�
�8*No�
�8o�
*0es�
��s�
��s�
��s�
��s�
��s�
��s�
��s�
��s�
��s�
��*(�
*Nr3�p(�(z*(�*NrU�p(�(z*(<*6re�p(+*6re�p(+*Frk�pr&p(+*6rk�p(+*Fr��pr&p(+*6r��p(+*FrV�pr&p(+*�(c(~
-r��psE
zrV�p(+*Frr�pr&p(+*6rr�p(+*>(\(~
�*Fr9�pr&p(+*6r9�p(+*FrQ�pr&p(+*�(\(~
-rk�psE
zrQ�p(+*6rFp(+*6rFp(+*�(c(~
,(\(~
,,r��psE
z*(�*(�*~o�
r/�po�
%-&~�
t�*Jo�
r/�po�
*�o�
rS�po�
%-&~�
�u�u*^o�
rS�p�uo�
*�o�
r}�po�
%-&~�
�u�u*^o�
r}�p�uo�
*�o�
r��po�
%-&~�
�u�u*^o�
r��p�uo�
*~o�
r��po�
%-&~�
t�*Jo�
r��po�
*�o�
r��po�
%-&~�
�a�a*^o�
r��p�ao�
*~o�
r�po�
%-&~�
t�*Jo�
r�po�
*~o�
r;�po�
%-&~�
t�*Jo�
r;�po�
*~o�
ra�po�
%-&~�
t�*Jo�
ra�po�
*J|r~p(�*N|r~p(�*J|r�p(�*N|r�p(�*0`(�((~
,((~
,
((~
-(�(~
,(i(�{(�{(�*(
*�(�
-r'�pr5�ps�
z}*0J!
{o
o
+o
tMu�,X
o�
-��u2
	,	o�
�*$7
*v{o
(�oj
u�*0G"
+.{o
oj
u�,oW
(Y
,*X
{o
ol
2�*0k#/*
+&{o
oj
u�,
X%
3*X{o
ol
2�(�
rw�p����(U
su
z0k#/*
+&{o
oj
u�,X
3*X{o
ol
2�(�
rw�p����(U
su
z�{o
o"
%{X}*j{o�%{X}*J{o
o1
*0$u�
-r��psu
z(�*0h%-r�pr�ps�
z
+;{o
oj
u�,X�i3rM�psu
z%X
X�X{o
ol
2�*b{o
o/
(�*�{o
(�o�
%{X}*�{o
o4
%{X}*�{o
(�o�
%{X}*:u�(�*6u�(�*6u�(�*:u�(�*
*6u�(�*"(�**
*sh
zs�*s�*�(�
}{o
o
}{}*~{{{.r��psE
z*V}}(G
*^(�{o
u�*(�*00{(�{o�

,{o
u�-(�
*J(�{o5
*V(
}}
*{*{
*2{o�*2{o�*6r:�p(
+*6r:�p(+*6rP�p(
+*6rP�p(+*Frh�pr&p(+*6rh�p(+*Fr��pr&p(+*6r��p(+*Fr��pr&p(+*6r��p(+*Fr��pr&p(+*6r��p(+*Fr�pr&p(+*6r�p(+*Fr8�pr&p(+*6r8�p(+*Frd�pr&p(+*6rd�p(+*Fr��pr&p(+*6r��p(+*Fr��pr&p(+*6r��p(+*Fr�pr&p(+*6r�p(+*(�*(i
*(j
*6rL�p(
+*6rL�p(+*6r|�p(
+*6r|�p(+*Fr��pr&p(+*6r��p(+*6r��p(n+*6r��p(o+*Fr��pr&p(+*6r��p(+*6r�p(
+*6r�p(+*6rN�p(+*6rN�p(+*6r��p(+*6r��p(+*6r��p(+*6r��p(+*6r��p(+*6r��p(+*Fr��pr�p(+*6r��p(+*6r*�p(n+*6r*�p(o+*6rJ�p(p+*6rJ�p(q+*Frv�pr&p(+*0~&(~
,
rv�p(+*
,G�;�o�
+ �(Q
(
,	X
X�i2�d3
rv�p(+*r��psu
zFr%�pr&p(+*0~'
(~
-#�
	;�	o�
�i2	�i
0
,
r%�p(+*(�
rW�p�;�����
���(U
su
zFr��pr&p(+*0T(
(~
-�
	;�	o�
�i
0
,
r��p(+*(�
r��p�(U
su
z6r��p(
+*6r��p(+*6r%�p(
+*6r%�p(+*(�*"(�*(�*(k
*Nr[�p(�(z*(<*Nrk�p(�(z*(<*j(ysq(p(r*Nr��p(�(z*(\*&U(�*6r��p(r+*6r��p(s+*6r��p(t+*6r��p(u+*Fr��pr&p(+*6r��p(+*Fr�pr&p(+*6r�p(+*Fr�p �(
+*6r�p(+*0M(�3<(�3
(�(~
-(�3(�(~
,,r
�psE
z*(�*(�*(l
*�(��'sK
(�(�*Fr�pr&p(+*6r�p(+*Fr�pr&p(+*6r�p(+*6r�p(+*6r�p(+*6r �p(+*6r �p(+*6r6�p(
+*6r6�p(+*6rT�p(
+*6rT�p(+*6rn�p(+*6rn�p(+*6r��p(+*6r��p(+*6r��p(+*6r��p(+*Fr�pr&p(+*6r�p(+*Fr�pr&p(+*6r�p(+*Fr��pr&p(+*6r��p(+*Fr�pr&p(+*6r�p(+*Fr,�pr&p(+*6r,�p(+*FrJ�pr&p(+*6rJ�p(+*6rh�p(v+*6rh�p(w+*�(�(-(,(-r��psu
z*0])(X
o�
u
,G(�(~
-:(�(m
,o#
r�pr~	po;
*o#
r�pr&po;
*�(��BsK
(�(�*Fr�pr&p(+*6r�p(+*Fr7�pr&p(+*6r7�p(+*FrI�pr&p(+*6rI�p(+*Fr_�pr&p(+*6r_�p(+*Frw�pr&p(+*6rw�p(+*Fr��pr&p(+*6r��p(+*Fr��pr&p(+*6r��p(+*B(�%-&r&p*"(�*Frr�pr&p(+*6rr�p(+*>(<(~
�*FrV�pr&p(+*6rV�p(+*6rk�p(+*Rrk�p(+(A*6r��p(+*6r��p(+*0�*(�t�
o�
o
r��p(�%-&r&po*

	3
o�
on
*(o
��s�
�i1�op
r��po!
o�
o
*0u+-r��ps�
zsq

,\�
	;�	o�
+:��:�o�
�i3�o�
�or
X�i2�*Rr�ps
(E*0>,-r��ps�
z-r�ps�
z-r5�ps�
z-rq�ps�
z-r��ps�
zos
o

+7
o
t�
o�
,ot
o�
-r��prq�psd
z
o�
-��
u2,o�
�o�
-r��prq�psd
zr�Ipoa
oQ
(�
+E�ou
,0(Q
r�p��ot
�(U
(�
X�i2�r�Ipo�
(
sv

ow
oW
8�o
t�oR
r> pox
oT
oR
r0�pox
-+oT
oR
re�pox
-+oT
(m
		s,

oR
ru�pox
-r&p+oT

}�	
oy
o�
:=����u2,o�
�	oz
*TD�X�"6o�
{0*Jo�
{0o~
*No�
{0o�
*{1*"}1*6o�
{2*Jo�
{2o~
*No�
{2o�
*{3*"}3*6o�
(
*0�Do
o
s�}0{0(Q
r��p�
oW
�(U
oN
o
{0o"
s�}2{2(Q
r��p�oW
�(U
oN
o
{2o"
{2o�{1,{1{0o
{3,{3{2o
*�o�
(�
%-&{0o�
%-
&{2o�
***(�
*GIF89a�?����d����\�������������u����������������������������㊯˻��������������������������*��?�������U~�����������l����������������������������!�?,���pH,���a�l:�M��Z�ث��P��,�"��C���`��|.TD 8��P(�8���B="<*4}5+.<���B:21�+���B9<!, /!����<�{�-! �� B<:0��:���B�	k36	����	I6'&�I�	��7��7�ٻq I!�n\y�E��64�w@�*]z��#��H�B�/s�@G�6l|q�@��*+�AB�)�8 @��1�� P�I�D�J$z�P�P��Fh݊�i�#`�;�GIF89a����XXY�����������������������������������������������������������������������������������������������������yyywwwrrreeeaaaLLLHHH???333���!�.,�@�pH,���r�l
���3JUN��+�MZ-U��j	�.�5
2��{�M��`Nw�wm(IB�� l������$l
)
�����-'�"&�����-,"!+�����(-%������	�͈��`���و��r�������������G��A;�GIF89a����@@A������������������=}�Q��Q��]��������������������������������������������������������������ʭ�����������������{{{vvviiiggg\\\[[[WWWMMMLLLKKKJJJAAA@@@333���!�7,���pH,���r�l
���3JUN��+��2�e�zP�o�$B�8��U!i2%
�� ��-+$�B�!5,6"����%6'����� 314������//*.�����)20(������������ߋ����拌����G��A;GIF89a�������������������������������������������333���!�,� $�di�B��l+�p�ƴ:�D��
���p8���r�4R7�HXE	��Y�B�����΃�z�f"�c���8~�n��
�vD�
q�}��q�����q
���j�
q	�����q�����q��'��!;�A// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedTabs";function a(){var o="ajax__tab_hover",n="ajax__tab_active",j="ajax__tab_disabled",k="owner",q="headerTab",i="populated",h="populating",g="click",r="Sys.Extended.UI.TabContainer",m="initialize",l="scrollBars",p="activeTabIndex",e="value",f="activeTabChanged",b=false,a=null,c=-1,d=true;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.TabStripPlacement=function(){};Sys.Extended.UI.TabStripPlacement.prototype={Top:0,Bottom:1,TopRight:2,BottomRight:3};Sys.Extended.UI.TabStripPlacement.registerEnum("Sys.Extended.UI.TabStripPlacement",d);Sys.Extended.UI.UseVerticalStripPlacement=function(){};Sys.Extended.UI.OnDemand=function(){};Sys.Extended.UI.OnDemandMode=function(){};Sys.Extended.UI.OnDemandMode.prototype={None:0,Always:1,Once:2};Sys.Extended.UI.OnDemandMode.registerEnum("Sys.Extended.UI.OnDemandMode",d);Sys.Extended.UI.TabContainer=function(e){var d=this;Sys.Extended.UI.TabContainer.initializeBase(d,[e]);d._cachedActiveTabIndex=c;d._activeTabIndex=c;d._scrollBars=Sys.Extended.UI.ScrollBars.None;d._tabs=a;d._header=a;d._body=a;d._loaded=b;d._autoPostBackId=a;d._useVerticalStripPlacement=b;d._onDemand=b;d._pageRequestManager=a;d._tabStripPlacement=Sys.Extended.UI.TabStripPlacement.Top;d._app_onload$delegate=Function.createDelegate(d,d._app_onload)};Sys.Extended.UI.TabContainer.prototype={add_activeTabChanged:function(a){this.get_events().addHandler(f,a)},remove_activeTabChanged:function(a){this.get_events().removeHandler(f,a)},raiseActiveTabChanged:function(){var a=this,b=a.get_events().getHandler(f);b&&b(a,Sys.EventArgs.Empty);a._autoPostBackId&&__doPostBack(a._autoPostBackId,"activeTabChanged:"+a.get_activeTabIndex())},get_activeTabIndex:function(){return this._cachedActiveTabIndex>c?this._cachedActiveTabIndex:this._activeTabIndex},set_activeTabIndex:function(i){var f=this,g=i;if(!f.get_isInitialized())f._cachedActiveTabIndex=g;else{if(g<c)throw Error.argumentOutOfRange(e);if(g>=f.get_tabs().length)g=f.get_tabs().length-1;if(g!=f._activeTabIndex){if(f._activeTabIndex!=c){var k=f.get_tabs()[f._activeTabIndex];k._set_active(b)}var j=f._activeTabIndex!=g;f._activeTabIndex=g;f._activeTabIndex!=c&&f.get_tabs()[f._activeTabIndex]._set_active(d);if(f._loaded&&j){if(f._onDemand){var h=f.get_tabs()[f._activeTabIndex];if(h._onDemandMode!=Sys.Extended.UI.OnDemandMode.None)if(h._onDemandMode==Sys.Extended.UI.OnDemandMode.Once&&h._wasLoaded==b||h._onDemandMode==Sys.Extended.UI.OnDemandMode.Always){f._pageRequestManager.beginAsyncPostBack([h._updatePanelID],a,a,b,a);h._wasLoaded=d}}f.raiseActiveTabChanged()}f.raisePropertyChanged(p)}}},get_tabs:function(){if(this._tabs==a)this._tabs=[];return this._tabs},get_activeTab:function(){return this._activeTabIndex>c?this.get_tabs()[this._activeTabIndex]:a},set_activeTab:function(b){var a=Array.indexOf(this.get_tabs(),b);if(a==c)throw Error.argument(e,Sys.Extended.UI.Resources.Tabs_ActiveTabArgumentOutOfRange);this.set_activeTabIndex(a)},get_autoPostBackId:function(){return this._autoPostBackId},set_autoPostBackId:function(a){this._autoPostBackId=a},get_scrollBars:function(){return this._scrollBars},set_scrollBars:function(b){var a=this;if(a._scrollBars!=b){a._scrollBars=b;a._invalidate();a.raisePropertyChanged(l)}},get_tabStripPlacement:function(){return this._tabStripPlacement},set_tabStripPlacement:function(b){var a=this;if(a._tabStripPlacement!=b){a._tabStripPlacement=b;a._invalidate();a.raisePropertyChanged("tabStripPlacement")}},get_useVerticalStripPlacement:function(){return this._useVerticalStripPlacement},set_useVerticalStripPlacement:function(b){var a=this;if(a._useVerticalStripPlacement!=b){a._useVerticalStripPlacement=b;a._invalidate();a.raisePropertyChanged("useVerticalStripPlacement")}},get_onDemand:function(){return this._onDemand},set_onDemand:function(b){var a=this;if(a._onDemand!=b){a._onDemand=b;a._invalidate();a.raisePropertyChanged("onDemand")}},initialize:function(){var a=this;Sys.Extended.UI.TabContainer.callBaseMethod(a,m);var b=a.get_element();a._header=$get(a.get_id()+"_header");a._body=$get(a.get_id()+"_body");$common.addCssClasses(b,["ajax__tab_container","ajax__tab_default"]);a._invalidate();if(a._onDemand)a._pageRequestManager=Sys.WebForms.PageRequestManager.getInstance();Sys.Application.add_load(a._app_onload$delegate)},dispose:function(){$clearHandlers(this.get_element());Sys.Application.remove_load(this._app_onload$delegate);Sys.Extended.UI.TabContainer.callBaseMethod(this,"dispose")},getFirstTab:function(d){for(var c=this.get_tabs(),b=0;b<c.length;b++)if(d||c[b].get_enabled())return c[b];return a},getLastTab:function(d){for(var c=this.get_tabs(),b=c.length-1;b>=0;b--)if(d||c[b].get_enabled())return c[b];return a},getNextTab:function(e){for(var b=this.get_tabs(),g=this.get_activeTabIndex(),c=1;c<b.length;c++){var f=(g+c)%b.length,d=b[f];if(e||d.get_enabled())return d}return a},getPreviousTab:function(e){for(var b=this.get_tabs(),g=this.get_activeTabIndex(),c=1;c<b.length;c++){var f=(b.length+(g-c))%b.length,d=b[f];if(e||d.get_enabled())return d}return a},getNearestTab:function(e){var b=this,d=b.getPreviousTab(e),c=b.getNextTab(e);return d&&d.get_tabIndex()<b._activeTabIndex?d:c&&c.get_tabIndex()>b._activeTabIndex?c:a},saveClientState:function(){for(var c=this.get_tabs(),b=[],a=0;a<c.length;a++)Array.add(b,c[a].get_enabled());var d={ActiveTabIndex:this._activeTabIndex,TabState:b};return Sys.Serialization.JavaScriptSerializer.serialize(d)},_invalidate:function(){var g="ajax__scroll_none",f="ajax__scroll_auto",e="ajax__scroll_both",d="ajax__scroll_vert",c="ajax__scroll_horiz",a=this;if(a.get_isInitialized()){$common.removeCssClasses(a._body,[c,d,e,f,g]);switch(a._scrollBars){case Sys.Extended.UI.ScrollBars.Horizontal:Sys.UI.DomElement.addCssClass(a._body,c);break;case Sys.Extended.UI.ScrollBars.Vertical:Sys.UI.DomElement.addCssClass(a._body,d);break;case Sys.Extended.UI.ScrollBars.Both:Sys.UI.DomElement.addCssClass(a._body,e);break;case Sys.Extended.UI.ScrollBars.Auto:Sys.UI.DomElement.addCssClass(a._body,f);break;case Sys.Extended.UI.ScrollBars.None:Sys.UI.DomElement.addCssClass(a._body,g)}if(a._useVerticalStripPlacement){var b=$common.getBounds(a._header),h=$common.getBounds(a._body),j=h.height-b.height-1+"px";$get(a.get_id()+"_headerSpannerHeight").style.height=j;if(Sys.Browser.agent==Sys.Browser.InternetExplorer&&Sys.Browser.version<7)if(a._tabStripPlacement==Sys.Extended.UI.TabStripPlacement.Top||a._tabStripPlacement==Sys.Extended.UI.TabStripPlacement.Bottom){var i={x:b.x+b.width,y:b.y,width:h.width,height:h.height};$common.setBounds(a._body,i)}else{var i={x:h.x+h.width,y:b.y,width:b.width,height:b.height};$common.setBounds(a._header,i);$common.setBounds(a._body,h)}}}},_app_onload:function(){var a=this;if(a._cachedActiveTabIndex!=c){a.set_activeTabIndex(a._cachedActiveTabIndex);a._cachedActiveTabIndex=c;var b=a.get_tabs()[a._activeTabIndex];if(b){b._wasLoaded=d;b._setFocus(b)}}a._loaded=d}};Sys.Extended.UI.TabContainer.registerClass(r,Sys.Extended.UI.ControlBase);Sys.registerComponent(Sys.Extended.UI.TabContainer,{name:"tabContainer",parameters:[{name:p,type:"Number"}]});Sys.Extended.UI.TabPanel=function(f){var e=this;Sys.Extended.UI.TabPanel.initializeBase(e,[f]);e._active=b;e._tab=a;e._headerOuter=a;e._headerInner=a;e._header=a;e._owner=a;e._ownerID=a;e._enabled=d;e._tabIndex=c;e._dynamicContextKey=a;e._dynamicServicePath=a;e._dynamicServiceMethod=a;e._dynamicPopulateBehavior=a;e._scrollBars=Sys.Extended.UI.ScrollBars.None;e._onDemandMode=Sys.Extended.UI.OnDemandMode.Always;e._wasLoaded=b;e._updatePanelID="";e._header_onclick$delegate=Function.createDelegate(e,e._header_onclick);e._header_onmouseover$delegate=Function.createDelegate(e,e._header_onmouseover);e._header_onmouseout$delegate=Function.createDelegate(e,e._header_onmouseout);e._header_onmousedown$delegate=Function.createDelegate(e,e._header_onmousedown);e._dynamicPopulate_onpopulated$delegate=Function.createDelegate(e,e._dynamicPopulate_onpopulated);e._oncancel$delegate=Function.createDelegate(e,e._oncancel);e._onkeydown$delegate=Function.createDelegate(e,e._onkeydown);e._disabled_onclick$delegate=Function.createDelegate(e,e._disabled_onclick)};Sys.Extended.UI.TabPanel.prototype={add_click:function(a){this.get_events().addHandler(g,a)},remove_click:function(a){this.get_events().removeHandler(g,a)},raiseClick:function(){var a=this.get_events().getHandler(g);a&&a(this,Sys.EventArgs.Empty)},add_populating:function(a){this.get_events().addHandler(h,a)},remove_populating:function(a){this.get_events().removeHandler(h,a)},raisePopulating:function(){var a=this.get_events().getHandler(h);a&&a(this,Sys.EventArgs.Empty)},add_populated:function(a){this.get_events().addHandler(i,a)},remove_populated:function(a){this.get_events().removeHandler(i,a)},raisePopulated:function(){var a=this.get_events().getHandler(i);a&&a(this,Sys.EventArgs.Empty)},get_headerText:function(){return this.get_isInitialized()?this._header.innerHTML:""},set_headerText:function(c){var a="headerText",b=this;if(!b.get_isInitialized())throw Error.invalidOperation(String.format(Sys.Extended.UI.Resources.Tabs_PropertySetBeforeInitialization,a));if(b.get_headerText()!=c){b._header.innerHTML=c;b.raisePropertyChanged(a)}},get_headerTab:function(){return this._header},set_headerTab:function(a){var b=this;if(typeof a==="string"){a=Sys.get(a);if(!a)throw new Error.argumentNull(e);}if(b._header!=a){if(b.get_isInitialized())throw Error.invalidOperation(String.format(Sys.Extended.UI.Resources.Tabs_PropertySetAfterInitialization,q));b._header=a;b.raisePropertyChanged(e)}},get_enabled:function(){return this._enabled},set_enabled:function(b){var a=this;if(b!=a._enabled){a._enabled=b;a.get_isInitialized()&&a._makeEnabled(a._enabled);a.raisePropertyChanged("enabled")}},get_owner:function(){return this._owner},set_owner:function(a){var b=this;if(a instanceof Sys.ComponentSet)a=a.get(0);if(b._owner!=a){if(b.get_isInitialized())throw Error.invalidOperation(String.format(Sys.Extended.UI.Resources.Tabs_PropertySetAfterInitialization,k));b._owner=a;b.raisePropertyChanged(k)}},get_ownerID:function(){return this._ownerID},set_ownerID:function(a){this._ownerID=a},get_scrollBars:function(){return this._scrollBars},set_scrollBars:function(a){if(this._scrollBars!=a){this._scrollBars=a;this.raisePropertyChanged(l)}},get_onDemandMode:function(){return this._onDemandMode},set_onDemandMode:function(a){if(this._onDemandMode!=a){this._onDemandMode=a;this.raisePropertyChanged("onDemandMode")}},get_tabIndex:function(){return this._tabIndex},get_dynamicContextKey:function(){return this._dynamicContextKey},set_dynamicContextKey:function(a){if(this._dynamicContextKey!=a){this._dynamicContextKey=a;this.raisePropertyChanged("dynamicContextKey")}},get_dynamicServicePath:function(){return this._dynamicServicePath},set_dynamicServicePath:function(a){if(this._dynamicServicePath!=a){this._dynamicServicePath=a;this.raisePropertyChanged("dynamicServicePath")}},get_dynamicServiceMethod:function(){return this._dynamicServiceMethod},set_dynamicServiceMethod:function(a){if(this._dynamicServiceMethod!=a){this._dynamicServiceMethod=a;this.raisePropertyChanged("dynamicServiceMethod")}},_get_active:function(){return this._active},_set_active:function(a){this._active=a;if(a)this._activate();else this._deactivate()},get_updatePanelID:function(){return this._updatePanelID},set_updatePanelID:function(a){if(this._updatePanelID!=a){this._updatePanelID=a;this.raisePropertyChanged("updatePanelID")}},initialize:function(){var c="span",b=this,d=b.get_owner();if(!d){d=$find(b.get_ownerID());if(d){d.initialize();b.set_owner(d)}}Sys.Extended.UI.TabPanel.callBaseMethod(b,m);if(!d)throw Error.invalidOperation(Sys.Extended.UI.Resources.Tabs_OwnerExpected);b._tabIndex=d.get_tabs().length;Array.add(d.get_tabs(),b);var f=b.get_id()+"_tab";b._tab=document.getElementById(f);var e=b._tab!=a;if(!e){b._headerOuterWrapper=document.createElement(c);b._headerInnerWrapper=document.createElement(c);b._tab=document.createElement(c);b._tab.id=f;b._header.parentNode.replaceChild(b._tab,b._header);b._tab.appendChild(b._headerOuterWrapper);b._headerOuterWrapper.appendChild(b._headerInnerWrapper);b._headerInnerWrapper.appendChild(b._header)}$addHandlers(b._header,{mousedown:b._header_onmousedown$delegate,dragstart:b._oncancel$delegate,selectstart:b._oncancel$delegate,select:b._oncancel$delegate});if(b._enabled)b._addHandlersOnEnabled();else Sys.UI.DomElement.addCssClass(b._tab,j);if(!e){Sys.UI.DomElement.addCssClass(b._headerOuterWrapper,"ajax__tab_outer");Sys.UI.DomElement.addCssClass(b._headerInnerWrapper,"ajax__tab_inner");Sys.UI.DomElement.addCssClass(b._header,"ajax__tab_tab");Sys.UI.DomElement.addCssClass(b.get_element(),"ajax__tab_panel")}},dispose:function(){var b=this;if(b._dynamicPopulateBehavior){b._dynamicPopulateBehavior.dispose();b._dynamicPopulateBehavior=a}$common.removeHandlers(b._header,{mousedown:b._header_onmousedown$delegate,dragstart:b._oncancel$delegate,selectstart:b._oncancel$delegate,select:b._oncancel$delegate});if(b._enabled)b._removeHandlersOnEnabled();else $common.removeHandlers(b._header,{click:b._disabled_onclick});Sys.Extended.UI.TabPanel.callBaseMethod(b,"dispose")},_addHandlersOnEnabled:function(){var a=this;$addHandlers(a._header,{click:a._header_onclick$delegate,mouseover:a._header_onmouseover$delegate,mouseout:a._header_onmouseout$delegate,keydown:a._onkeydown$delegate})},_removeHandlersOnEnabled:function(){var a=this;$common.removeHandlers(a._header,{click:a._header_onclick$delegate,mouseover:a._header_onmouseover$delegate,mouseout:a._header_onmouseout$delegate,keydown:a._onkeydown$delegate})},populate:function(c){var b=this;if(b._dynamicPopulateBehavior&&b._dynamicPopulateBehavior.get_element()!=b.get_element()){b._dynamicPopulateBehavior.dispose();b._dynamicPopulateBehavior=a}if(!b._dynamicPopulateBehavior&&b._dynamicServiceMethod)b._dynamicPopulateBehavior=$create(Sys.Extended.UI.DynamicPopulateBehavior,{ContextKey:b._dynamicContextKey,ServicePath:b._dynamicServicePath,ServiceMethod:b._dynamicServiceMethod},{populated:b._dynamicPopulate_onpopulated$delegate},a,b.get_element());if(b._dynamicPopulateBehavior){b.raisePopulating();b._dynamicPopulateBehavior.populate(c?c:b._dynamicContextKey)}},_activate:function(){var a=this;if(a._enabled){var e=a.get_element();$common.setVisible(e,d);Sys.UI.DomElement.addCssClass(a._tab,n);a.populate()}else if(a._get_active()){var c=a._owner.getNearestTab(b);!!c&&a._owner.set_activeTab(c)}a._owner.get_element().style.visibility="visible"},_deactivate:function(){var a=this.get_element();$common.setVisible(a,b);Sys.UI.DomElement.removeCssClass(this._tab,n)},_show:function(){this._tab.style.display=""},_hide:function(){var a=this;a._tab.style.display="none";if(a._get_active()){var c=a._owner.getNearestTab(b);!!c&&a._owner.set_activeTab(c)}a._deactivate()},_makeEnabled:function(e){var a=this,c="__tab_"+a.get_element().id;if(e){$common.removeHandlers(a._header,{click:a._disabled_onclick});a._addHandlersOnEnabled();Sys.UI.DomElement.removeCssClass($get(c),j)}else{a._removeHandlersOnEnabled();$addHandlers(a._header,{click:a._disabled_onclick});if(a._get_active()){var d=a._owner.getNearestTab(b);!!d&&a._owner.set_activeTab(d)}a._deactivate();Sys.UI.DomElement.addCssClass($get(c),j)}},_setFocus:function(a){$get("__tab_"+a.get_element().id).focus()},_header_onclick:function(b){var a=this;b.preventDefault();a.raiseClick();a.get_owner().set_activeTab(a);a._setFocus(a)},_header_onmouseover:function(){Sys.UI.DomElement.addCssClass(this._tab,o)},_header_onmouseout:function(){Sys.UI.DomElement.removeCssClass(this._tab,o)},_header_onmousedown:function(a){a.preventDefault()},_oncancel:function(a){a.stopPropagation();a.preventDefault()},_onkeydown:function(d){var a=this,e="which"in d?d.which:d.keyCode;if(e=="39"&&!a._owner._useVerticalStripPlacement||e=="40"&&a._owner._useVerticalStripPlacement){d.preventDefault();var c=a._owner.getNextTab(b);if(c){a._owner.set_activeTab(c);a._setFocus(c)}}else if(e=="37"&&!a._owner._useVerticalStripPlacement||e=="38"&&a._owner._useVerticalStripPlacement){d.preventDefault();var c=a._owner.getPreviousTab(b);if(c){a._owner.set_activeTab(c);a._setFocus(c)}}else if(e=="35"){d.preventDefault();var c=a._owner.getLastTab(b);if(c){a._owner.set_activeTab(c);a._setFocus(c)}}else if(e=="36"){d.preventDefault();var c=a._owner.getFirstTab(b);if(c){a._owner.set_activeTab(c);a._setFocus(c)}}},_dynamicPopulate_onpopulated:function(){this.raisePopulated()},_disabled_onclick:function(a){a.preventDefault()}};Sys.Extended.UI.TabPanel.registerClass("Sys.Extended.UI.TabPanel",Sys.UI.Control);Sys.registerComponent(Sys.Extended.UI.TabPanel,{name:"tabPanel",parameters:[{name:k,type:r},{name:q,type:"String"}]})}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedDynamicPopulate"],a);else a()})();s// (c) 2010 CodePlex Foundation
Type.registerNamespace("Sys.Extended.UI.Seadragon");Sys.Extended.UI.Seadragon.DisplayRect=function(e,f,d,c,b,a){Sys.Extended.UI.Seadragon.DisplayRect.initializeBase(this,[e,f,d,c]);this.minLevel=b;this.maxLevel=a};Sys.Extended.UI.Seadragon.DisplayRect.registerClass("Sys.Extended.UI.Seadragon.DisplayRect",Sys.Extended.UI.Seadragon.Rect);A


/// <reference name="MicrosoftAjax.debug.js" />
/// <reference name="MicrosoftAjaxTimer.debug.js" />
/// <reference name="MicrosoftAjaxWebForms.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />


Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.DraggableListItem = function(e) {
    Sys.Extended.UI.DraggableListItem.initializeBase(this, [e]);    
    
    this._data = null;
    
    this._handle = null;
    this._dragVisualTemplate = null;
    this._dragVisualTemplateInstance = null;
    this._mouseDownHandler = null;
}
Sys.Extended.UI.DraggableListItem.prototype = {    



   dispose : function() {
        /// <summary>
        /// Dispose the behavior
        /// </summary>
        var e = this.get_element();

        
        this.set_handle(null);

        Sys.Extended.UI.DraggableListItem.callBaseMethod(this, 'dispose');
    },

    get_data : function() {
        if (this._data == null) {
            var dragSource = this._findDragSource();
            if (dragSource != null && Sys.Extended.UI.DragDropList.IsValidDataType(dragSource.get_dragDataType())) {
                return this.get_element();
            }
        }
        
        return this._data;
    },
    
    set_data : function(value) {
        if (this._data != value) {
            this._data = value;
            this.raisePropertyChanged('data');
        }
    },
    
    get_handle : function() {
        return this._handle;
    },
    
    set_handle : function(value) {
        if (this._handle != null) {
            $removeHandler(this._handle, "mousedown", this.get_mouseDownHandler());
            this._handle.__draggableBehavior = null;
        }

        
        if (value) {
            if (value.element) {
                value = value.element;
            }            
            this._handle = value;
            this.raisePropertyChanged('handle');
            this._handle.__draggableBehavior = this;
            
            $addHandler(this._handle, "mousedown", this.get_mouseDownHandler());
            this._handle.__draggableBehavior = this;
        }
        else {
            this._handle = null;
        }
    },
    
    get_mouseDownHandler : function() {
        if (this._mouseDownHandler == null) {
            this._mouseDownHandler = Function.createDelegate(this, this._onMouseDown);
        }
        return this._mouseDownHandler;
    },
        
    get_dragVisualTemplate : function() {
        return this._dragVisualTemplate;
    },
    
    set_dragVisualTemplate : function(value) {
        if (this._dragVisualTemplate != value) {
            this._dragVisualTemplate = value;
            this.raisePropertyChanged('dragVisualTemplate');
        }
    },
    
    
    _onMouseDown : function(ev) {
        window._event = ev.rawEvent;
        this._handle.__draggableBehavior._mouseDownHandlerInternal(ev);
    },
    
    _mouseDownHandlerInternal : function(ev) {
        var ev = window.testEvent ? window.testEvent : ev;
        if (ev.button <= 1) {
            var dragSource = this._findDragSource();
            if (dragSource != null) {

                var dragVisual = this._createDragVisual();
                dragSource.startDragDrop(this.get_element(), this.get_data(), dragVisual);
                ev.returnValue = false;
            }
            else {

            }
        }
        else {

        }
    },
    
    _createDragVisual : function() {
        var ev = window.testEvent ? window.testEvent : window.event;
        if (this._dragVisualTemplate != null) {
            if (this._dragVisualTemplateInstance == null) {
                this._dragVisualTemplateInstance = this._dragVisualTemplate.cloneElement();
            }
            else if (!Sys.UI.DragDropManager._getInstance().hasParent(this._dragVisualTemplateInstance)) {
                this.get_element().appendChild(this._dragVisualTemplateInstance);
            }
            
            var location = { x: ev.clientX, y: ev.clientY };
            location = Sys.UI.DragDropManager._getInstance().addPoints(location, Sys.UI.DragDropManager._getInstance().getScrollOffset(document.body, true));
            $common.setLocation(this._dragVisualTemplateInstance, location);
        }
        return this._dragVisualTemplateInstance;
    },
    
    _findDragSource : function() {
        var element = this.get_element();
        while (element != null) {
            if (element.__dragDropList != null) {
                return element.__dragDropList;
            }
            element = element.parentNode;
        }
        return null;
    }
}
Sys.Extended.UI.DraggableListItem.registerClass('Sys.Extended.UI.DraggableListItem', Sys.Extended.UI.BehaviorBase);
�// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedPagedList";function a(){var c="indexChanged",b=";",a=null;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.PagingBulletedListBehavior=function(c){var b=this;Sys.Extended.UI.PagingBulletedListBehavior.initializeBase(b,[c]);b._indexSizeValue=1;b._separatorValue=" - ";b._heightValue=a;b._maxItemPerPage=a;b._clientSortValue=false;b._selectIndexCssClassValue=a;b._unselectIndexCssClassValue=a;b._tabValue=[];b._tabValueObject=[];b._tabIndex=[];b._divContent=a;b._divContentIndex=a;b._divContentUl=a;b._prevIndexSelected=a;b._indexSelected=0;b._clickIndex=a};Sys.Extended.UI.PagingBulletedListBehavior.prototype={initialize:function(){var c=this;Sys.Extended.UI.PagingBulletedListBehavior.callBaseMethod(c,"initialize");var i=c.get_ClientState();if(i){var f=i.split(b);if(f.length){c._indexSelected=f[0];if(f[1]=="null")c._indexSizeValue=a;else c._indexSizeValue=f[1];if(f[2]=="null")c._maxItemPerPage=a;else c._maxItemPerPage=f[2];if(f[3]=="true")c._clientSortValue=true;else c._clientSortValue=false}}var g=c.get_element();c._divContent=document.createElement("div");g.parentNode.insertBefore(c._divContent,g);var e=g.childNodes;c._clickIndex=Function.createDelegate(c,c._onIndexClick);var h,j;c._divContentIndex=document.createElement("DIV");c._divContentIndex.style.marginBottom="5px";c._divContent.appendChild(c._divContentIndex);for(var d=0;d<e.length;d++)if(e[d].nodeName=="LI"){if(e[d].firstChild&&e[d].firstChild.innerHTML)h=e[d].firstChild.innerHTML;else h=e[d].innerHTML;c._tabValueObject[c._tabValueObject.length]={text:h,obj:e[d],index:d}}c._clientSortValue&&c._tabValueObject.sort(c.liElementSortText);c._generateIndexAndTabForView();c._removeChilds(g.childNodes);c._divContentUl=document.createElement("DIV");c._changeHeightDivContent();c._divContentUl.appendChild(g);c._divContent.appendChild(c._divContentUl);c._updateIndexAndView(c._indexSelected)},_changeHeightDivContent:function(){var a=this;if(a._heightValue){a._divContentUl.style.overflow="scroll";a._divContentUl.style.height=a._heightValue+"px"}else{a._divContentUl.style.overflow="";a._divContentUl.style.height=""}},_createAHrefIndex:function(e,d){var b=this,c,a;a=document.createElement("a");a.href="";b._unselectIndexCssClassValue&&Sys.UI.DomElement.addCssClass(a,b._unselectIndexCssClassValue);a.innerHTML=e;a.tag=d;$addHandler(a,"click",b._clickIndex);b._tabIndex[b._tabIndex.length]=a;b._divContentIndex.appendChild(a);c=document.createElement("SPAN");c.innerHTML=""+b._separatorValue+"";b._divContentIndex.appendChild(c);return c},liElementSortText:function(a,b){return a.text.toLowerCase()==b.text.toLowerCase()?0:a.text.toLowerCase()<b.text.toLowerCase()?-1:1},liElementSortIndex:function(a,b){return a.index-b.index},_generateIndexAndTabForView:function(){var a=this;a._deleteTabIndexAndTabValue();a._tabValue=[];a._tabIndex=[];var d;a._removeChilds(a._divContentIndex.childNodes);if(a._maxItemPerPage){if(a._maxItemPerPage>0)for(var b=-1,c=0;c<a._tabValueObject.length;c++){if(c%a._maxItemPerPage==0){b++;index=a._tabValueObject[c].text;a._tabValue[b]=[];d=a._createAHrefIndex(index,b)}a._tabValue[b][a._tabValue[b].length]=a._tabValueObject[c].obj}}else if(a._indexSizeValue>0)for(var e="",b=-1,c=0;c<a._tabValueObject.length;c++){index=a._tabValueObject[c].text.substr(0,a._indexSizeValue).toUpperCase();if(e!=index){b++;a._tabValue[b]=[];d=a._createAHrefIndex(index,b);e=index}a._tabValue[b][a._tabValue[b].length]=a._tabValueObject[c].obj}d&&a._divContentIndex.removeChild(d)},_deleteTabIndexAndTabValue:function(){var b=this;if(b._clickIndex){for(var c=0;c<b._tabIndex.length;c++){var d=b._tabIndex[c];d&&$removeHandler(d,"click",b._clickIndex)}b._changeHandler=a}delete b._tabIndex;for(var c=0;c<b._tabValue.length;c++)delete b._tabValue[c];delete b._tabValue},dispose:function(){this._deleteTabIndexAndTabValue();delete this._tabValueObject;Sys.Extended.UI.PagingBulletedListBehavior.callBaseMethod(this,"dispose")},_removeChilds:function(a){for(var b=0;a.length;b++)a[0].parentNode.removeChild(a[0])},_renderHtml:function(c){var a=this,d=a.get_element();a._removeChilds(d.childNodes);for(var b=0;b<a._tabValue[c].length;b++)d.appendChild(a._tabValue[c][b]);a._divContentUl.scrollTop=0},_selectIndex:function(b){var a=this;if(a._tabIndex.length>0){a._unselectIndexCssClassValue&&Sys.UI.DomElement.removeCssClass(a._tabIndex[b],a._unselectIndexCssClassValue);a._selectIndexCssClassValue&&Sys.UI.DomElement.addCssClass(a._tabIndex[b],a._selectIndexCssClassValue);a._prevIndexSelected=a._tabIndex[b];a.raiseIndexChanged(a._tabIndex[b])}},_onIndexClick:function(c){var a=this,d=a.get_element(),b=c.target;a._selectIndexCssClassValue&&Sys.UI.DomElement.removeCssClass(a._prevIndexSelected,a._selectIndexCssClassValue);a._unselectIndexCssClassValue&&Sys.UI.DomElement.addCssClass(a._prevIndexSelected,a._unselectIndexCssClassValue);a._unselectIndexCssClassValue&&Sys.UI.DomElement.removeCssClass(b,a._unselectIndexCssClassValue);a._selectIndexCssClassValue&&Sys.UI.DomElement.addCssClass(b,a._selectIndexCssClassValue);a._prevIndexSelected=b;a._renderHtml(b.tag);a.raiseIndexChanged(b);c.preventDefault()},add_indexChanged:function(a){this.get_events().addHandler(c,a)},remove_indexChanged:function(a){this.get_events().removeHandler(c,a)},raiseIndexChanged:function(d){var a=this;a._indexSelected=d.tag;var e=a.get_events().getHandler(c);if(e){if(!d)d=Sys.EventArgs.Empty;e(a,d)}a.set_ClientState(d.tag+b+a.get_IndexSize()+b+a.get_MaxItemPerPage()+b+a.get_ClientSort())},get_tabIndex:function(){return this._tabIndex},get_tabValue:function(){return this._tabValue},_updateIndexAndView:function(b){var a=this;a._generateIndexAndTabForView();if(a._tabIndex.length>0)if(b<a._tabIndex.length){a._renderHtml(a._tabIndex[b].tag);a._selectIndex(b)}else{a._renderHtml(a._tabIndex[0].tag);a._selectIndex(0)}},get_Height:function(){return this._heightValue},set_Height:function(b){var a=this;if(a._heightValue!=b){a._heightValue=b;a.get_isInitialized()&&a._changeHeightDivContent();a.raisePropertyChanged("Height")}},get_IndexSize:function(){return this._indexSizeValue},set_IndexSize:function(c){var a=this;if(a._indexSizeValue!=c){a.set_ClientState("0;"+c+b+a.get_MaxItemPerPage()+b+a.get_ClientSort());a._indexSizeValue=c;a.get_isInitialized()&&a._updateIndexAndView(0);a.raisePropertyChanged("IndexSize")}},get_MaxItemPerPage:function(){return this._maxItemPerPage},set_MaxItemPerPage:function(c){var a=this;if(a._maxItemPerPage!=c){a.set_ClientState("0;"+a.get_IndexSize()+b+c+b+a.get_ClientSort());a._maxItemPerPage=c;a.get_isInitialized()&&a._updateIndexAndView(0);a.raisePropertyChanged("MaxItemPerPage")}},get_Separator:function(){return this._separatorValue},set_Separator:function(b){var a=this;if(a._separatorValue!=b){if(b)a._separatorValue=b;else a._separatorValue="";a.get_isInitialized()&&a._updateIndexAndView(0);a.raisePropertyChanged("Separator")}},get_ClientSort:function(){return this._clientSortValue},set_ClientSort:function(c){var a=this;if(a._clientSortValue!=c){a.set_ClientState("0;"+a.get_IndexSize()+b+a.get_MaxItemPerPage()+b+c);a._clientSortValue=c;if(a.get_isInitialized()){if(a._clientSortValue)a._tabValueObject.sort(a.liElementSortText);else a._tabValueObject.sort(a.liElementSortIndex);a._updateIndexAndView(0)}a.raisePropertyChanged("ClientSort")}},get_SelectIndexCssClass:function(){return this._selectIndexCssClassValue},set_SelectIndexCssClass:function(a){if(this._selectIndexCssClassValue!=a){this._selectIndexCssClassValue=a;this.raisePropertyChanged("SelectIndexCssClass")}},get_UnselectIndexCssClass:function(){return this._unselectIndexCssClassValue},set_UnselectIndexCssClass:function(a){if(this._unselectIndexCssClassValue!=a){this._unselectIndexCssClassValue=a;this.raisePropertyChanged("UnselectIndexCssClass")}}};Sys.Extended.UI.PagingBulletedListBehavior.registerClass("Sys.Extended.UI.PagingBulletedListBehavior",Sys.Extended.UI.BehaviorBase);Sys.registerComponent(Sys.Extended.UI.PagingBulletedListBehavior,{name:"pagedList"})}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedBase"],a);else a()})();�z// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedMultiHandleSlider";function a(){var q="dragEnd",p="drag",o="dragStart",n="valueChanged",m="load",v="keypress",u="onmousewheel",t="DOMMouseScroll",s="mouseout",i="DIV",l="handle_horizontal",k="handle_vertical",r="ajax__multi_slider_default",j="selectstart",g="change",e="px",f="none",h="INPUT",d="",c=true,b=false,a=null;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI._MultiHandleSliderDragDropInternal=function(){Sys.Extended.UI._MultiHandleSliderDragDropInternal.initializeBase(this);this._instance=a};Sys.Extended.UI._MultiHandleSliderDragDropInternal.prototype={_getInstance:function(){var a=this;a._instance=new Sys.Extended.UI.GenericDragDropManager;a._instance.initialize();a._instance.add_dragStart(Function.createDelegate(a,a._raiseDragStart));a._instance.add_dragStop(Function.createDelegate(a,a._raiseDragStop));return a._instance}};Sys.Extended.UI._MultiHandleSliderDragDropInternal.registerClass("Sys.Extended.UI._MultiHandleSliderDragDropInternal",Sys.Extended.UI._DragDropManager);Sys.Extended.UI.DragDrop=new Sys.Extended.UI._MultiHandleSliderDragDropInternal;Sys.Extended.UI.MultiHandleInnerRailStyle=function(){};Sys.Extended.UI.MultiHandleInnerRailStyle.prototype={AsIs:0,SlidingDoors:1};Sys.Extended.UI.MultiHandleInnerRailStyle.registerEnum("Sys.Extended.UI.MultiHandleInnerRailStyle",b);Sys.Extended.UI.SliderOrientation=function(){};Sys.Extended.UI.SliderOrientation.prototype={Horizontal:0,Vertical:1};Sys.Extended.UI.SliderOrientation.registerEnum("Sys.Extended.UI.SliderOrientation",b);Sys.Extended.UI.MultiHandleSliderBehavior=function(f){var e=this;Sys.Extended.UI.MultiHandleSliderBehavior.initializeBase(e,[f]);e._isServerControl=b;e._minimum=a;e._maximum=a;e._orientation=Sys.Extended.UI.SliderOrientation.Horizontal;e._cssClass=a;e._multiHandleSliderTargets=a;e._length=150;e._steps=0;e._enableHandleAnimation=b;e._showInnerRail=b;e._showHoverStyle=b;e._showDragStyle=b;e._raiseChangeOnlyOnMouseUp=c;e._innerRailStyle=Sys.Extended.UI.MultiHandleInnerRailStyle.AsIs;e._enableInnerRangeDrag=b;e._enableRailClick=c;e._isReadOnly=b;e._increment=1;e._enableKeyboard=c;e._enableMouseWheel=c;e._tooltipText=d;e._boundControlID=a;e._handleCssClass=a;e._handleImageUrl=a;e._handleImage=a;e._railCssClass=a;e._decimals=0;e._textBox=a;e._wrapper=a;e._outer=a;e._inner=a;e._handleData=a;e._handleAnimationDuration=.02;e._handles=0;e._innerDragFlag=b;e._isVertical=b;e._selectStartHandler=a;e._mouseUpHandler=a;e._mouseOutHandler=a;e._keyDownHandler=a;e._mouseWheelHandler=a;e._mouseOverHandler=a;e._animationPending=b;e._selectStartPending=b;e._initialized=b;e._handleUnderDrag=a;e._innerDrag=b;e._blockInnerClick=b};Sys.Extended.UI.MultiHandleSliderBehavior.prototype={initialize:function(){var a=this;Sys.Extended.UI.MultiHandleSliderBehavior.callBaseMethod(a,"initialize");if(a._boundControlID&&!a._multiHandleSliderTargets)a._multiHandleSliderTargets=[{ControlID:a._boundControlID,HandleCssClass:a._handleCssClass,HandleImageUrl:a._handleImageUrl,Decimals:a._decimals}];a._handles=a._multiHandleSliderTargets?a._multiHandleSliderTargets.length:0;if(a._handles===0){var b=document.createElement(h);b.id="boundless";b.style.display=f;b.value=a.get_minimum();document.forms[0].appendChild(b);a._multiHandleSliderTargets=[{ControlID:b.id,HandleCssClass:a._handleCssClass,HandleImageUrl:a._handleImageUrl,Decimals:a._decimals}];a._boundControlID=b.id;a._handles=1}a._isVertical=a._orientation===Sys.Extended.UI.SliderOrientation.Vertical;a._resolveNamingContainer();a._createWrapper();a._createOuterRail();a._createHandles();a._createInnerRail();a._setRailStyles();if(a._length)if(!a._cssClass&&a._innerRailStyle!==Sys.Extended.UI.MultiHandleInnerRailStyle.SlidingDoors)if(a._isVertical)a._outer.style.height=a._length+e;else a._outer.style.width=a._length+e;a._build();a._enforceElementPositioning();a._initializeSlider()},dispose:function(){var a=this;a._disposeHandlers();a._disposeMultiHandleSliderTargets();a._enableHandleAnimation&&a._handleAnimation&&a._handleAnimation.dispose();Sys.Extended.UI.MultiHandleSliderBehavior.callBaseMethod(a,"dispose")},get_SliderInitialized:function(){return this._initialized},getValue:function(b){var a=$get(this._multiHandleSliderTargets[b].ControlID);return a.value},setValue:function(c,d){var a=this,b=$get(a._multiHandleSliderTargets[c].ControlID);if(b){a.beginUpdate();a._setMultiHandleSliderTargetValue(b,a._getNearestStepValue(d));a.endUpdate()}},get_values:function(){for(var b=[this._handles],a=0;a<this._handles;a++){var c=this._multiHandleSliderTargets[a];b[a]=c.value}return b.join(",")},_build:function(){var a=this;a._textBox=a.get_element();a._textBox.parentNode.insertBefore(a._wrapper,a._textBox);a._wrapper.appendChild(a._outer);a._inner&&a._showInnerRail&&a._outer.appendChild(a._inner);a._textBox.style.display=f},_calculateInnerRailOffset:function(c){var a=this,d=a._isVertical?a._inner.style.top:a._inner.style.left,b=a._isVertical?c.offsetY:c.offsetX;b+=parseInt(d,10);return b},_calculateClick:function(a){var b=this,j=b._getOuterBounds(),d=b._handleData[0],i=b._getBoundsInternal(d);d=b._calculateClosestHandle(a);var e=i.width/2,f=j.width-e;a=a<e?e:a>f?f:a;var h=$get(d.multiHandleSliderTargetID);b._calculateMultiHandleSliderTargetValue(h,a,c);$common.tryFireEvent(b.get_element(),g)},_calculateClosestHandle:function(h){var a=this;for(var c=a._handleData[0],d=[a._handles],k=a._getOuterBounds(),b=0;b<a._handles;b++){var e=a._handleData[b],n=a._getBoundsInternal(e),o=a._isVertical?e.offsetTop:n.x-k.x;d[b]=Math.abs(o-h)}var i=d[0];for(b=0;b<a._handles;b++){var l=d[b];if(l<i){e=a._handleData[b];i=l;c=e}}if(a._innerDrag){var j=Array.indexOf(a._handleData,c),g=Sys.UI.DomElement.getLocation(c),m=a._isVertical?g.y:g.x-k.x;if(m>=h+d[j]){var f=a._handleData[j-1];if(f)c=f}}return c},_calculateMultiHandleSliderTargetValue:function(h,x,E){var a=this,e,l,g=a._minimum,f=a._maximum;if(a._handleUnderDrag&&!h){j=a._handleUnderDrag;h=$get(a._handleUnderDrag.multiHandleSliderTargetID);if(a._innerDrag){var z=Array.indexOf(a._handleData,j);e=a._handleData[z+1];if(!e)e=a._handleData[z-1];l=$get(e.multiHandleSliderTargetID)}}var j=h.Handle,d=h.value;if(d&&!E){if(typeof d!=="number")try{d=parseFloat(d)}catch(J){d=Number.NaN}if(isNaN(d))d=a._minimum;val=Math.max(Math.min(d,f),g)}else{var m=a._getBoundsInternal(j),p=a._getOuterBounds(),q=x?x-m.width/2:m.x-p.x,G=p.width-m.width,F=q/G;val=Math.max(Math.min(d,f),g);val=q===0?g:q===p.width-m.width?f:g+F*(f-g)}if(a._steps>0)val=a._getNearestStepValue(val);val=Math.max(Math.min(val,f),g);for(var u=[],w=[],o=0,r=0,n,A=c,k=0;k<a._handles;k++){var I=a._multiHandleSliderTargets[k];if(!I.ControlID.match(h.id))if(A){u[o]=a._multiHandleSliderTargets[k];o++}else{w[r]=a._multiHandleSliderTargets[k];r++}else A=b}if(o>0){var C=parseFloat($get(u[o-1].ControlID).value);val=Math.max(val,C);n=val===C}if(r>0){var B=parseFloat($get(w[0].ControlID).value);val=Math.min(val,B);n=val===B}if(e){var H=val-parseFloat(d),v=parseFloat(l.value),i=v+H,y=Array.indexOf(a._handleData,e)+1;if(y<a._multiHandleSliderTargets.length)var s=a._multiHandleSliderTargets[y].ControlID;if(s)var t=$get(s);if(t)var D=t.value;if(i>(D||f)){i=v;val=d;n=c}}if(!n&&(Math.max(val,f)===f&&Math.min(val,g)===g)){a.beginUpdate();val=Math.max(Math.min(val,f),g);a._setMultiHandleSliderTargetValue(h,val);e&&a._setMultiHandleSliderTargetValue(l,i);a.endUpdate()}else{a.beginUpdate();if(a._handles===1)a._setMultiHandleSliderTargetValue(h,val);else{h.value=val;j.Value=val;a._setHandlePosition(j,c)}if(e){l.value=i;e.Value=i;a._setHandlePosition(e,c)}a.endUpdate()}return val},_cancelDrag:function(){if(Sys.Extended.UI.MultiHandleSliderBehavior.DropPending===this){Sys.Extended.UI.MultiHandleSliderBehavior.DropPending=a;this._selectStartPending&&$removeHandler(document,j,this._selectStartHandler)}},_createHandles:function(){var a=this;for(var c=0;c<a._handles;c++){var s=a.get_id()+"_handle_"+c,i=a._isVertical,f=d,g=d,h=d;if(a._handles===1&&a._handleImageUrl)var o="<img id='"+a.get_id()+"_handleImage' src='"+a._handleImageUrl+"' alt='' />";var q="<a id='"+s+"' ",v=o?o:d,t="><div>"+v+"</div></a>";a._outer.innerHTML+=q+t}a._handleData=[a._handles];for(c=0;c<a._handles;c++){var u=a._cssClass?a._cssClass:r,e=a._multiHandleSliderTargets[c].HandleCssClass;if(e||a._cssClass){f=e?e+" ":a._cssClass+" ";g=f;h=f;var n=e,m=e;f=!e?f+a._isVertical?k:l:f+e;g=!m?g+a._isVertical?"handle_vertical_hover":"handle_horizontal_hover":g+m;h=!n?h+a._isVertical?"handle_vertical_down":"handle_horizontal_down":h+n}a._handleCallbacks={mouseover:Function.createCallback(a._onShowHover,{vertical:i,custom:g}),mouseout:Function.createCallback(a._onHideHover,{vertical:i,custom:f}),mousedown:Function.createCallback(a._onShowDrag,{vertical:i,custom:h}),mouseup:Function.createCallback(a._onHideDrag,{vertical:i,custom:f})};a._handleData[c]=a._outer.childNodes[c];a._handleData[c].style.overflow="hidden";$addHandlers(a._handleData[c],a._handleCallbacks);e=a._multiHandleSliderTargets[c].HandleCssClass;if(e){Sys.UI.DomElement.addCssClass(a._handleData[c],u);Sys.UI.DomElement.addCssClass(a._handleData[c],e)}else a._handleData[c].className=a._isVertical?k:l;if(a._multiHandleSliderTargets){var p=a._multiHandleSliderTargets[c].ControlID;a._handleData[c].multiHandleSliderTargetID=p}a._handleData[c].style.left="0px";a._handleData[c].style.top="0px";if(a._steps<1){if(a._enableHandleAnimation){var j=new Sys.Extended.UI.Animation.LengthAnimation(a._handleData[c],a._handleAnimationDuration,100,"style");j.add_ended(Function.createDelegate(a,a._onAnimationEnded));j.add_step(Function.createDelegate(a,a._onAnimationStep));a._handleData[c].Animation=j}}else a._enableHandleAnimation=b}},_createInnerRail:function(){var a=this;if(a._handles>1&&a._showInnerRail){a._inner=document.createElement(i);a._inner.id=a.get_id()+"_inner";a._inner.style.outline=f;a._inner.tabIndex=-1}},_createOuterRail:function(){var a=this;a._outer=document.createElement(i);a._outer.id=a.get_id()+"_outer";a._outer.style.outline=f;a._outer.tabIndex=-1},_createWrapper:function(){this._wrapper=document.createElement(i);this._wrapper.style.position="relative";this._wrapper.style.outline=f},_disposeHandlers:function(){var c=this;if(!c._isReadOnly){$removeHandler(document,"mouseup",c._mouseUpHandler);$removeHandler(document,s,c._mouseOutHandler);if(c._outer){if(c._outer.addEventListener)c._outer.removeEventListener(t,c._mouseWheelHandler,b);else c._outer.detachEvent(u,c._mouseWheelHandler);$common.removeHandlers(c._outer,c._outerDelegates)}for(var d=0;d<c._handles;d++){c._handleDelegates&&$common.removeHandlers(c._handleData[d],c._handleDelegates);c._handleCallbacks&&$clearHandlers(c._handleData[d])}c._handleDelegates=a;c._handleCallbacks=a;c._inner&&c._showInnerRail&&c._innerDelegates&&$common.removeHandlers(c._inner,c._innerDelegates);c._selectStartHandler=a;c._mouseUpHandler=a;c._mouseOutHandler=a;c._mouseWheelHandler=a;c._mouseOverHandler=a;c._keyDownHandler=a}},_disposeMultiHandleSliderTargets:function(){if(this._multiHandleSliderTargets)for(var c=0;c<this._handles;c++){var b=this._multiHandleSliderTargets[c],d=b&&b.nodeName===h;if(d){$removeHandler(b,g,b.ChangeHandler);$removeHandler(b,v,b.KeyPressHandler);b.ChangeHandler=a;b.KeyPressHandler=a}}},_ensureBinding:function(a){if(a){var b=a.value;if(b>=this._minimum||b<=this._maximum){var c=a&&a.nodeName===h;if(c)a.value=b;else if(a)a.innerHTML=b}}},_enforceElementPositioning:function(){var b=this,a={position:b.get_element().style.position,top:b.get_element().style.top,right:b.get_element().style.right,bottom:b.get_element().style.bottom,left:b.get_element().style.left};if(a.position!==d)b._wrapper.style.position=a.position;if(a.top!==d)b._wrapper.style.top=a.top;if(a.right!==d)b._wrapper.style.right=a.right;if(a.bottom!==d)b._wrapper.style.bottom=a.bottom;if(a.left!==d)b._wrapper.style.left=a.left},_getNearestStepValue:function(b){var a=this;if(a._steps===0)return b;var c=a._maximum-a._minimum;if(c===0)return b;if(a._steps-1!==0)var d=c/(a._steps-1);else return b;return Math.round(b/d)*d},_getStepValues:function(){var a=this,c=[a._steps],e=a._maximum-a._minimum,d=e/(a._steps-1);c[0]=a._minimum;for(var b=1;b<a._steps;b++)c[b]=a._minimum+d*b;return c},_handleSlide:function(b){var a=this,e=b?0:a._handles-1,f=b?1:0,g=b?a._handles:a._handles-1,c=a._handleData[e].multiHandleSliderTargetID;if(a._slideMultiHandleSliderTarget(c,b))for(var d=f;d<g;d++){c=a._handleData[d].multiHandleSliderTargetID;a._slideMultiHandleSliderTarget(c,b)}a._initializeInnerRail()},_initializeDragHandle:function(b){var a=b.DragHandle=document.createElement(i);a.style.position="absolute";a.style.width="1px";a.style.height="1px";a.style.overflow="hidden";a.style.background=f;document.forms[0].appendChild(b.DragHandle)},_initializeHandlers:function(){var a=this;if(!a._isReadOnly){a._selectStartHandler=Function.createDelegate(a,a._onSelectStart);a._mouseUpHandler=Function.createDelegate(a,a._onMouseUp);a._mouseOutHandler=Function.createDelegate(a,a._onMouseOut);a._mouseWheelHandler=Function.createDelegate(a,a._onMouseWheel);a._mouseOverHandler=Function.createDelegate(a,a._onMouseOver);a._keyDownHandler=Function.createDelegate(a,a._onKeyDown);$addHandler(document,"mouseup",a._mouseUpHandler);$addHandler(document,s,a._mouseOutHandler);a._handleDelegates={mousedown:Function.createDelegate(a,a._onMouseDown),dragstart:Function.createDelegate(a,a._IEDragDropHandler),drag:Function.createDelegate(a,a._IEDragDropHandler),dragEnd:Function.createDelegate(a,a._IEDragDropHandler)};for(var c=0;c<a._handles;c++)$addHandlers(a._handleData[c],a._handleDelegates);if(a._outer){if(a._enableMouseWheel)if(a._outer.addEventListener)a._outer.addEventListener(t,a._mouseWheelHandler,b);else a._outer.attachEvent(u,a._mouseWheelHandler);a._outerDelegates={click:Function.createDelegate(a,a._onOuterRailClick),mouseover:Function.createDelegate(a,a._mouseOverHandler),keydown:Function.createDelegate(a,a._keyDownHandler)};$addHandlers(a._outer,a._outerDelegates)}if(a._inner&&a._showInnerRail){a._innerDelegates={click:Function.createDelegate(a,a._onInnerRailClick),mousedown:Function.createDelegate(a,a._onMouseDownInner),mouseup:Function.createDelegate(a,a._onMouseUpInner),mouseout:Function.createDelegate(a,a._onMouseOutInner),mousemove:Function.createDelegate(a,a._onMouseMoveInner),dragStart:Function.createDelegate(a,a._IEDragDropHandler),drag:Function.createDelegate(a,a._IEDragDropHandler),dragEnd:Function.createDelegate(a,a._IEDragDropHandler)};$addHandlers(a._inner,a._innerDelegates)}}},_initializeHandles:function(){var a=this,f=a.get_ClientState();if(f)var e=f.split(",",a._handles);for(var d=0;d<a._handles;d++){var b=a._handleData[d],g=a._multiHandleSliderTargets[d].Decimals;if(e)b.Value=parseFloat(e[d]);a._initializeMultiHandleSliderTarget(b.multiHandleSliderTargetID,g,b);a._initializeHandleValue(b);a._setHandlePosition(b,c);a._initializeDragHandle(b)}},_initializeHandleValue:function(b){if(!b.Value){try{var a=$get(b.multiHandleSliderTargetID),d=a&&a.nodeName===h,c=parseFloat(d?a.value:a.innerHTML)}catch(e){c=Number.NaN}if(isNaN(c)){b.Value=this._minimum;if(d)a.value=b.Value;else a.innerHTML=b.Value}else b.Value=c}},_initializeInnerRail:function(){var b=this;if(b._inner&&b._showInnerRail){var i=0,j=b._handles-1,g=b._handleData[i],f=b._handles>1?b._handleData[j]:a;if(f){var h=parseInt(b._getBoundsInternal(g).width,10),c=parseInt(b._isVertical?g.style.top:g.style.left,10),d=parseInt(b._isVertical?f.style.top:f.style.left,10),k=parseInt(b._multiHandleSliderTargets[i].Offset,10),l=parseInt(b._multiHandleSliderTargets[j].Offset,10);c+=k;d+=l;if(b._isVertical){b._inner.style.top=c+e;b._inner.style.height=d+h-c+e}else{b._inner.style.left=c+e;b._inner.style.width=d+h-c+e}if(b._innerRailStyle===Sys.Extended.UI.MultiHandleInnerRailStyle.SlidingDoors)b._inner.style.backgroundPosition=b._isVertical?"0 -"+c+e:"-"+c+"px 0"}}},_initializeMultiHandleSliderTarget:function(d,e,c){var b=this;if(d){var a=$get(d);if(c.Value)a.value=c.Value;a.Handle=c;a.Decimals=e;a.OldValue=a.value;a.onchange="setValue(this, "+a.value+")";if(!a.Decimals)a.Decimals=0;var f=a&&a.nodeName===h;if(f){a.KeyPressHandler=Function.createDelegate(b,b._onMultiHandleSliderTargetKeyPressed);a.ChangeHandler=Function.createDelegate(b,b._onMultiHandleSliderTargetChange);$addHandler(a,v,a.KeyPressHandler);$addHandler(a,g,a.ChangeHandler)}}},_initializeSlider:function(){var a=this;Sys.Extended.UI.DragDrop.registerDropTarget(a);a._initializeHandles();a._initializeHandlers();a._initializeInnerRail();a._initialized=c;a._raiseEvent(m)},_resetDragHandle:function(b){var a=$common.getBounds(b);$common.setLocation(b.DragHandle,{x:a.x,y:a.y})},_resolveNamingContainer:function(){var a=this;if(a._isServerControl&&a._multiHandleSliderTargets&&!a._boundControlID)for(var c=a._clientStateFieldID.lastIndexOf(a._id),d=a._clientStateFieldID.substring(0,c),b=0;b<a._handles;b++)a._multiHandleSliderTargets[b].ControlID=d+a._multiHandleSliderTargets[b].ControlID},_saveState:function(){var a=this;for(var c=[a._handles],b=0;b<a._handles;b++)c[b]=$get(a._multiHandleSliderTargets[b].ControlID).value;a.set_ClientState(c.join(","))},_setHandlePosition:function(d,m){var c="width",a=this,j=a._minimum,l=a._maximum,i=d.Value,o=a._enableHandleAnimation&&a._animationPending&&m,f=a._getBoundsInternal(d),g=a._getOuterBounds();if(f.width<=0&&g.width<=0){f.width=parseInt($common.getCurrentStyle(d,c),10);g.width=parseInt($common.getCurrentStyle(a._outer,c),10);if(f.width<=0||g.width<=0)throw Error.argument(c,Sys.Extended.UI.Resources.MultiHandleSlider_CssHeightWidthRequired);}var p=l-j,n=(i-j)/p,h=Math.round(n*(g.width-f.width)),k=i===j?0:i===l?g.width-f.width:h;if(o){d.Animation.set_startValue(f.x-g.x);d.Animation.set_endValue(k);d.Animation.set_propertyKey(a._isVertical?"top":"left");d.Animation.play();a._animationPending=b}else{h=k+e;if(a._isVertical)d.style.top=h;else d.style.left=h}},_setRailStyles:function(){var c="inner_rail_horizontal",b="inner_rail_vertical",a=this;if(!a._inner&&a._railCssClass){a._outer.className=a._railCssClass;return}var d=a._cssClass?a._cssClass:r;Sys.UI.DomElement.addCssClass(a.get_element(),d);Sys.UI.DomElement.addCssClass(a._outer,d);Sys.UI.DomElement.addCssClass(a._wrapper,d);if(a._inner){Sys.UI.DomElement.addCssClass(a._inner,d);var e=a._isVertical?"outer_rail_vertical":"outer_rail_horizontal",f=a._isVertical?b:c;Sys.UI.DomElement.addCssClass(a._outer,e);Sys.UI.DomElement.addCssClass(a._inner,f)}else{e=a._isVertical?b:c;Sys.UI.DomElement.addCssClass(a._outer,e)}},_setMultiHandleSliderTargetValue:function(b,h){var a=this,e=b.OldValue,d=h;if(e===d&&a._isReadOnly)b.value=e;else{if(!a.get_isUpdating())d=a._calculateMultiHandleSliderTargetValue(b);b.value=d.toFixed(b.Decimals);a._ensureBinding(b);if(!Number.isInstanceOfType(b.value))try{b.value=parseFloat(b.value)}catch(i){b.value=Number.NaN}if(a._tooltipText){var f=b.Handle;f.alt=f.title=String.format(a._tooltipText,b.value)}if(a._initialized){b.Handle.Value=d;a._setHandlePosition(b.Handle,c);if(a._handles===1)a.get_element().value=d;if(b.value!==e){b.OldValue=b.value;a._initializeInnerRail();if(a._innerDrag)a._blockInnerClick=c;a._raiseEvent(n);if(a.get_isUpdating())!a._raiseChangeOnlyOnMouseUp&&$common.tryFireEvent(a.get_element(),g)}}}a._saveState()},_setValueFromMultiHandleSliderTarget:function(b){var a=this;a.beginUpdate();if(b)if(!a._isReadOnly){a._handles===1&&a._steps>0&&a._setMultiHandleSliderTargetValue(b,b.value);a._calculateMultiHandleSliderTargetValue(b)}else a._setMultiHandleSliderTargetValue(b,b.OldValue);a.endUpdate()},_slideMultiHandleSliderTarget:function(i,g){var b=this,d=$get(i),j=d.value,c,a;if(b._steps>0){var e=b._getStepValues(),f=b._getNearestStepValue(j);c=f;if(g){for(a=b._steps-1;a>-1;a--)if(e[a]<f){c=e[a];break}}else for(a=0;a<b._steps;a++)if(e[a]>f){c=e[a];break}}else{var h=parseFloat(d.value);c=g?h-parseFloat(b._increment):h+parseFloat(b._increment)}d.value=c;b._setValueFromMultiHandleSliderTarget(d);return d.value==c},_startDragDrop:function(b){this._resetDragHandle(b);this._handleUnderDrag=b;Sys.Extended.UI.DragDrop.startDragDrop(this,b.DragHandle,a)},_onAnimationEnded:function(){this._initializeInnerRail()},_onAnimationStep:function(){this._initializeInnerRail()},_onHideDrag:function(b,a){this.className=a.custom&&a.custom.length>0?a.custom:a.vertical?k:l},_onHideHover:function(b,a){this.className=a.custom&&a.custom.length>0?a.custom:a.vertical?"ajax__multi_slider_default handle_vertical":"ajax__multi_slider_default handle_horizontal"},_onInnerRailClick:function(d){var a=this;if(a._enableRailClick){var e=d.target;if(e===a._inner&&!a._blockInnerClick){a._animationPending=c;a._onInnerRailClicked(d)}else a._blockInnerClick=b}},_onInnerRailClicked:function(b){var a=this._calculateInnerRailOffset(b);this._calculateClick(a)},_onKeyDown:function(e){if(this._enableKeyboard){var d=new Sys.UI.DomEvent(e),a=b;switch(d.keyCode||d.rawEvent.keyCode){case Sys.UI.Key.up:case Sys.UI.Key.left:if(!a){this._handleSlide(c);d.preventDefault();a=c}return b;case Sys.UI.Key.down:case Sys.UI.Key.right:if(!a){this._handleSlide(b);d.preventDefault();a=c}return b;default:return b}}},_onMouseOver:function(){this._outer.focus()},_onMouseWheel:function(c){var a=0;if(c.wheelDelta){a=c.wheelDelta/120;if(Sys.Browser.agent===Sys.Browser.Opera)a=-a}else if(c.detail)a=-c.detail/3;a&&this._handleSlide(a<=0);c.preventDefault&&c.preventDefault();return b},_onMouseUp:function(a){window._event=a;a.preventDefault();this._cancelDrag()},_onMouseOut:function(a){window._event=a;a.preventDefault();this._outer.blur();this._handleUnderDrag&&this._cancelDrag()},_onMouseOutInner:function(a){window._event=a;a.preventDefault();this._inner.blur();this._innerDrag&&this._cancelDrag()},_onMouseDown:function(b){var a=this;window._event=b;b.preventDefault();if(!Sys.Extended.UI.MultiHandleSliderBehavior.DropPending){Sys.Extended.UI.MultiHandleSliderBehavior.DropPending=a;$addHandler(document,j,a._selectStartHandler);a._selectStartPending=c;var d=b.target;a._startDragDrop(d)}},_onMouseDownInner:function(a){window._event=a;a.preventDefault();if(this._enableInnerRangeDrag)if(!this._innerDragFlag)this._innerDragFlag=c},_onMouseUpInner:function(){if(this._enableInnerRangeDrag)this._innerDragFlag=b},_onMouseMoveInner:function(d){var a=this;window._event=d;d.preventDefault();if(a._enableInnerRangeDrag)if(!a._innerDrag&&a._innerDragFlag){a._innerDragFlag=b;if(!Sys.Extended.UI.MultiHandleSliderBehavior.DropPending){Sys.Extended.UI.MultiHandleSliderBehavior.DropPending=a;$addHandler(document,j,a._selectStartHandler);a._selectStartPending=c;a._innerDrag=c;var f=a._calculateInnerRailOffset(d),e=a._calculateClosestHandle(f);a._startDragDrop(e)}}},_onMultiHandleSliderTargetChange:function(a){this._animationPending=c;var b=a.target;this._setValueFromMultiHandleSliderTarget(b);this._initializeInnerRail();a.preventDefault()},_onMultiHandleSliderTargetKeyPressed:function(d){var a=new Sys.UI.DomEvent(d);if(a.charCode===13){this._animationPending=c;var b=a.target;this._setValueFromMultiHandleSliderTarget(b);this._initializeInnerRail();a.preventDefault()}},_onOuterRailClick:function(b){var a=this;if(a._enableRailClick){var d=b.target;if(d===a._outer){a._animationPending=c;a._onOuterRailClicked(b)}}},_onOuterRailClicked:function(a){var b=this._isVertical?a.offsetY:a.offsetX;this._calculateClick(b)},_onShowDrag:function(b,a){this.className=a.custom&&a.custom.length>0?a.custom:a.vertical?"ajax__multi_slider_default handle_vertical_down":"ajax__multi_slider_default handle_horizontal_down"},_onShowHover:function(b,a){this.className=a.custom&&a.custom.length>0?a.custom:a.vertical?"ajax__multi_slider_default handle_vertical_hover":"ajax__multi_slider_default handle_horizontal_hover"},get_dragDataType:function(){return"HTML"},getDragData:function(){return this._handleUnderDrag},get_dragMode:function(){return Sys.Extended.UI.DragMode.Move},onDragStart:function(){this._resetDragHandle(this._handleUnderDrag);this._raiseEvent(o)},onDrag:function(){var d=this,f=d._getBoundsInternal(d._handleUnderDrag.DragHandle),h=d._getBoundsInternal(d._handleUnderDrag),g=d._getOuterBounds(),e;if(d._isVertical)e={y:f.x-g.x,x:0};else e={x:f.x-g.x,y:0};$common.setLocation(d._handleUnderDrag,e);d._calculateMultiHandleSliderTargetValue(a,a,c);d._steps>1&&d._setHandlePosition(d._handleUnderDrag,b);d._raiseEvent(p)},onDragEnd:function(){var c=this;c._initializeInnerRail();c._raiseChangeOnlyOnMouseUp&&$common.tryFireEvent(c.get_element(),g);c._innerDrag=b;c._handleUnderDrag=a;c._raiseEvent(q)},get_dropTargetElement:function(){return document.forms[0]},canDrop:function(b,a){return a=="HTML"},drop:Function.emptyMethod,onDragEnterTarget:Function.emptyMethod,onDragLeaveTarget:Function.emptyMethod,onDragInTarget:Function.emptyMethod,_IEDragDropHandler:function(a){a.preventDefault()},_onSelectStart:function(a){a.preventDefault();return b},_getOuterBounds:function(){return this._getBoundsInternal(this._outer)},_getInnerBounds:function(){return this._getBoundsInternal(this._inner)},_getBoundsInternal:function(b){var a=$common.getBounds(b);if(this._isVertical)a={x:a.y,y:a.x,height:a.width,width:a.height,right:a.right,left:a.left,bottom:a.bottom,location:{x:a.y,y:a.x},size:{width:a.height,height:a.width}};else a={x:a.x,y:a.y,height:a.height,width:a.width,right:a.right,left:a.left,bottom:a.bottom,location:{x:a.x,y:a.y},size:{width:a.width,height:a.height}};return a},_raiseEvent:function(c,a){var b=this.get_events().getHandler(c);if(b){if(!a)a=Sys.EventArgs.Empty;b(this,a)}},get_Value:function(){var a=$get(this._boundControlID);return a.value?a.value:0},set_Value:function(c){var a=this,b=$get(a._multiHandleSliderTargets[0].ControlID);a.beginUpdate();a._setMultiHandleSliderTargetValue(b,a._getNearestStepValue(c));a.endUpdate();$common.tryFireEvent(b,g)},get_minimum:function(){return this._minimum},set_minimum:function(a){if(a!==this._minimum){this._minimum=a;this.raisePropertyChanged("minimum")}},get_maximum:function(){return this._maximum},set_maximum:function(a){if(a!==this._maximum){this._maximum=a;this.raisePropertyChanged("maximum")}},get_length:function(){return this._length},set_length:function(a){if(a!==this._length){this._length=a;this.raisePropertyChanged("length")}},get_steps:function(){return this._steps},set_steps:function(c){var a=this,b=a._steps;a._steps=Math.abs(c);a._steps=a._steps===1?2:a._steps;b!==a._steps&&a.raisePropertyChanged("steps")},get_orientation:function(){return this._isVertical},set_orientation:function(a){if(a!==this._isVertical){this._orientation=a;this.raisePropertyChanged("orientation")}},get_enableHandleAnimation:function(){return this._enableHandleAnimation},set_enableHandleAnimation:function(a){if(a!==this._enableHandleAnimation){this._enableHandleAnimation=a;this.raisePropertyChanged("enableHandleAnimation")}},get_handleAnimationDuration:function(){return this._handleAnimationDuration},set_handleAnimationDuration:function(a){if(a!==this._handleAnimationDuration){this._handleAnimationDuration=a;this.raisePropertyChanged("handleAnimationDuration")}},get_raiseChangeOnlyOnMouseUp:function(){return this._raiseChangeOnlyOnMouseUp},set_raiseChangeOnlyOnMouseUp:function(a){if(a!==this._raiseChangeOnlyOnMouseUp){this._raiseChangeOnlyOnMouseUp=a;this.raisePropertyChanged("raiseChangeOnlyOnMouseUp")}},get_showInnerRail:function(){return this._showInnerRail},set_showInnerRail:function(a){if(a!==this._showInnerRail){this._showInnerRail=a;this.raisePropertyChanged("showInnerRail")}},get_showHandleHoverStyle:function(){return this._showHoverStyle},set_showHandleHoverStyle:function(a){if(a!==this._showHoverStyle){this._showHoverStyle=a;this.raisePropertyChanged("showHoverStyle")}},get_showHandleDragStyle:function(){return this._showDragStyle},set_showHandleDragStyle:function(a){if(a!==this._showDragStyle){this._showDragStyle=a;this.raisePropertyChanged("showDragStyle")}},get_innerRailStyle:function(){return this._innerRailStyle},set_innerRailStyle:function(a){if(a!==this._innerRailStyle){this._innerRailStyle=a;this.raisePropertyChanged("innerRailStyle")}},get_enableInnerRangeDrag:function(){return this._enableInnerRangeDrag},set_enableInnerRangeDrag:function(a){if(a!==this._enableInnerRangeDrag){this._enableInnerRangeDrag=a;this.raisePropertyChanged("allowInnerRangeDrag")}},get_enableRailClick:function(){return this._enableRailClick},set_enableRailClick:function(a){if(a!==this._enableRailClick){this._enableRailClick=a;this.raisePropertyChanged("allowRailClick")}},get_isReadOnly:function(){return this._isReadOnly},set_isReadOnly:function(a){if(a!==this._isReadOnly){this._isReadOnly=a;this.raisePropertyChanged("isReadOnly")}},get_enableKeyboard:function(){return this._enableKeyboard},set_enableKeyboard:function(a){if(a!==this._enableKeyboard){this._enableKeyboard=a;this.raisePropertyChanged("enableKeyboard")}},get_enableMouseWheel:function(){return this._enableMouseWheel},set_enableMouseWheel:function(a){if(a!==this._enableMouseWheel){this._enableMouseWheel=a;this.raisePropertyChanged("enableMouseWheel")}},get_increment:function(){return this._increment},set_increment:function(a){if(a!==this._increment){this._increment=a;this.raisePropertyChanged("increment")}},get_tooltipText:function(){return this._tooltipText},set_tooltipText:function(a){if(a!==this._tooltipText){this._tooltipText=a;this.raisePropertyChanged("tooltipText")}},get_multiHandleSliderTargets:function(){return this._multiHandleSliderTargets},set_multiHandleSliderTargets:function(a){if(a!==this._multiHandleSliderTargets){this._multiHandleSliderTargets=a;this.raisePropertyChanged("multiHandleSliderTargets")}},get_cssClass:function(){return this._cssClass},set_cssClass:function(a){if(a!==this._cssClass){this._cssClass=a;this.raisePropertyChanged("cssClass")}},get_boundControlID:function(){return this._boundControlID},set_boundControlID:function(c){var b=this;b._boundControlID=c;if(b._boundControlID)b._boundControl=$get(b._boundControlID);else b._boundControl=a},get_handleCssClass:function(){return this._handleCssClass},set_handleCssClass:function(a){this._handleCssClass=a},get_handleImageUrl:function(){return this._handleImageUrl},set_handleImageUrl:function(a){this._handleImageUrl=a},get_railCssClass:function(){return this._railCssClass},set_railCssClass:function(a){this._railCssClass=a},get_decimals:function(){return this._decimals},set_decimals:function(a){this._decimals=a},add_load:function(a){this.get_events().addHandler(m,a)},remove_load:function(a){this.get_events().removeHandler(m,a)},add_dragStart:function(a){this.get_events().addHandler(o,a)},remove_dragStart:function(a){this.get_events().removeHandler(o,a)},add_drag:function(a){this.get_events().addHandler(p,a)},remove_drag:function(a){this.get_events().removeHandler(p,a)},add_dragEnd:function(a){this.get_events().addHandler(q,a)},remove_dragEnd:function(a){this.get_events().removeHandler(q,a)},add_valueChanged:function(a){this.get_events().addHandler(n,a)},remove_valueChanged:function(a){this.get_events().removeHandler(n,a)}};Sys.Extended.UI.MultiHandleSliderBehavior.DropPending=a;Sys.Extended.UI.MultiHandleSliderBehavior.registerClass("Sys.Extended.UI.MultiHandleSliderBehavior",Sys.Extended.UI.BehaviorBase);Sys.registerComponent(Sys.Extended.UI.MultiHandleSliderBehavior,{name:"multiHandleSlider"})}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedBase","ExtendedDragDrop","ExtendedAnimations"],a);else a()})();�O// (c) 2010 CodePlex Foundation
//!/ <reference name="MicrosoftAjaxNetwork.js" />

(function() {

function execute() {

Type._registerScript("MicrosoftAjaxWebServices.js", ["MicrosoftAjaxNetwork.js"]);
var $type, $prototype;
Type.registerNamespace('Sys.Net');

$type = Sys.Net.WebServiceProxy = function WebServiceProxy() {
    var type = Object.getType(this);
    
    if (type._staticInstance && (typeof(type._staticInstance.get_enableJsonp) === "function")) {
        this._jsonp = (type._staticInstance.get_enableJsonp());
    }
}
$type.prototype = {
    get_timeout: function WebServiceProxy$get_timeout() {
        /// <value type="Number" locid="P:J#Sys.Net.WebServiceProxy.timeout">The timeout in milliseconds for the service.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._timeout || 0;
    },
    set_timeout: function WebServiceProxy$set_timeout(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
        if (e) throw e;
        if (value < 0) {
            throw Error.argumentOutOfRange('value', value, Sys.Res.invalidTimeout);
        }
        this._timeout = value;
    },
    get_defaultUserContext: function WebServiceProxy$get_defaultUserContext() {
        /// <value mayBeNull="true" locid="P:J#Sys.Net.WebServiceProxy.defaultUserContext">The default userContext for this service.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return (typeof(this._userContext) === "undefined") ? null : this._userContext;
    },
    set_defaultUserContext: function WebServiceProxy$set_defaultUserContext(value) {
        var e = Function._validateParams(arguments, [{name: "value", mayBeNull: true}]);
        if (e) throw e;
        this._userContext = value;
    },
    get_defaultSucceededCallback: function WebServiceProxy$get_defaultSucceededCallback() {
        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Net.WebServiceProxy.defaultSucceededCallback">Returns the default succeededCallback for this service.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._succeeded || null;
    },
    set_defaultSucceededCallback: function WebServiceProxy$set_defaultSucceededCallback(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
        if (e) throw e;
        this._succeeded = value;
    },
    get_defaultFailedCallback: function WebServiceProxy$get_defaultFailedCallback() {
        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Net.WebServiceProxy.defaultFailedCallback">Returns the default failedCallback for this service.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._failed || null;
    },
    set_defaultFailedCallback: function WebServiceProxy$set_defaultFailedCallback(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
        if (e) throw e;
        this._failed = value;
    },
    get_enableJsonp: function WebServiceProxy$get_enableJsonp() {
        /// <value type="Boolean" locid="P:J#Sys.Net.WebServiceProxy.enableJsonp">Specifies whether the service supports JSONP for cross domain calling.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return !!this._jsonp;
    },
    set_enableJsonp: function WebServiceProxy$set_enableJsonp(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
        if (e) throw e;
        this._jsonp = value;
    },
    get_path: function WebServiceProxy$get_path() {
        /// <value type="String" locid="P:J#Sys.Net.WebServiceProxy.path">The path to this service.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._path || null;
    },
    set_path: function WebServiceProxy$set_path(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
        if (e) throw e;
        this._path = value;
    },
    get_jsonpCallbackParameter: function WebServiceProxy$get_jsonpCallbackParameter() {
        /// <value type="String" locid="P:J#Sys.Net.WebServiceProxy.jsonpCallbackParameter">Specifies the parameter name that contains the callback function name for a JSONP request.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._callbackParameter || "callback";
    },
    set_jsonpCallbackParameter: function WebServiceProxy$set_jsonpCallbackParameter(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
        if (e) throw e;
        this._callbackParameter = value;
    },
    _invoke: function WebServiceProxy$_invoke(servicePath, methodName, useGet, params, onSuccess, onFailure, userContext) {
        /// <summary locid="M:J#Sys.Net.WebServiceProxy._invoke"></summary>
        /// <param name="servicePath" type="String">Path to the webservice</param>
        /// <param name="methodName" type="String">Method to invoke</param>
        /// <param name="useGet" type="Boolean">Controls whether requests use HttpGet</param>
        /// <param name="params">Method args.</param>
        /// <param name="onSuccess" type="Function" mayBeNull="true" optional="true">Success callback</param>
        /// <param name="onFailure" type="Function" mayBeNull="true" optional="true">Failure callback</param>
        /// <param name="userContext" mayBeNull="true" optional="true">Success callback</param>
        /// <returns type="Sys.Net.WebRequest" mayBeNull="true">Returns the request that was sent</returns>
        var e = Function._validateParams(arguments, [
            {name: "servicePath", type: String},
            {name: "methodName", type: String},
            {name: "useGet", type: Boolean},
            {name: "params"},
            {name: "onSuccess", type: Function, mayBeNull: true, optional: true},
            {name: "onFailure", type: Function, mayBeNull: true, optional: true},
            {name: "userContext", mayBeNull: true, optional: true}
        ]);
        if (e) throw e;

        onSuccess = onSuccess || this.get_defaultSucceededCallback();
        onFailure = onFailure || this.get_defaultFailedCallback();
        if (userContext === null || typeof userContext === 'undefined') userContext = this.get_defaultUserContext();
        return Sys.Net.WebServiceProxy.invoke(servicePath, methodName, useGet, params, onSuccess, onFailure, userContext, this.get_timeout(), this.get_enableJsonp(), this.get_jsonpCallbackParameter());
    }
}
$type.registerClass('Sys.Net.WebServiceProxy');

$type.invoke = function WebServiceProxy$invoke(servicePath, methodName, useGet, params, onSuccess, onFailure, userContext, timeout, enableJsonp, jsonpCallbackParameter) {
    /// <summary locid="M:J#Sys.Net.WebServiceProxy.invoke"></summary>
    /// <param name="servicePath" type="String">Path to the webservice</param>
    /// <param name="methodName" type="String" mayBeNull="true" optional="true">Method to invoke</param>
    /// <param name="useGet" type="Boolean" optional="true" mayBeNull="true">Controls whether requests use HttpGet</param>
    /// <param name="params" mayBeNull="true" optional="true">Method args.</param>
    /// <param name="onSuccess" type="Function" mayBeNull="true" optional="true">Success callback</param>
    /// <param name="onFailure" type="Function" mayBeNull="true" optional="true">Failure callback</param>
    /// <param name="userContext" mayBeNull="true" optional="true">Success callback</param>
    /// <param name="timeout" type="Number" optional="true" mayBeNull="true">Timeout in milliseconds</param>
    /// <param name="enableJsonp" type="Boolean" optional="true" mayBeNull="true">Whether to use JSONP if the servicePath is for a different domain (default is true).</param>
    /// <param name="jsonpCallbackParameter" type="String" optional="true" mayBeNull="true">The name of the callback parameter for JSONP request (default is callback).</param>
    /// <returns type="Sys.Net.WebRequest" mayBeNull="true">Returns the request that was sent (null for JSONP requests).</returns>
    var e = Function._validateParams(arguments, [
        {name: "servicePath", type: String},
        {name: "methodName", type: String, mayBeNull: true, optional: true},
        {name: "useGet", type: Boolean, mayBeNull: true, optional: true},
        {name: "params", mayBeNull: true, optional: true},
        {name: "onSuccess", type: Function, mayBeNull: true, optional: true},
        {name: "onFailure", type: Function, mayBeNull: true, optional: true},
        {name: "userContext", mayBeNull: true, optional: true},
        {name: "timeout", type: Number, mayBeNull: true, optional: true},
        {name: "enableJsonp", type: Boolean, mayBeNull: true, optional: true},
        {name: "jsonpCallbackParameter", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    var schemeHost = (enableJsonp !== false) ? Sys.Net.WebServiceProxy._xdomain.exec(servicePath) : null,
        tempCallback, jsonp = schemeHost && (schemeHost.length === 3) && 
            ((schemeHost[1] !== location.protocol) || (schemeHost[2] !== location.host));
    useGet = jsonp || useGet;
    if (jsonp) {
        jsonpCallbackParameter = jsonpCallbackParameter || "callback";
        tempCallback = "_jsonp" + Sys._jsonp++;
    }
    if (!params) params = {};
    var urlParams = params;
    if (!useGet || !urlParams) urlParams = {};
    var error, timeoutcookie = null, body = null,
        url = Sys.Net.WebRequest._createUrl(methodName
            ? (servicePath+"/"+encodeURIComponent(methodName))
            : servicePath, urlParams, jsonp ? (jsonpCallbackParameter + "=Sys." + tempCallback) : null);
    if (jsonp) {
        function jsonpComplete(data, statusCode) {
            if (timeoutcookie !== null) {
                window.clearTimeout(timeoutcookie);
                timeoutcookie = null;
            }
            delete Sys[tempCallback];
            tempCallback = null; 
            if ((typeof(statusCode) !== "undefined") && (statusCode !== 200)) {
                if (onFailure) {
                    error = new Sys.Net.WebServiceError(false,
                            data.Message || String.format(Sys.Res.webServiceFailedNoMsg, methodName),
                            data.StackTrace || null,
                            data.ExceptionType || null,
                            data);
                    error._statusCode = statusCode;
                    onFailure(error, userContext, methodName);
                }
                else {
                    if (data.StackTrace && data.Message) {
                        error = data.StackTrace + "-- " + data.Message;
                    }
                    else {
                        error = data.StackTrace || data.Message;
                    }
                    error = String.format(error ? Sys.Res.webServiceFailed : Sys.Res.webServiceFailedNoMsg, methodName, error);
                    throw Sys.Net.WebServiceProxy._createFailedError(methodName, String.format(Sys.Res.webServiceFailed, methodName, error));
                }
            }
            else if (onSuccess) {
                onSuccess(data, userContext, methodName);
            }
        }
        Sys[tempCallback] = jsonpComplete;
        Sys._loadJsonp(url, function() {
            if (tempCallback) {
                jsonpComplete({ Message: String.format(Sys.Res.webServiceFailedNoMsg, methodName) }, -1);
            }
        });
        return null;
    }
    var request = new Sys.Net.WebRequest();
    request.set_url(url);
    request.get_headers()['Content-Type'] = 'application/json; charset=utf-8';
    if (!useGet) {
        body = Sys.Serialization.JavaScriptSerializer.serialize(params);
        if (body === "{}") body = "";
    }
    request.set_body(body);
    request.add_completed(onComplete);
    if (timeout > 0) request.set_timeout(timeout);
    request.invoke();
    
    function onComplete(response, eventArgs) {
        if (response.get_responseAvailable()) {
            var ex, statusCode = response.get_statusCode();
            var result = null;
            var isJson;

            try {
                var contentType = response.getResponseHeader("Content-Type");
                isJson = contentType.startsWith("application/json");
                result = isJson ? response.get_object() :
                    (contentType.startsWith("text/xml") ? response.get_xml() : response.get_responseData());
            }
            catch (ex) {
            }

            var error = response.getResponseHeader("jsonerror");
            var errorObj = (error === "true");
            if (errorObj) {
                if (result) {
                    result = new Sys.Net.WebServiceError(false, result.Message, result.StackTrace, result.ExceptionType, result);
                }
            }
            else if (isJson) {
                result = (!result || (typeof(result.d) === "undefined")) ? result : result.d;
            }
            if (((statusCode < 200) || (statusCode >= 300)) || errorObj) {
                if (onFailure) {
                    if (!result || !errorObj) {
                        result = new Sys.Net.WebServiceError(false /*timedout*/, String.format(Sys.Res.webServiceFailedNoMsg, methodName));
                    }
                    result._statusCode = statusCode;
                    onFailure(result, userContext, methodName);
                }
                else {
                    if (result && errorObj) {
                        error = result.get_exceptionType() + "-- " + result.get_message();
                    }
                    else {
                        error = response.get_responseData();
                    }
                    throw Sys.Net.WebServiceProxy._createFailedError(methodName, String.format(Sys.Res.webServiceFailed, methodName, error));
                }
            }
            else if (onSuccess) {
                onSuccess(result, userContext, methodName);
            }
        }
        else {
            var timedOut = response.get_timedOut(),
                msg = String.format((timedOut ? Sys.Res.webServiceTimedOut : Sys.Res.webServiceFailedNoMsg), methodName);
            if (onFailure) {
                onFailure(new Sys.Net.WebServiceError(timedOut, msg, "", ""), userContext, methodName);
            }
            else {
                throw Sys.Net.WebServiceProxy._createFailedError(methodName, msg);
            }
        }
    }

    return request;
}

$type._createFailedError = function WebServiceProxy$_createFailedError(methodName, errorMessage) {
    var displayMessage = "Sys.Net.WebServiceFailedException: " + errorMessage;
    var e = Error.create(displayMessage, { 'name': 'Sys.Net.WebServiceFailedException', 'methodName': methodName });
    e.popStackFrame();
    return e;
}

$type._defaultFailedCallback = function WebServiceProxy$_defaultFailedCallback(err, methodName) {
    var error = err.get_exceptionType() + "-- " + err.get_message();
    throw Sys.Net.WebServiceProxy._createFailedError(methodName, String.format(Sys.Res.webServiceFailed, methodName, error));
}

$type._generateTypedConstructor = function WebServiceProxy$_generateTypedConstructor(type) {
    return function(properties) {
        if (properties) {
            for (var name in properties) {
                this[name] = properties[name];
            }
        }
        this.__type = type;
    }
}

Sys._jsonp = 0;

$type._xdomain = /^\s*([a-zA-Z0-9\+\-\.]+\:)\/\/([^?#\/]+)/;

Sys._loadJsonp = function _loadJsonp(src, callback) {
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = src;
    var attachEvent = script.attachEvent;
    function onEvent() {
        if (!attachEvent || /loaded|complete/.test(script.readyState)) {
            if (attachEvent) {
                script.detachEvent("onreadystatechange", onEvent);
            }
            else {
                script.removeEventListener("load", onEvent, false);
                script.removeEventListener("error", onEvent, false);
            }
            callback.apply(script);
            script = null;
        }
    }
    if (attachEvent) {
        script.attachEvent("onreadystatechange", onEvent);
    }
    else {
        script.addEventListener("load", onEvent, false);
        script.addEventListener("error", onEvent, false);
    }    
    Sys.get("head").appendChild(script);
}
$type = Sys.Net.WebServiceError = function WebServiceError(timedOut, message, stackTrace, exceptionType, errorObject) {
    /// <summary locid="M:J#Sys.Net.WebServiceError.#ctor">Represents a webservice error</summary>
    /// <param name="timedOut" type="Boolean">Whether the service timed out.</param>
    /// <param name="message" type="String" mayBeNull="true">The error message.</param>
    /// <param name="stackTrace" type="String" mayBeNull="true" optional="true">The stack trace of the error.</param>
    /// <param name="exceptionType" type="String" mayBeNull="true" optional="true">The server exception type.</param>
    /// <param name="errorObject" type="Object" mayBeNull="true" optional="true">The raw error information.</param>
    var e = Function._validateParams(arguments, [
        {name: "timedOut", type: Boolean},
        {name: "message", type: String, mayBeNull: true},
        {name: "stackTrace", type: String, mayBeNull: true, optional: true},
        {name: "exceptionType", type: String, mayBeNull: true, optional: true},
        {name: "errorObject", type: Object, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    this._timedOut = timedOut;
    this._message = message;
    this._stackTrace = stackTrace;
    this._exceptionType = exceptionType;
    this._errorObject = errorObject;
    this._statusCode = -1;
}

$type.prototype = {
    get_timedOut: function WebServiceError$get_timedOut() {
        /// <value type="Boolean" locid="P:J#Sys.Net.WebServiceError.timedOut">Whether the service failed due to timeout.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._timedOut;
    },

    get_statusCode: function WebServiceError$get_statusCode() {
        /// <value type="Number" locid="P:J#Sys.Net.WebServiceError.statusCode">Int representing the status of the response.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._statusCode;
    },

    get_message: function WebServiceError$get_message() {
        /// <value type="String" locid="P:J#Sys.Net.WebServiceError.message">Error message</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._message;
    },

    get_stackTrace: function WebServiceError$get_stackTrace() {
        /// <value type="String" locid="P:J#Sys.Net.WebServiceError.stackTrace">Stack trace of the error.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._stackTrace || "";
    },

    get_exceptionType: function WebServiceError$get_exceptionType() {
        /// <value type="String" locid="P:J#Sys.Net.WebServiceError.exceptionType">Exception type of the error.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._exceptionType || "";
    },
    
    get_errorObject: function WebServiceError$get_errorObject() {
        /// <value type="Object" locid="P:J#Sys.Net.WebServiceError.errorObject">The raw error object returned by the service.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._errorObject || null;
    }
}
$type.registerClass('Sys.Net.WebServiceError');

}

if (window.Sys && Sys.loader) {
	Sys.loader.registerScript("WebServices", null, execute);
}
else {
	execute();
}

})();
7~// (c) 2010 CodePlex Foundation
//!/ <reference name="MicrosoftAjaxSerialization.js" />

(function() {

function execute() {

Type._registerScript("MicrosoftAjaxNetwork.js", ["MicrosoftAjaxSerialization.js"]);
var $type, $prototype;

if (!window.XMLHttpRequest) {
    window.XMLHttpRequest = function window$XMLHttpRequest() {
        var ex, progIDs = [ 'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP' ];
        for (var i = 0, l = progIDs.length; i < l; i++) {
            try {
                return new ActiveXObject(progIDs[i]);
            }
            catch (ex) {
            }
        }
        return null;
    }
}

Type.registerNamespace('Sys.Net');

$type = Sys.Net.WebRequestExecutor = function WebRequestExecutor() {
    /// <summary locid="M:J#Sys.Net.WebRequestExecutor.#ctor">Base class for WebRequestExecutors which handle the actual execution of a WebRequest</summary>
    if (arguments.length !== 0) throw Error.parameterCount();
    this._webRequest = null;
    this._resultObject = null;
}


$type.prototype = {
    get_started: function WebRequestExecutor$get_started() {
        /// <value type="Boolean" locid="P:J#Sys.Net.WebRequestExecutor.started"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        throw Error.notImplemented();
    },
    get_responseAvailable: function WebRequestExecutor$get_responseAvailable() {
        /// <value type="Boolean" locid="P:J#Sys.Net.WebRequestExecutor.responseAvailable"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        throw Error.notImplemented();
    },
    get_timedOut: function WebRequestExecutor$get_timedOut() {
        /// <value type="Boolean" locid="P:J#Sys.Net.WebRequestExecutor.timedOut"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        throw Error.notImplemented();
    },
    get_aborted: function WebRequestExecutor$get_aborted() {
        /// <value type="Boolean" locid="P:J#Sys.Net.WebRequestExecutor.aborted"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        throw Error.notImplemented();
    },
    get_responseData: function WebRequestExecutor$get_responseData() {
        /// <value type="String" locid="P:J#Sys.Net.WebRequestExecutor.responseData"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        throw Error.notImplemented();
    },
    get_statusCode: function WebRequestExecutor$get_statusCode() {
        /// <value type="Number" locid="P:J#Sys.Net.WebRequestExecutor.statusCode"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        throw Error.notImplemented();
    },
    get_statusText: function WebRequestExecutor$get_statusText() {
        /// <value type="String" locid="P:J#Sys.Net.WebRequestExecutor.statusText"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        throw Error.notImplemented();
    },
    get_xml: function WebRequestExecutor$get_xml() {
        /// <value locid="P:J#Sys.Net.WebRequestExecutor.xml"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        throw Error.notImplemented();
    },
    executeRequest: function WebRequestExecutor$executeRequest() {
        /// <summary locid="M:J#Sys.Net.WebRequestExecutor.executeRequest">Begins execution of the request.</summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        throw Error.notImplemented();
    },
    abort: function WebRequestExecutor$abort() {
        /// <summary locid="M:J#Sys.Net.WebRequestExecutor.abort">Aborts the request.</summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        throw Error.notImplemented();
    },
    getAllResponseHeaders: function WebRequestExecutor$getAllResponseHeaders() {
        /// <summary locid="M:J#Sys.Net.WebRequestExecutor.getAllResponseHeaders">Returns all the responses header.</summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        throw Error.notImplemented();
    },
    getResponseHeader: function WebRequestExecutor$getResponseHeader(header) {
        /// <summary locid="M:J#Sys.Net.WebRequestExecutor.getResponseHeader">Returns a response header.</summary>
        /// <param name="header" type="String">The requested header.</param>
        var e = Function._validateParams(arguments, [
            {name: "header", type: String}
        ]);
        if (e) throw e;
        throw Error.notImplemented();
    },
    get_webRequest: function WebRequestExecutor$get_webRequest() {
        /// <value type="Sys.Net.WebRequest" locid="P:J#Sys.Net.WebRequestExecutor.webRequest"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._webRequest;
    },
    _set_webRequest: function WebRequestExecutor$_set_webRequest(value) {
        if (this.get_started()) {
            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOnceStarted, 'set_webRequest'));
        }
        this._webRequest = value;
    },
    get_object: function WebRequestExecutor$get_object() {
        /// <value locid="P:J#Sys.Net.WebRequestExecutor.object">The JSON eval'd response.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        var result = this._resultObject;
        if (!result) {
            this._resultObject = result = Sys.Serialization.JavaScriptSerializer.deserialize(this.get_responseData());
        }
        return result;
    }
}
$type.registerClass('Sys.Net.WebRequestExecutor');
Sys.Net.XMLDOM = function XMLDOM(markup) {
    /// <summary locid="M:J#Sys.Net.XMLDOM.#ctor">Creates an XML document from an XML string.</summary>
    /// <param name="markup" type="String">The XML string to parse.</param>
    var e = Function._validateParams(arguments, [
        {name: "markup", type: String}
    ]);
    if (e) throw e;
    if (!window.DOMParser) {
        var ex, progIDs = [ 'Msxml2.DOMDocument.3.0', 'Msxml2.DOMDocument' ];
        for (var i = 0, l = progIDs.length; i < l; i++) {
            try {
                var xmlDOM = new ActiveXObject(progIDs[i]);
                xmlDOM.async = false;
                xmlDOM.loadXML(markup);
                xmlDOM.setProperty('SelectionLanguage', 'XPath');
                return xmlDOM;
            }
            catch (ex) {
            }
        }
    }
    else {
        try {
            var domParser = new window.DOMParser();
            return domParser.parseFromString(markup, 'text/xml');
        }
        catch (ex) {
        }
    }
    return null;
}

$type = Sys.Net.XMLHttpExecutor = function XMLHttpExecutor() {
    /// <summary locid="M:J#Sys.Net.XMLHttpExecutor.#ctor">XMLHttpExecutor</summary>
    if (arguments.length !== 0) throw Error.parameterCount();

    Sys.Net.XMLHttpExecutor.initializeBase(this);

    var _this = this;

    this._onReadyStateChange = (function () {
        /*
            readyState values:
            0 = uninitialized
            1 = loading
            2 = loaded
            3 = interactive
            4 = complete
        */
        if (_this._xmlHttpRequest.readyState === 4 /*complete*/) {
            try {
                if (typeof(_this._xmlHttpRequest.status) === "undefined") {
                    return;
                }
            }
            catch(ex) {
                return;
            }
            
            _this._clearTimer();
            _this._responseAvailable = true;
                _this._webRequest.completed(Sys.EventArgs.Empty);
                if (_this._xmlHttpRequest) {
                    _this._xmlHttpRequest.onreadystatechange = Function.emptyMethod;
                    _this._xmlHttpRequest = null;
                }
        }
    });

    this._clearTimer = (function() {
        if (_this._timer) {
            window.clearTimeout(_this._timer);
            _this._timer = null;
        }
    });

    this._onTimeout = (function() {
        if (!_this._responseAvailable) {
            _this._clearTimer();
            _this._timedOut = true;
            var xhr = _this._xmlHttpRequest;
            xhr.onreadystatechange = Function.emptyMethod;
            xhr.abort();
            _this._webRequest.completed(Sys.EventArgs.Empty);
            _this._xmlHttpRequest = null;
        }
    });

}

$type.prototype = {

    get_timedOut: function XMLHttpExecutor$get_timedOut() {
        /// <value type="Boolean" locid="P:J#Sys.Net.XMLHttpExecutor.timedOut">True if the executor has timed out.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return !!this._timedOut;
    },

    get_started: function XMLHttpExecutor$get_started() {
        /// <value type="Boolean" locid="P:J#Sys.Net.XMLHttpExecutor.started">True if the executor has started.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return !!this._started;
    },

    get_responseAvailable: function XMLHttpExecutor$get_responseAvailable() {
        /// <value type="Boolean" locid="P:J#Sys.Net.XMLHttpExecutor.responseAvailable">True if a response is available.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return !!this._responseAvailable;
    },

    get_aborted: function XMLHttpExecutor$get_aborted() {
        /// <value type="Boolean" locid="P:J#Sys.Net.XMLHttpExecutor.aborted">True if the executor has been aborted.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return !!this._aborted;
    },

    executeRequest: function XMLHttpExecutor$executeRequest() {
        /// <summary locid="M:J#Sys.Net.XMLHttpExecutor.executeRequest">Invokes the request.</summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        var request = this.get_webRequest();
        this._webRequest = request;

        if (this._started) {
            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOnceStarted, 'executeRequest'));
        }
        if (!this._webRequest) {
            throw Error.invalidOperation(Sys.Res.nullWebRequest);
        }

        var body = request.get_body();
        var headers = request.get_headers();
        var xhr = new XMLHttpRequest();
        this._xmlHttpRequest = xhr;
        xhr.onreadystatechange = this._onReadyStateChange;
        var verb = request.get_httpVerb();
        xhr.open(verb, request.getResolvedUrl(), true /*async*/);
        xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
        if (headers) {
            for (var header in headers) {
                var val = headers[header];
                if (typeof(val) !== "function")
                    xhr.setRequestHeader(header, val);
            }
        }

        if (verb.toLowerCase() === "post") {
            if ((headers === null) || !headers['Content-Type']) {
                xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
            }

            if (!body) {
                body = "";
            }
        }

        var timeout = request.get_timeout();
        if (timeout > 0) {
            this._timer = window.setTimeout(Function.createDelegate(this, this._onTimeout), timeout);
        }
        xhr.send(body);
        this._started = true;
    },

    getResponseHeader: function XMLHttpExecutor$getResponseHeader(header) {
        /// <summary locid="M:J#Sys.Net.XMLHttpExecutor.getResponseHeader">Returns a response header.</summary>
        /// <param name="header" type="String">The requested header.</param>
        /// <returns type="String">The value of the header.</returns>
        var e = Function._validateParams(arguments, [
            {name: "header", type: String}
        ]);
        if (e) throw e;
        if (!this._responseAvailable) {
            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'getResponseHeader'));
        }
        if (!this._xmlHttpRequest) {
            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'getResponseHeader'));
        }

        var er, result;
        try {
            result = this._xmlHttpRequest.getResponseHeader(header);
        } catch (er) {
        }
        if (!result) result = "";
        return result;
    },

    getAllResponseHeaders: function XMLHttpExecutor$getAllResponseHeaders() {
        /// <summary locid="M:J#Sys.Net.XMLHttpExecutor.getAllResponseHeaders">Returns all the responses header.</summary>
        /// <returns type="String">The text of all the headers.</returns>
        if (arguments.length !== 0) throw Error.parameterCount();
        if (!this._responseAvailable) {
            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'getAllResponseHeaders'));
        }
        if (!this._xmlHttpRequest) {
            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'getAllResponseHeaders'));
        }

        return this._xmlHttpRequest.getAllResponseHeaders();
    },

    get_responseData: function XMLHttpExecutor$get_responseData() {
        /// <value type="String" locid="P:J#Sys.Net.XMLHttpExecutor.responseData">The text of the response.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        if (!this._responseAvailable) {
            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_responseData'));
        }
        if (!this._xmlHttpRequest) {
            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_responseData'));
        }

        return this._xmlHttpRequest.responseText;
    },

    get_statusCode: function XMLHttpExecutor$get_statusCode() {
        /// <value type="Number" locid="P:J#Sys.Net.XMLHttpExecutor.statusCode">The status code of the response.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        if (!this._responseAvailable) {
            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_statusCode'));
        }
        if (!this._xmlHttpRequest) {
            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_statusCode'));
        }
        var ex, result = 0;
        try {
            result = this._xmlHttpRequest.status;
        }
        catch(ex) {
        }
        return result;
    },

    get_statusText: function XMLHttpExecutor$get_statusText() {
        /// <value type="String" locid="P:J#Sys.Net.XMLHttpExecutor.statusText">The status text of the repsonse.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        if (!this._responseAvailable) {
            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_statusText'));
        }
        if (!this._xmlHttpRequest) {
            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_statusText'));
        }

        return this._xmlHttpRequest.statusText;
    },

    get_xml: function XMLHttpExecutor$get_xml() {
        /// <value locid="P:J#Sys.Net.XMLHttpExecutor.xml">The response in xml format.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        if (!this._responseAvailable) {
            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_xml'));
        }
        if (!this._xmlHttpRequest) {
            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_xml'));
        }
        var xhr = this._xmlHttpRequest;
        var xml = xhr.responseXML;
        if (!xml || !xml.documentElement) {

            xml = Sys.Net.XMLDOM(xhr.responseText);

            if (!xml || !xml.documentElement)
                return null;
        }
        else if (navigator.userAgent.indexOf('MSIE') !== -1) {
            xml.setProperty('SelectionLanguage', 'XPath');
        }

        if (xml.documentElement.namespaceURI === "http://www.mozilla.org/newlayout/xml/parsererror.xml" &&
            xml.documentElement.tagName === "parsererror") {
            return null;
        }
        
        if (xml.documentElement.firstChild && xml.documentElement.firstChild.tagName === "parsererror") {
            return null;
        }
        
        return xml;
    },

    abort: function XMLHttpExecutor$abort() {
        /// <summary locid="M:J#Sys.Net.XMLHttpExecutor.abort">Aborts the request.</summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        if (!this._started) {
            throw Error.invalidOperation(Sys.Res.cannotAbortBeforeStart);
        }

        if (this._aborted || this._responseAvailable || this._timedOut)
            return;

        this._aborted = true;

        this._clearTimer();
        var xhr = this._xmlHttpRequest;
        if (xhr && !this._responseAvailable) {

            xhr.onreadystatechange = Function.emptyMethod;
            xhr.abort();
            
            this._xmlHttpRequest = null;            

            this._webRequest.completed(Sys.EventArgs.Empty);
        }
    }
}
$type.registerClass('Sys.Net.XMLHttpExecutor', Sys.Net.WebRequestExecutor);
$type = Sys.Net._WebRequestManager = function _WebRequestManager() {
    /// <summary locid="P:J#Sys.Net.WebRequestManager.#ctor"></summary>
    if (arguments.length !== 0) throw Error.parameterCount();
    this._defaultExecutorType = "Sys.Net.XMLHttpExecutor";
}

$type.prototype = {
    add_invokingRequest: function _WebRequestManager$add_invokingRequest(handler) {
        /// <summary locid="E:J#Sys.Net.WebRequestManager.invokingRequest"></summary>
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        Sys.Observer.addEventHandler(this, "invokingRequest", handler);
    },
    remove_invokingRequest: function _WebRequestManager$remove_invokingRequest(handler) {
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        Sys.Observer.removeEventHandler(this, "invokingRequest", handler);
    },

    add_completedRequest: function _WebRequestManager$add_completedRequest(handler) {
        /// <summary locid="E:J#Sys.Net.WebRequestManager.completedRequest"></summary>
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        Sys.Observer.addEventHandler(this, "completedRequest", handler);
    },
    remove_completedRequest: function _WebRequestManager$remove_completedRequest(handler) {
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        Sys.Observer.removeEventHandler(this, "completedRequest", handler);
    },
    get_defaultTimeout: function _WebRequestManager$get_defaultTimeout() {
        /// <value type="Number" locid="P:J#Sys.Net.WebRequestManager.defaultTimeout">The default timeout for requests in milliseconds.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._defaultTimeout || 0;
    },
    set_defaultTimeout: function _WebRequestManager$set_defaultTimeout(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
        if (e) throw e;
        if (value < 0) {
            throw Error.argumentOutOfRange("value", value, Sys.Res.invalidTimeout);
        }

        this._defaultTimeout = value;
    },

    get_defaultExecutorType: function _WebRequestManager$get_defaultExecutorType() {
        /// <value type="String" locid="P:J#Sys.Net.WebRequestManager.defaultExecutorType">The default executor type name.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._defaultExecutorType;
    },
    set_defaultExecutorType: function _WebRequestManager$set_defaultExecutorType(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
        if (e) throw e;
        this._defaultExecutorType = value;
    },

    executeRequest: function _WebRequestManager$executeRequest(webRequest) {
        /// <summary locid="M:J#Sys.Net.WebRequestManager.executeRequest">Executes a request.</summary>
        /// <param name="webRequest" type="Sys.Net.WebRequest">The webRequest to execute.</param>
        var e = Function._validateParams(arguments, [
            {name: "webRequest", type: Sys.Net.WebRequest}
        ]);
        if (e) throw e;
        var executor = webRequest.get_executor();
        if (!executor) {
            var er, failed;
            try {
                var executorType = window.eval(this._defaultExecutorType);
                executor = new executorType();
            }
            catch (er) {
                failed = true;
            }

            if (failed  || !Sys.Net.WebRequestExecutor.isInstanceOfType(executor) || !executor) {
                throw Error.argument("defaultExecutorType", String.format(Sys.Res.invalidExecutorType, this._defaultExecutorType));
            }

            webRequest.set_executor(executor);
        }

        if (!executor.get_aborted()) {
            var evArgs = new Sys.Net.NetworkRequestEventArgs(webRequest);
            Sys.Observer.raiseEvent(this, "invokingRequest", evArgs);
            if (!evArgs.get_cancel()) {
                executor.executeRequest();
            }
        }
    }
}

$type.registerClass('Sys.Net._WebRequestManager');

Sys.Net.WebRequestManager = new Sys.Net._WebRequestManager();
$type = Sys.Net.NetworkRequestEventArgs = function NetworkRequestEventArgs(webRequest) {
    /// <summary locid="M:J#Sys.Net.NetworkRequestEventArgs.#ctor">This class is raised by the WebRequestManager when a WebRequest is about to be executed.</summary>
    /// <param name="webRequest" type="Sys.Net.WebRequest">The identifier for the event.</param>
    var e = Function._validateParams(arguments, [
        {name: "webRequest", type: Sys.Net.WebRequest}
    ]);
    if (e) throw e;
    Sys.Net.NetworkRequestEventArgs.initializeBase(this);
    this._webRequest = webRequest;
}

$type.prototype = {
    get_webRequest: function NetworkRequestEventArgs$get_webRequest() {
        /// <value type="Sys.Net.WebRequest" locid="P:J#Sys.Net.NetworkRequestEventArgs.webRequest">The request about to be executed.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._webRequest;
    }
}

$type.registerClass('Sys.Net.NetworkRequestEventArgs', Sys.CancelEventArgs);
$type = Sys.Net.WebRequest = function WebRequest() {
    /// <summary locid="M:J#Sys.Net.WebRequest.#ctor">WebRequest class</summary>
    if (arguments.length !== 0) throw Error.parameterCount();
    this._url = "";
    this._headers = { };
    this._body = null;
    this._userContext = null;
    this._httpVerb = null;
}

$type.prototype = {
    add_completed: function WebRequest$add_completed(handler) {
        /// <summary locid="E:J#Sys.Net.WebRequest.completed"></summary>
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        Sys.Observer.addEventHandler(this, "completed", handler);
    },
    remove_completed: function WebRequest$remove_completed(handler) {
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        Sys.Observer.removeEventHandler(this, "completed", handler);
    },

    completed: function WebRequest$completed(eventArgs) {
        /// <summary locid="M:J#Sys.Net.WebRequest.completed">The completed method should be called when the request is completed.</summary>
        /// <param name="eventArgs" type="Sys.EventArgs">The event args to raise the event with.</param>
        var e = Function._validateParams(arguments, [
            {name: "eventArgs", type: Sys.EventArgs}
        ]);
        if (e) throw e;
        function raise(source, sender, eventName) {
            var handler = Sys.Observer._getContext(source, true).events.getHandler(eventName);
            if (handler) {
                handler(sender, eventArgs);
            }
        }
        raise(Sys.Net.WebRequestManager, this._executor, "completedRequest");
        raise(this, this._executor, "completed");
        Sys.Observer.clearEventHandlers(this, "completed");
    },

    get_url: function WebRequest$get_url() {
        /// <value type="String" locid="P:J#Sys.Net.WebRequest.url">The url.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._url;
    },
    set_url: function WebRequest$set_url(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
        if (e) throw e;
        this._url = value;
    },

    get_headers: function WebRequest$get_headers() {
        /// <value locid="P:J#Sys.Net.WebRequest.headers">The headers dictionary for the request.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._headers;
    },

    get_httpVerb: function WebRequest$get_httpVerb() {
        /// <value type="String" locid="P:J#Sys.Net.WebRequest.httpVerb">The httpVerb for the request.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        if (this._httpVerb === null) {
            if (this._body === null) {
                return "GET";
            }
            return "POST";
        }
        return this._httpVerb;
    },
    set_httpVerb: function WebRequest$set_httpVerb(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
        if (e) throw e;
        if (value.length === 0) {
            throw Error.argument('value', Sys.Res.invalidHttpVerb);
        }
        this._httpVerb = value;
    },

    get_body: function WebRequest$get_body() {
        /// <value mayBeNull="true" locid="P:J#Sys.Net.WebRequest.body">The body of the request.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._body;
    },
    set_body: function WebRequest$set_body(value) {
        var e = Function._validateParams(arguments, [{name: "value", mayBeNull: true}]);
        if (e) throw e;
        this._body = value;
    },

    get_userContext: function WebRequest$get_userContext() {
        /// <value mayBeNull="true" locid="P:J#Sys.Net.WebRequest.userContext">The userContext of the request.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._userContext;
    },
    set_userContext: function WebRequest$set_userContext(value) {
        var e = Function._validateParams(arguments, [{name: "value", mayBeNull: true}]);
        if (e) throw e;
        this._userContext = value;
    },

    get_executor: function WebRequest$get_executor() {
        /// <value type="Sys.Net.WebRequestExecutor" locid="P:J#Sys.Net.WebRequest.executor">The executor for the request.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._executor || null;
    },
    set_executor: function WebRequest$set_executor(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Sys.Net.WebRequestExecutor}]);
        if (e) throw e;
        if (this._executor && this._executor.get_started()) {
            throw Error.invalidOperation(Sys.Res.setExecutorAfterActive);
        }
        this._executor = value;
        value._set_webRequest(this);
    },

    get_timeout: function WebRequest$get_timeout() {
        /// <value type="Number" locid="P:J#Sys.Net.WebRequest.timeout">The timeout in milliseconds for the request.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._timeout || Sys.Net.WebRequestManager.get_defaultTimeout();
    },
    set_timeout: function WebRequest$set_timeout(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
        if (e) throw e;
        if (value < 0) {
            throw Error.argumentOutOfRange("value", value, Sys.Res.invalidTimeout);
        }
        this._timeout = value;
    },

    getResolvedUrl: function WebRequest$getResolvedUrl() {
        /// <summary locid="M:J#raise">The getResolvedUrl method returns the url resolved against the base url of the page if set.</summary>
        /// <returns type="String">The resolved url for the request.</returns>
        if (arguments.length !== 0) throw Error.parameterCount();
        return Sys.Net.WebRequest._resolveUrl(this._url);
    },

    invoke: function WebRequest$invoke() {
        /// <summary locid="M:J#raise">Invokes the request</summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        if (this._invokeCalled) {
            throw Error.invalidOperation(Sys.Res.invokeCalledTwice);
        }
        Sys.Net.WebRequestManager.executeRequest(this);
        this._invokeCalled = true;
    }
}

$type._resolveUrl = function WebRequest$_resolveUrl(url, baseUrl) {
    if (url && url.indexOf('://') > 0) {
        return url;
    }

    if (!baseUrl || !baseUrl.length) {
        var baseElement = Sys.get('base');
        if (baseElement && baseElement.href && baseElement.href.length) {
            baseUrl = baseElement.href;
        }
        else {
            baseUrl = document.URL;
        }
    }

    var qsStart = baseUrl.indexOf('?');
    if (qsStart > 0) {
        baseUrl = baseUrl.substr(0, qsStart);
    }
    qsStart = baseUrl.indexOf('#');
    if (qsStart > 0) {
        baseUrl = baseUrl.substr(0, qsStart);
    }
    baseUrl = baseUrl.substr(0, baseUrl.lastIndexOf('/') + 1);

    if (!url || !url.length) {
        return baseUrl;
    }

    if (url.charAt(0) === '/') {
        var slashslash = baseUrl.indexOf('://');
        if (slashslash === -1) {
            throw Error.argument("baseUrl", Sys.Res.badBaseUrl1);
        }

        var nextSlash = baseUrl.indexOf('/', slashslash + 3);
        if (nextSlash === -1) {
            throw Error.argument("baseUrl", Sys.Res.badBaseUrl2);
        }

        return baseUrl.substr(0, nextSlash) + url;
    }
    else {
        var lastSlash = baseUrl.lastIndexOf('/');
        if (lastSlash === -1) {
            throw Error.argument("baseUrl", Sys.Res.badBaseUrl3);
        }

        return baseUrl.substr(0, lastSlash+1) + url;
    }
}

$type._createQueryString = function WebRequest$_createQueryString(queryString, encodeMethod, addParams) {
    encodeMethod = encodeMethod || encodeURIComponent;
    var i = 0, obj, val, arg, sb = new Sys.StringBuilder();
    if (queryString) {
        for (arg in queryString) {
            obj = queryString[arg];
            if (typeof(obj) === "function") continue;
            val = Sys.Serialization.JavaScriptSerializer.serialize(obj);
            if (i++) {
                sb.append('&');
            }
            sb.append(arg);
            sb.append('=');
            sb.append(encodeMethod(val));
        }
    }
    if (addParams) {
        if (i) {
            sb.append('&');
        }
        sb.append(addParams);
    }
    return sb.toString();
}

$type._createUrl = function WebRequest$_createUrl(url, queryString, addParams) {
    if (!queryString && !addParams) {
        return url;
    }
    var qs = Sys.Net.WebRequest._createQueryString(queryString, null, addParams);
    return qs.length
        ? url + ((url && url.indexOf('?') >= 0) ? "&" : "?") + qs
        : url;
}

$type.registerClass('Sys.Net.WebRequest');

}

if (window.Sys && Sys.loader) {
	Sys.loader.registerScript("Network", null, execute);
}
else {
	execute();
}

})();
u// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />
/// <reference path="../DynamicPopulate/DynamicPopulateBehavior.js" />
/// <reference path="../Animation/Animations.js" />
/// <reference path="../Animation/AnimationBehavior.js" />
/// <reference path="../PopupExtender/PopupBehavior.js" />
/// <reference path="../PopupControl/PopupControlBehavior.js" />

(function() {
var scriptName = "ExtendedListSearch";

function execute() {

Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.ListSearchBehavior = function(element) {
    /// <summary>
    /// The ListSearchBehavior allows users to search incrementally within a Select
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// Select associated with the behavior
    /// </param>

    Sys.Extended.UI.ListSearchBehavior.initializeBase(this, [element]);

    this._promptCssClass = null;
    this._promptText = (Sys.Extended.UI.Resources && Sys.Extended.UI.Resources.ListSearch_DefaultPrompt) || "Type to search";
    this._offsetX = 0;
    this._offsetY = 0;
    this._promptPosition = Sys.Extended.UI.ListSearchPromptPosition.Top;
    this._raiseImmediateOnChange = false;
    this._queryPattern = Sys.Extended.UI.ListSearchQueryPattern.StartsWith;
    this._isSorted = false;


    this._popupBehavior = null;
    this._onShowJson = null;
    this._onHideJson = null;
    this._originalIndex = 0;    // Index of the selected option when a key is first hit (before it is changed by the browser)
    this._newIndex = -1;         // New index to which we want to move.   We need this because Firefox shifts the selected option even though we preventDefault and preventPropagation in _onKeyPress.
    this._showingPromptText = false;
    this._searchText = '';      // Actual search text (text displayed in the PromptDiv may be clipped)
    this._ellipsis = String.fromCharCode(0x2026);
    this._binarySearch = false;
    this._applicationLoadDelegate = null;
    this._focusIndex = 0;       // Selected Index when the list is initially given focus
    this._queryTimeout = 0;     // Timeout in milliseconds after which search text will be cleared
    this._timer = null;     // Holds the opaque ID returned by setTimeout function. Needed to correctly clear the timeout reference.
    this._matchFound = false;   // Set to true means an item was selected after searching. False means no item match search criteria

    this._focusHandler = null;
    this._blurHandler = null;
    this._keyDownHandler = null;
    this._keyUpHandler = null;
    this._keyPressHandler = null;
}

Sys.Extended.UI.ListSearchBehavior.prototype = {

    initialize : function() {
        /// <summary>
        /// Initialize the behavior
        /// </summary>

        Sys.Extended.UI.ListSearchBehavior.callBaseMethod(this, 'initialize');
        
        var element = this.get_element();
        
        if(element && element.tagName === 'SELECT') {

            this._focusHandler = Function.createDelegate(this, this._onFocus);
            this._blurHandler = Function.createDelegate(this, this._onBlur);
            this._keyDownHandler = Function.createDelegate(this, this._onKeyDown);
            this._keyUpHandler = Function.createDelegate(this, this._onKeyUp);
            this._keyPressHandler = Function.createDelegate(this, this._onKeyPress);

            $addHandler(element, "focus",     this._focusHandler);
            $addHandler(element, "blur",     this._blurHandler);
            $addHandler(element, "keydown",   this._keyDownHandler);
            $addHandler(element, "keyup",     this._keyUpHandler);
            $addHandler(element, "keypress",  this._keyPressHandler);

            this._applicationLoadDelegate = Function.createDelegate(this, this._onApplicationLoad);
            Sys.Application.add_load(this._applicationLoadDelegate);
        }
    },
    
    dispose : function() {
        /// <summary>
        /// Dispose the behavior
        /// </summary>
        var element = this.get_element();
        $removeHandler(element, "keypress",  this._keyPressHandler);
        $removeHandler(element, "keyup",     this._keyUpHandler);
        $removeHandler(element, "keydown",   this._keyDownHandler);
        $removeHandler(element, "blur",      this._blurHandler);
        $removeHandler(element, "focus",     this._focusHandler);
        this._onShowJson = null;
        this._onHideJson = null;
        this._disposePopupBehavior();
        
        if(this._applicationLoadDelegate) {
            Sys.Application.remove_load(this._applicationLoadDelegate);
            this._applicationLoadDelegate = null;
        }
        
        if(this._timer) {
            this._stopTimer();
        }        

        Sys.Extended.UI.ListSearchBehavior.callBaseMethod(this, 'dispose');
    },

    _onApplicationLoad : function(sender, applicationLoadEventArgs) {
        /// <summary>
        /// Handler called automatically when a all scripts are loaded and controls are initialized
        /// Called after all scripts have been loaded and controls initialized.  If the current Select is the one that has
        /// focus then it shows the prompt text.  We cannot do this in the initialize method because the second pass initialization
        /// of the popup behavior hides it.
        /// </summary>
        /// <param name="sender" type="Object">
        /// Sender
        /// </param>
        /// <param name="applicationLoadEventArgs" type="Sys.ApplicationLoadEventArgs">
        /// Event arguments
        /// </param>

        var hasInitialFocus = false;
        
        var clientState = Sys.Extended.UI.ListSearchBehavior.callBaseMethod(this, 'get_ClientState');
        if (clientState != null && clientState != "") {
            hasInitialFocus = (clientState === "Focused");
            Sys.Extended.UI.ListSearchBehavior.callBaseMethod(this, 'set_ClientState', null);
        }
        
        if(hasInitialFocus) {
            this._handleFocus();
        }
    },

    
   
    _checkIfSorted : function(options) {
        /// <summary>
        /// Checks to see if the list is sorted to see if we can do the fast binary search or the slower linear search
        /// </summary>
        /// <param name="options" type="Object">
        /// Collections of options in a SELECT
        /// </param>

        if (this._isSorted) {
            return true;
        } else {
            var previousOptionValue = null;
            var optionsLength = options.length;
            for(var index = 0; index < optionsLength; index++) {
                var optionValue = options[index].text.toLowerCase();
                if(previousOptionValue && this._compareStrings(optionValue, previousOptionValue) < 0) {
                    return false;
                }
                previousOptionValue = optionValue;
            }
            return true;
        }
    },
    
    _onFocus : function(e) {
        /// <summary>
        /// Handler for the Select's focus event
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">
        /// Event info
        /// </param>
        this._handleFocus();
    },
    
    _handleFocus : function() {
        /// <summary>
        /// Utility method called when the form is loaded if the Select has the default focus, or when it is explicitly focused
        /// </summary>
        var element = this.get_element();
        this._focusIndex = element.selectedIndex;
        if(!this._promptDiv) {
            this._promptDiv = document.createElement('div');
            this._promptDiv.id = element.id + '_promptDiv';
        
            this._promptDiv.innerHTML = this._promptText && this._promptText.length > 0 ? this._promptText : Sys.Extended.UI.Resources.ListSearch_DefaultPrompt;
            this._showingPromptText = true;
            
            if(this._promptCssClass) {
                this._promptDiv.className = this._promptCssClass;
            }
                    
            element.parentNode.insertBefore(this._promptDiv, element.nextSibling);
            this._promptDiv.style.overflow = 'hidden';
            this._promptDiv.style.height = this._promptDiv.offsetHeight + 'px';
            this._promptDiv.style.width = element.offsetWidth + 'px';
        }
        if(!this._popupBehavior) {
            this._popupBehavior = $create(Sys.Extended.UI.PopupBehavior, { parentElement : element }, {}, {}, this._promptDiv);
        }
        if (this._promptPosition && this._promptPosition == Sys.Extended.UI.ListSearchPromptPosition.Bottom) {
            this._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.BottomLeft);
        } else {
            this._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.TopLeft);
        }
        
        if (this._onShowJson) {
            this._popupBehavior.set_onShow(this._onShowJson);
        }
        if (this._onHideJson) {
            this._popupBehavior.set_onHide(this._onHideJson);
        }
        
        this._popupBehavior.show();

        this._updatePromptDiv(this._promptText);
    },
    
    _onBlur : function() {
        /// <summary>
        /// Handle the Select's blur event
        /// </summary>
        this._disposePopupBehavior();

        var promptDiv = this._promptDiv;
        var element = this.get_element();

        if(promptDiv) {
           this._promptDiv = null;
           promptDiv.parentNode.removeChild(promptDiv);
        }
        
        if(!this._raiseImmediateOnChange && this._focusIndex != element.selectedIndex) {
            this._raiseOnChange(element);
        }        
    },
    
    _disposePopupBehavior : function() {
        /// <summary>
        /// Utilty function to dispose of the popup behavior, called when the Select loses focus or when the extender is being disposed
        /// </summary>
        if (this._popupBehavior) {
            this._popupBehavior.dispose();
            this._popupBehavior = null;
        }
    },
    
    _onKeyDown : function(e) {
        /// <summary>
        /// Handler for the Select's KeyDown event
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">
        /// Event info
        /// </param>

        var element = this.get_element();
        var promptDiv = this._promptDiv;
        
        if(!element || !promptDiv) {
            return;
        }
        
        this._originalIndex = element.selectedIndex;

        if(this._showingPromptText) {
            promptDiv.innerHTML = '';
            this._searchText = '';
            this._showingPromptText = false;
            this._binarySearch = this._checkIfSorted(element.options);   // Delayed until required
        }              

        if(e.keyCode == Sys.UI.Key.backspace) {
            e.preventDefault();
            e.stopPropagation();

            this._removeCharacterFromPromptDiv();
            this._searchForTypedText(element);
            
            if(!this._searchText || this._searchText.length == 0) {
                this._stopTimer();
            }
        } else if(e.keyCode == Sys.UI.Key.esc) {
            e.preventDefault();
            e.stopPropagation();

            promptDiv.innerHTML = '';
            this._searchText = '';
            this._searchForTypedText(element);
            
            this._stopTimer();
        } else if(e.keyCode == Sys.UI.Key.enter && !this._raiseImmediateOnChange && this._focusIndex != element.selectedIndex) {
            this._focusIndex = element.selectedIndex;   // So that OnChange is not fired again when the list loses focus
            this._raiseOnChange(element);
        }      
    },
    
    _onKeyUp : function(e) {
        /// <summary>
        /// Handler for the Select's KeyUp event.  We need this because Firefox shifts the selected option even though
        /// we preventDefault and preventPropagation in _onKeyPress
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">
        /// Event info
        /// </param>

        var element = this.get_element();
        var promptDiv = this._promptDiv;
        
        if(!element || !promptDiv) {
            return;
        }

        if(this._newIndex == -1 || !element || !promptDiv || promptDiv.innerHTML == '') {
            this._newIndex = -1;
            return;
        }
        
        element.selectedIndex = this._newIndex;
        this._newIndex = -1;
    },

    _onKeyPress : function(e) {
        /// <summary>
        /// Handler for the Select's KeyPress event.
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">
        /// Event info
        /// </param>

        var element = this.get_element();
        var promptDiv = this._promptDiv;
        
        if(!element || !promptDiv) {
            return;
        }
                
        if(!this._isNormalChar(e)) {
            if(e.charCode == Sys.UI.Key.backspace) {
                e.preventDefault();
                e.stopPropagation();
                
                if(this._searchText && this._searchText.length == 0) {
                    this._stopTimer();
                }                               
            }
            return;
        }
        
        e.preventDefault();
        e.stopPropagation();

        this._addCharacterToPromptDiv(e.charCode);
        this._searchForTypedText(element);
        
        this._stopTimer();
        if(this._searchText && this._searchText.length != 0) {
            this._startTimer();
        }        
    },
    
    _isNormalChar : function(e) {
        /// <summary>
        /// Returns true if the specified charCode is a key rather than a normal (displayable) character
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">
        /// Event info
        /// </param>
        /// <returns type="Boolean" />

        if (Sys.Browser.agent == Sys.Browser.Firefox && e.rawEvent.keyCode) {
            return false;
        }

        if (Sys.Browser.agent == Sys.Browser.Opera && e.rawEvent.which == 0) {
            return false;
        }

        if (e.charCode && (e.charCode < Sys.UI.Key.space || e.charCode > 6000)) {
            return false;
        }
        return true;
    },

    _updatePromptDiv : function(newText) {
        /// <summary>
        /// Updates the text in the promptDiv.
        /// </summary>
        /// <param name="newText" type="String">
        /// The new text to be displayed in the promptDiv.  Optional.  If not specified then uses the _searchText member.
        /// </param>
        ///
        
        var promptDiv = this._promptDiv;
        if(!promptDiv || !this.get_element()) {
            return;
        }
                        
        var text = typeof(newText) === 'undefined' ? this._searchText : newText;
        var textNode = promptDiv.firstChild;
        
        if(!textNode) {
            textNode = document.createTextNode(text);
            promptDiv.appendChild(textNode);
        } else {
            textNode.nodeValue = text;
        }

        if(promptDiv.scrollWidth <= promptDiv.offsetWidth && promptDiv.scrollHeight <= promptDiv.offsetHeight) {
            return;  // Already fit
        }

        for(var maxFit = text.length - 1; maxFit > 0 && (promptDiv.scrollWidth > promptDiv.offsetWidth || promptDiv.scrollHeight > promptDiv.offsetHeight); maxFit--) {
            textNode.nodeValue = this._ellipsis + text.substring(text.length - maxFit, text.length);
        }
    },

    _addCharacterToPromptDiv : function (charCode) {
        /// <summary>
        /// Adds the specified character to the promptDiv.
        /// </summary>
        /// <param name="charCode" type="Int">
        /// The charCode of the character to be added
        /// </param>
        this._searchText += String.fromCharCode(charCode);
        this._updatePromptDiv();
    },

    _removeCharacterFromPromptDiv : function () {
        /// <summary>
        /// Removes a character from the end of the promptDiv.
        /// </summary>
        if(this._searchText && this._searchText != '') {
            this._searchText = this._searchText.substring(0, this._searchText.length - 1);
            this._updatePromptDiv();
        }
    },

    _searchForTypedText  : function(element) {
        /// <summary>
        /// Searches for the text typed so far in the Select
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// Select associated with the behavior
        /// </param>
        var searchText = this._searchText;
        var options = element.options;
        var text = searchText ? searchText.toLowerCase() : "";
        
        this._matchFound = false;

        if(text.length == 0) {  // Probably hit delete -- select the first option
            if(options.length > 0) {
                element.selectedIndex = 0;
                this._newIndex = 0;
            }
        } else {
            var selectedIndex = -1;
                         
            if(this._binarySearch && (this._queryPattern == Sys.Extended.UI.ListSearchQueryPattern.StartsWith)) {
                selectedIndex = this._doBinarySearch(options, text, 0, options.length - 1);
            } else {
                selectedIndex = this._doLinearSearch(options, text, 0, options.length - 1);
            }
         
            if(selectedIndex == -1) {
                this._newIndex = this._originalIndex; 
            } else {    // Otherwise move to the new option
                element.selectedIndex = selectedIndex;
                this._newIndex = selectedIndex;
                this._matchFound = true;
            }
        }
        
        if(this._raiseImmediateOnChange && this._originalIndex != element.selectedIndex) {
            this._raiseOnChange(element);
        }
    },
    
    _raiseOnChange : function(element) {
        /// <summary>
        /// Fires a OnChange event
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// Select associated with the behavior
        /// </param>
        if (document.createEvent) {
            var onchangeEvent = document.createEvent('HTMLEvents');
            onchangeEvent.initEvent('change', true, false);
            element.dispatchEvent(onchangeEvent);
        } else if( document.createEventObject ) {
            element.fireEvent('onchange');
        }
    },
    
    _compareStrings : function(strA, strB) {
        /// <summary>
        /// Compare two strings
        /// </summary>
        /// <param name="strA" type="String">
        /// The first string
        /// </param>
        /// <param name="strB" type="String">
        /// The second string
        /// </param>
        /// <returns type="Number" Integer="true">
        /// 0 if equal, -1 if strA < strB, 1 otherwise
        /// </returns>
        return ((strA == strB) ? 0 : ((strA < strB) ? -1 : 1))
    },
    
    _doBinarySearch : function(options, value, left, right) {
        /// <summary>
        /// Does a binary search for a value in the Select's options
        /// </summary>
        /// <param name="options" type="Object">
        /// The collection of options in the Select
        /// </param>
        /// <param name="value" type="String">
        /// The value being searched for
        /// </param>
        /// <param name="left" type="Int">
        /// The left bounds of the search
        /// </param>
        /// <param name="right" type="Right">
        /// The right bounds of the search
        /// </param>
        while (left <= right) {
            var mid = Math.floor((left+right)/2);
            var option = options[mid].text.toLowerCase().substring(0, value.length);
            var compareResult = this._compareStrings(value, option);
            if (compareResult > 0) {
                left = mid+1
            } else if(compareResult < 0) {
                right = mid-1;
            } else {
                while(mid > 0 && options[mid - 1].text.toLowerCase().startsWith(value)) {
                    mid--;
                }
                return mid;
            }
        }
        return -1;
    },
    
    _doLinearSearch : function(options, value, left, right) {
        /// <summary>
        /// Does a linear search for a value in the Select's options
        /// </summary>
        /// <param name="options" type="Object">
        /// The collection of options in the Select
        /// </param>
        /// <param name="value" type="String">
        /// The value being searched for
        /// </param>
        /// <param name="left" type="Int">
        /// The left bounds of the search
        /// </param>
        /// <param name="right" type="Right">
        /// The right bounds of the search
        /// </param>
        
        if (this._queryPattern == Sys.Extended.UI.ListSearchQueryPattern.Contains) {
            for(var i = left; i <= right; i++) {
                if(options[i].text.toLowerCase().indexOf(value) >= 0) {
                    return i;
                }
            }
        } else if (this._queryPattern == Sys.Extended.UI.ListSearchQueryPattern.StartsWith) {
            for(var i = left; i <= right; i++) {
                if(options[i].text.toLowerCase().startsWith(value)) {
                    return i;
                }
            }
        }

        return -1;
    },
    
    _onTimerTick : function() {
        /// <summary>
        /// On timer tick since user is not responsive, so reset search text if no match is found.
        /// </summary>    
        this._stopTimer();
      
        if (!this._matchFound) {
            this._searchText = '';
            this._updatePromptDiv();
        }
    },
    
    _startTimer : function() {
        /// <summary>
        /// Starts timer to monitor user interaction only if greater than zero.
        /// </summary>     
        if (this._queryTimeout > 0) {
            this._timer = window.setTimeout(Function.createDelegate(this, this._onTimerTick), this._queryTimeout);
        }
    },

    _stopTimer : function() {
        /// <summary>
        /// Stops and clears previously created timer.
        /// </summary>     
        if(this._timer != null) {
            window.clearTimeout(this._timer);
        }
        this._timer = null;
    },
    
    get_onShow : function() {
        /// <value type="String" mayBeNull="true">
        /// Generic OnShow Animation's JSON definition
        /// </value>
        return this._popupBehavior ? this._popupBehavior.get_onShow() : this._onShowJson;
    },
    set_onShow : function(value) {
        if (this._popupBehavior) {
            this._popupBehavior.set_onShow(value)
        } else {
            this._onShowJson = value;
        }
        this.raisePropertyChanged('onShow');
    },
    get_onShowBehavior : function() {
        /// <value type="Sys.Extended.UI.Animation.GenericAnimationBehavior">
        /// Generic OnShow Animation's behavior
        /// </value>
        return this._popupBehavior ? this._popupBehavior.get_onShowBehavior() : null;
    },
    onShow : function() {
        /// <summary>
        /// Play the OnShow animation
        /// </summary>
        /// <returns />
        if (this._popupBehavior) {
            this._popupBehavior.onShow();
        }
    },
    
    get_onHide : function() {
        /// <value type="String" mayBeNull="true">
        /// Generic OnHide Animation's JSON definition
        /// </value>
        return this._popupBehavior ? this._popupBehavior.get_onHide() : this._onHideJson;
    },
    set_onHide : function(value) {
        if (this._popupBehavior) {
            this._popupBehavior.set_onHide(value)
        } else {
            this._onHideJson = value;
        }
        this.raisePropertyChanged('onHide');
    },
    get_onHideBehavior : function() {
        /// <value type="Sys.Extended.UI.Animation.GenericAnimationBehavior">
        /// Generic OnHide Animation's behavior
        /// </value>
        return this._popupBehavior ? this._popupBehavior.get_onHideBehavior() : null;
    },
    onHide : function() {
        /// <summary>
        /// Play the OnHide animation
        /// </summary>
        /// <returns />
        if (this._popupBehavior) {
            this._popupBehavior.onHide();
        }
    },
    
    get_promptText : function() {
        /// <summary>
        /// The prompt text displayed when user clicks the list
        /// </summary>
        /// <value type="String" />
        return this._promptText;
    },              

    set_promptText : function(value) {
        if (this._promptText != value) {
            this._promptText = value;
            this.raisePropertyChanged('promptText');
        }
    },              

    get_promptCssClass : function() {
        /// <summary>
        /// CSS class applied to prompt when user clicks list.
        /// </summary>
        /// <value type="String" />
        return this._promptCssClass;
    },              

    set_promptCssClass : function(value) {
        if (this._promptCssClass != value) {
            this._promptCssClass = value;
            this.raisePropertyChanged('promptCssClass');
        }
    },

    get_promptPosition : function() {
        /// <value type="Sys.Extended.UI.ListSearchPromptPosition">
        /// Where the prompt should be positioned relative to the target control.
        /// Can be Top (default) or Bottom
        /// </value>
        return this._promptPosition;
    },

    set_promptPosition : function(value) {
        if (this._promptPosition != value) {
            this._promptPosition = value;
            this.raisePropertyChanged('promptPosition');
        }
    },

    get_raiseImmediateOnChange : function() {
        /// <summary>
        /// Boolean indicating whether an OnChange event should be fired as soon as the selected element
        /// is changed, or only when the list loses focus or the user hits enter.
        /// </summary>
        /// <value type="String" />
        return this._raiseImmediateOnChange;
    },

    set_raiseImmediateOnChange : function(value) {
        if (this._raiseImmediateOnChange != value) {
            this._raiseImmediateOnChange = value;
            this.raisePropertyChanged('raiseImmediateOnChange');
        }
    },
    
    get_queryTimeout : function() {
        /// <summary>
        /// Value indicating timeout in milliseconds after which search query will be cleared.
        /// Zero means no auto reset at all.
        /// </summary>
        /// <value type="Number" />    
        return this._queryTimeout;
    },

    set_queryTimeout : function(value) {
        if (this._queryTimeout != value) {
            this._queryTimeout = value;
            this.raisePropertyChanged('queryTimeout');    
        }
    },
    
    get_isSorted : function() {
        /// <value type="Boolean">
        /// When setting this to true, we instruct search routines that
        /// all values in List are already sorted on population,
        /// so binary search can be used if on StartsWith criteria is set.
        /// </value>
        return this._isSorted;
    },
    
    set_isSorted : function(value) {
        if (this._isSorted != value) {
            this._isSorted = value;
            this.raisePropertyChanged('isSorted');
        }
    },
    
    get_queryPattern : function() {
        /// <value type="Sys.Extended.UI.ListSearchQueryPattern">
        /// Search query pattern to be used to find items.
        /// Can be StartsWith (default) or Contains
        /// </value>
        return this._queryPattern;
    },

    set_queryPattern : function(value) {
        if (this._queryPattern != value) {
            this._queryPattern = value;
            this.raisePropertyChanged('queryPattern');
        }
    }    
}

Sys.Extended.UI.ListSearchBehavior.registerClass('Sys.Extended.UI.ListSearchBehavior', Sys.Extended.UI.BehaviorBase);
Sys.registerComponent(Sys.Extended.UI.ListSearchBehavior, { name: "listSearch" });

Sys.Extended.UI.ListSearchPromptPosition = function() {
    throw Error.invalidOperation();
}

Sys.Extended.UI.ListSearchPromptPosition.prototype = {
    Top: 0,
    Bottom: 1
}
Sys.Extended.UI.ListSearchPromptPosition.registerEnum('Sys.Extended.UI.ListSearchPromptPosition');

Sys.Extended.UI.ListSearchQueryPattern = function() {
    /// <summary>
    /// Choose what query pattern to use to search for matching words.
    /// </summary>
    /// <field name="StartsWith" type="Number" integer="true" />
    /// <field name="Contains" type="Number" integer="true" />
    throw Error.invalidOperation();
}

Sys.Extended.UI.ListSearchQueryPattern.prototype = {
    StartsWith: 0,
    Contains: 1
}
Sys.Extended.UI.ListSearchQueryPattern.registerEnum('Sys.Extended.UI.ListSearchQueryPattern');

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedPopupBehavior"], execute);
}
else {
    execute();
}

})();
�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.Paragraph = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.Paragraph.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.Paragraph.prototype = {
    checkState : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.Paragraph.callBaseMethod(this, "checkState")) return false;
        return this._designPanel._textAlignState("");
    },
    
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.Paragraph.callBaseMethod(this, "callMethod")) return false;
        this._designPanel._execCommand("Paragraph");
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.Paragraph.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.Paragraph", Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton);

xType.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.OrderedList=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.OrderedList.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.OrderedList.prototype={callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.OrderedList.callBaseMethod(this,"callMethod"))return false;this._designPanel._execCommand("InsertOrderedList")}};Sys.Extended.UI.HTMLEditor.ToolbarButton.OrderedList.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.OrderedList",Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.OrderedList = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.OrderedList.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.OrderedList.prototype = {
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.OrderedList.callBaseMethod(this, "callMethod")) return false;
        this._designPanel._execCommand("InsertOrderedList");
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.OrderedList.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.OrderedList", Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);

�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyFull = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyFull.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyFull.prototype = {
    checkState : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyFull.callBaseMethod(this, "checkState")) return false;
        return this._designPanel._textAlignState("justify");
    },
    
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyFull.callBaseMethod(this, "callMethod")) return false;
        this._designPanel._execCommand("JustifyFull");
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyFull.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyFull", Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton);

fType.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.InsertLink=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.InsertLink.initializeBase(this,[a]);this._emptySrc=window.location.href.replace(/(http[s]*\:\/\/)[^\u0000]*/i,"$1")};Sys.Extended.UI.HTMLEditor.ToolbarButton.InsertLink.prototype={callMethod:function(){var b=this,c=b._designPanel,d=c._getSelection(),e=c._createRange(d),a=Sys.Extended.UI.HTMLEditor.getSelParent(c);if(a.nodeType==3)a=a.parentNode;while(a&&Sys.Extended.UI.HTMLEditor.isStyleTag(a.tagName)&&a.tagName.toUpperCase()!="A")a=a.parentNode;if(a&&a.tagName.toUpperCase()=="A"){b._edit=true;b._editLink(a)}else{b._edit=false;if(!b._createLink())return false}return!Sys.Extended.UI.HTMLEditor.ToolbarButton.InsertLink.callBaseMethod(b,"callMethod")?false:true},opened:function(a){this._preparePopup(a)},ok:function(e){var b=null,d="target",a=this,c=e.popupMediator.getField(d);if(c!=b)a._obj.target=c.value;var f=e.popupMediator.getField("url");if(f!=b)a._obj.href=f.value;if(/^javascript:/.test(a._obj.href)){a._obj.target=b;try{a._obj.removeAttribute(d)}catch(g){}}else{var c=e.popupMediator.getField(d);if(c!=b)a._obj.target=c.value}if(a._edit)a._edit_callback(true);else a._create_callback(true)},cancel:function(){if(this._edit)this._edit_callback(false);else this._create_callback(false)},_createLink:function(){var g=false,k="span",b=this,a=b._designPanel,l=!Sys.Extended.UI.HTMLEditor.isIE?Sys.Extended.UI.HTMLEditor.Trim(a.getSelectedHTML()):"",h=a._getSelection(),c=a._createRange(h);b._txt=null;if(!(a.isControl()&&Sys.Extended.UI.HTMLEditor.getSelParent(a).tagName&&(Sys.Extended.UI.HTMLEditor.getSelParent(a).tagName.toUpperCase()=="EMBED"||Sys.Extended.UI.HTMLEditor.getSelParent(a).tagName.toUpperCase()=="IMG"))&&!(!a.isControl()&&(Sys.Extended.UI.HTMLEditor.isIE&&c.text.length>0||!Sys.Extended.UI.HTMLEditor.isIE&&l.length>0))){a._saveContent();var j=a._doc.createElement(k);j.innerHTML="new link";j.id=Sys.Extended.UI.HTMLEditor.smartClassName;var n=true;if(Sys.Extended.UI.HTMLEditor.isIE&&a.isControl()){var d=c.item(0),o=a._doc.createElement(k);d.parentNode.insertBefore(o,d);b._txt=j.firstChild;d.parentNode.insertBefore(b._txt,d);var p=a._doc.createElement(k);d.parentNode.insertBefore(p,d);d.parentNode.removeChild(d);a.setSelectionAfterOperation([o,p],g);n=g}else{a.insertHTML(Sys.Extended.UI.HTMLEditor.getHTML(j,true));var f=a._doc.getElementById(Sys.Extended.UI.HTMLEditor.smartClassName);b._txt=f.firstChild;f.parentNode.insertBefore(f.firstChild,f);f.parentNode.removeChild(f)}if(!Sys.Extended.UI.HTMLEditor.isIE){c=a._createRange();c.setStart(b._txt,0);c.setEnd(b._txt,(""+b._txt.data+"").length);a._removeAllRanges(h);a._selectRange(h,c)}else n&&c.select();l=!Sys.Extended.UI.HTMLEditor.isIE?Sys.Extended.UI.HTMLEditor.Trim(a.getSelectedHTML()):"";h=a._getSelection();c=a._createRange(h)}if(a.isControl()&&Sys.Extended.UI.HTMLEditor.getSelParent(a).tagName.toUpperCase()=="IMG"||!a.isControl()&&(Sys.Extended.UI.HTMLEditor.isIE&&c.text.length>0||!Sys.Extended.UI.HTMLEditor.isIE&&l.length>0)){a._saveContent();b._obj={target:"default",href:b._emptySrc,title:""};for(var m=a._doc.getElementsByTagName("A"),i=[],e=0;e<m.length;e++)i.push([m[e],""+m[e].href+""]);a._execCommand("createLink",g,b._emptySrc);b._oldList=[];for(var e=0;e<i.length;e++){var q=i[e][0],r=i[e][1];q.href==r&&b._oldList.push(q)}}else{if(b._txt){a._undo(g);a.__stack.pop()}return g}return true},_editLink:function(b){var a=this._designPanel;this._obj=b;a._saveContent()},_preparePopup:function(c){var a=this;if(a._obj.target&&a._obj.target.length>0&&a._obj.target=="default")a._obj.target=a.get_relatedPopup().get_defaultTarget();var d=c.popupMediator.getField("target");if(d!=null)d.value=a._obj.target&&a._obj.target.length>0&&a._obj.target.substr(0,1)=="_"?a._obj.target.toLowerCase():"_self";var b=c.popupMediator.getField("url");if(b!=null){if(a._edit)b.value=Sys.Extended.UI.HTMLEditor.getRealAttribute(a._obj,"href");else b.value=a._obj.href;if(b.value.length==0)b.value=a._emptySrc;b.value=b.value.replace(/\&quot;/g,'"');setTimeout(function(){Sys.Extended.UI.HTMLEditor.setSelectionRange(b,0,b.value.length)},0)}},_edit_callback:function(c){var a=this,b=a._designPanel;try{if(!c)b._undo(false);else{if(a._obj.title.length==0){a._obj.title=null;a._obj.removeAttribute("title")}b.onContentChanged()}}catch(d){}return true},okCheck:function(b){var c=b.popupMediator.getField("url");if(c!=null){var a=c.value;if(a==""||a.length>=3&&a.substr(a.length-3,3)=="://"){b.alert(this.get_message("EmptyURL"));b.setTimeout(function(){try{c.focus()}catch(a){}},0);return false}return true}return false},_create_callback:function(k){var a=this,b=a._designPanel;try{if(k){for(var e=b._doc.getElementsByTagName("A"),i=0,g=0;g<e.length;g++){for(var j=true,f=e[g],h=0;h<a._oldList.length;h++)if(f==a._oldList[h]){j=false;break}if(!j)continue;i=g;if(a._obj.target)f.target=a._obj.target;f.href=a._obj.href;if(a._obj.title.length>0)f.title=a._obj.title}if(a._txt)a._txt.data=a._obj.href;if(e.length>0){var d=e[i],c=b._doc.createElement("span");c.innerHTML="&nbsp;";if(d.nextSibling!=null)d.parentNode.insertBefore(c,d.nextSibling);else d.parentNode.appendChild(c);setTimeout(function(){Sys.Extended.UI.HTMLEditor._setCursor(c,b);setTimeout(function(){d.parentNode.removeChild(c)},0)},0)}setTimeout(function(){b._editPanel.updateToolbar();b.onContentChanged()},0)}else{b._undo(false);b.__stack.pop();if(a._txt){b._undo(false);b.__stack.pop()}}b.focusEditor()}catch(l){}return true}};Sys.Extended.UI.HTMLEditor.ToolbarButton.InsertLink.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.InsertLink",Sys.Extended.UI.HTMLEditor.ToolbarButton.OkCancelPopupButton);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.HtmlMode = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.HtmlMode.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.HtmlMode.prototype = {
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.HtmlMode.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.HtmlMode", Sys.Extended.UI.HTMLEditor.ToolbarButton.ModeButton);

�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModePopupImageButton = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModePopupImageButton.initializeBase(this, [element]);

    this._relatedPopup = null;
    this._autoClose = true;
    this._forclose_onmousedown$delegate = null;
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModePopupImageButton.prototype = {

    set_activeEditPanel: function(value) {
        if (this._editPanel != value && this._editPanel != null) {
            this.closePopup();
        }
        Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModePopupImageButton.callBaseMethod(this, "set_activeEditPanel", [value]);
    },

    get_autoClose: function() {
        return this._autoClose;
    },
    set_autoClose: function(value) {
        this._autoClose = value;
    },

    get_relatedPopup: function() {
        return this._relatedPopup;
    },
    set_relatedPopup: function(value) {
        this._relatedPopup = value;
    },

    openPopup: function(callback, top, left) {
        if (this._autoClose && this._forclose_onmousedown$delegate != null) return;
        if (this._relatedPopup != null) {
            this._bookmark = null;
            if (Sys.Extended.UI.HTMLEditor.isIE) {
                var sel = this._designPanel._getSelection();
                this._selType = sel.type.toLowerCase();
                var range = this._designPanel._createRange(sel);
                if (this._selType == "text" || this._selType == "none") {
                    try {
                        this._bookmark = range.duplicate();
                    } catch (ex) { }
                }
                else if (this._selType == "control") {
                    this._bookmark = range.item(0);
                    range.remove(0);
                    sel.empty();
                }
            }

            if (typeof this._relatedPopup.set_relatedElement == "function") {
                this._relatedPopup.set_relatedElement(this.get_element());

                this._forclose_onmousedown$delegate = Function.createDelegate(this, this._forclose_onmousedown);
                if (this._autoClose) {
                    var designWindow = this._designPanel.get_element().contentWindow;
                    var designBody = designWindow.document.body;
                    var button = this;
                    setTimeout(function() {
                        if (button._forclose_onmousedown$delegate != null) {
                            Sys.Extended.UI.HTMLEditor._addEvent(designBody, "mousedown", button._forclose_onmousedown$delegate);
                            Sys.Extended.UI.HTMLEditor._addEvent(designBody, "keydown", button._forclose_onmousedown$delegate);
                            Sys.Extended.UI.HTMLEditor._addEvent(document.body, "keydown", button._forclose_onmousedown$delegate);
                            Sys.Extended.UI.HTMLEditor._addEvent(window, "keydown", button._forclose_onmousedown$delegate);
                            Sys.Extended.UI.HTMLEditor._addEvent(designWindow, "mousedown", button._forclose_onmousedown$delegate);
                            Sys.Extended.UI.HTMLEditor._addEvent(document.body, "mousedown", button._forclose_onmousedown$delegate);
                            if (document.documentElement) {
                                Sys.Extended.UI.HTMLEditor._addEvent(document.documentElement, "mousedown", button._forclose_onmousedown$delegate);
                            }
                        }
                    }, 0);
                }
                this._relatedPopup.open(callback);
            } else {
                this._relatedPopup.open(callback, top, left);
            }
        }
    },

    _forclose_onmousedown: function(e) {
        if (this._forclose_onmousedown$delegate == null) return true;

        if (this._relatedPopup.isOpened) {
            this._relatedPopup.close();
        } else {
            return true;
        }

        if (this._editPanel == Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel) {
            try { // for the case if currently the Design panel is invisible
                if (this._bookmark) {
                    if (Sys.Extended.UI.HTMLEditor.isIE) {
                        var range;
                        if (this._selType == "control") {
                            range = this._designPanel._doc.body.createControlRange();
                            range.add(this._bookmark);
                        } else {
                            range = this._bookmark;
                        }
                        range.select();
                    }
                    this._bookmark = null;
                }

                if (!Sys.Extended.UI.HTMLEditor.isIE) {
                    var sel = this._designPanel._getSelection();
                    var range = this._designPanel._createRange(sel);

                    this._designPanel._removeAllRanges(sel);

                    this._designPanel._selectRange(sel, range);
                    this._designPanel.focusEditor();
                }
            } catch (ex) { }
        }

        var button = this;
        setTimeout(function() {
            if (button._editPanel == Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel) {
                try { button._editPanel.updateToolbar(); } catch (ex) { }
            }
        }, 0);

        if (this._autoClose) {
            try {
                var designWindow = this._designPanel.get_element().contentWindow;
                var designBody = designWindow.document.body;

                if (document.documentElement) {
                    Sys.Extended.UI.HTMLEditor._removeEvent(document.documentElement, "mousedown", this._forclose_onmousedown$delegate);
                }
                Sys.Extended.UI.HTMLEditor._removeEvent(designBody, "keydown", this._forclose_onmousedown$delegate);
                Sys.Extended.UI.HTMLEditor._removeEvent(document.body, "keydown", this._forclose_onmousedown$delegate);
                Sys.Extended.UI.HTMLEditor._removeEvent(window, "keydown", this._forclose_onmousedown$delegate);
                Sys.Extended.UI.HTMLEditor._removeEvent(designBody, "mousedown", this._forclose_onmousedown$delegate);
                Sys.Extended.UI.HTMLEditor._removeEvent(designWindow, "mousedown", this._forclose_onmousedown$delegate);
                Sys.Extended.UI.HTMLEditor._removeEvent(document.body, "mousedown", this._forclose_onmousedown$delegate);
            } catch (ex) { }
        }
        this._forclose_onmousedown$delegate = null;
        if (e && e.type) {
            if (e.type == "keydown") {
                Sys.Extended.UI.HTMLEditor._stopEvent(e);
                return false;
            }
        }
        return true;
    },

    closePopup: function() {
        if (this._forclose_onmousedown$delegate != null) {
            this._forclose_onmousedown$delegate(null);
        }
    },

    dispose: function() {
        if (this._forclose_onmousedown$delegate != null) {
            this._forclose_onmousedown$delegate(null);
        }
        Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModePopupImageButton.callBaseMethod(this, "dispose");
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModePopupImageButton.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModePopupImageButton", Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);
�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.Copy = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.Copy.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.Copy.prototype = {
    canBeShown : function() {
        return Sys.Extended.UI.HTMLEditor.isIE;
    },
    
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.Copy.callBaseMethod(this, "callMethod")) return false;
        var editor = this._designPanel;

        if(Sys.Extended.UI.HTMLEditor.isIE) {
            editor.openWait();
            setTimeout(function(){editor.isShadowed(); editor._copyCut('c',true); editor.closeWait(); editor._ifShadow();},0)
        } else {
            editor._copyCut('c',true);
        }
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.Copy.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.Copy", Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);

�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorButton = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorButton.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorButton.prototype = {

    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorButton.callBaseMethod(this, "callMethod")) return false;
        this.openPopup(Function.createDelegate(this, this._onopened));
        return true;
    },
    
    _onopened : function(contentWindow) {
        contentWindow.setColor = Function.createDelegate(this, this.setColor);
    },
    
    setColor : function(color) {
        this.closePopup();
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorButton.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorButton", Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModePopupImageButton);
�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.Popups");Sys.Extended.UI.HTMLEditor.Popups.OkCancelAttachedTemplatePopup=function(a){Sys.Extended.UI.HTMLEditor.Popups.OkCancelAttachedTemplatePopup.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.Popups.OkCancelAttachedTemplatePopup.prototype={initialize:function(){Sys.Extended.UI.HTMLEditor.Popups.OkCancelAttachedTemplatePopup.callBaseMethod(this,"initialize")},dispose:function(){Sys.Extended.UI.HTMLEditor.Popups.OkCancelAttachedTemplatePopup.callBaseMethod(this,"dispose")}};Sys.Extended.UI.HTMLEditor.Popups.OkCancelAttachedTemplatePopup.registerClass("Sys.Extended.UI.HTMLEditor.Popups.OkCancelAttachedTemplatePopup",Sys.Extended.UI.HTMLEditor.Popups.AttachedTemplatePopup);rType.registerNamespace("Sys.Extended.UI.HTMLEditor.Popups");Sys.Extended.UI.HTMLEditor.Popups.LinkProperties=function(b){var a=this;Sys.Extended.UI.HTMLEditor.Popups.LinkProperties.initializeBase(a,[b]);a._defaultTarget="_self";a._targetTextHolder=null;a._urlTextHolder=null};Sys.Extended.UI.HTMLEditor.Popups.LinkProperties.prototype={get_defaultTarget:function(){return this._defaultTarget},set_defaultTarget:function(a){this._defaultTarget=a}};Sys.Extended.UI.HTMLEditor.Popups.LinkProperties.registerClass("Sys.Extended.UI.HTMLEditor.Popups.LinkProperties",Sys.Extended.UI.HTMLEditor.Popups.OkCancelAttachedTemplatePopup);�// (c) 2010 CodePlex Foundation
(function(){function a(){Type._registerScript("Date.HijriCalendar.js",["MicrosoftAjaxGlobalization.js"]);__cultureInfo.dateTimeFormat.Calendar.convert={ticks1970:6.21355968e13,monthDays:[0,30,59,89,118,148,177,207,236,266,295,325,355],minDate:-4.25216736e13,maxDate:0xe677d21fdbff,adjustment:__cultureInfo.dateTimeFormat.Calendar._adjustment||0,toGregorian:function(e,d,f){var a=this,c=a.daysToYear(e)+a.monthDays[d]+f-1-a.adjustment,b=new Date(c*8.64e7-a.ticks1970);b.setMinutes(b.getMinutes()+b.getTimezoneOffset());return b},fromGregorian:function(f){var a=this;if(f<a.minDate||f>a.maxDate)return null;var j=a.ticks1970+(f-0)-f.getTimezoneOffset()*6e4,e=Math.floor(j/8.64e7)+1+a.adjustment,i,c,d=Math.floor((e-227013)*30/10631)+1,b=a.daysToYear(d),g=a.isLeapYear(d)?355:354;if(e<b){d--;b-=g}else if(e===b){d--;b=a.daysToYear(d)}else if(e>b+g){b+=g;d++}c=0;var h=e-b;while(c<=11&&h>a.monthDays[c])c++;c--;i=h-a.monthDays[c];return[d,c,i]},daysToYear:function(d){var b=Math.floor((d-1)/30)*30,a=d-b-1,c=Math.floor(b*10631/30)+227013;while(a>0){c+=this.isLeapYear(a)?355:354;a--}return c},isLeapYear:function(a){return(a*11+14)%30<11}}}if(window.Sys&&Sys.loader)Sys.loader.registerScript("HijriCalendar",null,a);else a()})();ܰ// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference name="MicrosoftAjaxTimer.debug.js" />
/// <reference name="MicrosoftAjaxWebForms.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />
/// <reference path="../Compat/Timer/Timer.js" />
/// <reference path="../Animation/Animations.js" />



(function() {
var scriptName = "ExtendedAccordion";

function execute() {

Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.AutoSize = function() {
    /// <summary>
    /// The AutoSize enumeration is used to specify how the AccordionBehavior limits
    /// the growth of the accordion when panes are expanded and collapsed.  It must
    /// correspond to the AutoSize CLR enumeration in AutoSize.cs.
    /// </summary>
    /// <field name="None" type="Number" integer="true">
    /// Allow the accordion to expand/collapse without restriction.
    /// </field>
    /// <field name="Fill" type="Number" integer="true">
    /// Keep the accordion the same size as its specified size.  If any
    /// panes are larger or smaller than the available space, grow or shrink
    /// them to the available space.
    /// </field>
    /// <field name="Limit" type="Number" integer="true">
    /// Prevent the accordion from growing any larger than its specified size.
    /// If the content of a pane is too large to fit, grow it to fill the
    /// remaining space.
    /// </field>
    throw Error.invalidOperation();
}
Sys.Extended.UI.AutoSize.prototype = {
    None : 0,
    Fill : 1,
    Limit : 2
}
Sys.Extended.UI.AutoSize.registerEnum("Sys.Extended.UI.AutoSize", false);


Sys.Extended.UI.AccordionSelectedIndexChangeEventArgs = function(oldIndex, selectedIndex) {
    /// <summary>
    /// Event arguments used to provide notification when an accordion's selected
    /// index is changed.  The same event argument type is used for both the
    /// selectedIndexChanging event and the selectedIndexChanged events.  If you set
    /// the cancel property to true during the selectedIndexChanging event, the
    /// accordion will not change panes.  The cancel property has no effect during
    /// the selectedIndexChanged event.
    /// </summary>
    /// <param name="oldIndex" type="Number" integer="true" mayBeNull="false">
    /// Last selected index
    /// </param>
    /// <param name="selectedIndex" type="Number" integer="true" mayBeNull="false">
    /// New selected index
    /// </param>
    Sys.Extended.UI.AccordionSelectedIndexChangeEventArgs.initializeBase(this);

    this._oldIndex = oldIndex;
    this._selectedIndex = selectedIndex;
}
Sys.Extended.UI.AccordionSelectedIndexChangeEventArgs.prototype = {
    get_oldIndex : function() {
        /// <value type="Number" integer="true" mayBeNull="false">
        /// Last selected index
        /// </value>
        return this._oldIndex;
    },
    set_oldIndex : function(value) {
        this._oldIndex = value;
    },
    
    get_selectedIndex : function() {
        /// <value type="Number" integer="true" mayBeNull="false">
        /// New selected index
        /// </value>
        return this._selectedIndex;
    },
    set_selectedIndex : function(value) {
        this._selectedIndex = value;
    }
}
Sys.Extended.UI.AccordionSelectedIndexChangeEventArgs.registerClass('Sys.Extended.UI.AccordionSelectedIndexChangeEventArgs', Sys.CancelEventArgs);






Sys.Extended.UI.AccordionBehavior = function(element) {
    /// <summary>
    /// The AccordionBehavior is used to turn properly structured XHTML into an
    /// Accordion with panes that can expand one at a time.
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// The DOM element the behavior is associated with.  It should contain an
    /// even number of child divs (such that ith pane has a header at div 2i and
    /// has content at div 2i+1).
    /// </param>
    Sys.Extended.UI.AccordionBehavior.initializeBase(this, [element]);

    this._selectedIndex = 0;

    this._panes = [];

    this._fadeTransitions = false;

    this._duration = 0.25;

    this._framesPerSecond = 30;

    this._autoSize = Sys.Extended.UI.AutoSize.None;

    this._requireOpenedPane = true;

    this._suppressHeaderPostbacks = false;

    this._headersSize = 0;

    this._headerClickHandler = null;

    this._headerCssClass = '';

    this._headerSelectedCssClass = '';

    this._resizeHandler = null;

    this._isIE8InStandardMode = (Sys.Browser.agent == Sys.Browser.InternetExplorer && Sys.Browser.version > 7 && Sys.Browser.documentMode != 0);
}
Sys.Extended.UI.AccordionBehavior.prototype = {
    initialize: function() {
        /// <summary>
        /// The initialize function is responsible for getting the selected index from
        /// the ClientState mechanism and walking the children of the behavior's target
        /// to find all of the accordion's child panes.  It builds up a collection of the
        /// panes from the headers and content sections.  Then we hide all the content
        /// sections that aren't selected and initialize the layout.
        /// </summary>
        /// <returns />
        Sys.Extended.UI.AccordionBehavior.callBaseMethod(this, 'initialize');

        this._headerClickHandler = Function.createDelegate(this, this._onHeaderClick);

        var state = this.get_ClientState();
        if (state !== null && state !== '') {
            this._changeSelectedIndex(parseInt(state), false, true);
        }

        var nodes = this.get_element().childNodes;
        var index = {};
        for (index.value = 0; index.value < nodes.length; index.value++) {
            var header = this._getNextDiv(nodes, index);
            if (!header) {
                break;
            }
            var content = this._getNextDiv(nodes, index);
            if (content) {
                this.addPane(header, content);
                index.value--;
            }
        }

        if (this._requireOpenedPane && !this.get_Pane() && this._panes.length > 0) {
            this._changeSelectedIndex(0, false, true);
        }

        this._initializeLayout();
    },

    _getNextDiv: function(nodes, index) {
        /// <summary>
        /// Get the next div in a sequence of child nodes starting at the
        /// given index
        /// </summary>
        /// <param name="nodes" type="Array" mayBeNull="false" elementMayBeNull="true"
        ///   elementType="Sys.UI.DomElement" elementDomElement="true">
        /// Array of child nodes (i.e. element.childNodes)
        /// </param>
        /// <param name="index" type="Object" mayBeNull="false">
        /// The index is an object of the form { value } where index.value represents
        /// the current index in the collection of nodes.  We wrap the index in an object
        /// to perform the .NET equivalent of boxing so it can be passed by reference.
        /// </param>
        /// <returns type="Sys.UI.DomElement" DomElement="true" mayBeNull="true">
        /// The next DOM element representing a div tag, starting at the provided index.
        /// </returns>

        var div = null;
        while (index.value < nodes.length && (div = nodes[index.value++])) {
            if (div.tagName && (div.tagName.toLowerCase() === 'div')) {
                break;
            }
        }
        return div;
    },

    addPane: function(header, content) {
        /// <summary>
        /// Create a new Accordion pane given references to its header and content divs
        /// and add it to the _panes collection.  We also wrap the content div in a new
        /// container div, add a click handler to the header div, etc.
        /// </summary>
        /// <param name="header" type="Sys.UI.DomElement" domElement="true" mayBeNull="false">
        /// Header element of the new Accordion pane
        /// </param>
        /// <param name="content" type="Sys.UI.DomElement" domElement="true" mayBeNull="false">
        /// Content element of the new Accordion pane
        /// </param>
        /// <returns type="Object" mayBeNull="false">
        /// New pane object added to the end of the Accordion's pane collection.  The pane
        /// is an object of the form {header, content, animation} corresponding to that
        /// pane's header section, content section, and the animation used to open and
        /// close its content section.  The content element is a new div that has been
        /// created to wrap the original div (so we can completely collapse it - even if it
        /// has padding, margins, etc.) which is pointed to by a dynamic _original property.
        /// The header element has a dynamic _index property indicating its position in the
        /// Accordion's pane collection (used primarily by the headers' shared click handler).
        /// Furthermore, the animation will either be an instance of LengthAnimation or
        /// ParallelAnimation (in the latter case, it will have two children which are a
        /// LengthAnimation and a FadeAnimation).  There will be two dynamic properties
        /// _length and _fade pointing to each of these children (to easily set the length
        /// and fadeEffect properties).  There is also a dynamic _ended property which is
        /// an event handler to be fired when the animation is complete, a dynamic _opening
        /// property to indicate whether the animation was opening or closing the pane, and
        /// a dynamic _pane property to provide a reference to the pane that was being
        /// animated.
        /// </returns>

        var pane = {};
        pane.animation = null;

        pane.header = header;
        header._index = this._panes.length;
        $addHandler(header, "click", this._headerClickHandler);

        var accordion = this.get_element();
        var wrapper = document.createElement('div');
        accordion.insertBefore(wrapper, content);
        wrapper.appendChild(content);
        wrapper._original = content;
        pane.content = wrapper;

        wrapper.style.border = '';
        wrapper.style.margin = '';
        wrapper.style.padding = '';

        Array.add(this._panes, pane);

        this._initializePane(header._index);

        content.style.display = 'block';

        return pane;
    },

    _getAnimation: function(pane) {
        /// <summary>
        /// Get the animation for the specified accordion section or demand create
        /// the animation if it doesn't already exist.
        /// </summary>
        /// <param name="pane" type="Object" mayBeNull="false">
        /// The pane is an object of the form {header, content, animation} corresponding to
        /// that pane's header section, content section, and the animation used to open and
        /// close its content section.  The content element is a new div that has been created
        /// to wrap the original div (so we can completely collapse it - even if it has
        /// padding, margins, etc.) which is pointed to by a dynamic _original property. The
        /// header element has a dynamic _index property indicating its position in the
        /// Accordion's pane collection (used primarily by the headers' shared click
        /// handler). Furthermore, the animation will either be an instance of
        /// LengthAnimation or ParallelAnimation (in the latter case, it will have two
        /// children which are a LengthAnimation and a FadeAnimation).  There will be two
        /// dynamic properties _length and _fade pointing to each of these children (to
        /// easily set the length and fadeEffect properties).  There is also a dynamic _ended
        /// property which is an event handler to be fired when the animation is complete,
        /// a dynamic _opening property to indicate whether the animation was opening or
        /// closing the pane, and a dynamic _pane property to provide a reference to the pane
        /// that was being animated.
        /// </param>
        /// <returns type="Sys.Extended.UI.Animation.Animation">
        /// Animation for the desired section
        /// </returns>

        var animation = pane.animation;
        if (!animation) {
            var length = null;
            var fade = null;
            if (!this._fadeTransitions) {
                animation = length = new Sys.Extended.UI.Animation.LengthAnimation(pane.content, this._duration, this._framesPerSecond, "style", "height", 0, 0, "px");
            } else {
                length = new Sys.Extended.UI.Animation.LengthAnimation(null, null, null, "style", "height", 0, 0, "px");
                fade = new Sys.Extended.UI.Animation.FadeAnimation(null, null, null, Sys.Extended.UI.Animation.FadeEffect.FadeOut, 0, 1, false);
                animation = new Sys.Extended.UI.Animation.ParallelAnimation(pane.content, this._duration, this._framesPerSecond, [fade, length]);
            }

            pane.animation = animation;
            animation._length = length;
            animation._fade = fade;
            animation._pane = pane;
            animation._opening = true;
            animation._behavior = this;
            animation._ended = Function.createDelegate(pane.animation, this._onAnimationFinished);
            animation.add_ended(pane.animation._ended);

            animation.initialize();
        }
        return animation;
    },

    _onAnimationFinished: function() {
        /// <summary>
        /// _onAnimationFinished is an event handler played after an animation (to open/
        /// close an accordion pane) has completed.  The delegate for this function should
        /// have associated it with an animation (so the this references below are expecting
        /// to reach expando fields declared on the animation).  It invokes _endPaneChange
        /// for the current pane.
        /// </summary>
        /// <returns />
        this._behavior._endPaneChange(this._pane, this._opening);
    },

    _initializeLayout: function() {
        /// <summary>
        /// Setup the layout of the accordion (either when the behavior is created or when the
        /// AutoSize mode is changed).
        /// </summary>
        /// <returns />

        for (var i = 0; i < this._panes.length; i++) {
            var animation = this._panes[i].animation;
            if (animation && animation.get_isPlaying()) {
                animation.stop();
            }
        }

        var accordion = this.get_element();
        this._initialHeight = accordion.offsetHeight;
        var style = accordion.style;


        if (this._autoSize === Sys.Extended.UI.AutoSize.None) {
            this._disposeResizeHandler();

            var isIE7 = (Sys.Browser.agent == Sys.Browser.InternetExplorer && Sys.Browser.version >= 7)
            if (!isIE7 || (isIE7 && style.height && style.height.length > 0)) {
                style.height = 'auto';
            }
            if (!isIE7 || (isIE7 && style.overflow && style.overflow.length > 0)) {
                style.overflow = 'auto';
            }
        } else {
            this._addResizeHandler();

            style.height = accordion.offsetHeight + 'px';
            style.overflow = 'hidden';
        }

        for (var i = 0; i < this._panes.length; i++) {
            this._initializePane(i);
        }

        this._resizeSelectedPane();
    },


    _initializePane: function(index) {
        /// <summary>
        /// Setup the layout attributes for the pane so that it will be in a proper opened or
        /// closed.  This will be called when adding a new pane for the first time or when
        /// changing the AutoSize mode.
        /// </summary>
        /// <param name="index" type="Number" integer="true">
        /// Index of the pane to initialize
        /// </param>
        /// <returns />

        var pane = this.get_Pane(index);
        if (!pane) {
            return;
        }
        var wrapper = pane.content;
        var original = wrapper._original;

        var opened = (index === this._selectedIndex);
        wrapper.style.height = (opened || (this._autoSize === Sys.Extended.UI.AutoSize.Fill)) ? 'auto' : '0px';
        wrapper.style.overflow = opened ? 'auto' : 'hidden';
        wrapper.style.display = opened ? 'block' : 'none';
        original.style.height = 'auto';
        original.style.maxHeight = '';
        original.style.overflow = opened ? 'auto' : 'hidden';

        var opacity = (opened || !this._fadeTransitions) ? 1 : 0;
        if (this._autoSize === Sys.Extended.UI.AutoSize.Fill) {
            if ($common.getElementOpacity(original) != opacity) {
                $common.setElementOpacity(original, opacity);
            }
            if ($common.getElementOpacity(wrapper) != 1) {
                $common.setElementOpacity(wrapper, 1);
            }
        } else {
            if ($common.getElementOpacity(wrapper) != opacity) {
                $common.setElementOpacity(wrapper, opacity);
            }
            if ($common.getElementOpacity(original) != 1) {
                $common.setElementOpacity(original, 1);
            }
        }
        
        pane.header.className = this._selectedIndex === index ? (this._headerSelectedCssClass || this._headerCssClass) : this._headerCssClass;
    },

    _addResizeHandler: function() {
        /// <summary>
        /// Attach the resize handler
        /// </summary>
        /// <returns />
        /// <remarks>
        /// This has been pulled out into its own method since we need to selectively wire
        /// up the resize handler depending on the AutoSize mode.
        /// </remarks>

        if (!this._resizeHandler) {
            this._resizeHandler = Function.createDelegate(this, this._resizeSelectedPane);
            $addHandler(window, "resize", this._resizeHandler);
        }
    },

    dispose: function() {
        /// <summary>
        /// Dispose of the AccordionBehavior
        /// </summary>
        /// <returns />

        this._disposeResizeHandler();

        this._disposeAnimations();

        for (var i = this._panes.length - 1; i >= 0; i--) {
            var pane = this._panes[i];
            if (pane) {
                if (pane.header) {
                    pane.header._index = null;
                    $removeHandler(pane.header, "click", this._headerClickHandler);
                    pane.header = null;
                }
                if (pane.content) {
                    pane.content._original = null;
                    pane.content = null;
                }
                this._panes[i] = null;
                delete this._panes[i];
            }
        }
        this._panes = null;
        this._headerClickHandler = null;

        Sys.Extended.UI.AccordionBehavior.callBaseMethod(this, 'dispose');
    },

    _disposeResizeHandler: function() {
        /// <summary>
        /// Remove the resize handler
        /// </summary>
        /// <returns />
        /// <remarks>
        /// This has been pulled out into its own method since we need to selectively wire
        /// up the resize handler depending on the AutoSize mode.
        /// </remarks>

        if (this._resizeHandler) {
            $removeHandler(window, "resize", this._resizeHandler);
            this._resizeHandler = null;
        }
    },

    _disposeAnimations: function() {
        /// <summary>
        /// Dispose all the animations.  This method was pulled out of dispose so we could
        /// allow the user to change the FadeTransitions property after the behavior was
        /// already initialized.  We can merge it back into dispose once we support generic
        /// animations on the Accordion.
        /// </summary>
        /// <returns />

        for (var i = 0; i < this._panes.length; i++) {
            var animation = this._panes[i].animation;
            if (animation) {
                if (animation.get_isPlaying()) {
                    animation.stop();
                }

                if (animation._ended) {
                    animation.remove_ended(animation._ended);
                    animation._ended = null;
                }

                animation.dispose();

                animation._length = null;
                animation._fade = null;
                animation._pane = null;
                animation._opening = null;
                animation._behavior = null;
                this._panes[i].animation = null;
            }
        }
    },

    _resizeSelectedPane: function() {
        /// <summary>
        /// Adjust the size of the currently selected pane (upon initialization,
        /// resizing the window, etc.)
        /// </summary>
        /// <returns />

        var pane = this.get_Pane();
        if (!pane) {
            return;
        }

        this._headersSize = this._getHeadersSize().height;

        var original = pane.content._original;
        switch (this._autoSize) {
            case Sys.Extended.UI.AutoSize.None:
                original.style.height = 'auto';
                original.style.maxHeight = '';
                break;
            case Sys.Extended.UI.AutoSize.Limit:
                var remaining = this._getRemainingHeight(false);
                original.style.height = 'auto';
                original.style.maxHeight = remaining + 'px';
                break;
            case Sys.Extended.UI.AutoSize.Fill:
                var remaining = this._getRemainingHeight(true);
                original.style.height = remaining + 'px';
                original.style.maxHeight = '';
                break;
        }
    },

    _onHeaderClick: function(evt) {
        /// <summary>
        /// OnClick handler to open the desired pane
        /// </summary>
        /// <param name="evt" type="Sys.UI.DomEvent" mayBeNull="false">Event info</param>
        /// <returns />

        var header = evt.target;
        var accordion = this.get_element();
        while (header && (header.parentNode !== accordion)) {
            header = header.parentNode;
        }

        evt.stopPropagation();
        if (this._suppressHeaderPostbacks) {
            evt.preventDefault();
        }

        var index = header._index;
        if ((index === this._selectedIndex) && !this._requireOpenedPane) {
            index = -1;
        }
        this._changeSelectedIndex(index, true);
    },

    _changeSelectedIndex: function(index, animate, force) {
        /// <summary>
        /// Change the accordion's selected pane to a new index (and optionally show the change).
        /// </summary>
        /// <param name="index" type="Number" integer="true" mayBeNull="false">
        /// Index of the new selected pane
        /// </param>
        /// <param name="animate" type="Boolean" mayBeNull="false">
        /// Whether or not to show the pane change (this is primarily intended to support
        /// restoring _selectedIndex in initialize before any panes have been added)
        /// </param>
        /// <param name="force" type="Boolean" mayBeNull="true" optional="true">
        /// We perform no action (i.e. raising events, animating, etc.) if the two indices represent
        /// the same pane (including the case when we have two different "no pane selected values"
        /// like -1 and -500).  The force flag is used during initialization to skip this check since
        /// we aren't able to determine invalid values yet.
        /// </param>
        /// <returns />

        var lastIndex = this._selectedIndex;
        var currentPane = this.get_Pane(index);
        var lastPane = this.get_Pane(lastIndex);
        if (!force && (currentPane == lastPane)) {
            return;
        }

        var eventArgs = new Sys.Extended.UI.AccordionSelectedIndexChangeEventArgs(lastIndex, index);
        this.raiseSelectedIndexChanging(eventArgs);
        if (eventArgs.get_cancel()) {
            return;
        }

        if (lastPane) {
            lastPane.header.className = this._headerCssClass;
        }

        if (currentPane) {
            currentPane.header.className = (this._headerSelectedCssClass == '') ?
                this._headerCssClass : this._headerSelectedCssClass;
        }

        this._selectedIndex = index;

        this.set_ClientState(this._selectedIndex);

        if (animate) {
            this._changePanes(lastIndex);
        }

        this.raiseSelectedIndexChanged(new Sys.Extended.UI.AccordionSelectedIndexChangeEventArgs(lastIndex, index));
        this.raisePropertyChanged('SelectedIndex');
    },

    _changePanes: function(lastIndex) {
        /// <summary>
        /// The _changePanes function is used to animate the change between two panes when
        /// the selected index changes.  We will loop through each pane and get its
        /// animation (or demand create it if it doesn't have one yet), stop playing it if
        /// it's currently playing, change its parameters to either open or close, and then
        /// animate it.  Because we have an animation for each pane and we stop them if they
        /// were already playing, the Accordion has the ability to nicely change panes
        /// again before the animation is finished.
        /// </summary>
        /// <param name="lastIndex" type="Number" integer="true" mayBeNull="false">
        /// Index of the last selected Accordion pane
        /// </param>
        /// <returns />

        if (!this.get_isInitialized()) {
            return;
        }

        var open = null;
        var close = null;
        for (var i = 0; i < this._panes.length; i++) {
            var pane = this._panes[i];
            var animation = this._getAnimation(pane);

            if (animation.get_isPlaying()) {
                animation.stop();
            }

            if (i == this._selectedIndex) {
                animation._opening = true;
                open = animation;
            } else if (i == lastIndex) {
                animation._opening = false;
                close = animation;
            } else {
                continue;
            }

            this._startPaneChange(pane, animation._opening);


            if (this._fadeTransitions) {
                animation._fade.set_effect(animation._opening ? Sys.Extended.UI.Animation.FadeEffect.FadeIn : Sys.Extended.UI.Animation.FadeEffect.FadeOut);
            }

            if (this._autoSize === Sys.Extended.UI.AutoSize.Fill) {
                animation.set_target(pane.content._original);
                animation._length.set_startValue($common.getContentSize(pane.content._original).height);
                animation._length.set_endValue(animation._opening ? this._getRemainingHeight(true) : 0);
            } else {
                animation.set_target(pane.content);
                animation._length.set_startValue(pane.content.offsetHeight);
                animation._length.set_endValue(animation._opening ? this._getRemainingHeight(false) : 0);
            }
        }

        if (close) {
            close.play();
        }
        if (open) {
            open.play();
        }

    },

    _startPaneChange: function(pane, opening) {
        /// <summary>
        /// Setup the pane before it is animated.
        /// </summary>
        /// <param name="pane" type="Object" mayBeNull="false">
        /// Pane that is being animated
        /// </param>
        /// <param name="opening" type="Boolean" mayBeNull="false">
        /// Whether or not the pane is being opened or closed
        /// </param>
        /// <returns />

        var wrapper = pane.content;
        var original = wrapper._original;

        if (opening) {
            wrapper.style.display = 'block';

            if (this._autoSize === Sys.Extended.UI.AutoSize.Fill && this._isIE8InStandardMode) {
                original.style.display = 'block';
            }
        } else {
            wrapper.style.overflow = 'hidden';

            original.style.overflow = 'hidden';

            if (this._autoSize === Sys.Extended.UI.AutoSize.Limit) {
                wrapper.style.height = this._getTotalSize(original).height + 'px';
                original.style.maxHeight = '';
            }
        }
    },

    _endPaneChange: function(pane, opening) {
        /// <summary>
        /// Clean the pane up after it's been animated.
        /// </summary>
        /// <param name="pane" type="Object" mayBeNull="false">
        /// Pane that is being animated
        /// </param>
        /// <param name="opening" type="Boolean" mayBeNull="false">
        /// Whether or not the pane is being opened or closed
        /// </param>
        /// <returns />

        var wrapper = pane.content;
        var original = wrapper._original;

        if (opening) {
            if (this._autoSize === Sys.Extended.UI.AutoSize.Limit) {
                var remaining = this._getRemainingHeight(true);
                original.style.maxHeight = remaining + 'px';
            }

            original.style.overflow = 'auto';

            wrapper.style.height = 'auto';
            wrapper.style.overflow = 'auto';
        } else {

            if (!this._isIE8InStandardMode) {
                wrapper.style.display = 'none';
            } else {
                if (this._autoSize === Sys.Extended.UI.AutoSize.Fill) {
                    original.style.display = 'none';
                } else {
                    wrapper.style.height = '0px';
                }
            }
        }
    },

    _getHeadersSize: function() {
        /// <summary>
        /// Compute the size of all the header sections
        /// </summary>
        /// <returns type="Object" mayBeNull="false">
        /// Size of all header sections (of the form {width, height}).
        /// </returns>

        var total = { width: 0, height: 0 };
        for (var i = 0; i < this._panes.length; i++) {
            var size = this._getTotalSize(this._panes[i].header);
            total.width = Math.max(total.width, size.width);
            total.height += size.height;
        }
        return total;
    },

    _getRemainingHeight: function(includeGutter) {
        /// <summary>
        /// Determine how much remaining height we have to fill with the currently selected
        /// pane's content section after taking into account all the headers.  This is primarily
        /// used for the Limit and Fill AutoSize modes.
        /// </summary>
        /// <param name="includeGutter" type="Boolean" mayBeNull="false">
        /// Whether or not we should include the gutter (padding, borders, margins) of the
        /// selected pane's original content section.  This should be true whenever we're
        /// getting the remaining height for the original content section and false whenever
        /// we're getting the remaining height for its wrapper.
        /// </param>
        /// <returns type="Number" integer="true">
        /// Remaining height after all the headers have been accounted for
        /// </returns>    

        var height = 0;
        var pane = this.get_Pane();

        if (this._autoSize === Sys.Extended.UI.AutoSize.None) {
            if (pane) {
                height = this._getTotalSize(pane.content._original).height;
            }
        } else {
            height = this._headersSize;
            if (includeGutter && pane) {
                height += this._getGutterSize(pane.content._original).height;
            }

            var accordion = this.get_element();
            height = Math.max(accordion.offsetHeight - height, 0);

            if (pane && (this._autoSize === Sys.Extended.UI.AutoSize.Limit)) {
                var required = this._getTotalSize(pane.content._original).height;
                if (required > 0) {
                    height = Math.min(height, required);
                }
            }
        }

        return height;
    },

    _getTotalSize: function(element) {
        /// <summary>
        /// Get the total size of an element, including its margins
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// Element
        /// </param>
        /// <returns type="Object">
        /// Total size of the element (in the form {width, height})
        /// </returns>

        var size = $common.getSize(element);
        var box = $common.getMarginBox(element);
        size.width += box.horizontal;
        size.height += box.vertical;
        return size;
    },

    _getGutterSize: function(element) {
        /// <summary>
        /// Get the extra "gutter" size around an element made up of its padding,
        /// borders, and margins.
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// Element
        /// </param>
        /// <returns type="Object">
        /// Size of the extra space (in the form of {height, width})
        /// </returns>

        var gutter = { width: 0, height: 0 };

        try {
            var box = $common.getPaddingBox(element);
            gutter.width += box.horizontal;
            gutter.height += box.vertical;
        } catch (ex) { }

        try {
            var box = $common.getBorderBox(element);
            gutter.width += box.horizontal;
            gutter.height += box.vertical;
        } catch (ex) { }

        var box = $common.getMarginBox(element);
        gutter.width += box.horizontal;
        gutter.height += box.vertical;

        return gutter;
    },

    add_selectedIndexChanging: function(handler) {
        /// <summary>
        /// Add an event handler for the selectedIndexChanging event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('selectedIndexChanging', handler);
    },
    remove_selectedIndexChanging: function(handler) {
        /// <summary>
        /// Add an event handler for the selectedIndexChanging event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('selectedIndexChanging', handler);
    },
    raiseSelectedIndexChanging: function(eventArgs) {
        /// <summary>
        /// Raise the selectedIndexChanging event
        /// </summary>
        /// <param name="eventArgs" type="Sys.Extended.UI.AccordionSelectedIndexChangeEventArgs" mayBeNull="false">
        /// Event arguments for the selectedIndexChanging event
        /// </param>
        /// <returns />

        var handler = this.get_events().getHandler('selectedIndexChanging');
        if (handler) {
            handler(this, eventArgs);
        }
    },

    add_selectedIndexChanged: function(handler) {
        /// <summary>
        /// Add an event handler for the selectedIndexChanged event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('selectedIndexChanged', handler);
    },
    remove_selectedIndexChanged: function(handler) {
        /// <summary>
        /// Add an event handler for the selectedIndexChanged event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('selectedIndexChanged', handler);
    },
    raiseSelectedIndexChanged: function(eventArgs) {
        /// <summary>
        /// Raise the selectedIndexChanged event
        /// </summary>
        /// <param name="eventArgs" type="Sys.Extended.UI.AccordionSelectedIndexChangeEventArgs" mayBeNull="false">
        /// Event arguments for the selectedIndexChanged event
        /// </param>
        /// <returns />

        var handler = this.get_events().getHandler('selectedIndexChanged');
        if (handler) {
            handler(this, eventArgs);
        }
    },

    get_Pane: function(index) {
        /// <summary>
        /// Get a specific Accordion pane given its index.  If no index is provided, get
        /// the currently selected pane.
        /// </summary>
        /// <param name="index" type="Number" integer="true" mayBeNull="true">
        /// Index of the desired Accordion pane.  If the index is not provided, we use
        /// the currently selected index.  In the event the provided index (or the currently
        /// selected index) is outside the bounds of the panes collection, we return null.
        /// </param>
        /// <returns type="Object" mayBeNull="true">
        /// The desired pane object, or null if outside the the bounds of the _panes array.
        /// The pane is an object of the form {header, content, animation} corresponding to
        /// that pane's header section, content section, and the animation used to open and
        /// close its content section.  The content element is a new div that has been
        /// created to wrap the original div (so we can completely collapse it - even if it
        /// has padding, margins, etc.) which is pointed to by a dynamic _original property.
        /// The header element has a dynamic _index property indicating its position in the
        /// Accordion's pane collection (used primarily by the headers' shared click handler).
        /// Furthermore, the animation will either be an instance of LengthAnimation or
        /// ParallelAnimation (in the latter case, it will have two children which are a
        /// LengthAnimation and a FadeAnimation).  There will be two dynamic properties
        /// _length and _fade pointing to each of these children (to easily set the length
        /// and fadeEffect properties).  There is also a dynamic _ended property which is an
        /// event handler to be fired when the animation is complete, a dynamic _opening
        /// property to indicate whether the animation was opening or closing the pane, and
        /// a dynamic _pane property to provide a reference to the pane that was being
        /// animated.
        /// </returns>

        if (index === undefined || index === null) {
            index = this._selectedIndex;
        }
        return (this._panes && index >= 0 && index < this._panes.length) ? this._panes[index] : null;
    },

    get_Count: function() {
        /// <value type="Number" integer="true" mayBeNull="false">
        /// Number of Accordion panes
        /// </value>
        return this._panes ? this._panes.length : 0;
    },

    get_TransitionDuration: function() {
        /// <value type="Number">
        /// Length of time to transition between Accordion sections in
        /// milleseconds.  The default value is 250ms.
        /// </value>
        return this._duration * 1000;
    },
    set_TransitionDuration: function(value) {
        if (this._duration != (value / 1000)) {
            this._duration = value / 1000;
            for (var i = 0; i < this._panes.length; i++) {
                var animation = this._panes[i].animation;
                if (animation) {
                    animation.set_duration(this._duration);
                }
            }
            this.raisePropertyChanged('TransitionDuration');
        }
    },

    get_FramesPerSecond: function() {
        /// <value type="Number" integer="true">
        /// Number of steps per second in the transition animations.
        /// The default value is 30 frames per second.
        /// </value>
        return this._framesPerSecond;
    },
    set_FramesPerSecond: function(value) {
        if (this._framesPerSecond != value) {
            this._framesPerSecond = value;
            for (var i = 0; i < this._panes.length; i++) {
                var animation = this._panes[i].animation;
                if (animation) {
                    animation.set_fps(this._framesPerSecond);
                }
            }
            this.raisePropertyChanged('FramesPerSecond');
        }
    },

    get_FadeTransitions: function() {
        /// <value type="Boolean">
        /// Whether or not to fade the accordion panes when transitioning
        /// </value>
        return this._fadeTransitions;
    },
    set_FadeTransitions: function(value) {
        if (this._fadeTransitions != value) {
            this._fadeTransitions = value;

            this._disposeAnimations();

            if (!this._fadeTransitions) {
                for (var i = 0; i < this._panes.length; i++) {
                    if ($common.getElementOpacity(this._panes[i].content) != 1) {
                        $common.setElementOpacity(this._panes[i].content, 1);
                    }
                    if ($common.getElementOpacity(this._panes[i].content._original) != 1) {
                        $common.setElementOpacity(this._panes[i].content._original, 1);
                    }
                }
            }
            this.raisePropertyChanged('FadeTransitions');
        }
    },

    get_HeaderCssClass: function() {
        /// <summary>
        /// This is the CSS class applied to each header.
        /// </summary>
        return this._headerCssClass;
    },

    set_HeaderCssClass: function(value) {
        this._headerCssClass = value;
        this.raisePropertyChanged('HeaderCssClass');
    },

    get_HeaderSelectedCssClass: function() {
        /// <summary>
        /// This is the CSS class applied to the selected header.
        /// </summary>
        return this._headerSelectedCssClass;
    },

    set_HeaderSelectedCssClass: function(value) {
        this._headerSelectedCssClass = value;
        this.raisePropertyChanged('HeaderSelectedCssClass');
    },

    get_AutoSize: function() {
        /// <value type="Sys.Extended.UI.AutoSize">
        /// AutoSize mode
        /// </value>
        return this._autoSize;
    },
    set_AutoSize: function(value) {
        if (Sys.Browser.agent === Sys.Browser.InternetExplorer && value === Sys.Extended.UI.AutoSize.Limit) {
            value = Sys.Extended.UI.AutoSize.Fill;
        }

        if (this._autoSize != value) {
            this._autoSize = value;
            this._initializeLayout();
            this.raisePropertyChanged('AutoSize');
        }
    },

    get_SelectedIndex: function() {
        /// <value type="Number" integer="true">
        /// Index of the currently selected Accordion section
        /// </value>
        return this._selectedIndex;
    },
    set_SelectedIndex: function(value) {
        this._changeSelectedIndex(value, true);
    },

    get_requireOpenedPane: function() {
        /// <value type="Boolean">
        /// Whether or not clicking the header will close the currently opened pane
        /// (which leaves all the Accordion's panes closed)
        /// </value>
        return this._requireOpenedPane;
    },
    set_requireOpenedPane: function(value) {
        if (this._requireOpenedPane != value) {
            this._requireOpenedPane = value;
            this.raisePropertyChanged('requireOpenedPane');
        }
    },

    get_suppressHeaderPostbacks: function() {
        /// <value type="Boolean">
        /// Whether or not we suppress the client-side click handlers of any elements
        /// (including server controls like Button or HTML elements like anchor) in the
        /// header sections of the Accordion.
        /// </value>
        return this._suppressHeaderPostbacks;
    },
    set_suppressHeaderPostbacks: function(value) {
        if (this._suppressHeaderPostbacks != value) {
            this._suppressHeaderPostbacks = value;
            this.raisePropertyChanged('suppressHeaderPostbacks');
        }
    }
}
Sys.Extended.UI.AccordionBehavior.registerClass('Sys.Extended.UI.AccordionBehavior', Sys.Extended.UI.BehaviorBase);
Sys.registerComponent(Sys.Extended.UI.AccordionBehavior, { name: "accordion" });

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedAnimations", "ExtendedBase"], execute);
}
else {
    execute();
}

})();
6   �& h�( @ ����n���n���n���n���n���n���n����������������������������n���������������������������n���������������������������n���������������������������n�������������������������������������������������������������������������������n������������������������������������������������������������������������������������������������������������n�������������������������������������������������������������������������������������������������������������n����������������������������������������������������������������������n��������������������������n��������������������������n��������������������������n��������������������������n�������������������������������n�������������������������������������������������������������������������������������������������������������������������������������������(  ����n���n���n���n�����������������n���������������������������������������������n����������������������������������������������������n�������������������������������������������������������n���������������������������������n�����������������n�������������������n������������������������������������������������6   �& h�( @ Xt��Xt��Mk��Mk��Ed��Ji��Ed��Ed��Ed��Ed��Gk��j�����N��<��:��0��E��A��;���5���Gk��i�������n��0��']j�&V`�$]m�����1���Hk��i�����z��E��5���%V`�������1���Im��j���������T��,_j�'KQ��������1���Im��k������d��8x��#s�����������Ce��k�������������~�u��s��g��a��Mp�����������������������������������������������������������������k���t���q���m���k���c���]���Rz��N}��Gs��Gs�����������������������������������������������������������������������������������������Q|��d��Ww����������Eu��3��D{�����������������������������������������������������������������������������������������S}��e��Vx����������Ft��3��>z�����������������������������������������������������������������������������������������V���d��]�����������H���4��[~�����������������������������������������������������������������������������������������S}��m��m��u���{���Y���4����S}���������������������������������������������������������������������������������������������S}��k��s��k��N����S}������������������ü�z;��������������ü�z;��������������ü�z;��������������ü�z;�������������S}��Vx��Sv��Tw��S}�����������������‹p��U�z;���������‹p��U�z;���������‹p��U�z;���������‹p��U�z;������������������������������������ü�‹p��ü����������ü�‹p��ü����������ü�‹p��ü����������ü�‹p��ü��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������(  Ru��Ru��Qt��Ou��Pu��Ps��Nq��In��n�����)������ ��)��In��n�����0��(V_�bu�����Ko��n�����0��'Yd����
����Ko��r�������u��u��u��u��u��Jt��m���m���m���n���n���g���W���Jt��d��Mp��A��Jt�����������������������������d��Nr����������A��Jt�������������������������������������q���o��{��t��I��Jt�����������������������������������������f���Np��Lp��Jt������������ďq��R*�����ďq��R*�����ďq��R*�������������������������ӯ��ʓv�����ӯ��ʓv�����ӯ��ʓv�����ӯ��ʓw�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������6   �& h�( @ t$t$WWW�t$t$WWW�WWW�WWW�t$WWW�WWW�WWW�WWW�WWW�t$WWW�WWW�t$WWW�WWW�WWW�t$t$WWW�WWW�WWW�WWW�WWW�t$�����lZ��jX��hV��gT�~dR�|cP�zbO�y`M�w^J�v]I�t[G�sYE�qXD�pVB�����WWW�WWW�WWW�WWW�WWW�WWW�WWW�WWW�WWW�WWW�WWW�WWW�WWW�WWW�WWW�t$�����������Ǿ��Ļ��¹�ѿ��м��λ��̸��ʶ��ɴ��Dz��ư��ĭ�����ֶ��WWW�WWW����׾��ս��Ժ��WWW�Į�����WWW�WWW�t$��������������������������������������������⿵�WWW�������������WWW�Į�����WWW�t$����������������������������������������������������������WWW�Į����������������������������������������������������������������WWW�Į�����������������������������������������������������������WWW�WWW�WWW�WWW�WWW����������������������������������������������������������WWW�WWW�WWW�ڸ�����������������������������������������������������������·�WWW�ط����������������������������������������������������������������������Į��qWC���������������������������������������������������������������������DZ��sYE�������������������������������������������������������������������ɳ��u[H���������������������������������������������������������������������˶��w^J����������������������������������������������������������������������ͺ��y`M�����������������������������������������������������������������������ϼ��{bO���������������������������������������������������������������������������~dR�����������������������������������������������������������������������ú��gT����������������������������������������������������������������������������Ǿ��iW�����������������������������������������������������������������������������lZ�ёr�ёr�ёr�Ќk�Іa��~U��uI��m=��d1��]'��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y �ёr���������������������������������������������������}���z���w���t���q���o��m��j��h��f��e��e��Y �ёr���������������������������������������������������~���z���w���t���q���n��m��j��h��f��e��e��Y �ёr���������������������������������������������������}���z���w���u���q���o��l��j��h��g��e��e��Y �ёr�ёr�ёr�Ќk�Іa��~U��uI��m=��d1��]'��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y �����������?����������������13????????????????????����(  t$t$WWW�t$t$WWW�WWW�WWW�t$WWW�WWW�WWW�WWW�WWW�t$t$WWW�WWW�WWW�t$������������WWW�WWW�˵��˵��˵��WWW�˵��˵��˵��WWW�WWW�t$�������WWW�WWW�WWW�WWW�WWW�WWW�WWW�WWW�WWW�WWW�WWW�WWW�WWW�t$�����������WWW�WWW��������WWW�����п�ѻ��WWW�WWW�t$���������������WWW��������WWW�������ѻ��WWW�t$������������������������WWW�WWW�WWW�WWW�WWW�ѻ��î�������������������������WWW�WWW�WWW�Ī���gU�Ȳ�����������������������������WWW�������cI5�̶��������������������������������������cI5�ꪋ�ꪋ�ꪋ�饄��z��n��b��V��}J��v@��r9��b/�ꪋ��¢���������������������������}���w��e��e1�ꪋ�ꪋ�ꪋ�ꪋ�ꦆ����v��l��b��X��v>��r9�����?Z��X��V��sT�R�P�O�M�J�I�G�E�D�B����  �( @���������������ʦ""")))UUUMMMBBB999�|�PP���������������3f��3333f3�3�3�ff3fff�f�f���3�f��������3�f̙����f����3333f3�3�3�3333333f33�33�33�3f3f33ff3f�3f�3f�3�3�33�f3��3��3��3�3�33�f3̙3��3�3�33�f3��3��3��ff3fff�f�f�f3f33f3ff3�f3�f3�ffff3fffff�ff�f�f�3f�ff��f��f��f�f�3f̙f��f�f�f�3f��f���������3�������33�f�3����f�f3�3f�f��f��3���3��f�������������3f�f�̙���������3��f�����������3�f�����3�33�3f�3��3��3��f�f3�ff�f��f��f�̙̙3̙f̙�̙�̙�����3��f�̙�������3��f�������3�f���3�33�3f�3��3��3��f�f3�ff�f��f��f�����3��f�������������3��f�̙�������3�f������ff�f�ff���ff�f���f!�___www����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������۬������������������������������۬���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BGIF89a�
���������!��,(P���8@��>,�P���;dGIF89a� ��������������ض������������������������������������������������!� ,AA �TX����

!>���E2��������$( X	�Kb @�M�;NGIF89a��1�<��8��9��<ݡS�����Ǝ���!�,+$0`@��Tx0�ÅB�(�"Ë		(�`x�  ;:GIF89a��.�1��8��8��<ݡS����Ǝ���!�,@��A*\Ȱ�ÇH;0GIF89a�x�䇿��!��,
H0@;�GIF89a�����������������������������������������������������������������������������������������������������������������������������������}}}{{{vvvhhh^^^NNNKKKDDDAAA???===555333���!�:,�@�pH,���r�l
���3JUN���2�`�ڤ	���JY�P+�q���+r/���!`_Ka9%I'879KB��#9)�3e��:��41�.2��B��(9!���B��,+�ĽB���*���B��� ��B�����B����������B����G��A;!GIF89a����������-^�@k�Ir�Cr�.l�4n�X��������������������������������333���!�,��%�di����lۊ�+��\��,��W��o����$���SI��X<du˸����/�
�A�6h�pŹ2x��
����sz0�|~qqB�0��
�B�0�>8��r�0��@	B�0�����0v�vbb�0�����0���'��!;�GIF89a��������������������������������������������������������������������������������������������������������������������������������ʋ�ʌ�ʍ�ʎ�ʏ�ʖ��)^���ʊ�ʔ�ʗ�ʙ����!�I,��I������������!$%������"'*,��C�C����&+0
�C�
���034CF���FC4�Â,7CB���C�т059CG���C9�߂8:CH误:���;����C;�;�.�i����!
j� „!Dx� x9�@�"=|T7�
� L��a� A(Vć�A2Lre�$�8���O.dȬ8�Ĉ�>���E�3���B@
A$T��Z��
��b�x!(ŋ6#n�v�48nبA�@A-f�8�0���	֕v���@;�GIF89a�����������������������������������������������������������������Ŷ�����������������������|||llliiihhhfff^^^]]]333���!�(,�@�pH,���r�l
���3JUN��+�]F:��G�EQ	'Sap���'"E��&Q��$'��B��'%�����r�����z������ "#!�����	
���
�����Ɋ����֊
����܊�����G��A;�GIF89a����LLM~~XXY�����������������������ҿ�����������������������p��s�����������������Kw�Ny�]��a��������:l�=n�������r��t��d��f��[��\��X�����������������������������������������������������������������������������������������������������������~~~}}}yyymmmjjjgggfffeeeccc\\\FFF666555333���!�_,�_����������������������JGJC���	<[]���^HIOZ
�_��AK4WM@^^K��=Y0X���	�.?H̏��L
�\�ڐ:�;RD>BQV1FE����SSNU4-tȘ�O��B%G
B�A�"�-lX�ɆG C��$�(W�8Q"Ć*x� �MH4r�@a��
0X��aDΣ�d(]ʴiSt�J�JuꡫX;�GIF89a�?���������̎��n����������RRR�99u]������Ԑrr�NN���ggg���������������533�깹���p������~~~���Y�䐨���҉��������r�������˩����������0�����@@�hh�@@�Ny⟟����<<�������������������!�?,���pH,�=�r�l6�I��	�:]�_�`R&��ac�����@��1+q�F�_2)!3TZKj%7+0�QJ�JUK
<-��>P�%7$ )���P=<�< 68.��<P˾2<;;�P:��	4��:P9�9!9���P!�"5/"��D�E��0x(0���
>(0H��	:�`��*(
�rmG��(K�Hɫ�˗0c�<B�f;+GIF89a����!�,D;�table {border: #000000 1px dashed;}
td    {border: #000000 1px dashed;}
div   {border: #0000FF 1px dashed; padding: 0px; margin:0px;}
form  {border: #FF0000 1px dashed;}
.spell_highlighted
{
	background-color: blue;
	color: yellow;
}
�.ajax__combobox_inputcontainer 
{
}
.ajax__combobox_textboxcontainer
{
}
.ajax__combobox_textboxcontainer input
{
}
.ajax__combobox_buttoncontainer
{
}
.ajax__combobox_buttoncontainer button
{
    background-image: url(<%=WebResource("ComboBox.arrow-down.gif")%>);
    background-position: center;
    background-repeat: no-repeat;
    border-color: ButtonFace;
    height: 15px;
    width: 15px;
}
.ajax__combobox_itemlist
{
    margin: 0px;
    padding: 0px;
    cursor: default;
    list-style-type: none;
    text-align: left;
    border: solid 1px ButtonShadow;
    background-color: Window;
    color: WindowText;
}
.ajax__combobox_itemlist li
{
    white-space: nowrap;
    width: 100%;
    padding: 0 3px 0 2px;
}

��PNG


IHDR#"Յ`�	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�F�IDATxڤ�K�U��so=�n��Nw'��M��O�!�3�$���&��
B b�a�c�ذ`�X��X�%B	�
3�zP+�d���n�m�]��}̂rw�m�h(��˷�~uι�Q��Ư9����y��QJ���\��pq�H��N�����8փ�Q)�L�0<�甁��-��t���}���"�#�y���c�=6�1BЙ3gZ�Ν�@��HE�E
@�j5=C?�3�,���ϖ_z�?���V�֚e|@5��˗/_{��7?���UQF֠�W������ɀ��z����'O�|dǎ�ccZkMD�ﯩ�0�	!X��k]�pa��߾x��ٻzBq
$���E�����a�o�9�?��ӅC���s^J���RI�
�N��$� x�^o|��Gg^}���S�(��_�#G���L�$}�eMc�={����+c������Q�`�le
@���m������Ǐ��1�{����}k�}��HDQ�u��ޫ���7�,����R����
��1�X��rZk[km)���2d�yssscG�9��3��Hz��j�>�(m�ɘ�`�޽�O�m��R�RJi����2�
��I�f��2YZkSJ)���m۶��P�K�adBú��0DV+~���[�l�@
!c�`�	���+���[{j��U(�+���]�;��:QJi��TJE���z��=�܃��?RGN2�������l@����~�8Έ"�Z�T+���L�m"���y����.�h����-�RʐRRE��[�:�Jegj^7����w5�ĉ��#")��Zk�o""�����8p]�〈N:��=��ڐR*۶�����ݻwOg`����`����tg$I�D)EZk��l�X�s^䜗8�c���i�p��c,�9/�s���Q"rRߡ$I����ܶm�f8���-˚
ð�Ꮾ�
�B�1�z�r��)�a�ag��m�0���y���q$��s�\3��KQaǁRʰm{l��ٰ�D�bD!VWW��^���fgg��?��s�&&&033�X�)%�>}�
�7o�i6�سg�z��'/T����r��KDRJg�~��ݮ��I� �c�j���+W�tN�:�!}��̠V�m����O��N��P�q�4������g���� CCJɣ(��Zu:�p�޽ߟ8q"纮kY���X�V3�z���i4� v��y�� E���n��</�� ��WVV�6�Mr]׌�B���7o����z�m�����x�\�~���}��ˆ��ɓ�����5�(
��n��ht{���R���j�J����L��V�
�Q�.]��cǎdaa!'�l�q��8�}��z��9g����0r��o�t:?V�՛+++w��J��O�f�1۶s/^LVVV�i���d;��o��v�R�,�۷o�i�� ��?�FL��OLLxٛ�ݮ�j��z���P(8�F�����<��)%���=q&[.Fׯ__��믩\.�k�y��J��n{Q�)UK��ھ�'�s��|||����S�^���m��v��IH����8��w��5_*����eOJ�2NY�U�wN����qݺu�n�Պ�8^{`j��7nl��/V���
����4��^{
����+W�d#1'"Q�Vw<xp�1t��$I-��B�a(<��5�֝;wڍF���!"�iӦQ���_=n6�W�����RsIz��;v�>��3�)!r
۷oxzz��^x�4�Z��ZA}�����u]czz���o�����a^p@@{F��>|�|�M?i��(LMM=���>��s�V��l6���b�t�a����T*�����|�A��-��
���xi	e̴��@J����l��圗K�����w=���v�R���ǻa&J)�c��Z�ju�����'�|����B�R��Xdb�zA^�T��µkײ-�ٯ��rq�1Vv]wcl����!���?����]�ԪR�V
�I5�I7,�7�<�k
��۷;3rSM��!�Gk-��D�O�e$֪d��u����{��V�5��f�_;[�e�NI�E�
\<$�޳	�`��↦<�a�m��t����hoe��r��8��de���������Bl�ᜯ5�p�O"��@����2o�k����)U��c=IEND�B`�8�PNG


IHDR2�
�YtEXtSoftwareAdobe ImageReadyq�e<�IDATx�Ԙ�GQ�_��Ӟ�v��b��-��5�!e#"���!�R�R@t�NK�eOKİ�eY�9E,KDD�W��fg�{�ޛ�/�ˌ����wf��0
*�7�c��
�]M/�J�D삶��e˄M��
��M�q��(
��S�~�bܥuH�Æ�`xA7�$2*�(37��7l�О���X7h�C�QM�եuc�8�2&T�I�0Q�:*�&����{&��%U*F*tZ�����cIfihn�G3��+V�Dt�>탢N2���S�R�ǝ���}�M)�MNN���ڧ�L83�M�$�ڧ��umU�D�$��V��MQF��ޔ�	�T-�R]Z�O�
���W����>U�x�GCm!i��Sw4z,%r%�T��Q��L�`���`.�&�	�SU�	>K�ܐ>品*ˀ��>�����;ʄ��Dʴ?��[,c�F�>آc5��F&�<}�dV���TB�S*~IEND�B`�K// (c) 2010 CodePlex Foundation
Type.registerNamespace('Sys.Extended.UI.Seadragon');
Type.registerNamespace('Seadragon');

Seadragon.Point=Sys.Extended.UI.Seadragon.Point = function(x, y) {
    this.x = typeof (x) == "number" ? x : 0;
    this.y = typeof (y) == "number" ? y : 0;
}
Sys.Extended.UI.Seadragon.Point.prototype = {

    plus: function(point) {
        return new Sys.Extended.UI.Seadragon.Point(this.x + point.x, this.y + point.y);
    },

    minus: function(point) {
        return new Sys.Extended.UI.Seadragon.Point(this.x - point.x, this.y - point.y);
    },

    times: function(factor) {
        return new Sys.Extended.UI.Seadragon.Point(this.x * factor, this.y * factor);
    },

    divide: function(factor) {
        return new Sys.Extended.UI.Seadragon.Point(this.x / factor, this.y / factor);
    },

    negate: function() {
        return new Sys.Extended.UI.Seadragon.Point(-this.x, -this.y);
    },

    distanceTo: function(point) {
        return Math.sqrt(Math.pow(this.x - point.x, 2) +
                        Math.pow(this.y - point.y, 2));
    },

    apply: function(func) {
        return new Sys.Extended.UI.Seadragon.Point(func(this.x), func(this.y));
    },

    equals: function(point) {
        return (point instanceof Sys.Extended.UI.Seadragon.Point) &&
                (this.x === point.x) && (this.y === point.y);
    },

    toString: function() {
        return "(" + this.x + "," + this.y + ")";
    }
}
Sys.Extended.UI.Seadragon.Point.registerClass('Sys.Extended.UI.Seadragon.Point', null, Sys.IDisposable);  
!
// (c) 2010 CodePlex Foundation
Type.registerNamespace('Sys.Extended.UI.Seadragon');

Sys.Extended.UI.Seadragon.Job = function(src, callback) {
    this._image = null;
    this._timeout = null;
    this._src = src;
    this._callback = callback;
    this.TIMEOUT = 5000;
}
Sys.Extended.UI.Seadragon.Job.prototype = {
    _finish: function(success) {
        this._image.onload = null;
        this._image.onabort = null;
        this._image.onerror = null;


        if (this._timeout) {
            window.clearTimeout(this._timeout);
        }

        var image = this._image;
        var callback = this._callback;
        window.setTimeout(function() {
            callback(this._src, success ? image : null);
        }, 1);
    },
    _onloadHandler: function() {
        this._finish(true);
    },
    _onerrorHandler: function() {
        this._finish(false);
    },
    start: function() {
        this._image = new Image();
        this._image.onload = Function.createDelegate(this, this._onloadHandler);
        this._image.onabort = Function.createDelegate(this, this._onerrorHandler);
        this._image.onerror = Function.createDelegate(this, this._onerrorHandler);

        this._timeout = window.setTimeout(Function.createDelegate(this, this._onerrorHandler), this.TIMEOUT);

        this._image.src = this._src;
    }
}
Sys.Extended.UI.Seadragon.Job.registerClass('Sys.Extended.UI.Seadragon.Job', null, Sys.IDisposable);


Sys.Extended.UI.Seadragon.ImageLoader = function(imageLoaderLimit) {
	this._downloading = 0;
	this.imageLoaderLimit = imageLoaderLimit;
}
Sys.Extended.UI.Seadragon.ImageLoader.prototype = {
    _onComplete: function(callback, src, image) {
        this._downloading--;
        if (typeof (callback) == "function") {
            try {
                callback(image);
            } catch (e) {
                Seadragon.Debug.error(e.name + " while executing " + src +
                            " callback: " + e.message, e);
            }
        }
    },
    loadImage: function(src, callback) {
        if (this._downloading >= this.imageLoaderLimit) {
            return false;
        }

        var func = Seadragon.Utils.createCallback(null, Function.createDelegate(this, this._onComplete), callback);
        var job = new Sys.Extended.UI.Seadragon.Job(src, func);

        this._downloading++;
        job.start();

        return true;
    }
}
Sys.Extended.UI.Seadragon.ImageLoader.registerClass('Sys.Extended.UI.Seadragon.ImageLoader', null, Sys.IDisposable);

�k// (c) 2010 CodePlex Foundation
Type.registerNamespace('Sys.Extended.UI.Seadragon');
Type.registerNamespace('Seadragon');


var QUOTA = 100;    // the max number of images we should keep in memory
var MIN_PIXEL_RATIO = 0.5;  // the most shrunk a tile should be


var browser = Seadragon.Utils.getBrowser();
var browserVer = Seadragon.Utils.getBrowserVersion();

var subpixelRenders = browser == Seadragon.Browser.FIREFOX ||
            browser == Seadragon.Browser.OPERA ||
            (browser == Seadragon.Browser.SAFARI && browserVer >= 4) ||
            (browser == Seadragon.Browser.CHROME && browserVer >= 2);

var useCanvas =
            typeof (document.createElement("canvas").getContext) == "function" &&
            subpixelRenders;
Sys.Extended.UI.Seadragon.Tile = function(level, x, y, bounds, exists, url) {
    this.level = level;
    this.x = x;
    this.y = y;
    this.bounds = bounds;   // where this tile fits, in normalized coordinates
    this.exists = exists;   // part of sparse image? tile hasn't failed to load?
    this.loaded = false;    // is this tile loaded?
    this.loading = false;   // or is this tile loading?



    this.elmt = null;       // the HTML element for this tile
    this.image = null;      // the Image object for this tile
    this.url = url;         // the URL of this tile's image


    this.style = null;      // alias of this.elmt.style
    this.position = null;   // this tile's position on screen, in pixels
    this.size = null;       // this tile's size on screen, in pixels
    this.blendStart = null; // the start time of this tile's blending
    this.opacity = null;    // the current opacity this tile should be
    this.distance = null;   // the distance of this tile to the viewport center
    this.visibility = null; // the visibility score of this tile

    this.beingDrawn = false; // whether this tile is currently being drawn
    this.lastTouchTime = 0; // the time that tile was last touched
}
Sys.Extended.UI.Seadragon.Tile.prototype = {
    dispose: function() {
    },
    toString: function() {
        return this.level + "/" + this.x + "_" + this.y;
    },
    drawHTML: function(container) {
        if (!this.loaded) {
            Seadragon.Debug.error("Attempting to draw tile " + this.toString() +
                    " when it's not yet loaded.");
            return;
        }

        if (!this.elmt) {
            this.elmt = Seadragon.Utils.makeNeutralElement("img");
            this.elmt.src = this.url;
            this.style = this.elmt.style;
            this.style.position = "absolute";
            this.style.msInterpolationMode = "nearest-neighbor";
        }

        var elmt = this.elmt;
        var style = this.style;
        var position = this.position.apply(Math.floor);
        var size = this.size.apply(Math.ceil);


        if (elmt.parentNode != container) {
            container.appendChild(elmt);
        }

        style.left = position.x + "px";
        style.top = position.y + "px";
        style.width = size.x + "px";
        style.height = size.y + "px";

        Seadragon.Utils.setElementOpacity(elmt, this.opacity);
    },
    drawCanvas: function(context) {
        if (!this.loaded) {
            Seadragon.Debug.error("Attempting to draw tile " + this.toString() +
                    " when it's not yet loaded.");
            return;
        }

        var position = this.position;
        var size = this.size;

        context.globalAlpha = this.opacity;
        context.drawImage(this.image, position.x, position.y, size.x, size.y);
    },
    unload: function() {
        if (this.elmt && this.elmt.parentNode) {
            this.elmt.parentNode.removeChild(this.elmt);
        }

        this.elmt = null;
        this.image = null;
        this.loaded = false;
        this.loading = false;
    }
}
Sys.Extended.UI.Seadragon.Tile.registerClass('Sys.Extended.UI.Seadragon.Tile', null, Sys.IDisposable);

Sys.Extended.UI.Seadragon.Overlay = function(elmt, loc, placement) {
    this.elmt = elmt;
    this.scales = (loc instanceof Sys.Extended.UI.Seadragon.Rect);
    this.bounds = new Sys.Extended.UI.Seadragon.Rect(loc.x, loc.y, loc.width, loc.height);
    this.placement = loc instanceof Sys.Extended.UI.Seadragon.Point ? placement : Sys.Extended.UI.Seadragon.OverlayPlacement.TOP_LEFT;    // rects are always top-left
    this.position = new Sys.Extended.UI.Seadragon.Point(loc.x, loc.y);
    this.size = new Sys.Extended.UI.Seadragon.Point(loc.width, loc.height);
    this.style = elmt.style;
}
Sys.Extended.UI.Seadragon.Overlay.prototype = {

    adjust: function(position, size) {
        switch (this.placement) {
            case Sys.Extended.UI.Seadragon.OverlayPlacement.TOP_LEFT:
                break;
            case Sys.Extended.UI.Seadragon.OverlayPlacement.TOP:
                position.x -= size.x / 2;
                break;
            case Sys.Extended.UI.Seadragon.OverlayPlacement.TOP_RIGHT:
                position.x -= size.x;
                break;
            case Sys.Extended.UI.Seadragon.OverlayPlacement.RIGHT:
                position.x -= size.x;
                position.y -= size.y / 2;
                break;
            case Sys.Extended.UI.Seadragon.OverlayPlacement.BOTTOM_RIGHT:
                position.x -= size.x;
                position.y -= size.y;
                break;
            case Sys.Extended.UI.Seadragon.OverlayPlacement.BOTTOM:
                position.x -= size.x / 2;
                position.y -= size.y;
                break;
            case Sys.Extended.UI.Seadragon.OverlayPlacement.BOTTOM_LEFT:
                position.y -= size.y;
                break;
            case Sys.Extended.UI.Seadragon.OverlayPlacement.LEFT:
                position.y -= size.y / 2;
                break;
            case Sys.Extended.UI.Seadragon.OverlayPlacement.CENTER:
            default:
                position.x -= size.x / 2;
                position.y -= size.y / 2;
                break;
        }
    },
    destroy: function() {
        var elmt = this.elmt;
        var style = this.style;

        if (elmt.parentNode) {
            elmt.parentNode.removeChild(elmt);
        }

        style.top = "";
        style.left = "";
        style.position = "";

        if (this.scales) {
            style.width = "";
            style.height = "";
        }
    },
    drawHTML: function(container) {
        var elmt = this.elmt;
        var style = this.style;
        var scales = this.scales;

        if (elmt.parentNode != container) {
            container.appendChild(elmt);
        }

        if (!scales) {
            this.size = Seadragon.Utils.getElementSize(elmt);
        }

        var position = this.position;
        var size = this.size;

        this.adjust(position, size);

        position = position.apply(Math.floor);
        size = size.apply(Math.ceil);

        style.left = position.x + "px";
        style.top = position.y + "px";
        style.position = "absolute";

        if (scales) {
            style.width = size.x + "px";
            style.height = size.y + "px";
        }
    },
    update: function(loc, placement) {
        this.scales = (loc instanceof Sys.Extended.UI.Seadragon.Rect);
        this.bounds = new Sys.Extended.UI.Seadragon.Rect(loc.x, loc.y, loc.width, loc.height);
        this.placement = loc instanceof Sys.Extended.UI.Seadragon.Point ?
                placement : Sys.Extended.UI.Seadragon.OverlayPlacement.TOP_LEFT;    // rects are always top-left
    }

}
Sys.Extended.UI.Seadragon.Overlay.registerClass('Sys.Extended.UI.Seadragon.Overlay', null, Sys.IDisposable);

Sys.Extended.UI.Seadragon.Drawer = function(source, viewport, elmt) {

	this._container = Seadragon.Utils.getElement(elmt);
	this._canvas = Seadragon.Utils.makeNeutralElement(useCanvas ? "canvas" : "div");
	this._context = useCanvas ? this._canvas.getContext("2d") : null;
	this._viewport = viewport;
	this._source = source;
	this.config = this._viewport.config;

	this._imageLoader = new Sys.Extended.UI.Seadragon.ImageLoader(this.config.imageLoaderLimit);
	this._profiler = new Sys.Extended.UI.Seadragon.Profiler();

	this._minLevel = source.minLevel;
	this._maxLevel = source.maxLevel;
	this._tileSize = source.tileSize;
	this._tileOverlap = source.tileOverlap;
	this._normHeight = source.dimensions.y / source.dimensions.x;

	this._cacheNumTiles = {};     // 1d dictionary [level] --> Point
	this._cachePixelRatios = {};  // 1d dictionary [level] --> Point
	this._tilesMatrix = {};       // 3d dictionary [level][x][y] --> Tile
	this._tilesLoaded = [];       // unordered list of Tiles with loaded images
	this._coverage = {};          // 3d dictionary [level][x][y] --> Boolean

	this._overlays = [];          // unordered list of Overlays added
	this._lastDrawn = [];         // unordered list of Tiles drawn last frame
	this._lastResetTime = 0;
	this._midUpdate = false;
	this._updateAgain = true;


	this.elmt = this._container;


	this._init();
}
Sys.Extended.UI.Seadragon.Drawer.prototype = {
    dispose: function() {
    },
    _init: function() {
        this._canvas.style.width = "100%";
        this._canvas.style.height = "100%";
        this._canvas.style.position = "absolute";
        this._container.style.textAlign = "left";    // explicit left-align
        this._container.appendChild(this._canvas);
    },
    _compareTiles: function(prevBest, tile) {
        if (!prevBest) {
            return tile;
        }

        if (tile.visibility > prevBest.visibility) {
            return tile;
        } else if (tile.visibility == prevBest.visibility) {
            if (tile.distance < prevBest.distance) {
                return tile;
            }
        }

        return prevBest;
    },
    _getNumTiles: function(level) {
        if (!this._cacheNumTiles[level]) {
            this._cacheNumTiles[level] = this._source.getNumTiles(level);
        }

        return this._cacheNumTiles[level];
    },

    _getPixelRatio: function(level) {
        if (!this._cachePixelRatios[level]) {
            this._cachePixelRatios[level] = this._source.getPixelRatio(level);
        }

        return this._cachePixelRatios[level];
    },


    _getTile: function(level, x, y, time, numTilesX, numTilesY) {
        if (!this._tilesMatrix[level]) {
            this._tilesMatrix[level] = {};
        }
        if (!this._tilesMatrix[level][x]) {
            this._tilesMatrix[level][x] = {};
        }

        if (!this._tilesMatrix[level][x][y]) {
            var xMod = (numTilesX + (x % numTilesX)) % numTilesX;
            var yMod = (numTilesY + (y % numTilesY)) % numTilesY;
            var bounds = this._source.getTileBounds(level, xMod, yMod);
            var exists = this._source.tileExists(level, xMod, yMod);
            var url = this._source.getTileUrl(level, xMod, yMod);

            bounds.x += 1.0 * (x - xMod) / numTilesX;
            bounds.y += this._normHeight * (y - yMod) / numTilesY;

            this._tilesMatrix[level][x][y] = new Sys.Extended.UI.Seadragon.Tile(level, x, y, bounds, exists, url);
        }

        var tile = this._tilesMatrix[level][x][y];

        tile.lastTouchTime = time;

        return tile;
    },

    _loadTile: function(tile, time) {
        tile.loading = this._imageLoader.loadImage(tile.url,
                    Seadragon.Utils.createCallback(null, Function.createDelegate(this, this._onTileLoad), tile, time));
    },

    _onTileLoad: function(tile, time, image) {
        tile.loading = false;

        if (this._midUpdate) {
            Seadragon.Debug.error("Tile load callback in middle of drawing routine.");
            return;
        } else if (!image) {
            Seadragon.Debug.log("Tile " + tile + " failed to load: " + tile.url);
            tile.exists = false;
            return;
        } else if (time < this._lastResetTime) {
            Seadragon.Debug.log("Ignoring tile " + tile + " loaded before reset: " + tile.url);
            return;
        }

        tile.loaded = true;
        tile.image = image;

        var insertionIndex = this._tilesLoaded.length;

        if (this._tilesLoaded.length >= QUOTA) {
            var cutoff = Math.ceil(Math.log(this._tileSize) / Math.log(2));

            var worstTile = null;
            var worstTileIndex = -1;

            for (var i = this._tilesLoaded.length - 1; i >= 0; i--) {
                var prevTile = this._tilesLoaded[i];

                if (prevTile.level <= this._cutoff || prevTile.beingDrawn) {
                    continue;
                } else if (!worstTile) {
                    worstTile = prevTile;
                    worstTileIndex = i;
                    continue;
                }

                var prevTime = prevTile.lastTouchTime;
                var worstTime = worstTile.lastTouchTime;
                var prevLevel = prevTile.level;
                var worstLevel = worstTile.level;

                if (prevTime < worstTime ||
                            (prevTime == worstTime && prevLevel > worstLevel)) {
                    worstTile = prevTile;
                    worstTileIndex = i;
                }
            }

            if (worstTile && worstTileIndex >= 0) {
                worstTile.unload();
                insertionIndex = worstTileIndex;
            }
        }

        this._tilesLoaded[insertionIndex] = tile;
        this._updateAgain = true;
    },

    _clearTiles: function() {
        this._tilesMatrix = {};
        this._tilesLoaded = [];
    },



    /**
    * Returns true if the given tile provides coverage to lower-level tiles of
    * lower resolution representing the same content. If neither x nor y is
    * given, returns true if the entire visible level provides coverage.
    * 
    * Note that out-of-bounds tiles provide coverage in this sense, since
    * there's no content that they would need to cover. Tiles at non-existent
    * levels that are within the image bounds, however, do not.
    */
    _providesCoverage: function(level, x, y) {
        if (!this._coverage[level]) {
            return false;
        }

        if (x === undefined || y === undefined) {
            var rows = this._coverage[level];
            for (var i in rows) {
                if (rows.hasOwnProperty(i)) {
                    var cols = rows[i];
                    for (var j in cols) {
                        if (cols.hasOwnProperty(j) && !cols[j]) {
                            return false;
                        }
                    }
                }
            }

            return true;
        }

        return (this._coverage[level][x] === undefined ||
                    this._coverage[level][x][y] === undefined ||
                    this._coverage[level][x][y] === true);
    },

    /**
    * Returns true if the given tile is completely covered by higher-level
    * tiles of higher resolution representing the same content. If neither x
    * nor y is given, returns true if the entire visible level is covered.
    */
    _isCovered: function(level, x, y) {
        if (x === undefined || y === undefined) {
            return this._providesCoverage(level + 1);
        } else {
            return (this._providesCoverage(level + 1, 2 * x, 2 * y) &&
                        this._providesCoverage(level + 1, 2 * x, 2 * y + 1) &&
                        this._providesCoverage(level + 1, 2 * x + 1, 2 * y) &&
                        this._providesCoverage(level + 1, 2 * x + 1, 2 * y + 1));
        }
    },

    /**
    * Sets whether the given tile provides coverage or not.
    */
    _setCoverage: function(level, x, y, covers) {
        if (!this._coverage[level]) {
            Seadragon.Debug.error("Setting coverage for a tile before its " +
                        "level's coverage has been reset: " + level);
            return;
        }

        if (!this._coverage[level][x]) {
            this._coverage[level][x] = {};
        }

        this._coverage[level][x][y] = covers;
    },

    /**
    * Resets coverage information for the given level. This should be called
    * after every draw routine. Note that at the beginning of the next draw
    * routine, coverage for every visible tile should be explicitly set. 
    */
    _resetCoverage: function(level) {
        this._coverage[level] = {};
    },


    _compareTiles: function(prevBest, tile) {
        if (!prevBest) {
            return tile;
        }

        if (tile.visibility > prevBest.visibility) {
            return tile;
        } else if (tile.visibility == prevBest.visibility) {
            if (tile.distance < prevBest.distance) {
                return tile;
            }
        }

        return prevBest;
    },


    _getOverlayIndex: function(elmt) {
        for (var i = this._overlays.length - 1; i >= 0; i--) {
            if (this._overlays[i].elmt == elmt) {
                return i;
            }
        }

        return -1;
    },


    _updateActual: function() {
        this._updateAgain = false;

        var _canvas = this._canvas;
        var _context = this._context;
        var _container = this._container;
        var _useCanvas = useCanvas;
        var _lastDrawn = this._lastDrawn;

        while (_lastDrawn.length > 0) {
            var tile = _lastDrawn.pop();
            tile.beingDrawn = false;
        }

        var viewportSize = this._viewport.getContainerSize();
        var viewportWidth = viewportSize.x;
        var viewportHeight = viewportSize.y;

        _canvas.innerHTML = "";
        if (_useCanvas) {
            _canvas.width = viewportWidth;
            _canvas.height = viewportHeight;
            _context.clearRect(0, 0, viewportWidth, viewportHeight);
        }

        var viewportBounds = this._viewport.getBounds(true);
        var viewportTL = viewportBounds.getTopLeft();
        var viewportBR = viewportBounds.getBottomRight();
        if (!this.config.wrapHorizontal &&
                    (viewportBR.x < 0 || viewportTL.x > 1)) {
            return;
        } else if (!this.config.wrapVertical &&
                    (viewportBR.y < 0 || viewportTL.y > this._normHeight)) {
            return;
        }




        var _abs = Math.abs;
        var _ceil = Math.ceil;
        var _floor = Math.floor;
        var _log = Math.log;
        var _max = Math.max;
        var _min = Math.min;
        var alwaysBlend = this.config.alwaysBlend;
        var blendTimeMillis = 1000 * this.config.blendTime;
        var immediateRender = this.config.immediateRender;
        var minDimension = this.config.minZoomDimension;   // for backwards compatibility
        var minImageRatio = this.config.minImageRatio;
        var wrapHorizontal = this.config.wrapHorizontal;
        var wrapVertical = this.config.wrapVertical;

        if (!wrapHorizontal) {
            viewportTL.x = _max(viewportTL.x, 0);
            viewportBR.x = _min(viewportBR.x, 1);
        }
        if (!wrapVertical) {
            viewportTL.y = _max(viewportTL.y, 0);
            viewportBR.y = _min(viewportBR.y, this._normHeight);
        }

        var best = null;
        var haveDrawn = false;
        var currentTime = new Date().getTime();

        var viewportCenter = this._viewport.pixelFromPoint(this._viewport.getCenter());
        var zeroRatioT = this._viewport.deltaPixelsFromPoints(this._source.getPixelRatio(0), false).x;
        var optimalPixelRatio = immediateRender ? 1 : zeroRatioT;

        minDimension = minDimension || 64;
        var lowestLevel = _max(this._minLevel, _floor(_log(minDimension) / _log(2)));
        var zeroRatioC = this._viewport.deltaPixelsFromPoints(this._source.getPixelRatio(0), true).x;
        var highestLevel = _min(this._maxLevel,
                    _floor(_log(zeroRatioC / MIN_PIXEL_RATIO) / _log(2)));

        lowestLevel = _min(lowestLevel, highestLevel);

        for (var level = highestLevel; level >= lowestLevel; level--) {
            var drawLevel = false;
            var renderPixelRatioC = this._viewport.deltaPixelsFromPoints(
                        this._source.getPixelRatio(level), true).x;     // note the .x!

            if ((!haveDrawn && renderPixelRatioC >= MIN_PIXEL_RATIO) ||
                        level == lowestLevel) {
                drawLevel = true;
                haveDrawn = true;
            } else if (!haveDrawn) {
                continue;
            }

            this._resetCoverage(level);

            var levelOpacity = _min(1, (renderPixelRatioC - 0.5) / 0.5);
            var renderPixelRatioT = this._viewport.deltaPixelsFromPoints(
                        this._source.getPixelRatio(level), false).x;
            var levelVisibility = optimalPixelRatio /
                        _abs(optimalPixelRatio - renderPixelRatioT);

            var tileTL = this._source.getTileAtPoint(level, viewportTL);
            var tileBR = this._source.getTileAtPoint(level, viewportBR);
            var numTiles = this._getNumTiles(level);
            var numTilesX = numTiles.x;
            var numTilesY = numTiles.y;
            if (!wrapHorizontal) {
                tileBR.x = _min(tileBR.x, numTilesX - 1);
            }
            if (!wrapVertical) {
                tileBR.y = _min(tileBR.y, numTilesY - 1);
            }

            for (var x = tileTL.x; x <= tileBR.x; x++) {
                for (var y = tileTL.y; y <= tileBR.y; y++) {
                    var tile = this._getTile(level, x, y, currentTime, numTilesX, numTilesY);
                    var drawTile = drawLevel;

                    this._setCoverage(level, x, y, false);

                    if (!tile.exists) {
                        continue;
                    }

                    if (haveDrawn && !drawTile) {
                        if (this._isCovered(level, x, y)) {
                            this._setCoverage(level, x, y, true);
                        } else {
                            drawTile = true;
                        }
                    }

                    if (!drawTile) {
                        continue;
                    }

                    var boundsTL = tile.bounds.getTopLeft();
                    var boundsSize = tile.bounds.getSize();
                    var positionC = this._viewport.pixelFromPoint(boundsTL, true);
                    var sizeC = this._viewport.deltaPixelsFromPoints(boundsSize, true);

                    if (!this._tileOverlap) {
                        sizeC = sizeC.plus(new Sys.Extended.UI.Seadragon.Point(1, 1));
                    }

                    var positionT = this._viewport.pixelFromPoint(boundsTL, false);
                    var sizeT = this._viewport.deltaPixelsFromPoints(boundsSize, false);
                    var tileCenter = positionT.plus(sizeT.divide(2));
                    var tileDistance = viewportCenter.distanceTo(tileCenter);

                    tile.position = positionC;
                    tile.size = sizeC;
                    tile.distance = tileDistance;
                    tile.visibility = levelVisibility;

                    if (tile.loaded) {
                        if (!tile.blendStart) {
                            tile.blendStart = currentTime;
                        }

                        var deltaTime = currentTime - tile.blendStart;
                        var opacity = _min(1, deltaTime / blendTimeMillis);
                        
                        if (alwaysBlend) {
                            opacity *= levelOpacity;
                        }

                        tile.opacity = opacity;

                        _lastDrawn.push(tile);

                        if (opacity == 1) {
                            this._setCoverage(level, x, y, true);
                        } else if (deltaTime < blendTimeMillis) {
                            updateAgain = true;
                        }
                    } else if (tile.Loading) {
                    } else {
                        best = this._compareTiles(best, tile);
                    }
                }
            }

            if (this._providesCoverage(level)) {
                break;
            }
        }

        for (var i = _lastDrawn.length - 1; i >= 0; i--) {
            var tile = _lastDrawn[i];

            if (_useCanvas) {
                tile.drawCanvas(_context);
            } else {
                tile.drawHTML(_canvas);
            }

            tile.beingDrawn = true;
        }

        var numOverlays = this._overlays.length;
        for (var i = 0; i < numOverlays; i++) {
            var overlay = this._overlays[i];
            var bounds = overlay.bounds;

            overlay.position = this._viewport.pixelFromPoint(bounds.getTopLeft(), true);
            overlay.size = this._viewport.deltaPixelsFromPoints(bounds.getSize(), true);
            overlay.drawHTML(_container);
        }

        if (best) {
            this._loadTile(best, currentTime);
            this._updateAgain = true; // because we haven't finished drawing, so
        }
    },


    addOverlay: function(elmt, loc, placement) {
        var elmt = Seadragon.Utils.getElement(elmt);

        if (this._getOverlayIndex(elmt) >= 0) {
            return;     // they're trying to add a duplicate overlay
        }

        this._overlays.push(new Sys.Extended.UI.Seadragon.Overlay(elmt, loc, placement));
        this._updateAgain = true;
    },

    updateOverlay: function(elmt, loc, placement) {
        var elmt = Seadragon.Utils.getElement(elmt);
        var i = this._getOverlayIndex(elmt);

        if (i >= 0) {
            this._overlays[i].update(loc, placement);
            this._updateAgain = true;
        }
    },

    removeOverlay: function(elmt) {
        var elmt = Seadragon.Utils.getElement(elmt);
        var i = this._getOverlayIndex(elmt);

        if (i >= 0) {
            this._overlays[i].destroy();
            this._overlays.splice(i, 1);
            this._updateAgain = true;
        }
    },

    clearOverlays: function() {
        while (this._overlays.length > 0) {
            this._overlays.pop().destroy();
            this._updateAgain = true;
        }
    },


    needsUpdate: function() {
        return this._updateAgain;
    },

    numTilesLoaded: function() {
        return this._tilesLoaded.length;
    },

    reset: function() {
        this._clearTiles();
        this._lastResetTime = new Date().getTime();
        this._updateAgain = true;
    },

    update: function() {
        this._profiler.beginUpdate();
        this._midUpdate = true;
        this._updateActual();
        this._midUpdate = false;
        this._profiler.endUpdate();
    },

    idle: function() {
    }
}
Sys.Extended.UI.Seadragon.Drawer.registerClass('Sys.Extended.UI.Seadragon.Drawer', null, Sys.IDisposable);

�// (c) 2010 CodePlex Foundation
Type.registerNamespace('Sys.Extended.UI.Seadragon');

Sys.Extended.UI.Seadragon.DisplayRect = function(x, y, width, height, minLevel, maxLevel) {
Sys.Extended.UI.Seadragon.DisplayRect.initializeBase(this, [x, y, width, height]);

    this.minLevel = minLevel;
    this.maxLevel = maxLevel;
}
Sys.Extended.UI.Seadragon.DisplayRect.registerClass('Sys.Extended.UI.Seadragon.DisplayRect', Sys.Extended.UI.Seadragon.Rect);
�// (c) 2010 CodePlex Foundation
Type.registerNamespace("Sys.Extended.UI.Seadragon");Sys.Extended.UI.Seadragon.DziError=function(a){Sys.Extended.UI.Seadragon.DziError.initializeBase(this,[a]);this.message=a};Sys.Extended.UI.Seadragon.DziError.registerClass("Sys.Extended.UI.Seadragon.DziError",Error);Sys.Extended.UI.Seadragon.DziTileSource=function(h,g,e,c,f,d,b){var a=this;Sys.Extended.UI.Seadragon.DziTileSource.initializeBase(a,[h,g,e,c,null,null]);a._levelRects={};a.tilesUrl=f;a.fileFormat=d;a.displayRects=b;a._init()};Sys.Extended.UI.Seadragon.DziTileSource.prototype={_init:function(){var a=this;if(!a.displayRects)return;for(var d=a.displayRects.length-1;d>=0;d--)for(var c=a.displayRects[d],b=c.minLevel;b<=c.maxLevel;b++){if(!a._levelRects[b])a._levelRects[b]=[];a._levelRects[b].push(c)}},getTileUrl:function(a,b,c){return[this.tilesUrl,a,"/",b,"_",c,".",this.fileFormat].join("")},tileExists:function(c,k,l){var a=this,d=a._levelRects[c];if(!d||!d.length)return true;for(var j=d.length-1;j>=0;j--){var b=d[j];if(c<b.minLevel||c>b.maxLevel)continue;var e=a.getLevelScale(c),f=b.x*e,g=b.y*e,h=f+b.width*e,i=g+b.height*e;f=Math.floor(f/a.tileSize);g=Math.floor(g/a.tileSize);h=Math.ceil(h/a.tileSize);i=Math.ceil(i/a.tileSize);if(f<=k&&k<h&&g<=l&&l<i)return true}return false}};Sys.Extended.UI.Seadragon.DziTileSource.registerClass("Sys.Extended.UI.Seadragon.DziTileSource",Sys.Extended.UI.Seadragon.TileSource);Sys.Extended.UI.Seadragon._DziTileSourceHelper=function(){};Sys.Extended.UI.Seadragon._DziTileSourceHelper.prototype={createFromXml:function(h,e,f){var b=null,a=this,i=typeof f=="function",d=b;if(!h){a.error=Seadragon.Strings.getString("Errors.Empty");if(i){window.setTimeout(function(){f(b,d)},1);return b}throw new Sys.Extended.UI.Seadragon.DziError(d);}var c=h.split("/"),j=c[c.length-1],l=j.lastIndexOf(".");if(l>-1)c[c.length-1]=j.slice(0,l);var m=c.join("/")+"_files/";function g(a,c){try{return a(c,m)}catch(e){if(i){d=this.getError(e).message;return b}else throw this.getError(e);}}if(i){if(e){var k=Function.createDelegate(a,a.processResponse);window.setTimeout(function(){var a=g(k,Seadragon.Utils.parseXml(e));f(a,d)},1)}else{var k=Function.createDelegate(a,a.processResponse);Seadragon.Utils.makeAjaxRequest(h,function(b){var a=g(k,b);f(a,d)})}return b}return e?g(Function.createDelegate(a,a.processXml),Seadragon.Utils.parseXml(e)):g(Function.createDelegate(a,a.processResponse),Seadragon.Utils.makeAjaxRequest(h))},processResponse:function(a,e){if(!a)throw new Sys.Extended.UI.Seadragon.DziError(Seadragon.Strings.getString("Errors.Security"));else if(a.status!==200&&a.status!==0){var c=a.status,d=c==404?"Not Found":a.statusText;throw new Sys.Extended.UI.Seadragon.DziError(Seadragon.Strings.getString("Errors.Status",c,d));}var b=null;if(a.responseXML&&a.responseXML.documentElement)b=a.responseXML;else if(a.responseText)b=Seadragon.Utils.parseXml(a.responseText);return this.processXml(b,e)},processXml:function(c,e){var a="Errors.Dzi";if(!c||!c.documentElement)throw new Sys.Extended.UI.Seadragon.DziError(Seadragon.Strings.getString("Errors.Xml"));var d=c.documentElement,b=d.tagName;if(b=="Image")try{return this.processDzi(d,e)}catch(g){var f=Seadragon.Strings.getString(a);throw g instanceof Sys.Extended.UI.Seadragon.DziError?g:new Sys.Extended.UI.Seadragon.DziError(f);}else if(b=="Collection")throw new Sys.Extended.UI.Seadragon.DziError(Seadragon.Strings.getString("Errors.Dzc"));else if(b=="Error")return this.processError(d);throw new Sys.Extended.UI.Seadragon.DziError(Seadragon.Strings.getString(a));},processDzi:function(a,k){var c=a.getAttribute("Format");if(!Seadragon.Utils.imageFormatSupported(c))throw new Sys.Extended.UI.Seadragon.DziError(Seadragon.Strings.getString("Errors.ImageFormat",c.toUpperCase()));for(var h=a.getElementsByTagName("Size")[0],e=a.getElementsByTagName("DisplayRect"),m=parseInt(h.getAttribute("Width"),10),l=parseInt(h.getAttribute("Height"),10),j=parseInt(a.getAttribute("TileSize")),i=parseInt(a.getAttribute("Overlap")),g=[],d=0;d<e.length;d++){var f=e[d],b=f.getElementsByTagName("Rect")[0];g.push(new Seadragon.DisplayRect(parseInt(b.getAttribute("X"),10),parseInt(b.getAttribute("Y"),10),parseInt(b.getAttribute("Width"),10),parseInt(b.getAttribute("Height"),10),0,parseInt(f.getAttribute("MaxLevel"),10)))}return new Sys.Extended.UI.Seadragon.DziTileSource(m,l,j,i,k,c,g)},processError:function(b){var a=b.getElementsByTagName("Message")[0],c=a.firstChild.nodeValue;throw new Sys.Extended.UI.Seadragon.DziError(c);},getError:function(a){if(!(a instanceof DziError)){Seadragon.Debug.error(a.name+" while creating DZI from XML: "+a.message);a=new Sys.Extended.UI.Seadragon.DziError(Seadragon.Strings.getString("Errors.Unknown"))}}};Sys.Extended.UI.Seadragon.DziTileSourceHelper=new Sys.Extended.UI.Seadragon._DziTileSourceHelper;�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeBoxButton=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeBoxButton.initializeBase(this,[a]);this._designPanel=null};Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeBoxButton.prototype={_onmousedown:function(c){var a=false,b=this;if(b._designPanel==null)return a;if(b._designPanel.isPopup())return a;if(Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeBoxButton.callBaseMethod(b,"_onmousedown",[c])===null)return a;b.callMethod();return a},onEditPanelActivity:function(){this._designPanel=this._editPanel.get_activePanel()},callMethod:function(){return this._designPanel==null?false:this._designPanel.isPopup()?false:true}};Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeBoxButton.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeBoxButton",Sys.Extended.UI.HTMLEditor.ToolbarButton.BoxButton);�\Type.registerNamespace("Sys.Extended.UI.HTMLEditor");

Sys.Extended.UI.HTMLEditor.Trim = function(value) {
    return value.replace(/[\x00-\x1F]+/g,"");
};

Sys.Extended.UI.HTMLEditor.TrimAll = function(value) {
    return value.replace(/[\x00-\x1F]/g,"").replace(/^[\x20]+/g,"").replace(/[\x20]+$/g,"");
};

Sys.Extended.UI.HTMLEditor.isIE = (Sys.Browser.agent == Sys.Browser.InternetExplorer);
Sys.Extended.UI.HTMLEditor.isSafari = (Sys.Browser.agent == Sys.Browser.Safari);
Sys.Extended.UI.HTMLEditor.isOpera = (Sys.Browser.agent == Sys.Browser.Opera);

Sys.Extended.UI.HTMLEditor.tryReplaceRgb = function(value) {
    var result = value;
    var re  = /(rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\))/ig;

    function hex(d) {
        return (d < 16) ? ("0" + d.toString(16)) : d.toString(16);
    };
    function repl($0,$1,$2,$3,$4) {
        var r = parseInt($2);
        var g = parseInt($3);
        var b = parseInt($4);
        return "#" + hex(r) + hex(g) + hex(b);
    }
    try { // some versions of Safari don't support such replace
        result = result.replace(re, repl);
    } catch(e){}
    return result;
}

Sys.Extended.UI.HTMLEditor._getScrollTop = function(win) {
    var doc = win.document;
    var scrollTop = 0;
    if (typeof (win.pageYOffset) == 'number') {
        scrollTop = win.pageYOffset;
    }
    if (doc.body && doc.body.scrollTop) {
        scrollTop = doc.body.scrollTop;
    }
    else if (doc.documentElement && doc.documentElement.scrollTop) {
        scrollTop = doc.documentElement.scrollTop;
    }
    return scrollTop;
}

Sys.Extended.UI.HTMLEditor._getScrollLeft = function(win) {
    var doc = win.document;
    var scrollLeft = 0;
    if (typeof (win.pageXOffset) == 'number') {
        scrollLeft = win.pageXOffset;
    }
    else if (doc.body && doc.body.scrollLeft) {
        scrollLeft = doc.body.scrollLeft;
    }
    else if (doc.documentElement && doc.documentElement.scrollLeft) {
        scrollLeft = doc.documentElement.scrollLeft;
    }
    return scrollLeft;
}

Sys.Extended.UI.HTMLEditor.addFormOnSubmit = function(handler, editPanel) {
    var form = window.theForm;
    if (window.theForm != null && typeof window.theForm != "undefined") {
        if (form.HTMLEditor_editPanels == null || typeof form.HTMLEditor_editPanels == "undefined") {
            form.originalOnSubmit_HTMLEditor = window.theForm.onsubmit;
            form.HTMLEditor_editPanels = [];
            window.theForm.onsubmit = Sys.Extended.UI.HTMLEditor.EditPanelsOnSubmit;
            if (window.__doPostBack != null && typeof window.__doPostBack != "undefined") {
                if (window.__doPostBack_HTMLEditor_original == null || typeof window.__doPostBack_HTMLEditor_original == "undefined") {
                    window.__doPostBack_HTMLEditor_original = window.__doPostBack;
                    window.__doPostBack = Sys.Extended.UI.HTMLEditor.EditPanelsOnPostBack;
                }
            }
            if (window.ValidatorGetValue != null && typeof window.ValidatorGetValue != "undefined") {
                if (window.ValidatorGetValue_HTMLEditor_original == null || typeof window.ValidatorGetValue_HTMLEditor_original == "undefined") {
                    window.ValidatorGetValue_HTMLEditor_original = window.ValidatorGetValue;
                    window.ValidatorGetValue = Sys.Extended.UI.HTMLEditor.ValidatorGetValue;
                }
            }
        }
        form.HTMLEditor_editPanels.push({ handler: handler, editPanel: editPanel });
    }
}

Sys.Extended.UI.HTMLEditor.removeFormOnSubmit = function(handler) {
    var form = window.theForm;
    if (window.theForm != null && typeof window.theForm != "undefined") {
        var original = form.originalOnSubmit_HTMLEditor;
        if (form.HTMLEditor_editPanels != null && typeof form.HTMLEditor_editPanels != "undefined") {
            var newArr = [];
            for (var i = 0; i < form.HTMLEditor_editPanels.length; i++) {
                var cur = form.HTMLEditor_editPanels[i];
                if (cur.handler != handler) {
                    newArr.push(cur);
                }
            }
            form.HTMLEditor_editPanels = newArr;
            if (form.HTMLEditor_editPanels.length == 0) {
                window.theForm.onsubmit = original;
                form.originalOnSubmit_HTMLEditor = null;
                form.HTMLEditor_editPanels = null;
                if (window.__doPostBack_HTMLEditor_original != null && typeof window.__doPostBack_HTMLEditor_original != "undefined") {
                    window.__doPostBack = window.__doPostBack_HTMLEditor_original;
                    window.__doPostBack_HTMLEditor_original = null;
                }
                if (window.ValidatorGetValue_HTMLEditor_original != null && typeof window.ValidatorGetValue_HTMLEditor_original != "undefined") {
                    window.ValidatorGetValue = window.ValidatorGetValue_HTMLEditor_original;
                    window.ValidatorGetValue_HTMLEditor_original = null;
                }
            }
        }
    }
}

Sys.Extended.UI.HTMLEditor.EditPanelsOnSubmit = function(e) {
    var form = window.theForm;
    var ret = true;
    for (var i = 0; i < form.HTMLEditor_editPanels.length; i++) {
        var ret = form.HTMLEditor_editPanels[i].handler(e);
        if (!ret) break;
    }
    if (ret && form.originalOnSubmit_HTMLEditor != null && typeof form.originalOnSubmit_HTMLEditor != "undefined") {
        ret = form.originalOnSubmit_HTMLEditor(e);
    }
    if (!ret || !window.Page_IsValid) {
        for (var i = 0; i < form.HTMLEditor_editPanels.length; i++) {
            form.HTMLEditor_editPanels[i].editPanel._contentPrepared = false;
        }
    }
    return ret;
}

Sys.Extended.UI.HTMLEditor.ValidatorGetValue = function(id) {
    var component = $find(id);
    if (component != null) {
        var editPanel = null;
        if (Sys.Extended.UI.HTMLEditor.Editor.isInstanceOfType(component)) {
            editPanel = component.get_editPanel();
        } else if (Sys.Extended.UI.HTMLEditor.EditPanel.isInstanceOfType(component)) {
            editPanel = component;
        }
        if (editPanel != null) {
            var content = editPanel._contentForValidation;
            if (content == null || typeof content == "undefined") {
                content = editPanel.get_content();
            }
            return content;
        }
    }
    return window.ValidatorGetValue_HTMLEditor_original(id);
}

Sys.Extended.UI.HTMLEditor.EditPanelsOnPostBack = function(eventTarget, eventArgument) {
    var form = window.theForm;
    for(var i=0; i < form.HTMLEditor_editPanels.length; i++) {
        var ret = form.HTMLEditor_editPanels[i].handler(null);
        if(!ret) return false;
    }
    if (window.__doPostBack_HTMLEditor_original != null && typeof window.__doPostBack_HTMLEditor_original != "undefined") {
        return window.__doPostBack_HTMLEditor_original(eventTarget, eventArgument);
    }
    return true;
}

Sys.Extended.UI.HTMLEditor.getRealAttributeIE = function(element, name, source) {
    var value = source;
    var n_value = "";
    function tempFunc(p0,p1) {
        n_value = p1;
    }

    element.outerHTML.replace(new RegExp("^(?:<[^>]*?"+name+"=\")([^\"]*?)\"","ig"),tempFunc);
    if (n_value == "") {
        element.outerHTML.replace(new RegExp("^(?:<[^>]*?"+name+"=')([^']*?)'","ig"),tempFunc);
    }
    if (n_value == "") {
        element.outerHTML.replace(new RegExp("^(?:<[^>]*?"+name+"=)([^\s>]*?)","ig"),tempFunc);
    }
    if (value != n_value && n_value != "") {
        value = n_value;
        value = value.replace(/&amp;/g,"&");
    }
    return value;
}

Sys.Extended.UI.HTMLEditor.getRealAttribute = function(element,name) {
    var searchName = name.toLowerCase();
    var attrs = element.attributes;
    var value = "";
    for (i = 0; i < attrs.length; ++i) {
        var a = attrs.item(i);
        if (!a.specified) continue;

        var name = a.name.toLowerCase();
        if (name == searchName) {
            value = a.value;
            if (Sys.Extended.UI.HTMLEditor.isIE) {
                value = Sys.Extended.UI.HTMLEditor.getRealAttributeIE(element, name, value);
            }
            if (name == "src" || name == "href")
                value = value.replace(/(\(S\([A-Za-z0-9_]+\)\)\/)/,"");
            break;
        }
    }
    return value;
}

Sys.Extended.UI.HTMLEditor.enabledWordTags = [
    "img",
    "strong",
    "p",
    "b",
    "i",
    "u",
    "a",
    "h1",
    "h2",
    "h3",
    "h4",
    "h5",
    "h6",
    "table",
    "tbody",
    "tr",
    "td",
    "ul",
    "ol",
    "li",
    "span",
    "div",
    "font",
    "xml",
    "del",
    "ins",
    "em",
    "sub",
    "sup",
    "hr",
    "br"
];

Sys.Extended.UI.HTMLEditor.cleanUp = function(html) {
    var old_ret;

    var ret = Sys.Extended.UI.HTMLEditor.Trim(html.replace(/[\x00-\x1F]+/g," "))
             .replace(/^[^\u0000]+?<html(?:[^>]*?)>/gi,"").replace(/<\/html(?:[^>]*?)>[^\u0000]*$/gi,"")
             .replace(/<head(?:[^>]*?)>[^\u0000]*?<\/head(?:[^>]*?)>/gi,"")
             .replace(/<body[^>]*?>([^\u0000]*?)<\/body(?:[^>]*?)>/gi,"$1")
             .replace(/<\/?html(?:[^>]*?)>/gi,"")
             .replace(/<\/?head(?:[^>]*?)>/gi,"")
             .replace(/<\/?body(?:[^>]*?)>/gi,"")
             .replace(/<!--(\w|\W)+?-->/ig,"") // remove comments
             .replace(/(<[\/]?)(?:o|v|x|p|w|\?xml):(\w+)([^>]*?>)/ig,"$1$2$3") // remove prefixes
             .replace(/<(IMAGEDATA)([^>]*?)>/ig,"<img$2>") // replace ImageData
             .replace(/<p[^>]*><p>&nbsp;<\/p><\/p>/ig,"<br>") // remove empty P
             .replace(/<p[^>]*?\/>/ig,"").replace(/<(p|div)[^>]*?>&nbsp;<\/(\1)[^>]*?>/ig,"").replace(/<(p|div)[^>]*?><\/(\1)[^>]*?>/ig,"");

    do {
        old_ret = ret;
        ret = ret.replace(/<([^>]*)(?:class|size|lang|face|start|type|border|[ovwxp]:\w+)=(?:\'[^\']*\'|\"[^\"]*\"|[^> ]+)([^>]*)>/ig,  "<$1$2>");
    }
    while(ret != old_ret)


    var div = document.createElement("div");

    div.innerHTML = ret;

    function diver(elem) {
        var n = elem.childNodes.length;

        for(var i=0; i<elem.childNodes.length; i++) {
            var child = elem.childNodes.item(i);
            if(child.nodeType==1){
                if(child.tagName.indexOf("/")>=0) {
                    i--;
                    child.parentNode.removeChild(child);
                } else {
                    var search = child.tagName.toLowerCase();
                    var found  = false;
                    var nn     = Sys.Extended.UI.HTMLEditor.enabledWordTags.length;

                    for(var j=0; j < nn; j++) {
                        if(Sys.Extended.UI.HTMLEditor.enabledWordTags[j] == search) {
                            found = true;
                            break;
                        }
                    }
                    diver(child);
                    if(!found) {
                        i += child.childNodes.length;
                        while(child.firstChild) child.parentNode.insertBefore(child.firstChild,child);
                        child.parentNode.removeChild(child);
                        i--;
                    } else {
                        var s_background_color = child.style.backgroundColor;
                        var s_color            = child.style.color;

                        child.style.cssText ="";
                        child.removeAttribute("style");

                        if(child.getAttribute("width") && child.getAttribute("width").length > 0) child.style.width=child.getAttribute("width");
                        if(child.width && child.width.length > 0) child.style.width=child.width;
                        child.width ="";
                        try{child.removeAttribute("width");}catch(e){}

                        if(child.getAttribute("height") && child.getAttribute("height").length > 0) child.style.height=child.getAttribute("height");
                        if(child.height && child.height.length > 0) child.style.height=child.height;
                        child.height ="";
                        try{child.removeAttribute("height");}catch(e){}

                        if(search=="table") {
                            child.style.borderLeftWidth = "1px";
                            child.style.borderLeftColor = "black";
                            child.style.borderLeftStyle = "solid";
                            child.style.borderTopWidth  = "1px";   
                            child.style.borderTopColor  = "black"; 
                            child.style.borderTopStyle  = "solid";

                            child.style.backgroundColor = s_background_color;
                            child.style.color           = s_color;
                        }

                        if(search=="td") {
                            child.style.borderRightWidth  = "1px";
                            child.style.borderRightColor  = "black";
                            child.style.borderRightStyle  = "solid";
                            child.style.borderBottomWidth = "1px";   
                            child.style.borderBottomColor = "black"; 
                            child.style.borderBottomStyle = "solid";

                            child.style.backgroundColor   = s_background_color;
                            child.style.color             = s_color;
                        }

                        if(search=="font" || search=="span") {
                            child.style.backgroundColor = s_background_color;
                            child.style.color           = s_color;

                            var attrs = child.attributes;
                            var n =0;
                            for (var m = 0; m < attrs.length; ++m) {
                                var a = attrs.item(m);
                                if (!a.specified) continue;
                                n++;
                            }

                            if(n== 0 && child.style.cssText=="") {
                                i += child.childNodes.length;
                                while(child.firstChild) child.parentNode.insertBefore(child.firstChild,child);
                                child.parentNode.removeChild(child);
                                i--;
                            }
                        }
                    }
                }
            }
        }
    }

    diver(div);
    ret = Sys.Extended.UI.HTMLEditor.Trim(div.innerHTML);
    delete div;

    
    ret = ret.replace(/<[\/]?(xml|del|ins)[^>]*?>/ig,"") // remove some tags (content should be remained)
         .replace(/<(p|div)[^>]*?>/ig,"") // remove P, DIV tags (content should be remained) <br> is added
         .replace(/<\/(p|div)[^>]*?>/ig,"<br>");

    do {
        old_ret = ret;
        ret = ret.replace(/<b><\/b>/ig,"").replace(/<i><\/i>/ig,"").replace(/<u><\/u>/ig,"").replace(/<strong><\/strong>/ig,"").replace(/<em><\/em>/ig,"").replace(/<sub><\/sub>/ig,"").replace(/<sup><\/sup>/ig,"");
        ret = ret.replace(/<span[^>]*?><\/span>/ig,"").replace(/<span>([^<]+?)<\/span>/ig,"$1");
        ret = ret.replace(/<font[^>]*?><\/font>/ig,"").replace(/<font>([^<]+?)<\/font>/ig,"$1");
    }
    while(ret != old_ret)

    ret = ret.replace(/&rsquo;/g,  "'")
         .replace(/&lsquo;/g,  "'")
         .replace(/&ndash;/g,  "-")
         .replace(/&mdash;/g,  "-")
         .replace(/&hellip;/g, "...")
         .replace(/&quot;/g,   "\"")
         .replace(/&ldquo;/g,  "\"")
         .replace(/&rdquo;/g,  "\"")
         .replace(//g,        "")
         .replace(/&bull;/g,   "")
         .replace(/[ \s]+/g," ").replace(/((&nbsp;)+)/g,"&nbsp;"); // remove extra spaces

    if(document.all) ret = ret.replace(/^[\x00-\x1F]*&nbsp;/,"");

    return ret;
};

Sys.Extended.UI.HTMLEditor.spanJoiner = function(element,doc, sFrom, sTo, nobr) {
    var sIndex  = 0;
    var sLength = element.childNodes.length;

    if(typeof sFrom != "undefined" && sFrom != null) sIndex  = sFrom;
    if(typeof sTo   != "undefined" && sTo   != null) sLength = sTo;

    for(var i=sIndex; i < sLength && i < element.childNodes.length; i++) {
        var child = element.childNodes.item(i)
        if (child.parentNode != element) {
            continue;
        }
        switch (child.nodeType) {
            case 1: // Node.ELEMENT_NODE
            if(child.childNodes.length==0 && Sys.Extended.UI.HTMLEditor.isStyleTag(child.tagName) && child.tagName.toUpperCase() != "A" && !(child.className.length > 0 || (child.getAttribute("class") && child.getAttribute("class").length > 0)) && !Sys.Extended.UI.HTMLEditor.isTempElement(child)) {
                element.removeChild(child);
                i--;
                sLength--;
                continue;
            }                             

            if( child.tagName.toUpperCase()=="SPAN") {
                while(child.childNodes.length==1 && child.firstChild.nodeType==1) {
                    if(child.firstChild.tagName.toUpperCase()=="SPAN" && !Sys.Extended.UI.HTMLEditor.isTempElement(child.firstChild)) {
                        var attrs  = Sys.Extended.UI.HTMLEditor.differAttr (child.firstChild,[]);
                        var styles = Sys.Extended.UI.HTMLEditor.differStyle(child.firstChild);
                        var oldSpan   = child.firstChild;
                        var chieldren = oldSpan.childNodes;

                        while(oldSpan.firstChild != null) {
                            child.insertBefore(oldSpan.firstChild,oldSpan);
                        }

                        for(var j=0; j < styles.length; j++) {
                            if(styles[j][1]) {
                                try {
                                    if(child.style[styles[j][0]]) {
                                        if(styles[j][0].toLowerCase().indexOf("color") >= 0) {
                                            child.style[styles[j][0]] = styles[j][1];
                                        } else {
                                            try {
                                                var sv = child.style[styles[j][0]];

                                                child.style[styles[j][0]] = child.style[styles[j][0]]+" "+styles[j][1];

                                                if(sv == child.style[styles[j][0]]) {
                                                    child.style[styles[j][0]] = styles[j][1];
                                                }
                                            }
                                            catch(e) {
                                                child.style[styles[j][0]] = styles[j][1];
                                            }
                                        }
                                    } else {
                                        child.style[styles[j][0]] = styles[j][1];
                                    }
                                } catch (ee) {}
                            }
                        }
                        for(var j=0; j < attrs.length; j++) {
                            if(attrs[j][1]) {
                                child.setAttribute(attrs[j][0],attrs[j][1]);
                            }
                        }
                        child.removeChild(oldSpan);
                        continue;
                    } else {
                        if(child.firstChild.tagName.toUpperCase()=="SPAN" && Sys.Extended.UI.HTMLEditor.isTempElement(child.firstChild)) {
                            var svv = child.firstChild;
                            child.parentNode.insertBefore(child.firstChild,child);
                            child.parentNode.removeChild(child);
                            child = svv;
                        }
                    }

                    break;
                }

                var tempArr = [];
                var nextChild = child.nextSibling;

                while(!Sys.Extended.UI.HTMLEditor.isTempElement(child) && nextChild && i+1 < sLength && (nextChild.nodeType == 3 || (nextChild.nodeType == 1 &&
                      (nextChild.tagName.toUpperCase()=="SPAN" || (nextChild.tagName.toUpperCase()=="BR") && typeof nobr == "undefined") &&
                      !Sys.Extended.UI.HTMLEditor.isTempElement(nextChild)))) {
                    if(nextChild.nodeType == 3) {
                        if((""+nextChild.data+"").length==0) {
                            nextChild.parentNode.removeChild(nextChild);
                            nextChild = child.nextSibling;
                            sLength--;
                        } else {
                            break;
                        }
                    }
                    else {
                        if(nextChild.tagName.toUpperCase()=="BR") {
                            tempArr.push(nextChild);
                            nextChild = nextChild.nextSibling;
                        } else {
                            var attrs  = Sys.Extended.UI.HTMLEditor.differAttr (child,[], nextChild);
                            var styles = Sys.Extended.UI.HTMLEditor.differStyle(child,    nextChild);

                            if(attrs.length==0 && styles.length==0 && child.className == nextChild.className) {
                                var n = tempArr.length;

                                for(var j=0; j < n; j++) {
                                    child.appendChild(tempArr[j]);
                                    sLength--;
                                }
                                tempArr = [];

                                while(nextChild.firstChild) child.appendChild(nextChild.firstChild);
                                nextChild.parentNode.removeChild(nextChild);
                                nextChild = child.nextSibling;
                                sLength--;
                            } else {
                                break;
                            }
                        }
                    }
                }

                if(!Sys.Extended.UI.HTMLEditor.isTempElement(child) && child.className.length == 0) {
                    var attrs  = Sys.Extended.UI.HTMLEditor.differAttr (child,[]);
                    var styles = Sys.Extended.UI.HTMLEditor.differStyle(child   );

                    if(attrs.length==0 && styles.length==0) {
                        i--;
                        sLength--;
                        while(child.firstChild) {
                            child.parentNode.insertBefore(child.firstChild,child);
                            sLength++;
                        }
                        child.parentNode.removeChild(child);
                        continue;
                    }
                }
            }

            if(child.parentNode != null) {
                if(child.childNodes.length==0 && Sys.Extended.UI.HTMLEditor.isStyleTag(child.tagName) && child.tagName.toUpperCase() != "A" && !(child.className.length > 0 || (child.getAttribute("class") && child.getAttribute("class").length > 0)) && !Sys.Extended.UI.HTMLEditor.isTempElement(child)) {
                    element.removeChild(child);
                    i--;
                    sLength--;
                    continue;
                } else {
                    Sys.Extended.UI.HTMLEditor.spanJoiner(child,doc);
                }
            }
            break;
        }
    }
};

Sys.Extended.UI.HTMLEditor._styleTags = [
    "strong",
    "em",
    "u",
    "strike",
    "s",
    "span",
    "font",
    "b",
    "sub",
    "sup",
    "a",
    "i"
];

Sys.Extended.UI.HTMLEditor.isStyleTag = function(tag) {
    if(!tag) return false;
    for(var i=0; i< Sys.Extended.UI.HTMLEditor._styleTags.length; i++) {
        if(Sys.Extended.UI.HTMLEditor._styleTags[i].toLowerCase()==tag.toLowerCase()) return true;
    }
    return false;
};

Sys.Extended.UI.HTMLEditor.smartClassName = "MSIEparagraph";
Sys.Extended.UI.HTMLEditor.noContextMenuAttribute= "obout-no-contextmenu";

Sys.Extended.UI.HTMLEditor.isTempElement = function(el) {
    if(el.id && el.id.length > 0 && el.id.indexOf(Sys.Extended.UI.HTMLEditor.smartClassName) >= 0) return true;
    return false;
};

Sys.Extended.UI.HTMLEditor.differAttr = function(element,pr, comp) {
    var result = [];
    var parent = element.parentNode;

    if(typeof comp != "undefined") parent = comp;

    if(!parent || !parent.tagName || !Sys.Extended.UI.HTMLEditor.isStyleTag(parent.tagName)) parent = null;

    if(element.attributes)
    for (var i=0; i < element.attributes.length; i++) {
        var attr = element.attributes[i];
        var brk=false;

        for(var j=0; j < pr.length; j++) {
            if(attr.name.toUpperCase() == pr[j].toUpperCase()) {
                brk=true;
                break;
            }
        }

        if(brk) continue;

        if(attr.name.toUpperCase() == "STYLE") continue;
        if(attr.name.toUpperCase().substr(0,4) == "_MOZ") continue;
        if(attr.specified)
        if(parent && parent.attributes && parent.attributes[attr.name]) {
            var pattr= parent.attributes[attr.name];

            if(pattr) {
                if(attr.name != pattr.name || attr.value != pattr.value) {
                    result.push([attr.name, attr.value]);
                }
            }
        } else {
            if(attr.name.toUpperCase() == "CLASS" && attr.value =="") continue;
            result.push([attr.name, attr.value]);
        }
    }
    return result;
};

Sys.Extended.UI.HTMLEditor.differStyle = function(element, comp) {
    var result = [];
    var parent = element.parentNode;

    if(typeof comp != "undefined") parent = comp;

    if(!parent || !parent.tagName || !Sys.Extended.UI.HTMLEditor.isStyleTag(parent.tagName)) parent = null;

    function _putStyle(i,_style) {
        _style=""+_style;

        if(i.toLowerCase()=="textdecoration") {
            var _arr = _style.split(" ");

            for(var j=0; j<_arr.length; j++) {
                result.push([i, Sys.Extended.UI.HTMLEditor.Trim(_arr[j])]);
            }
        } else {
            result.push([i, _style]);
        }
    }

    for (var i in element.style) {
        if(i && typeof i == "string" && i != "accelerator") {
            var ii = i;
            
            if(!isNaN(parseInt(i))) {
                if(!Sys.Extended.UI.HTMLEditor.isSafari) {
                    continue;
                }
                ii = element.style[i];
            }

            var style = element.style[ii];
            
            if(style && typeof style == "string" && style != "accelerator") {
                if(parent && parent.style) {
                    var pstyle= parent.style [ii];

                    if(ii.toLowerCase() != "csstext" && ii.toLowerCase() != "length")
                    if(style != pstyle) {
                        _putStyle(ii, style);
                    }
                } else {
                    if(ii.toLowerCase() != "csstext" && ii.toLowerCase() != "length") {
                        _putStyle(ii, style);
                    }
                }
            }
        }
    }

    if(typeof comp != "undefined")
    for (var i in parent.style) {
        if(i && typeof i == "string" && i != "accelerator") {
            var ii = i;
            
            if(!isNaN(parseInt(i))) {
                if(!Sys.Extended.UI.HTMLEditor.isSafari) {
                    continue;
                }
                ii = element.style[i];
            }

            var style = parent.style[ii];
            if(style && typeof style == "string" && style != "accelerator") {
                var pstyle= element.style [ii];

                if(i.toLowerCase() != "csstext" && ii.toLowerCase() != "length")
                if(style != pstyle) {
                    _putStyle(ii, style);
                }
            }
        }
    }

    return result;
};

Sys.Extended.UI.HTMLEditor.brXHTML = function(str) {
    return str.replace(/<br>/ig, "<br/>");
};


Sys.Extended.UI.HTMLEditor._needsClosingTag = function(el) {
    var closingTags = " script style div span a del strong em u strike font b sub sup p iframe li ul ol placeholder textarea td tr ";
    return (closingTags.indexOf(" " + el.tagName.toLowerCase() + " ") != -1);
};

Sys.Extended.UI.HTMLEditor._encodeText_ = function(str) {
    return str.replace(/&/ig, "&amp;").replace(/</ig, "&lt;").replace(/>/ig, "&gt;").replace(/\"/ig, "&quot;").replace(/\xA0/ig, "&nbsp;");
};

Sys.Extended.UI.HTMLEditor._noNeedsClosingTag = function(el) {
    var closingTags = " hr br ";
    return (closingTags.indexOf(" " + el.tagName.toLowerCase() + " ") != -1);
};

Sys.Extended.UI.HTMLEditor.canBeInsideP = function(el,prize)
{
    if(el && el.style && el.style.display && el.style.display.toLowerCase()=="inline") return true;

    var name = el.tagName.toUpperCase();

    if(name.length==2) {
        if(name.substr(0,1)=="H" && parseInt(name.substr(1,1)) > 0) {
            return false;
        }
    }
    switch(name) {
        case "TBODY"      :
        case "TR"         :
        case "TD"         :
            if(typeof prize != "undefined") {
                var par = el.parentNode;
                while(par && par.tagName && par.tagName.toUpperCase() != "TABLE") par = par.parentNode;

                if(par.tagName.toUpperCase() == "TABLE" && par.style && par.style.display && par.style.display.toLowerCase() == "inline") {
                    return true;
                }
            }
        case "P"          :
        case "PRE"        :
        case "TABLE"      :
        case "OL"         :
        case "UL"         :
        case "LI"         :
        case "HR"         :
        case "DIV"        :
        case "BLOCKQUOTE" :
        case "FORM"       :
        case "FIELDSET"   :
        case "LEGEND"     :
            return false;
        default:
            return true;   
    }
};

Sys.Extended.UI.HTMLEditor.convertAlign = function(aval) {
    var value;
    var n;

    try { n = parseInt(aval)-1;}
    catch(e){return aval;}

    switch(n) {
        case  1:
            value = "left";
            break;
        case  2:
            value = "right";
            break;
        case  3:
            value = "texttop";
            break;
        case  4:
            value = "absmiddle";
            break;
        case  5:
            value = "baseline";
            break;
        case  6:
            value = "absbottom";
            break;
        case  7:
            value = "bottom";
            break;
        case  8:
            value = "middle";
            break;
        case  9:
            value = "top";
            break;
        default:
            value = aval.replace(/\"/g,"&quot;");
    }

    return value;
};

Sys.Extended.UI.HTMLEditor.getHTML = function(root, outputRoot, must)
{
    try {
        if(typeof must == "undefined") {
            if(!outputRoot && root.nodeType==1) {
                return root.innerHTML;
            } else {
                if(outputRoot && root.nodeType==1 && Sys.Extended.UI.HTMLEditor.isIE) {
                    return root.outerHTML;
                }
            }
        }
    } catch(e){}

    var html = new Sys.Extended.UI.HTMLEditor.jsDocument(true);
    Sys.Extended.UI.HTMLEditor._getHTML_(html, root, outputRoot);

    return html.toString();
};

Sys.Extended.UI.HTMLEditor._getHTML_ = function(html, root, outputRoot, must)
{
    switch (root.nodeType) {
        case 1: // Node.ELEMENT_NODE
        case 11: // Node.DOCUMENT_FRAGMENT_NODE
            if(root.tagName && root.tagName.indexOf("/") >= 0) {
                if(Sys.Extended.UI.HTMLEditor.isIE) {
                    var tag  = root.tagName.toLowerCase().substr(root.tagName.indexOf("/")+1);
                    var prev = root.previousSibling;

                    if(tag == "embed") return;

                    while(prev != null) {
                        if(prev.nodeType == root.nodeType && prev.tagName && prev.tagName.toLowerCase() == tag) {
                            html.append("</teo"+Sys.Extended.UI.HTMLEditor.smartClassName+":"+root.tagName.toLowerCase().substr(root.tagName.indexOf("/")+1)+">");
                            return;
                        }

                        prev = prev.previousSibling;
                    }
                }

                return;
            }

            var closed;
            var noSlash;
            var i;
            if (outputRoot && root.tagName.length >0) {
                var tag = root.tagName.toLowerCase();
                closed = (!(root.hasChildNodes() || Sys.Extended.UI.HTMLEditor._needsClosingTag(root)));
                noSlash= true;

                var scope = "";
                if(Sys.Extended.UI.HTMLEditor.isIE && root.scopeName && typeof root.scopeName != "undefined") {
                    scope = (root.scopeName.toUpperCase()=="HTML")?"":(root.scopeName+":");
                }

                if(Sys.Extended.UI.HTMLEditor.isIE && (closed || tag == "placeholder") && !Sys.Extended.UI.HTMLEditor._noNeedsClosingTag(root) && tag !="embed") {
                    var next = root.nextSibling;

                    while(next != null) {
                        if(next.nodeType == root.nodeType && next.tagName) {
                            var nextTagName = next.tagName;
                            if(nextTagName.indexOf("/") >= 0)
                            if(nextTagName.toLowerCase().substr(nextTagName.indexOf("/")+1) == tag) {
                                closed = false;
                                noSlash= false;
                                break;
                            }
                        }

                        next = next.nextSibling;
                    }
                }

                if(!Sys.Extended.UI.HTMLEditor.canBeInsideP(root)) {
                    html.append("\n");
                }

                html.append("<"+((!closed && !noSlash)?"teo"+Sys.Extended.UI.HTMLEditor.smartClassName+":":scope)+ tag);

                if(Sys.Extended.UI.HTMLEditor.isIE && root.name && root.name.length > 0) {
                    html.append(" name=\"" + root.name.replace(/\"/g,"&quot;") + '"');
                }
                if(Sys.Extended.UI.HTMLEditor.isIE && root.value && root.value.length > 0 && tag != "textarea") {
                    html.append(" value=\"" + root.value.replace(/\"/g,"&quot;") + '"');
                }
                if(Sys.Extended.UI.HTMLEditor.isIE && root.className && root.className.length > 0) {
                    html.append(" class=\"" + root.className.replace(/\"/g,"&quot;") + '"');
                }
                if(Sys.Extended.UI.HTMLEditor.isIE && root.align && root.align.length > 0) {
                    html.append(" align=\"" + root.align.replace(/\"/g,"&quot;") + '"');
                }
                if(Sys.Extended.UI.HTMLEditor.isIE && root.color && root.color.length > 0) {
                    html.append(" color=\"" + root.color.replace(/\"/g,"&quot;") + '"');
                }
                if(Sys.Extended.UI.HTMLEditor.isIE && root.size && root.size.length > 0 && root.size != "+0") {
                    html.append(" size=\"" + root.size.replace(/\"/g,"&quot;") + '"');
                }
                if(Sys.Extended.UI.HTMLEditor.isIE && root.shape && root.shape.length > 0) {
                    html.write(" shape" + '="' + root.shape.replace(/\"/g,"&quot;") + '"');
                }
                if(Sys.Extended.UI.HTMLEditor.isIE && root.coords && root.coords.length > 0) {
                    html.write(" coords" + '="' + root.coords.replace(/\"/g,"&quot;") + '"');
                }

                var attrs = root.attributes;
                var cssForSafari = null;
                for (i = 0; i < attrs.length; ++i) {
                    var a = attrs.item(i);
                    if (!a.specified) continue;

                    var name = a.name.toLowerCase();
                    if (name.substr(0, 4) == "_moz") {
                        continue;
                    }

                    if (name == "teoalign") {
                        continue;
                    }

                    var value;
                    if (name != 'style') {
                        if(name=='width') {
                            value= root.width;
                            if(Sys.Extended.UI.HTMLEditor.isIE && value == 0) {
                                var n_value = 0;

                                root.outerHTML.replace(new RegExp("^(?:<[^>]*?width=)([\\d]+)","ig"),function(p0,p1){n_value = p1;});

                                if(value != n_value) value = n_value;
                            }
                        }
                        else
                        if(name=='height') {
                            value= root.height;
                            if(Sys.Extended.UI.HTMLEditor.isIE && value == 0) {
                                var n_value = 0;

                                root.outerHTML.replace(new RegExp("^(?:<[^>]*?height=)([\\d]+)","ig"),function(p0,p1){n_value = p1;});

                                if(value != n_value) value = n_value;
                            }
                        }
                        else
                        if(Sys.Extended.UI.HTMLEditor.isIE && name=='name' && root.name && root.name.length > 0 )
                            continue;
                        else
                        if(Sys.Extended.UI.HTMLEditor.isIE && name=='value' && root.value && root.value.length > 0 )
                            continue;
                        else
                        if(Sys.Extended.UI.HTMLEditor.isIE && name=='align' && root.align && root.align.length > 0 )
                            continue;
                        else
                        if(Sys.Extended.UI.HTMLEditor.isIE && name=='class' && root.className && root.className.length > 0 )
                            continue;
                        else
                        if(Sys.Extended.UI.HTMLEditor.isIE && name=='color' && root.color && root.color.length > 0 )
                            continue;
                        else
                        if(Sys.Extended.UI.HTMLEditor.isIE && name=='size' && root.size && root.size.length > 0 )
                            continue;
                        else
                        if(Sys.Extended.UI.HTMLEditor.isIE && name=='shape' && root.shape && root.shape.length > 0 )
                            continue;
                        else
                        if(Sys.Extended.UI.HTMLEditor.isIE && name=='coords' && root.coords && root.coords.length > 0 )
                            continue;
                        else {
                            if(tag=="embed" && name=="align" && (Sys.Extended.UI.HTMLEditor.isIE)) {
                                value = Sys.Extended.UI.HTMLEditor.convertAlign(a.value);
                            }
                            else {
                                value = a.value;
                                if(Sys.Extended.UI.HTMLEditor.isSafari && name == "class") {
                                    if(/apple-style/ig.test(value)) {
                                        continue;
                                    }
                                }
                                if(name == "src" || name == "href") {
                                    if (Sys.Extended.UI.HTMLEditor.isIE) {
                                        value = Sys.Extended.UI.HTMLEditor.getRealAttributeIE(root, name, value);
                                    }
                                    value = value.replace(/(\(S\([A-Za-z0-9_]+\)\)\/)/,"");
                                }
                                value = value.replace(/\"/g,"&quot;");
                            }
                        }
                    } else {
                        if(Sys.Extended.UI.HTMLEditor.isSafari) {
                            cssForSafari = a.value;
                        }
                        continue;
                    }

                    var qchar = "\"";
                    if((""+value+"").indexOf("\"") >= 0) qchar="'";
                    if(name != null) html.append(" " + name + '=' + qchar + value + qchar);
                }

                if(root.style.cssText.length > 0 || cssForSafari != null) {
                    var name  = "style";
                    var re1 = /(url\((?:[^\)]*)\))/ig;
                    var urls = [];

                    function f2($0,$1) {
                        urls.push($1);
                    }

                    var value = ((cssForSafari !=null)?cssForSafari:root.style.cssText).toLowerCase();
                    value.replace(re1, f2);
                    var times = 0;

                    function f3() {
                        var temp = urls[times];
                        times++;
                        return temp;
                    }

                    value = Sys.Extended.UI.HTMLEditor.tryReplaceRgb(value.replace(re1, f3)).replace(/(font-weight\s*:\s*)(700)/ig, "$1bold")
                            .replace(/([\s]*-moz-[^;]*[;][\s]*)/ig, "").replace(/(-moz-.*)$/i, "")
                            .replace(/(background-position: 0% 0%[;]*[\s]*)/ig, "");
                    
                    if(Sys.Extended.UI.HTMLEditor.isSafari) {
                        function repSaf($0,$1,$2,$3) {
                            return $1+$2.replace(/(,)/g,"")+$3;
                        }
                        
                        value = value.replace(/(text-decoration:)([^;$]+)([;$])/ig, repSaf);
                    }
                    
                    if(Sys.Extended.UI.HTMLEditor.isSafari || Sys.Extended.UI.HTMLEditor.isOpera) {
                        function repSafOp($0,$1,$2,$3) {
                            return $1+$2.replace(/(['"])/g,"")+$3;
                        }
                        value = value.replace(/(font-family:)([^;]+)([;]*)/ig, repSafOp);
                    }

                    if(value.length > 0) {
                        var qchar = "\"";
                        if((""+value+"").indexOf("\"") >= 0) qchar="'";
                        html.append(" " + name + '=' + qchar + value + qchar);
                    }
                }

                html.append(closed ? " />" : ">");

                if(tag=="br") html.append("\n");
            }

            if(root.tagName && root.tagName.toUpperCase()=="SCRIPT") html.append(root.text);
            
            if(root.tagName && root.tagName.toUpperCase()=="STYLE") {
                html.append(root.innerHTML);
            } else {
                for (i = root.firstChild; i; i = i.nextSibling) {
                    Sys.Extended.UI.HTMLEditor._getHTML_(html,i, true)
                }
            }

            if (outputRoot && root.tagName.length >0 && !closed && noSlash) {
                html.append("</" + scope + root.tagName.toLowerCase() + ">");
            }
            break;
        case 3: // Node.TEXT_NODE
            html.append(Sys.Extended.UI.HTMLEditor._encodeText_(""+root.data+""));
            break;
        case 8: // Node.COMMENT_NODE
            if(root.length > 0) {
                html.append("<!--" + root.data + "-->");
                
            } else { // IE bug tricking (negative lengths happen there)
                html.append("<!---->");
            }
            break;
    }
};

Sys.Extended.UI.HTMLEditor.RemoveContextMenu = function() {
    var editor = this;
    var hhh=editor._contextElement.parentNode.removeChild(editor._contextElement);
    if (hhh) delete hhh;
    editor._contextElement=null;
    editor._contextTable=null;
    if (editor.__saved_range__){
        editor.__saved_range__.select();
        editor.__saved_range__=null;
    }
};

Sys.Extended.UI.HTMLEditor.contentEditable = function(el, prize) {
    while(el != null) {
        try {
            var mean  = null;
            if(el.contentEditable != null && typeof el.contentEditable != "undefined" && !(Sys.Extended.UI.HTMLEditor.isSafari || Sys.Extended.UI.HTMLEditor.isOpera)) {
                if(!el.contentEditable || el.contentEditable=="false") {
                    mean = false;
                } else {
                    mean = true;
                }
            }
            else {
                var value = el.getAttribute("contenteditable");

                if(typeof value == "boolean") {
                    mean = value;
                } else {
                    if(typeof value == "string" && value.toLowerCase()=="false") {
                        mean = false;
                    }
                }
            }

            if(mean != null && typeof mean == "boolean") {
                if(!mean) {
                    return el;
                }
            }
        } catch(ex) {}

        if(typeof prize != "undefined" && prize) {
            return null;
        }
        if(el.tagName != null && typeof el.tagName != "undefined" && (el.tagName.toUpperCase()=="BODY" || el.tagName.toUpperCase()=="HTML")) {
            break;
        }
        el = el.parentNode;
    }
    return null;
};

Sys.Extended.UI.HTMLEditor.getSelParent = function (editor) {
    var sel   = editor._getSelection();
    var range = editor._createRange(sel);
    var parent = null;

    if(Sys.Extended.UI.HTMLEditor.isIE) {
        if(sel.type.toLowerCase()=="control")
            parent =range.item(0);
        else
            parent= editor._getParent(range);
    } else {
        parent= editor._getParent(range);
        if(parent.nodeType != 3 && range.startContainer==range.endContainer) {
            var p=parent;
            parent = parent.childNodes.item(range.startOffset);
            if(parent==null) parent=p;
        }
    }
    return parent;
};

Sys.Extended.UI.HTMLEditor.__getIndex = function(el) {
    var ind =0;

    if(el.parentNode) {
        for(;ind<el.parentNode.childNodes.length;ind++) {
            if(el.parentNode.childNodes.item(ind)==el) {
                break;
            }
        }
    }
    return ind;
};

Sys.Extended.UI.HTMLEditor.isInlineElement = function(el) {
    if(el.nodeType == 3) return true;
    if(el.nodeType != 1) return false;
    if(!el.tagName || el.tagName.length == 0) return false;
    if(el && el.style && el.style.display && el.style.display.toLowerCase()=="inline") return true;

    var name = el.tagName.toUpperCase();

    if(name.length==2) {
        if(name.substr(0,1)=="H" && parseInt(name.substr(1,1)) > 0) {
            return false;
        }
    }
    switch(name) {
        case "BR"         :
        case "TBODY"      :
        case "TR"         :
        case "TD"         :
        case "P"          :
        case "PRE"        :
        case "TABLE"      :
        case "OL"         :
        case "UL"         :
        case "LI"         :
        case "HR"         :
        case "DIV"        :
        case "BLOCKQUOTE" :
        case "FORM"       :
        case "FIELDSET"   :
        case "LEGEND"     :
            return false;
        default:
            return true;   
    }
};

Sys.Extended.UI.HTMLEditor.capLock = function(e) { 
    var kc = e.charCode;
    var sk = e.shiftKey?e.shiftKey:((kc == 16)?true:false);
    if(((kc >= 65 && kc <= 90) && !sk)||((kc >= 97 && kc <= 122) && sk))
        return true;
    else
        return false;
};

Sys.Extended.UI.HTMLEditor.operateAnchors = function(editor, _doc, _prize) {
    var aList = _doc.getElementsByTagName("A");
    var ret = false;

    for(var i=0; i < aList.length; i++) {
        var a   = aList[i];

        if( a.name && a.name.length > 0) {
            var imgToDelete = [];
            
            for(var j=0; j < a.childNodes.length; j++) {
                var node = a.childNodes.item(j);
                if(node.nodeType==1 && node.tagName && node.tagName.toUpperCase()=="IMG" && node.src==editor._editPanel.get_imagePath_anchor()) {
                    imgToDelete.push(node);
                    ret = true;
                }
            }
            
            while (imgToDelete.length > 0) {
                a.removeChild(imgToDelete.pop());
            }
            
            if(!_prize) {
                var img   = _doc.createElement("IMG");
                img.title = a.name;
                img.src   = editor._editPanel.get_imagePath_anchor();
                img.setAttribute(editor.noContextMenuAttributeName(),"yes");

                a.appendChild(img);
            }
        }
    }
    return ret;
};

Sys.Extended.UI.HTMLEditor.operatePlaceHolders = function(editor, _doc, _prize) {
    var ret = false;
    if(_prize) {
        var tempCollection = _doc.getElementsByTagName("IMG");

        var aList =[];
        for(var i=0; i<tempCollection.length; i++) {
            aList.push(tempCollection[i]); 
        }

        for(var i=0; i < aList.length; i++)
        {
            var a   = aList[i];
            var dum = a.getAttribute("dummytag");

            if(dum && dum.length > 0 && dum.toLowerCase()=="placeholder") {
                var ph   = _doc.createElement("PLACEHOLDER");
                var title = a.title;

                if(title==null || typeof title=="undefined") {
                    title = a.getAttribute("title");
                }

                ph.name  = title;
                ph.setAttribute("name",title);

                a.parentNode.insertBefore(ph,a);
                a.parentNode.removeChild (a);
                ret = true;
            }
        }
    } else {
        var tempCollection = _doc.getElementsByTagName("PLACEHOLDER");

        var aList =[];
        for(var i=0; i<tempCollection.length; i++) {
            aList.push(tempCollection[i]);
        }
        for(var i=0; i < aList.length; i++) {
            var a   = aList[i];
            var nd  = true;

            try {
                if(a.childNodes.length > 0) {
                    nd = false;
                }
            } catch(ex) {}

            if(nd) {
                var name = a.name;

                if(name==null || typeof name=="undefined") {
                    name = a.getAttribute("name");
                }

                var img   = _doc.createElement("IMG");
                img.title = name;
                img.src   = editor._editPanel.get_imagePath_placeHolder();

                img.setAttribute("dummytag","placeholder");
                img.setAttribute("title",name);

                a.parentNode.insertBefore(img,a);
                a.parentNode.removeChild (a);
            }
        }
    }
    return ret;
};

Sys.Extended.UI.HTMLEditor.inspectForShadows = function(el) {
    var aList = el.getElementsByTagName("IMG");

    for(var i=0; i < aList.length; i++)
    {
        if(aList[i].getAttribute(Sys.Extended.UI.HTMLEditor.attachedIdAttribute) && aList[i].getAttribute(Sys.Extended.UI.HTMLEditor.attachedIdAttribute).length > 0) {
            try {
                if(Sys.Extended.UI.HTMLEditor.isIE) {
                    $removeHandler(aList[i],"dragstart", Sys.Extended.UI.HTMLEditor.stopDrag);
                } else {
                    $removeHandler(aList[i],"draggesture", Sys.Extended.UI.HTMLEditor.stopDrag);
                }
            } catch(e) {}

            if(Sys.Extended.UI.HTMLEditor.isIE) {
                $addHandler(aList[i],"dragstart", Sys.Extended.UI.HTMLEditor.stopDrag);
            } else {
                $addHandler(aList[i],"draggesture", Sys.Extended.UI.HTMLEditor.stopDrag);
            }
        }
    }
};

Sys.Extended.UI.HTMLEditor.attachedIdAttribute= "obout-attached-id";

Sys.Extended.UI.HTMLEditor.stopDrag = function(ev)
{
  if(ev) ev.stopPropagation();ev.preventDefault();
  return false;
};

Sys.Extended.UI.HTMLEditor.replacingRules =
[
[ "strong"  ,"font-weight"     , "bold"         ],
[ "b"       ,"font-weight"     , "bold"         ],
[ "strong"  ,"font-weight"     , "700"          ],
[ "em"      ,"font-style"      , "italic"       ],
[ "i"       ,"font-style"      , "italic"       ],
[ "u"       ,"text-decoration" , "underline"    ],
[ "strike"  ,"text-decoration" , "line-through" ]
];

Sys.Extended.UI.HTMLEditor.replaceOldTags = function(root,editor) {
    var innerHTML = root.innerHTML;
    var need = false;

    for(var j=0; j < Sys.Extended.UI.HTMLEditor.replacingRules.length; j++) {
        var reg = new RegExp("<"+Sys.Extended.UI.HTMLEditor.replacingRules[j][0]+"[\s>]", "ig");
        if(reg.test(innerHTML)) {
            need = true;
            break;
        }
    }
    
    if(!need) {
        if(!(/<font[\s>]/ig.test(innerHTML))) {
            return;
        }
    }

    for(var i=0; i<root.childNodes.length; i++) {
        var child = root.childNodes.item(i);
        if(child.nodeType == 1) {
            var found = null;
            var childTagName = child.tagName.toLowerCase();
            for(var j=0; j < Sys.Extended.UI.HTMLEditor.replacingRules.length; j++) {
                if(Sys.Extended.UI.HTMLEditor.replacingRules[j][0].toLowerCase() == childTagName) {
                    found = Sys.Extended.UI.HTMLEditor.replacingRules[j];
                    break;
                }
            }

            if(found) {
                var span = editor._doc.createElement("SPAN");

                span.style["cssText"] = child.style["cssText"];

                if(Sys.Extended.UI.HTMLEditor.isIE) {
                    span.style[found[1]] = found[2];
                } else {
                    span.style[found[1].replace(/\-(\w)/g, function (strMatch, p1){return p1.toUpperCase();})] = found[2];
                }
                while(child.firstChild) {
                    span.appendChild(child.firstChild);
                }

                root.insertBefore(span,child);
                root.removeChild(child);
                child = span;
            } else {
                if(childTagName == "font") {
                    var span = editor._doc.createElement("SPAN");
                    var save = child.size;

                    span.style["cssText"] = child.style["cssText"];

                    if(child.color) {
                        span.style.color = child.color;
                    }
                    if(child.face ) {
                        span.style.fontFamily = child.face;
                    }

                    while(child.firstChild) {
                        span.appendChild(child.firstChild);
                    }

                    root.insertBefore(span,child);
                    root.removeChild(child);

                    if(save) {
                        var font = editor._doc.createElement("FONT");
                        font.size = save;
                        root.insertBefore(font,span);

                        if(span.style["cssText"].length > 0) {
                            font.appendChild(span);
                            child = span;
                        } else {
                            while(span.firstChild) {
                                font.appendChild(span.firstChild);
                            }
                            root.removeChild(span);
                            child = font;
                        }
                    } else {
                        child = span;
                    }
                }
            }
            Sys.Extended.UI.HTMLEditor.replaceOldTags(child,editor);
        }
    }
};

Sys.Extended.UI.HTMLEditor.getStyle = function(oElm, strCssRule) {
    var strValue = "";
    if(oElm.nodeType==1) {
        if(oElm.ownerDocument && oElm.ownerDocument.defaultView && oElm.ownerDocument.defaultView.getComputedStyle) {
            strValue = oElm.ownerDocument.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
        }
        else if(oElm.currentStyle) {
            try {
                strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){return p1.toUpperCase();});
                strValue = oElm.currentStyle[strCssRule];
            } catch(ex) {
                strValue = oElm.style[strCssRule];
            }
        } else {
            strValue = oElm.style[strCssRule];
        }
    }
    return strValue;
};

Sys.Extended.UI.HTMLEditor._Marker = function(editor,rng,sel) {
    if(Sys.Extended.UI.HTMLEditor.isIE) {
        this._nArr  = Sys.Extended.UI.HTMLEditor.getNames(editor._doc.body);
        this._save = editor._doc.body.innerHTML;
        this._tree = null;

        if(sel.type.toLowerCase()=="control") {
            try {
                var el = rng.item(0);
                this._tree  =[];

                while(el && (el.nodeType==3 || !el.tagName || el.tagName.toUpperCase() != "BODY")) {
                    var n=0;
                    while(el.previousSibling) {
                        n++;
                        el = el.previousSibling;
                    }
                    this._tree.push(n);
                    el = el.parentNode;
                }
            } catch(e){}
        } else {
            this._offsetLeft=rng.offsetLeft;
            this._offsetTop =rng.offsetTop;
        }
    } else {
        if(Sys.Extended.UI.HTMLEditor.isOpera) {
            this._save = Sys.Extended.UI.HTMLEditor.Trim(editor._doc.body.innerHTML);
        } else {
            this._save = editor._doc.body.cloneNode(true);
        }

        this._tree  =[];
        this._offset= 0;

        try {
            var el =rng.startContainer;
            this._offset=rng.startOffset;
            if(el && el.nodeType==1 && el.tagName.toUpperCase()=="HTML") {
                el = editor._doc.body;

                setTimeout(function(){
                    try {
                        sel = editor._getSelection();
                        rng = editor._createRange();
                        editor._removeAllRanges(sel);
                        rng.setStart(el,0);
                        rng.setEnd  (el,0);
                        editor._selectRange(sel,rng);
                    } catch(e) {}
                },0);
            }

            while(el && el.nodeType && (el.nodeType==3 || !el.tagName || el.tagName.toUpperCase() != "BODY")) {
                var n=0;
                while(el.previousSibling) {
                    n++;
                    if(Sys.Extended.UI.HTMLEditor.isOpera) {
                        if(el.nodeType == 3 && el.previousSibling != null && el.previousSibling.nodeType == 3) {
                            n--;
                        }
                    }
                    el = el.previousSibling;
                }
                this._tree.push(n);
                el = el.parentNode;
            }
        } catch(e) {}
    }
};

Sys.Extended.UI.HTMLEditor.__stackMaxSize = 30;

Sys.Extended.UI.HTMLEditor.getNames = function(el) {
    var aList = el.all;
    var mArr  = [];
    var nArr =[]

    for(var i=0; i < aList.length; i++) {
        var a   = aList[i];

        if(a.name && a.name.length > 0) {
            var tag = a.tagName;
            var coll= el.getElementsByTagName(tag);
            var n = 0;

            for(var j=0; j < coll.length; j++) {
                if(coll[j] == a) {
                    n = j;
                    break;
                }
            }

            nArr[tag] = n;

            mArr.push([tag,nArr[tag],a.name]);
        }
    }
    return mArr;
};

Sys.Extended.UI.HTMLEditor.setNames = function(el,mArr) {
    for(var i=0; i < mArr.length; i++) {
        if(el.getElementsByTagName(mArr[i][0]).length > mArr[i][1]) {
            el.getElementsByTagName(mArr[i][0])[mArr[i][1]].name = mArr[i][2];
        }
    }
};

Sys.Extended.UI.HTMLEditor._lookChild = function(root,seek) {
    for(var i=0; i<root.childNodes.length; i++) {
        var child = root.childNodes.item(i);
        if(child==seek) {
            return i;
        }
        if(child.nodeType==1) {
            if(Sys.Extended.UI.HTMLEditor._lookChild(child,seek) >= 0 ) {
                return i;
            }
        }
    }
    return -1;
};

Sys.Extended.UI.HTMLEditor.getHrefsText = function(txt) {
    var result =[]
    function regRepl(p0,p1,p2,p3,p4,p5,p6,p7) {
        var tag = p1.replace(/^<([^\s>]+)/,"$1");
        var insert =true;
        var i =0;

        for(; i < result.length; i++) {
            if(result[i][0] == tag) {
                insert = false;
                break;
            }
        }

        if(insert) {
            result[i] =[tag];
        }

        result[i].push(p5);
    };

    var reg = new RegExp("(<[^\\s><]+)([^><]*?)(href=)(\"|')([^\\4]*?)(\\4)((?:[^><]*?)>)","ig");
    txt.replace(reg,regRepl);
    return result;
};

Sys.Extended.UI.HTMLEditor.setHrefsText = function(el, mArr) {
    for (var j = 0; j < mArr.length; j++) {
        var aList = el.getElementsByTagName(mArr[j][0]);
        var k = 1;

        for (var i = 0; i < aList.length; i++) {
            if (!aList[i].href) {
                continue;
            }
            if (mArr[j][k] && mArr[j][k].length > 0) {
                var trickIE;
                if (Sys.Extended.UI.HTMLEditor.isIE) {
                    trickIE = aList[i].innerHTML;
                }
                aList[i].href = mArr[j][k].replace(/&amp;/ig, "&");
                if (Sys.Extended.UI.HTMLEditor.isIE) {
                    aList[i].innerHTML = trickIE;
                }
            }
            k++;
        }
    }
};

Sys.Extended.UI.HTMLEditor.getImagesText = function(txt) {
    var mArr  = [];

    function regRepl(p0,p1,p2,p3,p4,p5) {
        mArr.push(p3);
        return p0;
    }

    txt.replace(/(<img(?:.*?))(src=")(.*?)(")((?:.*?)>)/ig,regRepl);
    return mArr;
};

Sys.Extended.UI.HTMLEditor.setImagesText = function(el,mArr) {
    var aList = el.getElementsByTagName("IMG");
    var k=0;

    for(var i=0; i < aList.length; i++) {
        if(!aList[i].src) {
            continue;
        }
        if(mArr[k] && mArr[k].length > 0) {
            aList[i].src = mArr[k].replace(/&amp;/ig,"&");
        }
        k++;
    }
};

Sys.Extended.UI.HTMLEditor.canHaveChildren = function(elem) {
    if(Sys.Extended.UI.HTMLEditor.isIE) {
        return elem.canHaveChildren;
    } else {
        return !/^(area|base|basefont|col|frame|hr|img|br|input|isindex|link|meta|param)$/.test(elem.tagName.toLowerCase());
    }
};

Sys.Extended.UI.HTMLEditor._setCursor = function(el1,editor) {
    var el = el1;
    if(Sys.Extended.UI.HTMLEditor.isIE) {
        var sel = editor._getSelection();
        var range=editor._createRange(sel);
        
        if(sel.type.toLowerCase() == "control") {
             range.remove(0);
             sel.empty();
             range = editor._createRange();
        }
        
        var isText = (el.nodeType==3);
        var span;

        if(isText)
        {
            span = editor._doc.createElement("SPAN");
            span.innerHTML = "&nbsp;";
            el.parentNode.insertBefore(span,el);
            el = span;
        }

        var location = $common.getLocation(el);
        var _left = location.x, _top = location.y;

        if(isText) {
            span.parentNode.removeChild(span);
        }

        try {
            range.moveToPoint(_left,_top);
        } catch(e) {}
        range.select();
    } else {
        var sel = editor._getSelection();
        var range=editor._createRange();

        range.setStart(el, 0);
        range.setEnd(el, 0);

        editor._removeAllRanges(sel);
        editor._selectRange(sel,range);
        editor.focusEditor();
    }
};

Sys.Extended.UI.HTMLEditor.myClone = function(el,doc,prize) {
    var ela;

    if(Sys.Extended.UI.HTMLEditor.isIE && el.tagName && (el.tagName.toUpperCase()=="EMBED" || el.tagName.toUpperCase()=="OBJECT")) {
        var div = doc.createElement("DIV");

        try {   
            div.innerHTML = el.outerHTML;
            ela = div.firstChild;
        } catch(e) {
            ela = el;
        }

        delete div;
    } else {
        ela = el.cloneNode(prize);
    }

    return ela;
};

Sys.Extended.UI.HTMLEditor.unStyle = function(el) {
    var _prn = (el.parentNode != null && typeof el.parentNode != "undefined")?el.parentNode:null;

    if(_prn) {
        var _fnd = null;

        while ( _prn && _prn.tagName && _prn.tagName.toUpperCase() != "BODY" && Sys.Extended.UI.HTMLEditor.isStyleTag(_prn.tagName) &&
               (_prn.tagName.toUpperCase() != "A")) {
            _fnd = _prn;
            _prn = _prn.parentNode;
        }

        if(_fnd) {
            function diver(add,el, rpr, before, prize) {
                var par=rpr.cloneNode(false);

                if(add) {
                    if(add.push && typeof add.push == "function") {
                        for(var iii=0; iii < add.length; iii++) {
                            par.appendChild(add[iii]);
                        }
                    } else {
                        par.appendChild(add);
                    }
                }

                if(prize) {
                    par.appendChild(el);
                } else {
                    while(el) {
                        var elSibling=before?el.previousSibling:el.nextSibling;
                        if(el.nodeType==1 || (el.nodeType==3 && Sys.Extended.UI.HTMLEditor.Trim(""+el.data+"").length>0)) {
                            if(el.nodeType==1) {
                                if(el.tagName && Sys.Extended.UI.HTMLEditor.isStyleTag(el.tagName) && el.childNodes.length==0 && !Sys.Extended.UI.HTMLEditor.isTempElement(el)) {
                                    el=null;
                                }
                            }
                            if(el) {
                                if(par.childNodes.length == 0 || !before) {
                                    par.appendChild(el);
                                } else {
                                    par.insertBefore(el,par.firstChild);
                                }
                            }
                        }
                        el=elSibling;
                    }
                }

                if(par.childNodes.length==0) {
                    delete par;
                    par=null;
                }
                else if(par.childNodes.length==1 && par.firstChild.nodeType==3 && (""+par.firstChild.data+"").length==0) {
                    delete par;
                    par=null;
                }  else  {
                    if(!prize && par.tagName && Sys.Extended.UI.HTMLEditor.isStyleTag(par.tagName) && (par.tagName.toUpperCase() != "A") && !Sys.Extended.UI.HTMLEditor.isTempElement(par)) {
                        var elNumber = par.childNodes.length;
                        for(var cnt=0; cnt< par.childNodes.length; cnt++) {
                            var inn = par.childNodes.item(cnt);
                            if(inn.nodeType==1 && inn.tagName && !Sys.Extended.UI.HTMLEditor.isStyleTag(inn.tagName) &&
                               (inn.tagName.toUpperCase()=="BR" || inn.tagName.toUpperCase()=="TABLE" ||
                               Sys.Extended.UI.HTMLEditor.isTempElement(inn))) {
                                elNumber--;
                            }
                        }

                        if(elNumber == 0) {
                            var parr = [];
                            while(par.firstChild) {
                                var inn = par.removeChild(par.firstChild);
                                parr.push(inn);
                            }
                            par = parr;
                        }
                    }
                }

                if(rpr==_fnd) {
                    return par;
                } else {
                    if(!prize) {
                        return diver(par,before?rpr.previousSibling:rpr.nextSibling,rpr.parentNode,before,prize);
                    } else {
                        return diver(null,par,rpr.parentNode,before,prize);
                    }
                }
            };

            _prn = el.parentNode;

            if( el.previousSibling == null && el.nextSibling == null &&
                _prn && _prn.tagName && _prn.tagName.toUpperCase() != "BODY" && Sys.Extended.UI.HTMLEditor.isStyleTag(_prn.tagName) &&
                Sys.Extended.UI.HTMLEditor.differAttr(_prn,["class","color","face","size"]).length > 0) {
                el = _prn;
            }

            var p1 = diver(null,el.previousSibling,el.parentNode,true , false);
            var p2 = diver(null,el.nextSibling    ,el.parentNode,false, false);

            var par    = _fnd.parentNode;
            if(p1) {
                if(p1.push && typeof p1.push == "function") {
                    for(var iii=0; iii < p1.length; iii++) {
                        par.insertBefore(p1[iii],_fnd);
                    }
                } else {
                    par.insertBefore(p1,_fnd);
                }
            }

            if(el.nodeType==1 && el.tagName &&
               (el.tagName.toUpperCase()=="BR" || el.tagName.toUpperCase()=="TABLE" ||
               Sys.Extended.UI.HTMLEditor.isTempElement(el))) {
                par.insertBefore(el,_fnd);
            } else {
                var p3 = diver(null,el,el.parentNode,false, true);
                par.insertBefore(p3,_fnd);
            }

            if(p2) {
                if(p2.push && typeof p2.push == "function") {
                    for(var iii=0; iii < p2.length; iii++) {
                        par.insertBefore(p2[iii],_fnd);
                    }
                } else {
                    par.insertBefore(p2,_fnd);
                }
            }
            par.removeChild (_fnd);
        }
    }
};

Sys.Extended.UI.HTMLEditor.isTempElement = function(el) {
    if(el.id && el.id.length > 0 && el.id.indexOf(Sys.Extended.UI.HTMLEditor.smartClassName) >= 0) {
        return true;
    }
    return false;
};

Sys.Extended.UI.HTMLEditor._moveTagsUp = function(lBound,rBound) {
    function _dive(next) {
        if(!Sys.Extended.UI.HTMLEditor.isInlineElement(next) || next.nodeType == 3) {
            Sys.Extended.UI.HTMLEditor.unStyle(next);
        } else if(next.tagName && Sys.Extended.UI.HTMLEditor.isStyleTag(next.tagName) && (next.tagName.toUpperCase() != "A") && !Sys.Extended.UI.HTMLEditor.isTempElement(next)) {
            var nnn = next.firstChild;
            while(nnn != null) {
                var nnnNext = nnn.nextSibling;
                _dive(nnn);
                nnn = nnnNext;
            }
        }
    }

    var next = lBound;
    while(next != null && next != rBound) {
        var nextSibling = next.nextSibling;
        _dive(next);
        next = nextSibling;
    }
};

Sys.Extended.UI.HTMLEditor._commonTotalParent = function(first,last) {
    var ret = null;
    var par = first.parentNode;
    var fst = first;

    while (par) {
        if(par.tagName && !Sys.Extended.UI.HTMLEditor.isStyleTag(par.tagName)) {
            var indexLast = Sys.Extended.UI.HTMLEditor._lookChild(par,last);

            if(indexLast >=0 ) {
                var indexFirst = 0;

                for(var i=0; i < par.childNodes.length; i++) {
                    if(par.childNodes.item(i) == fst) {
                        indexFirst = i;
                        break;
                    }
                }

                return {parent: par, indexFirst: indexFirst, indexLast: indexLast};
            }
        }

        fst = par;
        par = par.parentNode;
    }

    return ret;
};

Sys.Extended.UI.HTMLEditor._commonParent = function(first,last) {
    var ret = null;
    var par = first.parentNode;
    var fst = first;

    while (par && par.tagName.toUpperCase() != "BODY" && Sys.Extended.UI.HTMLEditor.isStyleTag(par.tagName)) {
        var indexLast = Sys.Extended.UI.HTMLEditor._lookChild(par,last);

        if(indexLast >=0 ) {
            var indexFirst = 0;

            for(var i=0; i < par.childNodes.length; i++) {
                if(par.childNodes.item(i) == fst) {
                    indexFirst = i;
                    break;
                }
            }

            return {parent: par, indexFirst: indexFirst, indexLast: indexLast};
        }

        fst = par;
        par = par.parentNode;
    }

    return ret;
};

Sys.Extended.UI.HTMLEditor.positionInParagraph = function(marker,el,left,par,wordBound) {
    while(true){
        var result = Sys.Extended.UI.HTMLEditor.positionInParagraphLevel(marker,el,left,wordBound);
        if(result != null) {
            return result;
        }
        if(par.tagName && Sys.Extended.UI.HTMLEditor.isStyleTag(par.tagName) && (par.tagName.toUpperCase() != "A") && !Sys.Extended.UI.HTMLEditor.isTempElement(par)) {
            el  = left?par.previousSibling:par.nextSibling;
            par = par.parentNode;
        } else {
            if(!left || par.firstChild == null) {
                par.appendChild(marker);
            } else {
                par.insertBefore(marker,par.firstChild);
            }
            return marker;
        }
    }
};

Sys.Extended.UI.HTMLEditor.positionInParagraphLevel = function(marker,el,left,wordBound) {
    while(el) {
        var elSibling = left?el.previousSibling:el.nextSibling;

        if(!Sys.Extended.UI.HTMLEditor.isInlineElement(el)) {
            var par = el.parentNode;

            if(!left) {
                par.insertBefore(marker,el);
            } else{
                if(el.nextSibling) {
                    par.insertBefore(marker,el.nextSibling);
                } else {
                    par.appendChild (marker);
                }
            }
            return marker;
        }
        else if(typeof wordBound == "function" && el.nodeType==3) {
            var j;
            var str = ""+el.data+"";
            if(left) {
                for(j=str.length-1; j >= 0; j--) {
                    if(wordBound(str.substr(j,1))) {
                        break;
                    }
                }
            } else {
                for(j=0; j < str.length; j++) {
                    if(wordBound(str.substr(j,1))) {
                        break;
                    }
                }
            }

            if(j >= 0 && j < str.length) {
                var par = el.parentNode;
                var newNode;

                if((j > 0 || (left && j==0)) && (j < str.length-1 || (!left && j==str.length-1))) {
                    if(left) {
                        newNode = el.splitText(j+1);
                    } else {
                        newNode = el.splitText(j);
                    }
                    par.insertBefore(marker,newNode);
                } else {
                    if(!left) {
                        par.insertBefore(marker,el);
                    } else {
                        if(el.nextSibling) {
                            par.insertBefore(marker,el.nextSibling);
                        } else {
                            par.appendChild (marker);
                        }
                    }
                }
                return marker;
            }
        }

        el = left?el.lastChild:el.firstChild;

        if(el) {
            var result = Sys.Extended.UI.HTMLEditor.positionInParagraphLevel(marker,el,left,wordBound);
            if(result != null) {
                return result;
            }
        }
        el=elSibling;
    }

    return null;
};

Sys.Extended.UI.HTMLEditor._addEvent = function(el, evname, func){
    if(el.attachEvent)
        el.attachEvent("on" + evname, func);
    else if(el.addEventListener)
        el.addEventListener(evname, func, true);
};

Sys.Extended.UI.HTMLEditor._addEvents = function(el, evs, func) {
    for(var i=0; i < evs.length; i++)
        Sys.Extended.UI.HTMLEditor._addEvent(el, evs[i], func);
};

Sys.Extended.UI.HTMLEditor._removeEvent = function(el, evname, func) {
    if(el.detachEvent)
        el.detachEvent("on" + evname, func);
    else if(el.removeEventListener)
        el.removeEventListener(evname, func, true);
};

Sys.Extended.UI.HTMLEditor._removeEvents = function(el, evs, func) {
    for(var i=0; i < evs.length; i++)
        Sys.Extended.UI.HTMLEditor._removeEvent(el, evs[i], func);
};

Sys.Extended.UI.HTMLEditor._stopEvent = function(ev) {
    if(ev) {
        if (Sys.Extended.UI.HTMLEditor.isIE) {
            ev.cancelBubble = true;
            ev.returnValue = false;
        } else {
            ev.preventDefault();
            ev.stopPropagation();
        }
    }
};

Sys.Extended.UI.HTMLEditor.restrictedTags = ["DIV","P","TD","TR","TABLE","TBODY","LI","OL","UL","FORM","INPUT"];  // this list can be increased
Sys.Extended.UI.HTMLEditor.isRestricted = function(element) {
    var elementTagName = element.tagName.toUpperCase();
    for(var i=0; i < Sys.Extended.UI.HTMLEditor.restrictedTags.length; i++) {
        if (Sys.Extended.UI.HTMLEditor.restrictedTags[i].toUpperCase() == elementTagName) {
            return true;
        }
    }

    if(Sys.Extended.UI.HTMLEditor.isIE && element.scopeName.toUpperCase()!="HTML") {
        return true;
    }

    return false;
};

Sys.Extended.UI.HTMLEditor.jsDocument = function(noExtraLf) {
    this.noExtraLf = (typeof noExtraLf != "undefined" && noExtraLf);
    this.text = [];                //array to store the string
    this.write = function (str) {
        if(!this.noExtraLf || (this.text.length == 0 && str != "\n") || (this.text.length > 0 && (this.text[this.text.length-1] != "\n" || str != "\n"))) {
            this.text[this.text.length] = str;
        }
    };
    this.append = this.write;
    this.writeln = function (str) { this.text[this.text.length] = str + "\n"; }
    this.toString = function () { return this.text.join(""); }
    this.clear = function () { delete this.text; this.text = null; this.text = new Array; }
};

Sys.Extended.UI.HTMLEditor.isHeader = function(el) {
    var name = el.tagName.toUpperCase();

    if(name.length==2) {
        if(name.substr(0,1)=="H" && parseInt(name.substr(1,1)) > 0) {
            return true;
        }
    }
    return false;
};

Sys.Extended.UI.HTMLEditor._getReallyFirst = function(root) {
    if(typeof root.firstChild != "undefined" && root.firstChild != null) {
        if(typeof root.firstChild.childNodes != "undefined" && root.firstChild.childNodes != null) {
            return Sys.Extended.UI.HTMLEditor._getReallyFirst(root.firstChild)
        }
    }
    return root;
};

Sys.Extended.UI.HTMLEditor._getReallyLast = function(root) {
    if(typeof root.lastChild != "undefined" && root.lastChild != null) {
        if(typeof root.lastChild.childNodes != "undefined" && root.lastChild.childNodes != null) {
            return Sys.Extended.UI.HTMLEditor._getReallyLast(root.lastChild)
        }
    }
    return root;
};

Sys.Extended.UI.HTMLEditor._reallyFirst = function(root,seek) {
    if(root.firstChild) {
        if(root.firstChild == seek) return true;
        if(root.firstChild.childNodes)
            if(Sys.Extended.UI.HTMLEditor._lookChild(root.firstChild,seek) == 0 ) {
                return Sys.Extended.UI.HTMLEditor._reallyFirst(root.firstChild,seek)
            }
    }
    return false;
};

Sys.Extended.UI.HTMLEditor._reallyLast = function(root,seek) {
    if(root.lastChild) {
        if(root.lastChild == seek) return true;
        if(root.lastChild.childNodes)
            if(Sys.Extended.UI.HTMLEditor._lookChild(root.lastChild,seek) == root.lastChild.childNodes.length-1 ) {
                return Sys.Extended.UI.HTMLEditor._reallyLast(root.lastChild,seek)
            }
    }
    return false;
};

Sys.Extended.UI.HTMLEditor.getContainer = function(container, el) {
    if(el==container) return container;

    if(container.nodeType == 1) {
        for(var i=0; i < container.childNodes.length; i++) {
            var child = container.childNodes.item(i);
            if(el==child) return child;

            if(child.nodeType == 1) {
                var ind = Sys.Extended.UI.HTMLEditor._lookChild(child,el);
                if(ind >= 0) {
                    if(child.tagName && Sys.Extended.UI.HTMLEditor.isStyleTag(child.tagName) && (child.tagName.toUpperCase() != "A") && !Sys.Extended.UI.HTMLEditor.isTempElement(child))
                        return Sys.Extended.UI.HTMLEditor.getContainer(child, el);
                    else
                        return child;
                }
            }
        }
    }
    return null;
};

Sys.Extended.UI.HTMLEditor._TryTransformFromPxToPt = function(fontSize,editor, _id) {
    var ret = fontSize.replace(/^(\d+)\.(\d+)px/i,"$1px");

    if(!Sys.Extended.UI.HTMLEditor.isIE) {
        if(ret && ret.length > 0) {
            var seek = ret.toLowerCase().split(",")[0];

            if (typeof _id != "undefined") {
                var el   = document.getElementById(_id);

                if(el != null) {
                    var i;
                    for(i=0; i< el.options.length; i++) {
                        var cur = Sys.Extended.UI.HTMLEditor.fontSizeSeek(el.options.item(i).value.toLowerCase().split(",")[0]);

                        if(cur==seek) break;
                    }
                    if(i==el.options.length) {
                        var span = editor._doc.createElement("SPAN");
                        editor._doc.body.appendChild(span);

                        for(i=1; i< 100; i++) {
                            span.style.fontSize = i+"pt";
                            if(Sys.Extended.UI.HTMLEditor.getStyle(span,"font-size").replace(/^(\d+)\.(\d+)px/i,"$1px") == seek) {
                                seek = i+"pt";
                                break;
                            }
                        }
                        span.parentNode.removeChild(span);
                    }
                }
            }
            ret = seek;
        }
    }
    return ret;
};

Sys.Extended.UI.HTMLEditor.fontSizeSeek = function(val) {
    var seek = val.toString();

    switch (seek) {
        case "1":
            seek="8pt";
            break;
        case "2":
            seek="10pt";
            break;
        case "3":
            seek="12pt";
            break;
        case "4":
            seek="14pt";
            break;
        case "5":
            seek="18pt";
            break;
        case "6":
            seek="24pt";
            break;
        case "7":
            seek="36pt";
            break;
    }

    return seek;
};

Sys.Extended.UI.HTMLEditor.getOwnerDocument = function(node) {
    return node.nodeType == 9 ? node : node.ownerDocument || node.document;
};

Sys.Extended.UI.HTMLEditor.getClientViewportElement = function(opt_node) {
    var doc;

    if (opt_node.nodeType == 9) {
        doc = opt_node;
    } else {
        doc = Sys.Extended.UI.HTMLEditor.getOwnerDocument(opt_node);
    }

    if (Sys.Extended.UI.HTMLEditor.isIE && doc.compatMode != 'CSS1Compat') {
        return doc.body;
    }
    return doc.documentElement;
};

Sys.Extended.UI.HTMLEditor.isReallyVisible = function(el) {
    var elem = el;
    var real_visible = true;

    while(elem) {
        if(elem.style && Sys.Extended.UI.HTMLEditor.getStyle(elem,"display") == "none") {
            real_visible = false;
            break;
        }
        elem = elem.parentNode;
    }
    return real_visible;
}


Sys.Extended.UI.HTMLEditor.setSelectionRange = function(input, selectionStart, selectionEnd) {
    input.focus();
    if (input.setSelectionRange) {
        input.setSelectionRange(selectionStart, selectionEnd);
    }
    else if (input.createTextRange) {
        var range = input.createTextRange();
        range.collapse(true);
        range.moveEnd('character', selectionEnd);
        range.moveStart('character', selectionStart);
        range.select();
    }
};

Sys.Extended.UI.HTMLEditor.setElementVisibility = function(element) {
    var ret = new Array();
    var elem = element;

    while(elem && elem.nodeType==1 && elem.tagName.toUpperCase() != "BODY") {
        var display = elem.style.display;
        var visibility = elem.style.visibility;
        if(elem.style && (display == "none" || visibility == "hidden")) {
            ret.push({element: elem, display: display, visibility: visibility});
            elem.style.display = "";
            elem.style.visibility = "visible";
        }
        elem = elem.parentNode;
    }
    return ret;
};

Sys.Extended.UI.HTMLEditor.restoreElementVisibility = function(arr) {
    for(var i=0; i < arr.length; i++) {
        var item = arr[i];
        var style = item.element.style;
        style.display = item.display;
        style.visibility = item.visibility;
    }
};

if(!Sys.Extended.UI.HTMLEditor.isIE) {
    try { //not all such browsers support getter/setter
        Sys.Extended.UI.HTMLEditor.__MozillaGetInnerText = function(node, html) {
            var els=node.childNodes;
            for(var i=0;i<els.length;i++) {
                var elem = els[i];

                if(elem.nodeType == 3) {
                    html.write(elem.nodeValue.replace("\n",""));
                }
                if(elem.nodeType == 1) {
                    var display    =  Sys.Extended.UI.HTMLEditor.getStyle(elem,"display");
                    var visibility =  Sys.Extended.UI.HTMLEditor.getStyle(elem,"visibility");

                    if(Sys.Extended.UI.HTMLEditor.__needLineBreakBefore(elem)) {
                        html.write("\n");
                    }

                    if(Sys.Extended.UI.HTMLEditor.__needTabBefore(elem)) {
                        html.write("\t");
                    }

                    if(display != "none" && visibility != "hidden") {
                        Sys.Extended.UI.HTMLEditor.__MozillaGetInnerText(elem,html);
                    }

                    if(Sys.Extended.UI.HTMLEditor.__needLineBreakAfter(elem)) {
                        html.write("\n");
                    }
                }
            }
        };

        Sys.Extended.UI.HTMLEditor.__needLineBreakBefore = function(el)
        {
            var _Tags = " div table p pre ol ul blockquote form fieldset ";
            return (_Tags.indexOf(" " + el.tagName.toLowerCase() + " ") != -1);
        };

        Sys.Extended.UI.HTMLEditor.__needLineBreakAfter = function(el)
        {
            var _Tags = " br div table tr p pre ol ul li hr blockquote form fieldset legend ";
            return (_Tags.indexOf(" " + el.tagName.toLowerCase() + " ") != -1);
        };

        Sys.Extended.UI.HTMLEditor.__needTabBefore = function(el)
        {
            var _Tags = " td li ";
            return (_Tags.indexOf(" " + el.tagName.toLowerCase() + " ") != -1);
        };

    } catch(ex) {}
}

�5Type.registerNamespace("Sys.Extended.UI.HTMLEditor");Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel=null;Sys.Extended.UI.HTMLEditor.EditPanel=function(e){var d=true,b=null,c=false,a=this;Sys.Extended.UI.HTMLEditor.EditPanel.initializeBase(a,[e]);a._loaded=c;a._eAfter=b;a._toolbars=b;a._modePanels=b;a._contentChangedElement=b;a._contentElement=b;a._contentForceElement=b;a._activeModeElement=b;a._suppressTabInDesignMode=c;a._keyboardEnabled=d;a._noPaste=c;a._hotkeys=b;a._showAnchors=c;a._showPlaceHolders=c;a._startEnd=d;a._relativeImages=d;a._documentCssPath=b;a._designPanelCssPath=b;a._imagePath_1x1=b;a._imagePath_flash=b;a._imagePath_media=b;a._imagePath_anchor=b;a._imagePath_placeHolder=b;a._autofocus=d;a._initialCleanUp=c;a._noScript=c;a._noUnicode=c;a._cachedToolbarIds=b;a._contentPrepared=c;a._activeMode=b;a._pageRequestManager=b;a._formOnSubmitSaved=b;a._validators=b;a._app_onload$delegate=Function.createDelegate(a,a._app_onload);a._onsubmit$delegate=Function.createDelegate(a,a._onsubmit);a._disposed=d};Sys.Extended.UI.HTMLEditor.EditPanel.prototype={get_relativeImages:function(){return this._relativeImages},set_relativeImages:function(a){this._relativeImages=a;this._loaded&&this.raisePropertyChanged("relativeImages")},get_startEnd:function(){return this._startEnd},set_startEnd:function(a){this._startEnd=a;this._loaded&&this.raisePropertyChanged("startEnd")},get_showPlaceHolders:function(){return this._showPlaceHolders},set_showPlaceHolders:function(a){this._showPlaceHolders=a;this._loaded&&this.raisePropertyChanged("showPlaceHolders")},get_showAnchors:function(){return this._showAnchors},set_showAnchors:function(a){this._showAnchors=a;this._loaded&&this.raisePropertyChanged("showAnchors")},get_hotkeys:function(){return this._hotkeys},set_hotkeys:function(a){this._hotkeys=a;this._loaded&&this.raisePropertyChanged("noPaste")},get_noPaste:function(){return this._noPaste},set_noPaste:function(a){this._noPaste=a;this._loaded&&this.raisePropertyChanged("noPaste")},get_suppressTabInDesignMode:function(){return this._suppressTabInDesignMode},set_suppressTabInDesignMode:function(a){this._suppressTabInDesignMode=a;this._loaded&&this.raisePropertyChanged("suppressTabInDesignMode")},get_keyboardEnabled:function(){return this._keyboardEnabled},set_keyboardEnabled:function(a){this._keyboardEnabled=a;this._loaded&&this.raisePropertyChanged("keyboardEnabled")},get_noUnicode:function(){return this._noUnicode},set_noUnicode:function(a){this._noUnicode=a;this._loaded&&this.raisePropertyChanged("noUnicode")},get_noScript:function(){return this._noScript},set_noScript:function(a){this._noScript=a;this._loaded&&this.raisePropertyChanged("noScript")},get_initialCleanUp:function(){return this._initialCleanUp},set_initialCleanUp:function(a){this._initialCleanUp=a;this._loaded&&this.raisePropertyChanged("initialCleanUp")},get_imagePath_1x1:function(){return this._imagePath_1x1},set_imagePath_1x1:function(a){this._imagePath_1x1=a},get_imagePath_flash:function(){return this._imagePath_flash},set_imagePath_flash:function(a){this._imagePath_flash=a},get_imagePath_media:function(){return this._imagePath_media},set_imagePath_media:function(a){this._imagePath_media=a},get_imagePath_anchor:function(){return this._imagePath_anchor},set_imagePath_anchor:function(a){this._imagePath_anchor=a},get_imagePath_placeHolder:function(){return this._imagePath_placeHolder},set_imagePath_placeHolder:function(a){this._imagePath_placeHolder=a},get_documentCssPath:function(){return this._documentCssPath},set_documentCssPath:function(a){this._documentCssPath=a;this._loaded&&this.raisePropertyChanged("documentCssPath")},get_designPanelCssPath:function(){return this._designPanelCssPath},set_designPanelCssPath:function(a){this._designPanelCssPath=a;this._loaded&&this.raisePropertyChanged("designPanelCssPath")},get_autofocus:function(){return this._autofocus},set_autofocus:function(a){this._autofocus=a;this._loaded&&this.raisePropertyChanged("autofocus")},get_content:function(){var a=this;return a._activeMode==null?a.get_contentElement()!=null?a._getContentForPostback():"":a.getContent()},set_content:function(b){var a=this;if(!a.get_isInitialized()||!a._loaded){if(a.get_contentElement()!=null)a.get_contentElement().value=b.replace(/\"/g,"&quot;");return}a.setContent(b);a._contentPrepared=false;a._loaded&&a.raisePropertyChanged("content")},get_activeMode:function(){return this._activeMode==null?Sys.Extended.UI.HTMLEditor.ActiveModeType.Design:this._activeMode},set_activeMode:function(b){var a=this;if(!Sys.Extended.UI.HTMLEditor.ActiveModeType_checkValue(b))throw Error.argumentOutOfRange("value, function: Sys.Extended.UI.HTMLEditor.EditPanel.set_activeMode");var c=a._activeMode,d=true;if(a._loaded&&c!=null&&c!=b){var e=new Sys.Extended.UI.HTMLEditor.ActiveModeChangedArgs(c,b,a);a.raiseBeforeActiveModeChanged(e);a._eAfter=new Sys.Extended.UI.HTMLEditor.ActiveModeChangedArgs(c,b,a);d=a._setMode(b)}else a._activeMode=b;a.get_activeModeElement().value=b;return d},get_contentChangedElement:function(){return this._contentChangedElement},set_contentChangedElement:function(a){this._contentChangedElement=a},get_contentElement:function(){return this._contentElement},set_contentElement:function(a){this._contentElement=a},get_contentForceElement:function(){return this._contentForceElement},set_contentForceElement:function(a){this._contentForceElement=a},get_activeModeElement:function(){return this._activeModeElement},set_activeModeElement:function(a){this._activeModeElement=a},setCancelOnPostback:function(){if(this._loaded)this.get_contentForceElement().value=""},setAcceptOnPostback:function(){if(this._loaded)this.get_contentForceElement().value="1"},get_toolbars:function(){if(this._toolbars==null)this._toolbars=[];return this._toolbars},set_toolbars:function(a){this.get_toolbars().push(a)},get_toolbarIds:function(){},set_toolbarIds:function(c){if(!this.get_isInitialized()){this._cachedToolbarIds=c;return}for(var b=c.split(";"),a=0;a<b.length;a++)b[a].length>0&&this.set_toolbars($find(b[a]))},get_modePanels:function(){if(this._modePanels==null)this._modePanels=[];return this._modePanels},set_modePanel:function(a){this.get_modePanels().push(a)},get_modePanelIds:function(){},set_modePanelIds:function(c){for(var b=c.split(";"),a=0;a<b.length;a++)this.set_modePanel($find(b[a]))},add_focused:function(a){this.get_events().addHandler("focused",a)},remove_focused:function(a){this.get_events().removeHandler("focused",a)},raiseFocused:function(b){var a=this.get_events().getHandler("focused");a&&a(this,b)},add_activeModeChanged:function(a){this.get_events().addHandler("activeModeChanged",a)},remove_activeModeChanged:function(a){this.get_events().removeHandler("activeModeChanged",a)},raiseActiveModeChanged:function(b){var a=this.get_events().getHandler("activeModeChanged");a&&a(this,b)},add_beforeActiveModeChanged:function(a){this.get_events().addHandler("beforeActiveModeChanged",a)},remove_beforeActiveModeChanged:function(a){this.get_events().removeHandler("beforeActiveModeChanged",a)},raiseBeforeActiveModeChanged:function(b){var a=this.get_events().getHandler("beforeActiveModeChanged");a&&a(this,b)},get_activePanel:function(){var a=this.get_modePanels()[this.get_activeMode()];if(a==null||typeof a=="undefined")throw Error.argumentOutOfRange("activeMode, function: Sys.Extended.UI.HTMLEditor.EditPanel.get_activePanel");return a},initialize:function(){var a=this;a.__appLoaded__=false;Sys.Extended.UI.HTMLEditor.EditPanel.callBaseMethod(a,"initialize");a._disposed=false;Sys.Application.add_load(a._app_onload$delegate);if(Sys&&Sys.WebForms&&Sys.WebForms.PageRequestManager){a._pageRequestManager=Sys.WebForms.PageRequestManager.getInstance();if(a._pageRequestManager){a._partialUpdateEndRequestHandler=Function.createDelegate(a,a._partialUpdateEndRequest);a._pageRequestManager.add_endRequest(a._partialUpdateEndRequestHandler);a._invokingRequestHandler=Function.createDelegate(a,a._invokingRequest);Sys.Net.WebRequestManager.add_invokingRequest(a._invokingRequestHandler);a._completedRequestHandler=Function.createDelegate(a,a._completedRequest);Sys.Net.WebRequestManager.add_completedRequest(a._completedRequestHandler)}}Sys.Extended.UI.HTMLEditor.addFormOnSubmit(a._onsubmit$delegate,a)},dispose:function(){var b=null,a=this;a._loaded=false;a._disposed=true;if(a._pageRequestManager){if(a._invokingRequestHandler){a._pageRequestManager.remove_endRequest(a._partialUpdateEndRequestHandler);a._partialUpdateEndRequestHandler=b;Sys.Net.WebRequestManager.remove_invokingRequest(a._invokingRequestHandler);a._invokingRequestHandler=b;Sys.Net.WebRequestManager.remove_completedRequest(a._completedRequestHandler);a._completedRequestHandler=b}a._pageRequestManager=b}Sys.Extended.UI.HTMLEditor.removeFormOnSubmit(a._onsubmit$delegate);Sys.Application.remove_load(a._app_onload$delegate);a.disableToolbars();Sys.Extended.UI.HTMLEditor.EditPanel.callBaseMethod(a,"dispose")},_onsubmit:function(){var a=this;if(!a._contentPrepared){a._prepareContentForPostback(a.get_content());a._contentPrepared=true}return true},_invokingRequest:function(f,d){var a=this;if(a._contentPrepared)return;var c=d.get_webRequest(),b=c.get_body(),e=new RegExp("([\\?&])("+a.get_contentElement().name+"=)([^&$]*)([&$])","g");a._prepareContentForPostback(a.get_content());b=b.replace(e,"$1$2"+escape(a.get_contentElement().value)+"$4");a._contentPrepared=true;c.set_body(b)},_completedRequest:function(){this._contentPrepared=false},_partialUpdateEndRequest:function(){var a=this;a._contentPrepared=false;if(Sys.Extended.UI.HTMLEditor.isIE&&a.__blured){a.__blured=false;a.get_activePanel()._focus()}},_app_onload:function(){var c=null,d=true,a=this;if(a.__appLoaded__)return;a.__appLoaded__=d;if(a._disposed)return;var l=a;a._loaded=d;a.set_activeMode(parseInt(a.get_activeModeElement().value));if(a._cachedToolbarIds!=c){a.set_toolbarIds(a._cachedToolbarIds);a._cachedToolbarIds=c}a._validators=a.get_modePanels()[Sys.Extended.UI.HTMLEditor.ActiveModeType.Html].get_element().Validators;a._shouldResize=false;if(Sys.Extended.UI.HTMLEditor.isIE&&document.compatMode!="BackCompat")a._shouldResize=d;if(a._shouldResize){var f=a.get_modePanels(),e=f[Sys.Extended.UI.HTMLEditor.ActiveModeType.Design];if(e==c)e=f[Sys.Extended.UI.HTMLEditor.ActiveModeType.Preview];var i=f[Sys.Extended.UI.HTMLEditor.ActiveModeType.Html];if(e!=c&&i!=c){var b=e.get_element();b.style.display="";var g=b.offsetHeight,j=false,h;if(g==0){j=d;h=Sys.Extended.UI.HTMLEditor.setElementVisibility(b.parentNode);g=b.offsetHeight}i.get_element().style.height=g+"px";if(j){Sys.Extended.UI.HTMLEditor.restoreElementVisibility(h);delete h}b.style.display="none"}}var k=a.get_contentElement().value.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&amp;/g,"&");a.setContent(a._initialCleanUp?Sys.Extended.UI.HTMLEditor.cleanUp(k.replace(/[\n\r]+/g," ")):k);a.setAcceptOnPostback()},_setActive:function(){var a=this;for(var b=0;b<a.get_toolbars().length;b++)a.get_toolbars()[b].set_activeEditPanel(a,true);if(a._eAfter!=null){a.raisePropertyChanged("activeMode");a.raiseActiveModeChanged(a._eAfter);a._eAfter=null}},_focused:function(c){var a=this;if(!(typeof c!="undefined"&&c))for(var b=0;b<a.get_toolbars().length;b++)a.get_toolbars()[b].set_activeEditPanel(a);Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel=a},_really_focused:function(){this._focused();this.raiseFocused(new Sys.EventArgs)},updateToolbar:function(){this._focused()},getContent:function(){var a=this.get_activePanel().get_content().replace(/<\/?html(?=\s|>)(?:[^>]*?)>/gi,"").replace(/<\/?head(?=\s|>)(?:[^>]*?)>/gi,"").replace(/<\/?body(?=\s|>)(?:[^>]*?)>/gi,"").replace(/^([\n\r]+)/,"").replace(/([\n\r]+)$/,"");if(!Sys.Extended.UI.HTMLEditor.isIE)a=a.replace(/^<br\s*[\/]*>$/,"");return a},setContent:function(c){var b=this,a=c;if(b.get_noScript())a=a.replace(/(<script(?:[^>]*?)>(?:[^<]*?)<\/script(?:[^>]*?)>)/ig,"");a=a.replace(/<\/?html(?=\s|>)(?:[^>]*?)>/gi,"").replace(/<\/?head(?=\s|>)(?:[^>]*?)>/gi,"").replace(/<\/?body(?=\s|>)(?:[^>]*?)>/gi,"").replace(/^([\n\r]+)/,"").replace(/([\n\r]+)$/,"");b._prepareContentForPostback(a);b.get_activePanel().set_content(a);b._validate(null,a)},_validate:function(d,c){var a=this._validators;if(a!=null&&typeof a!="undefined"){this._contentForValidation=c;try{for(var b=0;b<a.length;b++)window.ValidatorValidate(a[b],null,d);window.ValidatorUpdateIsValid()}catch(e){}this._contentForValidation=null}},_prepareContentForPostback:function(a){this.get_contentElement().value=a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\"/g,"&quot;")},_getContentForPostback:function(){return this.get_contentElement().value.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&amp;/g,"&")},_setMode:function(b){var a=this,g=a.get_activePanel();if(!g._activated){var k=a;setTimeout(function(){k._setMode(b)},10);return false}var d=a.get_content();if(Sys.Extended.UI.HTMLEditor.isOpera)d=d.replace(/\r/ig,"");if(a._shouldResize&&b==Sys.Extended.UI.HTMLEditor.ActiveModeType.Html){var h=a.get_activePanel(),i=a.get_modePanels()[Sys.Extended.UI.HTMLEditor.ActiveModeType.Html];if(h!=null&&i!=null){var c=h.get_element(),e=c.offsetHeight,j=false,f;if(e==0){j=true;f=Sys.Extended.UI.HTMLEditor.setElementVisibility(c.parentNode);e=c.offsetHeight}i.get_element().style.height=e+"px";if(j){Sys.Extended.UI.HTMLEditor.restoreElementVisibility(f);delete f}}}a.disableToolbars(b);g._deactivate();a._activeMode=b;a.setContent(d);return true},disableToolbars:function(c){for(var a=0;a<this.get_toolbars().length;a++){var b=this.get_toolbars()[a];b._loaded&&b.disable(c)}},openWait:function(){},closeWait:function(){}};Sys.Extended.UI.HTMLEditor.EditPanel.registerClass("Sys.Extended.UI.HTMLEditor.EditPanel",Sys.UI.Control);s// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />

(function() {
var scriptName = "ExtendedHover";

function execute() {

Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.HoverBehavior = function(element) {
    /// <param name="element">The DOM element the behavior is associated with.</param>
    Sys.Extended.UI.HoverBehavior.initializeBase(this, [element]);
    
    this._elementHandlers = null;
    this._hoverElementHandlers = null;
    
    this._hoverElement = null;
    this._hoverCount = 0;
    this._unhoverDelay = 0;
    this._hoverDelay = 0;
    this._hoverScript = null;
    this._unhoverScript = null;   
    this._hoverFired = false; 
}
    
Sys.Extended.UI.HoverBehavior.prototype = {
    _setupHandlersArray: function() {
        var target = [];        
        target[0] = Function.createDelegate(this, this._onHover);                
        target[1] = Function.createDelegate(this, this._onUnhover);        
        return target;
    },
    
    get_elementHandlers: function() {
        
        if (!this._elementHandlers) {
            this._elementHandlers = this._setupHandlersArray();
        }
        return this._elementHandlers;
    },
    
    get_hoverElementHandlers: function() {
        
        if (!this._hoverElementHandlers) {
            this._hoverElementHandlers = this._setupHandlersArray();
        }
        return this._hoverElementHandlers;
    },

    get_hoverElement: function() {        
        /// <value type="Object">Dom element associated with this behavior.</value>       
       
        return this._hoverElement;
    },
    
    set_hoverElement: function(element) {
        /// <param name="element" type="Object">Dom element associated with this behavior.</param>
                
        if (element != this._hoverElement) {
            
            if (this._hoverElement) {
                this._setupHandlers(this._hoverElement, this.get_hoverElementHandlers(), false);
            }
            
            this._hoverElement = element;
            
            if (this._hoverElement) {
                this._setupHandlers(this._hoverElement, this.get_hoverElementHandlers(), true);
            }            
        }
    },
    
    get_hoverDelay: function() {
        /// <value type="Number">Delay in milliseconds before unhover event is raised.</value>
        return this._hoverDelay;
    },
    
    set_hoverDelay: function(value) {
        /// <param name="value" type="Number">Delay in milliseconds before unhover event is raised.</param>
        this._hoverDelay = value;
        this.raisePropertyChanged('hoverDelay');
    },
    
    get_hoverScript: function() {
        return this._hoverScript;
    },
    
    set_hoverScript : function(script) {
        this._hoverScript = script;
    },
    
    get_unhoverDelay: function() {
        /// <value type="Number">Delay in milliseconds before unhover event is raised.</value>
        return this._unhoverDelay;
    },
    
    set_unhoverDelay: function(value) {
        /// <param name="value" type="Number">Delay in milliseconds before unhover event is raised.</param>
        this._unhoverDelay = value;
        this.raisePropertyChanged('unhoverDelay');
    },
    
    get_unhoverScript: function() {
        return this._unhoverScript;
    },
    
    set_unhoverScript : function(script) {
        this._unhoverScript = script;
    },

    dispose: function() {
        var element = this.get_element();
        
        if (this._elementHandlers) {
            var handlers = this.get_elementHandlers();
            this._setupHandlers(element, handlers, false);
            this._elementHandlers = null;
        }
       
        if(this._hoverElement) {
            var handlers = this.get_hoverElementHandlers();
            this._setupHandlers(this._hoverElement, handlers, false);
            this._hoverElement = null;
        }        
        Sys.Extended.UI.HoverBehavior.callBaseMethod(this, 'dispose');
    },

    initialize: function() {
        Sys.Extended.UI.HoverBehavior.callBaseMethod(this, 'initialize');
        
        var handlers = this.get_elementHandlers();
        
        this._setupHandlers(this.get_element(), handlers, true);
        
        if (this._hoverElement) {
            handlers = this.get_hoverElementHandlers();
            this._setupHandlers(this._hoverElement, handlers, true);
        }
    },

    add_hover: function(handler) {
        this.get_events().addHandler("hover", handler);
    },

    remove_hover: function(handler) {
        this.get_events().removeHandler("hover", handler);
    },
    
    _fireHover : function() {
    
        if (!this._hoverCount || this._hoverFired) {
            return;
        }
        
        var handler = this.get_events().getHandler("hover");
        if (handler) {
            handler(this, Sys.EventArgs.Empty);
        }
        if (this._hoverScript) {
            eval(this._hoverScript);
        }
        this._hoverFired = true;
    },
    
    _onHover: function() {
        this._hoverCount++;
        
        if (!this._hoverDelay) {
            this._fireHover();
        }
        else {
            window.setTimeout(Function.createDelegate(this, this._fireHover), this._hoverDelay);
        }
    },

    add_unhover: function(handler) {
        this.get_events().addHandler("unhover", handler);
    },
    
    remove_unhover: function(handler) {
        this.get_events().removeHandler("unhover", handler);
    },
    
    _fireUnhover : function() {
        if (this._hoverFired && !this._hoverCount) {
            this._hoverFired = false;
            var handler = this.get_events().getHandler("unhover");
            if (handler) {
                handler(this, Sys.EventArgs.Empty);
            }
            if (this._unhoverScript) {
                eval(this._unhoverScript);
            }                  
        }
    },
    
    _onUnhover: function() {
        this._hoverCount--;
  
        if (this._hoverCount <= 0) {
        
            this._hoverCount = 0;   
        
            if (!this._unhoverDelay) {
                this._fireUnhover();
            }
            else {
                window.setTimeout(Function.createDelegate(this, this._fireUnhover), this._unhoverDelay);
            }       
            
        }
    },
    
    _setupHandlers: function(element, handlers, hookup) {        
    
        if (!this.get_isInitialized() || !element) return;
        
        if (hookup) {
            $addHandler(element, "mouseover", handlers[0]);        
            $addHandler(element, "focus", handlers[0]);        
            $addHandler(element, "mouseout", handlers[1]);        
            $addHandler(element, "blur", handlers[1]);
        }
        else {
            $removeHandler(element, "mouseover", handlers[0]);        
            $removeHandler(element, "focus", handlers[0]);        
            $removeHandler(element, "mouseout", handlers[1]);        
            $removeHandler(element, "blur", handlers[1]);
        }            
    }
}
Sys.Extended.UI.HoverBehavior.descriptor = {
    properties: [   {name: 'hoverElement', isDomElement: true},
                    {name: 'unhoverDelay', type: Number} ],
    events: [   {name: 'hover'},
                {name: 'unhover'} ]
}
Sys.Extended.UI.HoverBehavior.registerClass('Sys.Extended.UI.HoverBehavior', Sys.Extended.UI.BehaviorBase);
Sys.registerComponent(Sys.Extended.UI.HoverBehavior, { name: "hover" });

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedBase", "ExtendedCommon"], execute);
}
else {
    execute();
}

})();
�O// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedAutoComplete";function a(){var o="itemOut",n="itemOver",m="itemSelected",l="hiding",k="shown",j="showing",i="populated",h="populating",z="showOnlyCurrentWordInCompletionListItem",y="completionListElementID",x="enableCaching",w="servicePath",v="serviceMethod",u="minimumPrefixLength",t="completionSetCount",s="completionList",r="completionInterval",g="black",f="white",e="hidden",q="mouseover",p="mousedown",d="blur",c=true,b=false,a=null;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.AutoCompleteBehavior=function(e){var d=this;Sys.Extended.UI.AutoCompleteBehavior.initializeBase(d,[e]);d._servicePath=a;d._serviceMethod=a;d._contextKey=a;d._useContextKey=b;d._minimumPrefixLength=3;d._completionSetCount=10;d._completionInterval=1e3;d._completionListElementID=a;d._completionListElement=a;d._textColor="windowtext";d._textBackground="window";d._popupBehavior=a;d._popupBehaviorHiddenHandler=a;d._onShowJson=a;d._onHideJson=a;d._timer=a;d._cache=a;d._currentPrefix=a;d._selectIndex=-1;d._focusHandler=a;d._blurHandler=a;d._bodyClickHandler=a;d._completionListBlurHandler=a;d._keyDownHandler=a;d._mouseDownHandler=a;d._mouseUpHandler=a;d._mouseOverHandler=a;d._tickHandler=a;d._enableCaching=c;d._flyoutHasFocus=b;d._textBoxHasFocus=b;d._completionListCssClass=a;d._completionListItemCssClass=a;d._highlightedItemCssClass=a;d._delimiterCharacters=a;d._firstRowSelected=b;d._showOnlyCurrentWordInCompletionListItem=b;d._webRequest=a};Sys.Extended.UI.AutoCompleteBehavior.prototype={initialize:function(){var b=this;Sys.Extended.UI.AutoCompleteBehavior.callBaseMethod(b,"initialize");$common.prepareHiddenElementForATDeviceUpdate();b._popupBehaviorHiddenHandler=Function.createDelegate(b,b._popupHidden);b._tickHandler=Function.createDelegate(b,b._onTimerTick);b._focusHandler=Function.createDelegate(b,b._onGotFocus);b._blurHandler=Function.createDelegate(b,b._onLostFocus);b._keyDownHandler=Function.createDelegate(b,b._onKeyDown);b._mouseDownHandler=Function.createDelegate(b,b._onListMouseDown);b._mouseUpHandler=Function.createDelegate(b,b._onListMouseUp);b._mouseOverHandler=Function.createDelegate(b,b._onListMouseOver);b._completionListBlurHandler=Function.createDelegate(b,b._onCompletionListBlur);b._bodyClickHandler=Function.createDelegate(b,b._onCompletionListBlur);b._timer=new Sys.Timer;b.initializeTimer(b._timer);var c=b.get_element();b.initializeTextBox(c);if(b._completionListElementID!==a)b._completionListElement=$get(b._completionListElementID);if(b._completionListElement==a){b._completionListElement=document.createElement("ul");b._completionListElement.id=b.get_id()+"_completionListElem";if(Sys.Browser.agent===Sys.Browser.Safari)document.body.appendChild(b._completionListElement);else c.parentNode.insertBefore(b._completionListElement,c.nextSibling)}b.initializeCompletionList(b._completionListElement);b._popupBehavior=$create(Sys.Extended.UI.PopupBehavior,{id:b.get_id()+"PopupBehavior",parentElement:c,positioningMode:Sys.Extended.UI.PositioningMode.BottomLeft},a,a,b._completionListElement);b._popupBehavior.add_hidden(b._popupBehaviorHiddenHandler);b._onShowJson&&b._popupBehavior.set_onShow(b._onShowJson);b._onHideJson&&b._popupBehavior.set_onHide(b._onHideJson)},dispose:function(){var b=this;b._onShowJson=a;b._onHideJson=a;if(b._popupBehavior){b._popupBehaviorHiddenHandler&&b._popupBehavior.remove_hidden(b._popupBehaviorHiddenHandler);b._popupBehavior.dispose();b._popupBehavior=a}if(b._timer){b._timer.dispose();b._timer=a}var c=b.get_element();if(c){$removeHandler(c,"focus",b._focusHandler);$removeHandler(c,d,b._blurHandler);$removeHandler(c,"keydown",b._keyDownHandler);$removeHandler(b._completionListElement,d,b._completionListBlurHandler);$removeHandler(b._completionListElement,p,b._mouseDownHandler);$removeHandler(b._completionListElement,"mouseup",b._mouseUpHandler);$removeHandler(b._completionListElement,q,b._mouseOverHandler)}if(b._bodyClickHandler){$removeHandler(document.body,"click",b._bodyClickHandler);b._bodyClickHandler=a}b._popupBehaviorHiddenHandler=a;b._tickHandler=a;b._focusHandler=a;b._blurHandler=a;b._keyDownHandler=a;b._completionListBlurHandler=a;b._mouseDownHandler=a;b._mouseUpHandler=a;b._mouseOverHandler=a;Sys.Extended.UI.AutoCompleteBehavior.callBaseMethod(b,"dispose")},initializeTimer:function(a){a.set_interval(this._completionInterval);a.add_tick(this._tickHandler)},initializeTextBox:function(a){a.autocomplete="off";$addHandler(a,"focus",this._focusHandler);$addHandler(a,d,this._blurHandler);$addHandler(a,"keydown",this._keyDownHandler)},initializeCompletionList:function(c){var b=this;if(b._completionListCssClass)Sys.UI.DomElement.addCssClass(c,b._completionListCssClass);else{var a=c.style;a.textAlign="left";a.visibility=e;a.cursor="default";a.listStyle="none";a.padding="0px";a.margin="0px! important";if(Sys.Browser.agent===Sys.Browser.Safari){a.border="solid 1px gray";a.backgroundColor=f;a.color=g}else{a.border="solid 1px buttonshadow";a.backgroundColor=b._textBackground;a.color=b._textColor}}$addHandler(c,p,b._mouseDownHandler);$addHandler(c,"mouseup",b._mouseUpHandler);$addHandler(c,q,b._mouseOverHandler);$addHandler(c,d,b._completionListBlurHandler);$addHandler(document.body,"click",b._bodyClickHandler)},_currentCompletionWord:function(){var b=this,f=b.get_element(),c=f.value,d=c;if(b.get_isMultiWord()){var a=b._getCurrentWordStartIndex(),e=b._getCurrentWordEndIndex(a);if(e<=a)d=c.substring(a);else d=c.substring(a,e)}return d},_getCursorIndex:function(){return this.get_element().selectionStart},_getCurrentWordStartIndex:function(){var a=this;for(var g=a.get_element(),f=g.value.substring(0,a._getCursorIndex()),b=0,c=-1,d=0;d<a._delimiterCharacters.length;++d){var e=f.lastIndexOf(a._delimiterCharacters.charAt(d));if(e>c)c=e}b=c;if(b>=a._getCursorIndex())b=0;return b<0?0:b+1},_getCurrentWordEndIndex:function(d){for(var e=this.get_element(),f=e.value.substring(d),a=0,c=0;c<this._delimiterCharacters.length;++c){var b=f.indexOf(this._delimiterCharacters.charAt(c));if(b>0&&(b<a||a==0))a=b}return a<=0?e.value.length:a+d},get_isMultiWord:function(){return this._delimiterCharacters!=a&&this._delimiterCharacters!=""},_getTextWithInsertedWord:function(d){var b=this,h=d,j=0,i=b.get_element(),c=i.value;if(b.get_isMultiWord()){var a=b._getCurrentWordStartIndex(),e=b._getCurrentWordEndIndex(a),f="",g="";if(a>0)f=c.substring(0,a);if(e>a)g=c.substring(e);h=f+d+g}return h},_hideCompletionList:function(){var a=new Sys.CancelEventArgs;this.raiseHiding(a);if(a.get_cancel())return;this.hidePopup()},showPopup:function(){this._popupBehavior.show();this.raiseShown(Sys.EventArgs.Empty)},hidePopup:function(){if(this._popupBehavior)this._popupBehavior.hide();else this._popupHidden()},_popupHidden:function(){var a=this;a._completionListElement.innerHTML="";a._selectIndex=-1;a._flyoutHasFocus=b;a.raiseHidden(Sys.EventArgs.Empty)},_highlightItem:function(d){var a=this;for(var h=a._completionListElement.childNodes,e=0;e<h.length;e++){var b=h[e];if(b._highlighted){if(a._completionListItemCssClass){Sys.UI.DomElement.removeCssClass(b,a._highlightedItemCssClass);Sys.UI.DomElement.addCssClass(b,a._completionListItemCssClass)}else if(Sys.Browser.agent===Sys.Browser.Safari){b.style.backgroundColor=f;b.style.color=g}else{b.style.backgroundColor=a._textBackground;b.style.color=a._textColor}a.raiseItemOut(new Sys.Extended.UI.AutoCompleteItemEventArgs(b,b.firstChild.nodeValue,b._value))}}if(a._highlightedItemCssClass){Sys.UI.DomElement.removeCssClass(d,a._completionListItemCssClass);Sys.UI.DomElement.addCssClass(d,a._highlightedItemCssClass)}else if(Sys.Browser.agent===Sys.Browser.Safari)d.style.backgroundColor="lemonchiffon";else{d.style.backgroundColor="highlight";d.style.color="highlighttext"}d._highlighted=c;a.raiseItemOver(new Sys.Extended.UI.AutoCompleteItemEventArgs(d,d.firstChild.nodeValue,d._value))},_onCompletionListBlur:function(){this._hideCompletionList()},_onListMouseDown:function(d){var a=this;if(d.target!==a._completionListElement){a._setText(d.target);a._flyoutHasFocus=b}else a._flyoutHasFocus=c},_onListMouseUp:function(){try{this.get_element().focus()}catch(b){}},_onListMouseOver:function(e){var a=this,c=e.target;if(c!==a._completionListElement)for(var d=a._completionListElement.childNodes,b=0;b<d.length;++b)if(c===d[b]){a._highlightItem(c);a._selectIndex=b;break}},_onGotFocus:function(){var a=this;a._textBoxHasFocus=c;a._flyoutHasFocus&&a._hideCompletionList();a._minimumPrefixLength==0&&!a.get_element().value&&a._timer.set_enabled(c)},_onKeyDown:function(d){var a=this;a._textBoxHasFocus=c;a._timer.set_enabled(b);var e=d.keyCode?d.keyCode:d.rawEvent.keyCode;if(e===Sys.UI.Key.esc){a._hideCompletionList();d.preventDefault()}else if(e===Sys.UI.Key.up){if(a._selectIndex>0){a._selectIndex--;a._handleScroll(a._completionListElement.childNodes[a._selectIndex],a._selectIndex);a._highlightItem(a._completionListElement.childNodes[a._selectIndex]);d.stopPropagation();d.preventDefault()}}else if(e===Sys.UI.Key.down){if(a._selectIndex<a._completionListElement.childNodes.length-1){a._selectIndex++;a._handleScroll(a._completionListElement.childNodes[a._selectIndex],a._selectIndex);a._highlightItem(a._completionListElement.childNodes[a._selectIndex]);d.stopPropagation();d.preventDefault()}}else if(e===Sys.UI.Key.enter)if(a._selectIndex!==-1){a._setText(a._completionListElement.childNodes[a._selectIndex]);d.preventDefault()}else a.hidePopup();else if(e===Sys.UI.Key.tab)a._selectIndex!==-1&&a._setText(a._completionListElement.childNodes[a._selectIndex]);else a._timer.set_enabled(c)},_handleScroll:function(e,c){var a=this._completionListElement,b=$common.getBounds(e),d=this._completionListElement.childNodes.length;if(b.height*c-(a.clientHeight+a.scrollTop)>=0)a.scrollTop+=b.height*c-(a.clientHeight+a.scrollTop)+b.height;if(b.height*(d-(c+1))-(a.scrollHeight-a.scrollTop)>=0)a.scrollTop-=b.height*(d-(c+1))-(a.scrollHeight-a.scrollTop)+b.height;if(a.scrollTop%b.height!==0)if(b.height*(c+1)-(a.clientHeight+a.scrollTop)>=0)a.scrollTop-=a.scrollTop%b.height;else a.scrollTop+=b.height-a.scrollTop%b.height},_handleFlyoutFocus:function(){var b=this;if(!b._textBoxHasFocus)if(!b._flyoutHasFocus){if(b._webRequest){b._webRequest.get_executor().abort();b._webRequest=a}b._hideCompletionList()}},_onLostFocus:function(){var a=this;a._textBoxHasFocus=b;a._timer.set_enabled(b);window.setTimeout(Function.createDelegate(a,a._handleFlyoutFocus),500)},_onMethodComplete:function(d,b){this._webRequest=a;this._update(b,d,c)},_onMethodFailed:function(){this._webRequest=a},_onTimerTick:function(g,e){var c=this;c._timer.set_enabled(b);if(c._servicePath&&c._serviceMethod){var d=c._currentCompletionWord();if(d.trim().length<c._minimumPrefixLength){c._currentPrefix=a;c._update("",a,b);return}if(c._currentPrefix!==d||d==""&&c._minimumPrefixLength==0){c._currentPrefix=d;if(d!=""&&c._cache&&c._cache[d]){c._update(d,c._cache[d],b);return}var e=new Sys.CancelEventArgs;c.raisePopulating(e);if(e.get_cancel())return;var f={prefixText:c._currentPrefix,count:c._completionSetCount};if(c._useContextKey)f.contextKey=c._contextKey;if(c._webRequest){c._webRequest.get_executor().abort();c._webRequest=a}c._webRequest=Sys.Net.WebServiceProxy.invoke(c.get_servicePath(),c.get_serviceMethod(),b,f,Function.createDelegate(c,c._onMethodComplete),Function.createDelegate(c,c._onMethodFailed),d);$common.updateFormToRefreshATDeviceBuffer()}}},_setText:function(d){var c=this,g=d&&d.firstChild?d.firstChild.nodeValue:a;c._timer.set_enabled(b);var f=c.get_element(),e=f.control,h=c._showOnlyCurrentWordInCompletionListItem?c._getTextWithInsertedWord(g):g;if(e&&e.set_text)e.set_text(h);else f.value=h;$common.tryFireEvent(f,"change");c.raiseItemSelected(new Sys.Extended.UI.AutoCompleteItemEventArgs(d,g,d?d._value:a));c._currentPrefix=c._currentCompletionWord();c._hideCompletionList()},_update:function(m,d,p){var b=this;if(p&&b.get_enableCaching()){if(!b._cache)b._cache={};b._cache[m]=d}if(!b._textBoxHasFocus||m!=b._currentCompletionWord()){b._hideCompletionList();return}if(d&&d.length){b._completionListElement.innerHTML="";b._selectIndex=-1;for(var j=a,h=a,k=a,i=0;i<d.length;i++){var c=a;if(b._completionListElementID)c=document.createElement("div");else c=document.createElement("li");if(j==a)j=c;try{var l=Sys.Serialization.JavaScriptSerializer.deserialize("("+d[i]+")");if(l&&l.First){h=l.First;k=l.Second}else{h=d[i];k=h}}catch(r){h=d[i];k=d[i]}var q=b._showOnlyCurrentWordInCompletionListItem?h:b._getTextWithInsertedWord(h);c.appendChild(document.createTextNode(q));c._value=k;c.__item="";if(b._completionListItemCssClass)Sys.UI.DomElement.addCssClass(c,b._completionListItemCssClass);else{var e=c.style;e.padding="0px";e.textAlign="left";e.textOverflow="ellipsis";if(Sys.Browser.agent===Sys.Browser.Safari){e.backgroundColor=f;e.color=g}else{e.backgroundColor=b._textBackground;e.color=b._textColor}}b._completionListElement.appendChild(c)}var o=$common.getBounds(b.get_element());b._completionListElement.style.width=Math.max(1,o.width-2)+"px";b._completionListElement.scrollTop=0;b.raisePopulated(Sys.EventArgs.Empty);var n=new Sys.CancelEventArgs;b.raiseShowing(n);if(!n.get_cancel()){b.showPopup();if(b._firstRowSelected&&j!=a){b._highlightItem(j);b._selectIndex=0}}}else b._hideCompletionList()},get_onShow:function(){return this._popupBehavior?this._popupBehavior.get_onShow():this._onShowJson},set_onShow:function(b){var a=this;if(a._popupBehavior)a._popupBehavior.set_onShow(b);else a._onShowJson=b;a.raisePropertyChanged("onShow")},get_onShowBehavior:function(){return this._popupBehavior?this._popupBehavior.get_onShowBehavior():a},onShow:function(){this._popupBehavior&&this._popupBehavior.onShow()},get_onHide:function(){return this._popupBehavior?this._popupBehavior.get_onHide():this._onHideJson},set_onHide:function(b){var a=this;if(a._popupBehavior)a._popupBehavior.set_onHide(b);else a._onHideJson=b;a.raisePropertyChanged("onHide")},get_onHideBehavior:function(){return this._popupBehavior?this._popupBehavior.get_onHideBehavior():a},onHide:function(){this._popupBehavior&&this._popupBehavior.onHide()},get_completionInterval:function(){return this._completionInterval},set_completionInterval:function(a){if(this._completionInterval!=a){this._completionInterval=a;this.raisePropertyChanged(r)}},get_completionList:function(){return this._completionListElement},set_completionList:function(a){if(this._completionListElement!=a){this._completionListElement=a;this.raisePropertyChanged(s)}},get_completionSetCount:function(){return this._completionSetCount},set_completionSetCount:function(a){if(this._completionSetCount!=a){this._completionSetCount=a;this.raisePropertyChanged(t)}},get_minimumPrefixLength:function(){return this._minimumPrefixLength},set_minimumPrefixLength:function(a){if(this._minimumPrefixLength!=a){this._minimumPrefixLength=a;this.raisePropertyChanged(u)}},get_serviceMethod:function(){return this._serviceMethod},set_serviceMethod:function(a){if(this._serviceMethod!=a){this._serviceMethod=a;this.raisePropertyChanged(v)}},get_servicePath:function(){return this._servicePath},set_servicePath:function(a){if(this._servicePath!=a){this._servicePath=a;this.raisePropertyChanged(w)}},get_contextKey:function(){return this._contextKey},set_contextKey:function(b){var a=this;if(a._contextKey!=b){a._contextKey=b;a.set_useContextKey(c);a.raisePropertyChanged("contextKey")}},get_useContextKey:function(){return this._useContextKey},set_useContextKey:function(a){if(this._useContextKey!=a){this._useContextKey=a;this.raisePropertyChanged("useContextKey")}},get_enableCaching:function(){return this._enableCaching},set_enableCaching:function(a){if(this._enableCaching!=a){this._enableCaching=a;this.raisePropertyChanged(x)}},get_completionListElementID:function(){return this._completionListElementID},set_completionListElementID:function(a){if(this._completionListElementID!=a){this._completionListElementID=a;this.raisePropertyChanged(y)}},get_completionListCssClass:function(){return this._completionListCssClass},set_completionListCssClass:function(a){if(this._completionListCssClass!=a){this._completionListCssClass=a;this.raisePropertyChanged("completionListCssClass")}},get_completionListItemCssClass:function(){return this._completionListItemCssClass},set_completionListItemCssClass:function(a){if(this._completionListItemCssClass!=a){this._completionListItemCssClass=a;this.raisePropertyChanged("completionListItemCssClass")}},get_highlightedItemCssClass:function(){return this._highlightedItemCssClass},set_highlightedItemCssClass:function(a){if(this._highlightedItemCssClass!=a){this._highlightedItemCssClass=a;this.raisePropertyChanged("highlightedItemCssClass")}},get_delimiterCharacters:function(){return this._delimiterCharacters},set_delimiterCharacters:function(a){if(this._delimiterCharacters!=a){this._delimiterCharacters=a;this.raisePropertyChanged("delimiterCharacters")}},get_firstRowSelected:function(){return this._firstRowSelected},set_firstRowSelected:function(a){if(this._firstRowSelected!=a){this._firstRowSelected=a;this.raisePropertyChanged("firstRowSelected")}},get_showOnlyCurrentWordInCompletionListItem:function(){return this._showOnlyCurrentWordInCompletionListItem},set_showOnlyCurrentWordInCompletionListItem:function(a){if(this._showOnlyCurrentWordInCompletionListItem!=a){this._showOnlyCurrentWordInCompletionListItem=a;this.raisePropertyChanged(z)}},add_populating:function(a){this.get_events().addHandler(h,a)},remove_populating:function(a){this.get_events().removeHandler(h,a)},raisePopulating:function(b){var a=this.get_events().getHandler(h);a&&a(this,b)},add_populated:function(a){this.get_events().addHandler(i,a)},remove_populated:function(a){this.get_events().removeHandler(i,a)},raisePopulated:function(b){var a=this.get_events().getHandler(i);a&&a(this,b)},add_showing:function(a){this.get_events().addHandler(j,a)},remove_showing:function(a){this.get_events().removeHandler(j,a)},raiseShowing:function(b){var a=this.get_events().getHandler(j);a&&a(this,b)},add_shown:function(a){this.get_events().addHandler(k,a)},remove_shown:function(a){this.get_events().removeHandler(k,a)},raiseShown:function(b){var a=this.get_events().getHandler(k);a&&a(this,b)},add_hiding:function(a){this.get_events().addHandler(l,a)},remove_hiding:function(a){this.get_events().removeHandler(l,a)},raiseHiding:function(b){var a=this.get_events().getHandler(l);a&&a(this,b)},add_hidden:function(a){this.get_events().addHandler(e,a)},remove_hidden:function(a){this.get_events().removeHandler(e,a)},raiseHidden:function(b){var a=this.get_events().getHandler(e);a&&a(this,b)},add_itemSelected:function(a){this.get_events().addHandler(m,a)},remove_itemSelected:function(a){this.get_events().removeHandler(m,a)},raiseItemSelected:function(b){var a=this.get_events().getHandler(m);a&&a(this,b)},add_itemOver:function(a){this.get_events().addHandler(n,a)},remove_itemOver:function(a){this.get_events().removeHandler(n,a)},raiseItemOver:function(b){var a=this.get_events().getHandler(n);a&&a(this,b)},add_itemOut:function(a){this.get_events().addHandler(o,a)},remove_itemOut:function(a){this.get_events().removeHandler(o,a)},raiseItemOut:function(b){var a=this.get_events().getHandler(o);a&&a(this,b)}};Sys.Extended.UI.AutoCompleteBehavior.registerClass("Sys.Extended.UI.AutoCompleteBehavior",Sys.Extended.UI.BehaviorBase);Sys.registerComponent(Sys.Extended.UI.AutoCompleteBehavior,{name:"autoComplete"});Sys.Extended.UI.AutoCompleteBehavior.descriptor={properties:[{name:r,type:Number},{name:s,isDomElement:c},{name:y,type:String},{name:t,type:Number},{name:u,type:Number},{name:v,type:String},{name:w,type:String},{name:x,type:Boolean},{name:z,type:Boolean}]};Sys.Extended.UI.AutoCompleteItemEventArgs=function(d,e,c){var b=this;Sys.Extended.UI.AutoCompleteItemEventArgs.initializeBase(b);b._item=d;b._text=e;b._value=c!==undefined?c:a};Sys.Extended.UI.AutoCompleteItemEventArgs.prototype={get_item:function(){return this._item},set_item:function(a){this._item=a},get_text:function(){return this._text},set_text:function(a){this._text=a},get_value:function(){return this._value},set_value:function(a){this._value=a}};Sys.Extended.UI.AutoCompleteItemEventArgs.registerClass("Sys.Extended.UI.AutoCompleteItemEventArgs",Sys.EventArgs)}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedTimer","ExtendedAnimationBehavior","ExtendedPopup"],a);else a()})();�$Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.AsyncFileUpload=function(c){var b=null,a=this;Sys.Extended.UI.AsyncFileUpload.initializeBase(a,[c]);a._hiddenField=b;a._inputFile=b;a._innerTB=b;a._postBackUrl="";a._formName="";a._iframe=b;a._waitTimer=b;a._completeBackColor="";a._uploadingBackColor="";a._errorBackColor="";a._throbber=b;a._onchange$delegate=b;a._onload$delegate=b;a._app_onload$delegate=Function.createDelegate(a,a._app_onload);a._onmouseup$delegate=b};Sys.Extended.UI.AsyncFileUpload.prototype={get_throbber:function(){return this._throbber},set_throbber:function(a){this._throbber=a},get_completeBackColor:function(){return this._completeBackColor},set_completeBackColor:function(a){this._completeBackColor=a},get_errorBackColor:function(){return this._errorBackColor},set_errorBackColor:function(a){this._errorBackColor=a},get_uploadingBackColor:function(){return this._uploadingBackColor},set_uploadingBackColor:function(a){this._uploadingBackColor=a},get_inputFile:function(){return this._inputFile},set_inputFile:function(a){this._inputFile=a},get_hiddenField:function(){return this._hiddenField},set_hiddenField:function(a){this._hiddenField=a},get_innerTB:function(){return this._innerTB},set_innerTB:function(a){this._innerTB=a},get_postBackUrl:function(){return this._postBackUrl},set_postBackUrl:function(a){this._postBackUrl=a},get_formName:function(){return this._formName},set_formName:function(a){this._formName=a},add_uploadStarted:function(a){this.get_events().addHandler("uploadStarted",a)},remove_uploadStarted:function(a){this.get_events().removeHandler("uploadStarted",a)},raiseUploadStarted:function(b){var a=this.get_events().getHandler("uploadStarted");return a?a(this,b):true},add_uploadComplete:function(a){this.get_events().addHandler("uploadComplete",a)},remove_uploadComplete:function(a){this.get_events().removeHandler("uploadComplete",a)},raiseUploadComplete:function(b){var a=this.get_events().getHandler("uploadComplete");a&&a(this,b)},add_uploadError:function(a){this.get_events().addHandler("uploadError",a)},remove_uploadError:function(a){this.get_events().removeHandler("uploadError",a)},raiseUploadError:function(b){var a=this.get_events().getHandler("uploadError");if(a){a(this,b);return true}return false},setThrobber:function(a){if(this.get_throbber()!=null)this.get_throbber().style.display=a?"":"none"},_onStart:function(b){var a=this.raiseUploadStarted(new Sys.Extended.UI.AsyncFileUploadEventArgs(b,null,null,null));if(typeof a=="undefined")a=true;return a},initialize:function(){var a=this;Sys.Extended.UI.AsyncFileUpload.callBaseMethod(a,"initialize");Sys.Application.add_load(a._app_onload$delegate);a._iframeName=a.get_element()+"_iframe";a.setThrobber(false)},dispose:function(){var b=null,a=this;Sys.Application.remove_load(a._app_onload$delegate);if(a._onchange$delegate!=b){$common.removeHandlers(a._inputFile,{change:a._onchange$delegate});a._onchange$delegate=b}if(a._onmouseup$delegate!=b){$common.removeHandlers(a._inputFile,{mouseup:a._onmouseup$delegate});a._onmouseup$delegate=b}a._removeIframe();Sys.Extended.UI.AsyncFileUpload.callBaseMethod(a,"dispose")},_onmouseup:function(){var a=this._inputFile;setTimeout(function(){a.blur()},0);return true},_app_onload:function(){var a=this;a.setThrobber(false);if(a._inputFile!=null){if(a._onchange$delegate==null){a._onchange$delegate=Function.createDelegate(a,a._onchange);$addHandlers(a._inputFile,{change:a._onchange$delegate})}if(Sys.Browser.agent==Sys.Browser.Firefox){a._inputFile.size=20;var c=a._inputFile.offsetWidth;a._inputFile.style.width="";while(a._inputFile.offsetWidth<c)a._inputFile.size++}if(a._innerTB!=null){a._inputFile.blur();var b=a._inputFile;setTimeout(function(){b.blur()},0);a._innerTB.style.width=a._inputFile.offsetWidth-107+"px";a._inputFile.parentNode.style.width=a._inputFile.offsetWidth+"px";if(Sys.Browser.agent==Sys.Browser.InternetExplorer){a._onmouseup$delegate=Function.createDelegate(a,a._onmouseup);$addHandlers(a._inputFile,{mouseup:a._onmouseup$delegate})}}}},_removeIframe:function(){var b=null,a=this;a._removeTimer();if(a._iframe!=b){if(a._onload$delegate!=b){$common.removeHandlers(a._iframe,{load:a._onload$delegate});a._onload$delegate=b}document.body.removeChild(a._iframe);a._iframe=b}},_removeTimer:function(){if(this._waitTimer!=null){window.clearTimeout(this._waitTimer);this._waitTimer=null}},_onError:function(b){var a=this,c=Sys.Extended.UI.Resources.AsyncFileUpload_UnhandledException;a.setThrobber(false);if(a.get_errorBackColor()!="")if(a._innerTB!=null)a._innerTB.style.backgroundColor=a.get_errorBackColor();else a._inputFile.style.backgroundColor=a.get_errorBackColor();!a.raiseUploadError(new Sys.Extended.UI.AsyncFileUploadEventArgs(a._inputFile.value,null,null,b))&&alert(c+": "+b)},_onchange:function(){var a=this,c=a._inputFile.value;if(c=="")return;if(a._innerTB!=null)a._innerTB.value=c;if(a._hiddenField!=null)a._hiddenField.value=c;try{if(a._iframe==null){a._onload$delegate=Function.createDelegate(a,a._onload);var b=document.createElement("IFRAME");b.width="0";b.height="0";b.style.display="none";b.src="about:blank";b.id=a._iframeName;b.name=a._iframeName;$addHandlers(b,{load:a._onload$delegate});a._iframe=b;document.body.appendChild(a._iframe);b.contentWindow.name=a._iframeName}else{a._removeIframe();var d=Sys.Extended.UI.Resources.AsyncFileUpload_InternalErrorMessage;a._onError(d)}}catch(e){a._onError(e.message)}},_stopLoad:function(f){var a=this,d=document.getElementById(a._formName);a._removeTimer();a.setThrobber(false);d.target="_top";d.action=a._postBackUrl;var e,c="",b=f.split("------");if(b.length>0){if(b[0]=="error"){a._onError(b[1]);return}e=parseInt(b[0])}if(b.length>1)c=b[1];if(a.get_completeBackColor()!="")if(a._innerTB!=null)a._innerTB.style.backgroundColor=a.get_completeBackColor();else a._inputFile.style.backgroundColor=a.get_completeBackColor();a.raiseUploadComplete(new Sys.Extended.UI.AsyncFileUploadEventArgs(a._inputFile.value,e,c,null))},_onload:function(i){var d=null,f=true,a=this,m=f,g=a,c=document.getElementById(a._formName);try{var b=a._iframe.contentWindow.document;if(b==d||b.location==d){var i={message:Sys.Extended.UI.Resources.AsyncFileUpload_UploadingProblem};throw i;}else if(b.location.href=="about:blank"){a._removeTimer();if(a.get_uploadingBackColor()!="")if(a._innerTB!=d)a._innerTB.style.backgroundColor=a.get_uploadingBackColor();else a._inputFile.style.backgroundColor=a.get_uploadingBackColor();var s=a._onStart(a._inputFile.value);if(s){var h=a._postBackUrl;h+=h.indexOf("?")===-1?"?":"&";c.action=h+"AsyncFileUploadID="+a.get_element().id+"&rnd="+Math.random().toString().replace(/\./g,"");c.target=a._iframeName;m=false;a.setThrobber(f);setTimeout(function(){c.submit();g._waitTimer=setTimeout(function(){g._wait()},100)},0);return f}}else{if(b.body.innerHTML=="")return f;var q=b.getElementById(a.get_element().id),o,j="";if(q!=d){var e=q.innerHTML.split("------");if(e.length>0){if(e[0]=="error"){var i={message:e[1]};throw i;}o=parseInt(e[0])}if(e.length>1)j=e[1]}else{var k=Sys.Extended.UI.Resources.AsyncFileUpload_UnknownServerError;function r(b,a){k=a;return""}b.body.innerHTML.replace(/Exception\]:([^\n\r]+)[\n\r]/,r);var l=Sys.Extended.UI.Resources.AsyncFileUpload_ServerResponseError+": '"+k+"'",t=confirm(l+"\n\n"+Sys.Extended.UI.Resources.AsyncFileUpload_ConfirmToSeeErrorPage);if(t){var n=window.open("","NotFoundInAnswer","toolbar=0,status=1,scrollbars=1,resizable=1,width=600,height=400");function p(){try{!n.document&&setTimeout(p,100)}catch(c){return}var a=n.document;a.open();a.write("<body>"+b.body.innerHTML+"</body>");a.close()}setTimeout(p,0)}var i={message:l};throw i;}a._removeTimer();c.target="_top";c.action=a._postBackUrl;if(a.get_completeBackColor()!="")if(a._innerTB!=d)a._innerTB.style.backgroundColor=a.get_completeBackColor();else a._inputFile.style.backgroundColor=a.get_completeBackColor();a.setThrobber(false);a.raiseUploadComplete(new Sys.Extended.UI.AsyncFileUploadEventArgs(a._inputFile.value,o,j,d))}}catch(u){a._removeTimer();c.target="_top";c.action=a._postBackUrl;a._onError(u.message)}finally{m&&setTimeout(function(){g._removeIframe()},100)}},_wait:function(){var a=this;if(a._waitTimer==null)return;var b=a;try{var c=a._iframe.contentWindow.document,d=c.location,e=d.href;a._waitTimer=setTimeout(function(){b._wait()},100)}catch(f){setTimeout(function(){b._removeIframe()},100);setTimeout(function(){b._onError(Sys.Extended.UI.Resources.AsyncFileUpload_UploadingProblem)},0);a._waitTimer=null}}};Sys.Extended.UI.AsyncFileUpload.registerClass("Sys.Extended.UI.AsyncFileUpload",Sys.Extended.UI.ControlBase);Sys.Extended.UI.AsyncFileUploadEventArgs=function(d,e,c,b){var a=this;if(arguments.length!=4)throw Error.parameterCount();Sys.Extended.UI.AsyncFileUploadEventArgs.initializeBase(a);a._fileName=d;a._length=e;a._contentType=c;a._errorMessage=b};Sys.Extended.UI.AsyncFileUploadEventArgs.prototype={get_fileName:function(){var b=this._fileName.lastIndexOf("/"),a=this._fileName.lastIndexOf("\\"),c=this._fileName.substr((b>a?b:a)+1);return c},get_path:function(){return this._fileName},get_length:function(){return this._length},get_contentType:function(){return this._contentType},get_errorMessage:function(){return this._errorMessage}};Sys.Extended.UI.AsyncFileUploadEventArgs.registerClass("Sys.Extended.UI.AsyncFileUploadEventArgs",Sys.EventArgs);6   �& h�( @ �Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��������������������������������������������������Q����$�Q�������������������������������������������������Q������$�Q�����������!�!����������������������������������Q��������������$�Q����������!�!�!�!�!�!������������������������������Q��������$�Q�������!�!�!�!�!�!�!�!�!�!��������������������������Q������$�Q�������!�!�!�!����!�!�!�!�!�!����������������������Q����Q�������!�!����������!�!�!�!�!�!������������������Q����Q����������������������!�!�!�!�!�!��������������Q����Q�������������������������!�!�!�!�!�!����������Q��Q����������������������������!�!�!�!����������Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q�������������������������������!�!�������Q��Q������������������������������������������Q���������������������������������������Q��Q���������������������������������������Q����������������������������������������Q��Q���������������������������������������Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q�������������������������������������������������Q��Q������������������������������������������������Q����Q�����������������������������������������������Q����Q����������������������������������������������Q����Q���������������������������������������������Q��$�����Q��������������������������������������������Q��$�������Q��������������������������������������������Q��$�������������Q������������������������������������������Q��$�����Q�����������������������������������������Q��$���Q����������������������������������������Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q���������������������������������������?��?��?��?��9��1�� ?�1��9��?��?�������������(  ���$�Q��Q��Q��Q��Q��Q��Q��Q��������$�Q��������������������Q������$�Q����֏���R�S����������Q����Q������b�c���J�K���Q����Q��������������m�m��Q��Q�������������������Q��Q��Q��Q��Q��Q��Q��Q�������������������Q��Q����������������Q��Q��Q��Q��Q��Q��Q��Q��Q��������������������Q��Q�������������������Q����Q������������������Q����Q�������������������Q��$�����Q�������������������Q��$�������Q��Q��Q��Q��Q��Q��Q��Q��$����������������{��{$�K��O����bGIF89a� ��������������ض������������������������������������������������!� ,?�(�`��*(L�Pa�B@�"�	@��GBX@����p�%0�	�&��;�GIF89a�����������������������������������������������������������������������������������������������������������������������������������~~~}}}vvvhhhXXXRRRKKKEEEDDDAAA???===555333���!�;,���pH,��r�l6�I��	�Z�ի5+5,	)�Y��t9uUE�|��l����\$!/:"xm:89'I%:)��g3
�*:#��U�g2,�14��P���#:(�P���--�P��� +��P�����P�����P�����P�����P�����G��A;�GIF89a�
�������������������������������������!�
,F��I%�ۜ7��rc�|ډ2ez)0LR���7��
�p�&Ia�8%�AD%ԬVb�z���x<��;GIF89a�?�����������������������������������������������������������������������������������������������������������������@@@@@�������)^�������!�?,���pH,�I�l:�M�ET�Y���U(:9n`po����ٍQ��{����)����<=��B7	6|��~6��B4���=��B5
-=�oo���6+��>��>=�B64�=89��9=4�B10=#�=�>��=*B0!(=�=>9�88=2B!$�/���(BSnȔ��-H��bG�/L�#�֎�x�A!��5��%��
 ��p� �	L���@�
LH���4H0A��d@d����P��	�իA;�GIF89a�?���������)����E��d��@��E��E��E�䚓O���S�����}M�r/���?��f���f���ϐ¾T�z1��t�ಶ���|pd���E�䗙�V���\Mx����x����{|~zd�ŝ�����rtw�����v�ύ���?�����D���������������������������!�?,���pH,���r�l
���3JUN��H��4'�y�J,+S%�,7I�
�!w�����pqP"	
PB�L �32>��B;��16,<<����#����B��-5/���B7��%)���B8��*����8B9���:���B�����:B=���������G��A;iGIF89a�������������������������������������������333!�,�@�pH,���r�l
���3JUN���v��B���x<�.	��z�6�Wy.6+	��M�tt~�����	B��s��������
��d�
��������c��
�
����	������������G��A;IGIF89a�;;;:::&&&888111���!�,�3[�i�=B��N;!"/* default layout */
.ajax__tab_default .ajax__tab_header {white-space:normal !important}
.ajax__tab_default .ajax__tab_outer {display:-moz-inline-box;display:inline-block}
.ajax__tab_default .ajax__tab_inner {display:-moz-inline-box;display:inline-block}
.ajax__tab_default .ajax__tab_tab {overflow:hidden;text-align:center;display:-moz-inline-box;display:inline-block}

.ajax__tab_xp .ajax__tab_disabled { cursor: default; color: #A0A0A0; }


/* xp theme top / default */
.ajax__tab_xp .ajax__tab_header {font-family:verdana,tahoma,helvetica;font-size:11px;background:url(<%=WebResource("Tabs.tab-line.gif")%>) repeat-x bottom; }
.ajax__tab_xp .ajax__tab_header .ajax__tab_outer {padding-right:4px;background:url(<%=WebResource("Tabs.tab-right.gif")%>) no-repeat right;height:21px;}
.ajax__tab_xp .ajax__tab_header .ajax__tab_inner {padding-left:3px;background:url(<%=WebResource("Tabs.tab-left.gif")%>) no-repeat;}
.ajax__tab_xp .ajax__tab_header .ajax__tab_tab {height:13px;padding:4px;margin:0px;background:url(<%=WebResource("Tabs.tab.gif")%>) repeat-x;}
.ajax__tab_xp .ajax__tab_header .ajax__tab_hover .ajax__tab_outer {cursor:pointer;background:url(<%=WebResource("Tabs.tab-hover-right.gif")%>) no-repeat right;}
.ajax__tab_xp .ajax__tab_header .ajax__tab_hover .ajax__tab_inner {cursor:pointer;background:url(<%=WebResource("Tabs.tab-hover-left.gif")%>) no-repeat;}
.ajax__tab_xp .ajax__tab_header .ajax__tab_hover .ajax__tab_tab {cursor:pointer;background:url(<%=WebResource("Tabs.tab-hover.gif")%>) repeat-x;}
/*.ajax__tab_xp .ajax__tab_header .ajax__tab_active { margin-top: 1px; } */
.ajax__tab_xp .ajax__tab_header .ajax__tab_active .ajax__tab_outer {background:url(<%=WebResource("Tabs.tab-active-right.gif")%>) no-repeat right;}
.ajax__tab_xp .ajax__tab_header .ajax__tab_active .ajax__tab_inner {background:url(<%=WebResource("Tabs.tab-active-left.gif")%>) no-repeat;}
.ajax__tab_xp .ajax__tab_header .ajax__tab_active .ajax__tab_tab {background:url(<%=WebResource("Tabs.tab-active.gif")%>) repeat-x;}
.ajax__tab_xp .ajax__tab_body {font-family:verdana,tahoma,helvetica;font-size:10pt;border:1px solid #999999;border-top:0;padding:8px;background-color:#ffffff;}

/* xp theme vertical left */
.ajax__tab_xp .ajax__tab_header_verticalleft {font-family:verdana,tahoma,helvetica;font-size:11px;background:url(<%=WebResource("Tabs.tab-line.gif")%>) repeat-y right;}
.ajax__tab_xp .ajax__tab_header_verticalleft .ajax__tab_outer {padding-right:4px;background:url(<%=WebResource("Tabs.tab-right-verticalleft.gif")%>) no-repeat right;height:21px;}
.ajax__tab_xp .ajax__tab_header_verticalleft .ajax__tab_inner {padding-left:3px;background:url(<%=WebResource("Tabs.tab-left-verticalleft.gif")%>) no-repeat;}
.ajax__tab_xp .ajax__tab_header_verticalleft .ajax__tab_tab {height:13px;padding:4px;margin:0px;background:url(<%=WebResource("Tabs.tab-verticalleft.gif")%>) repeat-x;}
.ajax__tab_xp .ajax__tab_header_verticalleft .ajax__tab_hover .ajax__tab_outer {cursor:pointer;background:url(<%=WebResource("Tabs.tab-hover-right-verticalleft.gif")%>) no-repeat right;}
.ajax__tab_xp .ajax__tab_header_verticalleft .ajax__tab_hover .ajax__tab_inner {cursor:pointer;background:url(<%=WebResource("Tabs.tab-hover-left-verticalleft.gif")%>) no-repeat;}
.ajax__tab_xp .ajax__tab_header_verticalleft .ajax__tab_hover .ajax__tab_tab {cursor:pointer;background:url(<%=WebResource("Tabs.tab-hover-verticalleft.gif")%>) repeat-x;}
.ajax__tab_xp .ajax__tab_header_verticalleft .ajax__tab_active { margin-top: 1px; }
.ajax__tab_xp .ajax__tab_header_verticalleft .ajax__tab_active .ajax__tab_outer {background:url(<%=WebResource("Tabs.tab-active-right-verticalleft.gif")%>) no-repeat right;}
.ajax__tab_xp .ajax__tab_header_verticalleft .ajax__tab_active .ajax__tab_inner {background:url(<%=WebResource("Tabs.tab-active-left-verticalleft.gif")%>) no-repeat;}
.ajax__tab_xp .ajax__tab_header_verticalleft .ajax__tab_active .ajax__tab_tab {background:url(<%=WebResource("Tabs.tab-active-verticalleft.gif")%>) repeat-x;}
.ajax__tab_xp .ajax__tab_body_verticalleft {font-family:verdana,tahoma,helvetica;font-size:10pt;border:1px solid #999999;border-left:0;padding:8px;background-color:#ffffff;}

/* xp theme vertical right */
.ajax__tab_xp .ajax__tab_header_verticalright {font-family:verdana,tahoma,helvetica;font-size:11px;background:url(<%=WebResource("Tabs.tab-line.gif")%>) repeat-y left;}
.ajax__tab_xp .ajax__tab_header_verticalright .ajax__tab_outer {padding-right:4px;background:url(<%=WebResource("Tabs.tab-right-verticalright.gif")%>) no-repeat right;height:21px;}
.ajax__tab_xp .ajax__tab_header_verticalright .ajax__tab_inner {padding-left:3px;background:url(<%=WebResource("Tabs.tab-left-verticalright.gif")%>) no-repeat;}
.ajax__tab_xp .ajax__tab_header_verticalright .ajax__tab_tab {height:13px;padding:4px;margin:0px;background:url(<%=WebResource("Tabs.tab-verticalright.gif")%>) repeat-x;}
.ajax__tab_xp .ajax__tab_header_verticalright .ajax__tab_hover .ajax__tab_outer {cursor:pointer;background:url(<%=WebResource("Tabs.tab-hover-right-verticalright.gif")%>) no-repeat right;}
.ajax__tab_xp .ajax__tab_header_verticalright .ajax__tab_hover .ajax__tab_inner {cursor:pointer;background:url(<%=WebResource("Tabs.tab-hover-left-verticalright.gif")%>) no-repeat;}
.ajax__tab_xp .ajax__tab_header_verticalright .ajax__tab_hover .ajax__tab_tab {cursor:pointer;background:url(<%=WebResource("Tabs.tab-hover-verticalright.gif")%>) repeat-x;}
.ajax__tab_xp .ajax__tab_header_verticalright .ajax__tab_active { margin-top: 1px; }
.ajax__tab_xp .ajax__tab_header_verticalright .ajax__tab_active .ajax__tab_outer {background:url(<%=WebResource("Tabs.tab-active-right-verticalright.gif")%>) no-repeat right;}
.ajax__tab_xp .ajax__tab_header_verticalright .ajax__tab_active .ajax__tab_inner {background:url(<%=WebResource("Tabs.tab-active-left-verticalright.gif")%>) no-repeat;}
.ajax__tab_xp .ajax__tab_header_verticalright .ajax__tab_active .ajax__tab_tab {background:url(<%=WebResource("Tabs.tab-active-verticalright.gif")%>) repeat-x;}
.ajax__tab_xp .ajax__tab_body_verticalright {font-family:verdana,tahoma,helvetica;font-size:10pt;border:1px solid #999999;border-right:0;padding:8px;background-color:#ffffff;}

/* header on bottom */
.ajax__tab_xp .ajax__tab_header_bottom {font-family:verdana,tahoma,helvetica;font-size:11px;background:url(<%=WebResource("Tabs.tab-line.gif")%>) repeat-x top;}
.ajax__tab_xp .ajax__tab_header_bottom .ajax__tab_outer {padding-right:4px;background:url(<%=WebResource("Tabs.tab-bottom-right.gif")%>) no-repeat right;height:21px;}
.ajax__tab_xp .ajax__tab_header_bottom .ajax__tab_inner {padding-left:3px;background:url(<%=WebResource("Tabs.tab-bottom-left.gif")%>) no-repeat;}
.ajax__tab_xp .ajax__tab_header_bottom .ajax__tab_tab {height:17px;padding:0px 4px 4px 4px;margin:0px;background:url(<%=WebResource("Tabs.tab-bottom.gif")%>) repeat-x;}
.ajax__tab_xp .ajax__tab_header_bottom .ajax__tab_hover .ajax__tab_outer {cursor:pointer;background:url(<%=WebResource("Tabs.tab-bottom-hover-right.gif")%>) no-repeat right;}
.ajax__tab_xp .ajax__tab_header_bottom .ajax__tab_hover .ajax__tab_inner {cursor:pointer;background:url(<%=WebResource("Tabs.tab-bottom-hover-left.gif")%>) no-repeat;}
.ajax__tab_xp .ajax__tab_header_bottom .ajax__tab_hover .ajax__tab_tab {cursor:pointer;background:url(<%=WebResource("Tabs.tab-bottom-hover.gif")%>) repeat-x;}
.ajax__tab_xp .ajax__tab_header_bottom .ajax__tab_active .ajax__tab_outer {background:url(<%=WebResource("Tabs.tab-bottom-active-right.gif")%>) no-repeat right;}
.ajax__tab_xp .ajax__tab_header_bottom .ajax__tab_active .ajax__tab_inner {background:url(<%=WebResource("Tabs.tab-bottom-active-left.gif")%>) no-repeat;}
.ajax__tab_xp .ajax__tab_header_bottom .ajax__tab_active .ajax__tab_tab {background:url(<%=WebResource("Tabs.tab-bottom-active.gif")%>) repeat-x;}
.ajax__tab_xp .ajax__tab_body_bottom {font-family:verdana,tahoma,helvetica;font-size:10pt;border:1px solid #999999;border-bottom:0;padding:8px;background-color:#ffffff;}

/* scrolling */
.ajax__scroll_horiz {overflow-x:scroll;}
.ajax__scroll_vert {overflow-y:scroll;}
.ajax__scroll_both {overflow:scroll}
.ajax__scroll_auto {overflow:auto}
.ajax__scroll_none {overflow:hidden}

/* plain theme */
.ajax__tab_plain .ajax__tab_outer {text-align: center; vertical-align: middle; border:2px solid #999999;}
.ajax__tab_plain .ajax__tab_inner {text-align: center; vertical-align: middle; }
.ajax__tab_plain .ajax__tab_body {text-align: center; vertical-align: middle;}
.ajax__tab_plain .ajax__tab_header {text-align: center; vertical-align: middle;}
.ajax__tab_plain .ajax__tab_active .ajax__tab_outer {background:#FFFFE1;}
o@charset "utf-8";
/* CSS Document */
/*Round Rectangle Popup Sprite*/
.roundRectangle{float:left; }
#type2 {background-color:#CDDFCA;}
#type2 .corner {background-image:url(<%=WebResource("BalloonPopup.corners-type2.gif")%>);}
.roundedBox {position:relative; padding:17px; margin:0px 0;}
    .corner {position:absolute; width:17px; height:17px;}
        .topLeft {top:0; left:0; background-position:-1px -1px;}
        .topRight {top:0; right:0; background-position:-19px -1px;}
        .bottomLeft {bottom:0; left:0; background-position:-1px -19px;}
        .bottomRight {bottom:0; right:0; background-position:-19px -19px;}		
.up-left-arrow{ float:right; margin-top:-1px; background-image:url(<%=WebResource("BalloonPopup.act_up_left.png")%>); position:relative; top:0; left:10; width:50px; height:30px;}
.up-right-arrow{ float:left; margin-top:-1px;background-image:url(<%=WebResource("BalloonPopup.act_up_right.png")%>); position:relative; top:0; left:10; width:50px; height:30px;}
.down-left-arrow{ float:right; margin-top:-1px; background-image:url(<%=WebResource("BalloonPopup.act_down_left.png")%>); position:relative; top:0; left:10; width:50px; height:30px;}
.down-right-arrow{ float:left; margin-top:-1px;background-image:url(<%=WebResource("BalloonPopup.act_down_right.png")%>); position:relative; top:0; left:10; width:50px; height:30px;}
		
.clear{clear:both ;}�U// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference name="MicrosoftAjaxTimer.debug.js" />
/// <reference name="MicrosoftAjaxWebForms.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />
/// <reference path="../Compat/Timer/Timer.js" />
/// <reference path="../Animation/Animations.js" />
/// <reference path="../Animation/AnimationBehavior.js" />
/// <reference path="../PopupExtender/PopupBehavior.js" />


Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.ValidatorCalloutBehavior = function Sys$Extended$UI$ValidatorCalloutBehavior(element) {
    Sys.Extended.UI.ValidatorCalloutBehavior.initializeBase(this, [element]);
    
    this._warningIconImageUrl = null;
    this._closeImageUrl = null;
    this._cssClass = "ajax__validatorcallout";
    this._highlightCssClass = null;
    this._popupPosition = Sys.Extended.UI.ValidatorCalloutPosition.Right;
    this._width = "200px";
    this._invalid = false;
    this._originalValidationMethod = null;
    this._validationMethodOverride = null;
    this._elementToValidate = null;
    this._popupTable = null;
    this._errorMessageCell = null;
    this._calloutArrowCell = null;
    this._warningIconImage = null;
    this._closeImage = null;
    this._closeCellInnerDiv = null;
    this._popupBehavior = null;
    this._onShowJson = null;
    this._onHideJson = null;
    this._focusAttached = false;
    this._isBuilt = false;
    this._focusHandler = Function.createDelegate(this, this._onfocus);
    this._closeClickHandler = Function.createDelegate(this, this._oncloseClick);
}
Sys.Extended.UI.ValidatorCalloutBehavior.prototype = {
    initialize : function() {
        Sys.Extended.UI.ValidatorCalloutBehavior.callBaseMethod(this, 'initialize');
        var elt = this.get_element();
        if(elt.evaluationfunction) {
            this._originalValidationMethod = Function.createDelegate(elt, elt.evaluationfunction);
            this._validationMethodOverride = Function.createDelegate(this, this._onvalidate);
            elt.evaluationfunction = this._validationMethodOverride;
        }

        var clientState = this.get_ClientState();
        if ((null != clientState) && ("" !== clientState)) {
            this._ensureCallout();
            if(this._highlightCssClass) {
                Sys.UI.DomElement.addCssClass(this._elementToValidate, this._highlightCssClass);
            }
            this.show();
        }
    },

    _ensureCallout : function() {
        if (!this._isBuilt) {
              
            var elt = this.get_element();
            var elementToValidate = this._elementToValidate = $get(elt.controltovalidate);
            var popupTableBody = document.createElement("tbody");
            var popupTableRow = document.createElement("tr");
            var calloutCell = document.createElement("td");
            var calloutTable = document.createElement("table");
            var calloutTableBody = document.createElement("tbody");
            var calloutTableRow = document.createElement("tr");
            var iconCell = document.createElement("td");
            var closeCell = document.createElement("td");
            var closeCellInnerDiv = this._closeCellInnerDiv = document.createElement("div");
            var popupTable = this._popupTable = document.createElement("table");
            var calloutArrowCell = this._calloutArrowCell = document.createElement("td");
            var warningIconImage = this._warningIconImage = document.createElement("img");
            var closeImage = this._closeImage = document.createElement("img");
            var errorMessageCell = this._errorMessageCell = document.createElement("td");
            popupTable.id = this.get_id() + "_popupTable";
            popupTable.cellPadding = 0;
            popupTable.cellSpacing = 0;
            popupTable.border = 0;
            popupTable.width = this.get_width();
            popupTable.className = this._cssClass + " ajax__validatorcallout_popup_table";
            popupTableRow.className = "ajax__validatorcallout_popup_table_row";
            calloutCell.className = "ajax__validatorcallout_callout_cell";
            calloutTable.cellPadding = 0;
            calloutTable.cellSpacing = 0;
            calloutTable.border = 0;
            calloutTable.className = "ajax__validatorcallout_callout_table";
            calloutTableRow.className = "ajax__validatorcallout_callout_table_row";
            if (this._popupPosition == Sys.Extended.UI.ValidatorCalloutPosition.BottomLeft)
                calloutArrowCell.className = "ajax__validatorcallout_callout_arrow_cell_bottomleftpos";
            else if (this._popupPosition == Sys.Extended.UI.ValidatorCalloutPosition.BottomRight)
                calloutArrowCell.className = "ajax__validatorcallout_callout_arrow_cell_bottomrightpos"
            else if (this._popupPosition == Sys.Extended.UI.ValidatorCalloutPosition.TopLeft)
                calloutArrowCell.className = "ajax__validatorcallout_callout_arrow_cell_topleftpos"
            else if (this._popupPosition == Sys.Extended.UI.ValidatorCalloutPosition.TopRight)
                calloutArrowCell.className = "ajax__validatorcallout_callout_arrow_cell_toprightpos"
            else if (this._popupPosition == Sys.Extended.UI.ValidatorCalloutPosition.Left)
                calloutArrowCell.className = "ajax__validatorcallout_callout_arrow_cell_leftpos";
            else
                calloutArrowCell.className = "ajax__validatorcallout_callout_arrow_cell";
            iconCell.className = "ajax__validatorcallout_icon_cell";
            warningIconImage.border = 0;
            warningIconImage.src = this.get_warningIconImageUrl();
            errorMessageCell.className = "ajax__validatorcallout_error_message_cell";
            errorMessageCell.innerHTML = this._getErrorMessage();
            closeCell.className = "ajax__validatorcallout_close_button_cell";
            closeCellInnerDiv.className = "ajax__validatorcallout_innerdiv";
            closeImage.src = this.get_closeImageUrl();
            elt.parentNode.appendChild(popupTable)
            popupTable.appendChild(popupTableBody);
            popupTableBody.appendChild(popupTableRow);
            popupTableRow.appendChild(calloutCell);
            calloutCell.appendChild(calloutTable);
            calloutTable.appendChild(calloutTableBody);
            calloutTableBody.appendChild(calloutTableRow);
            calloutTableRow.appendChild(calloutArrowCell);
            popupTableRow.appendChild(iconCell);
            iconCell.appendChild(warningIconImage);
            popupTableRow.appendChild(errorMessageCell);
            popupTableRow.appendChild(closeCell);
            closeCellInnerDiv.appendChild(closeImage);
            closeCell.appendChild(closeCellInnerDiv);
            if (this._popupPosition == Sys.Extended.UI.ValidatorCalloutPosition.BottomLeft ||
            this._popupPosition == Sys.Extended.UI.ValidatorCalloutPosition.BottomRight) {
                var calloutExtraTableRow = document.createElement("tr");
                popupTableBody.insertBefore(calloutExtraTableRow, popupTableRow);
                calloutArrowCell.colSpan = 2;
                calloutExtraTableRow.appendChild(calloutArrowCell);
                popupTableRow.appendChild(iconCell);
                popupTableRow.appendChild(errorMessageCell);
                popupTableRow.appendChild(closeCell);
            }
            else if (this._popupPosition == Sys.Extended.UI.ValidatorCalloutPosition.TopLeft ||
                this._popupPosition == Sys.Extended.UI.ValidatorCalloutPosition.TopRight) {
                var calloutExtraTableRow = document.createElement("tr");
                popupTableBody.appendChild(calloutExtraTableRow);
                calloutArrowCell.colSpan = 2;
                calloutExtraTableRow.appendChild(calloutArrowCell);
                popupTableRow.appendChild(iconCell);
                popupTableRow.appendChild(errorMessageCell);
                popupTableRow.appendChild(closeCell);
            } else if (this._popupPosition == Sys.Extended.UI.ValidatorCalloutPosition.Left) {
                popupTableRow.appendChild(iconCell);
                popupTableRow.appendChild(errorMessageCell);
                popupTableRow.appendChild(closeCell);
                popupTableRow.appendChild(calloutCell);
            }
            else {
                popupTableRow.appendChild(calloutCell);
                popupTableRow.appendChild(iconCell);
                popupTableRow.appendChild(errorMessageCell);
                popupTableRow.appendChild(closeCell);
            }
            var div = document.createElement("div");
            div.className = "ajax__validatorcallout_innerdiv";
            calloutArrowCell.appendChild(div);
            if (this._popupPosition == Sys.Extended.UI.ValidatorCalloutPosition.BottomLeft ||
                this._popupPosition == Sys.Extended.UI.ValidatorCalloutPosition.BottomRight) {
                var pixel = document.createElement("div");
                pixel.style.width = "1px";
                pixel.className = "arrowpixel";
                div.appendChild(pixel);
                for (var i = 1; i < 22; i += 2) {
                    var line = document.createElement("div");
                    line.style.width = i.toString() + "px";
                    div.appendChild(line);
                }
            }
            else if (this._popupPosition == Sys.Extended.UI.ValidatorCalloutPosition.TopLeft ||
                this._popupPosition == Sys.Extended.UI.ValidatorCalloutPosition.TopRight) {
                for (var i = 23; i > 0; i -= 2) {
                    var line = document.createElement("div");
                    line.style.width = i.toString() + "px";
                    div.appendChild(line);
                }
                var pixel = document.createElement("div");
                pixel.style.width = "1px";
                pixel.className = "arrowpixel";
                div.appendChild(pixel);
            }
            else {
                for (var i = 14; i > 0; i--) {
                    var line = document.createElement("div");
                    line.style.width = i.toString() + "px";
                    div.appendChild(line);
                }
            }
            
            this._popupBehavior = $create(
                Sys.Extended.UI.PopupBehavior, 
                { 
                    parentElement : elementToValidate
                }, 
                { }, 
                null,
                this._popupTable);
            if (this._popupPosition == Sys.Extended.UI.ValidatorCalloutPosition.TopLeft) {
                this._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.TopLeft);
            } else if (this._popupPosition == Sys.Extended.UI.ValidatorCalloutPosition.TopRight) {
                this._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.TopRight);
            } else if (this._popupPosition == Sys.Extended.UI.ValidatorCalloutPosition.BottomLeft) {
                this._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.BottomLeft);
            } else if (this._popupPosition == Sys.Extended.UI.ValidatorCalloutPosition.BottomRight) {
                this._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.BottomRight);
            } else if (this._popupPosition == Sys.Extended.UI.ValidatorCalloutPosition.Right) {
                this._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.Right);
            } else if (this._popupPosition == Sys.Extended.UI.ValidatorCalloutPosition.Left) {
                this._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.Left);
            } else {
                this._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.Right);
            }
            
            if (this._onShowJson) {
                this._popupBehavior.set_onShow(this._onShowJson);
            }
            if (this._onHideJson) {
                this._popupBehavior.set_onHide(this._onHideJson);
            }
            
            $addHandler(this._closeCellInnerDiv, "click", this._closeClickHandler);
            this._isBuilt = true;
        }
    },
    
    dispose : function() {
        
        if (this._isBuilt) {
            this.hide();
            
            if (this._focusAttached) {
                $removeHandler(this._elementToValidate, "focus", this._focusHandler);
                this._focusAttached = false;
            }
            $removeHandler(this._closeCellInnerDiv, "click", this._closeClickHandler);
            
            this._onShowJson = null;
            this._onHideJson = null;
            if (this._popupBehavior) {
                this._popupBehavior.dispose();
                this._popupBehavior = null;
            }
            if (this._closeBehavior) {
                this._closeBehavior.dispose();
                this._closeBehavior = null;
            }
            if (this._popupTable) {
                this._popupTable.parentNode.removeChild(this._popupTable);
                this._popupTable = null;
                this._errorMessageCell = null;
                this._elementToValidate = null;
                this._calloutArrowCell = null;
                this._warningIconImage = null;
                this._closeImage = null;
                this._closeCellInnerDiv = null;
            }
            this._isBuilt = false;
        }
        Sys.Extended.UI.ValidatorCalloutBehavior.callBaseMethod(this, 'dispose');
    },    
    
    _getErrorMessage : function() {
        return this.get_element().errormessage || Sys.Extended.UI.Resources.ValidatorCallout_DefaultErrorMessage;
    },
        
    show : function(force) {        
        if (force || !this.get_isOpen()) {
            if(force && Sys.Extended.UI.ValidatorCalloutBehavior._currentCallout) {
                Sys.Extended.UI.ValidatorCalloutBehavior._currentCallout.hide();
            }
            if(Sys.Extended.UI.ValidatorCalloutBehavior._currentCallout != null) {
                return;
            }
            Sys.Extended.UI.ValidatorCalloutBehavior._currentCallout = this;
            this._errorMessageCell.innerHTML = this._getErrorMessage();
            this._popupBehavior.show();
        }
    },
    
    hide : function() {
        if(Sys.Extended.UI.ValidatorCalloutBehavior._currentCallout == this) {
            Sys.Extended.UI.ValidatorCalloutBehavior._currentCallout = null;
        }
        if (this.get_isOpen()) {
            this._popupBehavior.hide();
        }
    },

    _onfocus : function(e) {
        if(!this._originalValidationMethod(this.get_element())) {
            this._ensureCallout();
             if(this._highlightCssClass) {
                Sys.UI.DomElement.addCssClass(this._elementToValidate, this._highlightCssClass);
            }
            this.show(true);
            return false;
        } else {
            this.hide();
            return true;
        }
    },
    
    _oncloseClick : function(e) {
        this.hide();
    },
    
    _onvalidate : function(val) {
        if(!this._originalValidationMethod(val)) {
            this._ensureCallout();
            if(this._highlightCssClass) {
                Sys.UI.DomElement.addCssClass(this._elementToValidate, this._highlightCssClass);
            }
            if (!this._focusAttached) {
                $addHandler(this._elementToValidate, "focus", this._focusHandler);
                this._focusAttached = true;
            }
            this.show(false);
            this._invalid = true;
            return false;
        } else {
            if(this._highlightCssClass && this._invalid) {
                Sys.UI.DomElement.removeCssClass(this._elementToValidate, this._highlightCssClass)
            }
            this._invalid = false;
            this.hide();
            return true;
        }
    },
    
    get_onShow : function() {
        /// <value type="String" mayBeNull="true">
        /// Generic OnShow Animation's JSON definition
        /// </value>
        return this._popupBehavior ? this._popupBehavior.get_onShow() : this._onShowJson;
    },
    set_onShow : function(value) {
        if (this._popupBehavior) {
            this._popupBehavior.set_onShow(value)
        } else {
            this._onShowJson = value;
        }
        this.raisePropertyChanged('onShow');
    },
    get_onShowBehavior : function() {
        /// <value type="Sys.Extended.UI.Animation.GenericAnimationBehavior">
        /// Generic OnShow Animation's behavior
        /// </value>
        return this._popupBehavior ? this._popupBehavior.get_onShowBehavior() : null;
    },
    onShow : function() {
        /// <summary>
        /// Play the OnShow animation
        /// </summary>
        /// <returns />
        if (this._popupBehavior) {
            this._popupBehavior.onShow();
        }
    },
        
    get_onHide : function() {
        /// <value type="String" mayBeNull="true">
        /// Generic OnHide Animation's JSON definition
        /// </value>
        return this._popupBehavior ? this._popupBehavior.get_onHide() : this._onHideJson;
    },
    set_onHide : function(value) {
        if (this._popupBehavior) {
            this._popupBehavior.set_onHide(value)
        } else {
            this._onHideJson = value;
        }
        this.raisePropertyChanged('onHide');
    },
    get_onHideBehavior : function() {
        /// <value type="Sys.Extended.UI.Animation.GenericAnimationBehavior">
        /// Generic OnHide Animation's behavior
        /// </value>
        return this._popupBehavior ? this._popupBehavior.get_onHideBehavior() : null;
    },
    onHide : function() {
        /// <summary>
        /// Play the OnHide animation
        /// </summary>
        /// <returns />
        if (this._popupBehavior) {
            this._popupBehavior.onHide();
        }
    },
    
    get_warningIconImageUrl : function() {
        return this._warningIconImageUrl;
    },
    set_warningIconImageUrl : function(value) {
        
        if (this._warningIconImageUrl != value) {
            this._warningIconImageUrl = value;
            if (this.get_isInitialized()) {
                this._warningIconImage.src = value;
            }
            this.raisePropertyChanged("warningIconImageUrl");
        }
    },

    get_closeImageUrl : function() {
        return this._closeImageUrl;
    },
    set_closeImageUrl : function(value) {

        if (this._closeImageUrl != value) {
            this._closeImageUrl = value;
            if (this.get_isInitialized()) {
                this._closeImage.src = value;
            }
            this.raisePropertyChanged("closeImageUrl");
        }
    },
        
    get_width : function() {
        return this._width;
    },
    set_width : function(value) {

        if (this._width != value) { 
            this._width = value;
            if (this.get_isInitialized()) {
                this._popupTable.style.width = _width;
            }
            this.raisePropertyChanged("width");
        }
    },

    get_popupPosition: function() {
        /// <value type="Sys.Extended.UI.ValidatorCalloutPosition">
        /// Where the popup should be positioned relative to the target control.
        /// Can be Right (Default), Left, BottomLeft, BottomRight, TopLeft or TopRight.
        /// </value>

        return this._popupPosition;
    },
    set_popupPosition: function(value) {
        if (this._popupPosition != value) {
            this._popupPosition = value;
            this.raisePropertyChanged('popupPosition');
        }
    },

    get_cssClass : function() {
        return this._cssClass;
    },
    set_cssClass : function(value) {

        if (this._cssClass != value) {
            this._cssClass = value;
            this.raisePropertyChanged("cssClass");
        }
    },

    get_highlightCssClass : function() {
        return this._highlightCssClass;
    },
    set_highlightCssClass : function(value) {

        if (this._highlightCssClass != value) {
            this._highlightCssClass = value;
            this.raisePropertyChanged("highlightCssClass");
        }
    },
    
    get_isOpen : function() {
        return $common.getVisible(this._popupTable);
    }
}
Sys.Extended.UI.ValidatorCalloutBehavior.registerClass('Sys.Extended.UI.ValidatorCalloutBehavior', Sys.Extended.UI.BehaviorBase);

Sys.Extended.UI.ValidatorCalloutPosition = function() {
    /// <summary>
    /// Position of the popup relative to the target control
    /// </summary>
    /// <field name="BottomLeft" type="Number" integer="true" />
    /// <field name="BottomRight" type="Number" integer="true" />
    /// <field name="TopLeft" type="Number" integer="true" />
    /// <field name="TopRight" type="Number" integer="true" />
    /// <field name="Right" type="Number" integer="true" />
    /// <field name="Left" type="Number" integer="true" />
    throw Error.invalidOperation();
}
Sys.Extended.UI.ValidatorCalloutPosition.prototype = {
    Right: 0,
    Left: 1,
    BottomLeft: 2,
    BottomRight: 3,
    TopLeft: 4,
    TopRight: 5
}
Sys.Extended.UI.ValidatorCalloutPosition.registerEnum('Sys.Extended.UI.ValidatorCalloutPosition');
�%// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedResizable";function a(){var f="resizebegin",e="resize",m="Function",l="value",d="resizing",k="selectstart",j="mouseup",i="mousemove",c="mousedown",o="mouseout",n="mouseover",h="height",g="width",b="px",a=null;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.ResizableControlBehavior=function(c){var b=this;Sys.Extended.UI.ResizableControlBehavior.initializeBase(b,[c]);b._HandleCssClass="";b._ResizableCssClass="";b._HandleOffsetX=0;b._HandleOffsetY=0;b._MinimumWidth=0;b._MinimumHeight=0;b._MaximumWidth=1e5;b._MaximumHeight=1e5;b._frame=a;b._handle=a;b._handleHolder=a;b._lining=a;b._tracking=false;b._lastClientX=0;b._lastClientY=0;b._onmouseoverDelegate=a;b._onmouseoutDelegate=a;b._onmousedownDelegate=a;b._onmousemoveDelegate=a;b._onmouseupDelegate=a;b._onselectstartDelegate=a};Sys.Extended.UI.ResizableControlBehavior.prototype={initialize:function(){var d="absolute",a=this;Sys.Extended.UI.ResizableControlBehavior.callBaseMethod(a,"initialize");a._frame=a.get_element();var e=Sys.Extended.UI.ResizableControlBehavior.callBaseMethod(a,"get_ClientState");if(e&&-1!=e.indexOf(",")){var f=e.split(",");a._frame.style.width=f[0]+b;a._frame.style.height=f[1]+b}a._lining=document.createElement("DIV");a._lining.style.width=$common.getCurrentStyle(a._frame,g);a._lining.style.height=$common.getCurrentStyle(a._frame,h);a._lining.style.position=d;a._lining.style.backgroundColor="black";a._lining.style.opacity="0";a._lining.style.filter="progid:DXImageTransform.Microsoft.Alpha(opacity=0)";a._lining.style.visibility="hidden";a._frame.insertBefore(a._lining,a._frame.firstChild);a._handleHolder=document.createElement("DIV");a._handleHolder.style.width="0px";a._handleHolder.style.height="0px";a._handleHolder.style.position=Sys.Browser.agent===Sys.Browser.Opera?"relative":d;a._frame.insertBefore(a._handleHolder,a._frame.firstChild);a._handle=document.createElement("DIV");a._handle.className=a._HandleCssClass;a._handle.style.position=d;a._handleHolder.appendChild(a._handle);a._onmouseoverDelegate=Function.createDelegate(a,a._onmouseover);$addHandler(a._handle,n,a._onmouseoverDelegate);a._onmouseoutDelegate=Function.createDelegate(a,a._onmouseout);$addHandler(a._handle,o,a._onmouseoutDelegate);a._onmousedownDelegate=Function.createDelegate(a,a._onmousedown);$addHandler(a._handle,c,a._onmousedownDelegate);a._onmousemoveDelegate=Function.createDelegate(a,a._onmousemove);a._onmouseupDelegate=Function.createDelegate(a,a._onmouseup);a._onselectstartDelegate=Function.createDelegate(a,a._onselectstart);a._resizeControl(0,0,0,0);a._rememberSize()},dispose:function(){var b=this;if(b._onmouseoverDelegate){$removeHandler(b._handle,n,b._onmouseoverDelegate);b._onmouseoverDelegate=a}if(b._onmouseoutDelegate){$removeHandler(b._handle,o,b._onmouseoutDelegate);b._onmouseoutDelegate=a}if(b._onmousedownDelegate){$removeHandler(b._handle,c,b._onmousedownDelegate);b._onmousedownDelegate=a}if(b._onmousemoveDelegate){b.tracking&&$removeHandler(document,i,b._onmousemoveDelegate);b._onmousemoveDelegate=a}if(b._onmouseupDelegate){b.tracking&&$removeHandler(document,j,b._onmouseupDelegate);b._onmouseupDelegate=a}if(b._onselectstartDelegate){if(b.tracking){$removeHandler(document,k,b._onselectstartDelegate);Sys.Browser.agent===Sys.Browser.Opera&&$removeHandler(document,c,b._onselectstartDelegate)}b._onselectstartDelegate=a}Sys.Extended.UI.ResizableControlBehavior.callBaseMethod(b,"dispose")},_onmouseover:function(){Sys.UI.DomElement.addCssClass(this._frame,this._ResizableCssClass)},_onmouseout:function(){!this._tracking&&Sys.UI.DomElement.removeCssClass(this._frame,this._ResizableCssClass)},_onmousedown:function(a){if(!a)a=event;this._onmousedownImplementation(a.clientX,a.clientY)},_onmousedownImplementation:function(b,d){var a=this;a._tracking=true;a._resizeControl(b,d,0,0);a._lining.style.visibility="visible";$addHandler(document,i,a._onmousemoveDelegate);$addHandler(document,j,a._onmouseupDelegate);$addHandler(document,k,a._onselectstartDelegate);Sys.Browser.agent===Sys.Browser.Opera&&$addHandler(document,c,a._onselectstartDelegate);a.raiseResizeBegin()},_onmousemove:function(a){if(!a)a=event;this._onmousemoveImplementation(a.clientX,a.clientY)},_onmousemoveImplementation:function(b,c){var a=this;if(a._tracking){var d=b-a._lastClientX,e=c-a._lastClientY;a._resizeControl(b,c,d,e)}},_onmouseup:function(){var a=this;a._tracking=false;a._rememberSize();a._lining.style.visibility="hidden";$removeHandler(document,i,a._onmousemoveDelegate);$removeHandler(document,j,a._onmouseupDelegate);$removeHandler(document,k,a._onselectstartDelegate);Sys.Browser.agent===Sys.Browser.Opera&&$removeHandler(document,c,a._onselectstartDelegate);Sys.UI.DomElement.removeCssClass(a._frame,a._ResizableCssClass)},_onselectstart:function(a){a.preventDefault();return false},_resizeControl:function(g,h,i,j){var a=this;a._lastClientX=g;a._lastClientY=h;var d=Math.min(Math.max(a._lining.offsetWidth+i,Math.max(a._MinimumWidth,a._handle.offsetWidth)),a._MaximumWidth),c=Math.min(Math.max(a._lining.offsetHeight+j,Math.max(a._MinimumHeight,a._handle.offsetHeight)),a._MaximumHeight);a._lining.style.width=d+b;a._lining.style.height=c+b;a._frame.style.width=d+b;a._frame.style.height=c+b;var e=a._lining.offsetWidth-a._handle.offsetWidth+a._HandleOffsetX,f=a._lining.offsetHeight-a._handle.offsetHeight+a._HandleOffsetY;a._handle.style.left=e+b;a._handle.style.top=f+b;a.raiseResizing()},_rememberSize:function(){var a=this.get_Size();Sys.Extended.UI.ResizableControlBehavior.callBaseMethod(this,"set_ClientState",[a.width+","+a.height]);this.raiseResize()},_measurementToNumber:function(a){return a.replace(b,"")},get_HandleCssClass:function(){return this._HandleCssClass},set_HandleCssClass:function(b){var a="HandleCssClass";if(this._HandleCssClass)throw String.format(Sys.Extended.UI.Resources.ResizableControlBehavior_CannotChangeProperty,a);this._HandleCssClass=b;this.raisePropertyChanged(a)},get_ResizableCssClass:function(){return this._ResizableCssClass},set_ResizableCssClass:function(b){var a="ResizableCssClass";if(this._ResizableCssClass)throw String.format(Sys.Extended.UI.Resources.ResizableControlBehavior_CannotChangeProperty,a);this._ResizableCssClass=b;this.raisePropertyChanged(a)},get_HandleOffsetX:function(){return this._HandleOffsetX},set_HandleOffsetX:function(a){if(this._HandleOffsetX!=a){this._HandleOffsetX=a;this.raisePropertyChanged("HandleOffsetX")}},get_HandleOffsetY:function(){return this._HandleOffsetY},set_HandleOffsetY:function(a){if(this._HandleOffsetY!=a){this._HandleOffsetY=a;this.raisePropertyChanged("HandleOffsetY")}},get_MinimumWidth:function(){return this._MinimumWidth},set_MinimumWidth:function(a){if(this._MinimumWidth!=a){this._MinimumWidth=a;this.raisePropertyChanged("MinimumWidth")}},get_MinimumHeight:function(){return this._MinimumHeight},set_MinimumHeight:function(a){if(this._MinimumHeight!=a){this._MinimumHeight=a;this.raisePropertyChanged("MinimumHeight")}},get_MaximumWidth:function(){return this._MaximumWidth},set_MaximumWidth:function(a){if(this._MaximumWidth!=a){this._MaximumWidth=a;this.raisePropertyChanged("MaximumWidth")}},get_MaximumHeight:function(){return this._MaximumHeight},set_MaximumHeight:function(a){if(this._MaximumHeight!=a){this._MaximumHeight=a;this.raisePropertyChanged("MaximumHeight")}},add_resizing:function(a){this.get_events().addHandler(d,a)},remove_resizing:function(a){this.get_events().removeHandler(d,a)},raiseResizing:function(){var a=this.get_events().getHandler(d);a&&a(this,Sys.EventArgs.Empty)},get_resizing:function(){return this.get_events().getHandler(d)},set_resizing:function(a){if(a&&0<a.length){var b=$common.resolveFunction(a);if(b)this.add_resizing(b);else throw Error.argumentType(l,typeof a,m,String.format(Sys.Extended.UI.Resources.ResizableControlBehavior_InvalidHandler,d));}},add_resize:function(a){this.get_events().addHandler(e,a)},remove_resize:function(a){this.get_events().removeHandler(e,a)},raiseResize:function(){var a=this.get_events().getHandler(e);a&&a(this,Sys.EventArgs.Empty)},get_resize:function(){return this.get_events().getHandler(e)},set_resize:function(a){if(a&&0<a.length){var b=$common.resolveFunction(a);if(b)this.add_resize(b);else throw Error.argumentType(l,typeof a,m,String.format(Sys.Extended.UI.Resources.ResizableControlBehavior_InvalidHandler,e));}},add_resizebegin:function(a){this.get_events().addHandler(f,a)},remove_resizebegin:function(a){this.get_events().removeHandler(f,a)},raiseResizeBegin:function(){var a=this.get_events().getHandler(f);a&&a(this,Sys.EventArgs.Empty)},get_resizebegin:function(){return this.get_events().getHandler(f)},set_resizebegin:function(a){if(a&&0<a.length){var b=$common.resolveFunction(a);if(b)this.add_resizebegin(b);else throw Error.argumentType(l,typeof a,m,String.format(Sys.Extended.UI.Resources.ResizableControlBehavior_InvalidHandler,f));}},get_Size:function(){var a=this;return{width:a._measurementToNumber($common.getCurrentStyle(a._lining,g)),height:a._measurementToNumber($common.getCurrentStyle(a._lining,h))}},set_Size:function(b){var a=this,c=b.width-a._measurementToNumber($common.getCurrentStyle(a._lining,g)),d=b.height-a._measurementToNumber($common.getCurrentStyle(a._lining,h));a._resizeControl(0,0,c,d);a._rememberSize();a.raisePropertyChanged("Size")}};Sys.Extended.UI.ResizableControlBehavior.registerClass("Sys.Extended.UI.ResizableControlBehavior",Sys.Extended.UI.BehaviorBase);Sys.registerComponent(Sys.Extended.UI.ResizableControlBehavior,{name:"resizable"})}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedBase","ExtendedCommon"],a);else a()})();m// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />
/// <reference path="../Animation/Animations.js" />
/// <reference path="../Animation/AnimationBehavior.js" />

(function() {
var scriptName = "ExtendedPopup";

function execute() {

Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.PopupBehavior = function(element) {
    /// <summary>
    /// The PopupBehavior is used to show/hide an element at a position
    /// relative to another element
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" mayBeNull="false" domElement="true">
    /// The DOM element the behavior is associated with
    /// </param>
    Sys.Extended.UI.PopupBehavior.initializeBase(this, [element]);

    this._x = 0;
    this._y = 0;
    this._positioningMode = Sys.Extended.UI.PositioningMode.Absolute;
    this._parentElement = null;
    this._parentElementID = null;
    this._moveHandler = null;
    this._firstPopup = true;    
    this._originalParent = null;
    this._visible = false;

    this._onShow = null;
    this._onHide = null;
    this._onShowEndedHandler = Function.createDelegate(this, this._onShowEnded);
    this._onHideEndedHandler = Function.createDelegate(this, this._onHideEnded);
}
Sys.Extended.UI.PopupBehavior.prototype = {
    initialize: function() {
        /// <summary>
        /// Initialize the PopupBehavior
        /// </summary>
        Sys.Extended.UI.PopupBehavior.callBaseMethod(this, 'initialize');
        this._hidePopup();
        this.get_element().style.position = "absolute";
    },

    dispose: function() {
        /// <summary>
        /// Dispose the PopupBehavior
        /// </summary>

        var element = this.get_element();
        if (element) {
            if (this._visible) {
                this.hide();
            }
            if (this._originalParent) {
                element.parentNode.removeChild(element);
                this._originalParent.appendChild(element);
                this._originalParent = null;
            }

            element._hideWindowedElementsIFrame = null;
        }
        this._parentElement = null;

        if (this._onShow && this._onShow.get_animation()) {
            this._onShow.get_animation().remove_ended(this._onShowEndedHandler);
        }
        this._onShow = null;
        if (this._onHide && this._onHide.get_animation()) {
            this._onHide.get_animation().remove_ended(this._onHideEndedHandler);
        }
        this._onHide = null;

        Sys.Extended.UI.PopupBehavior.callBaseMethod(this, 'dispose');
    },

    show: function() {
        /// <summary>
        /// Show the popup
        /// </summary>

        if (this._visible) {
            return;
        }

        var eventArgs = new Sys.CancelEventArgs();
        this.raiseShowing(eventArgs);
        if (eventArgs.get_cancel()) {
            return;
        }

        this._visible = true;
        var element = this.get_element();
        $common.setVisible(element, true);
        this.setupPopup();
        if (this._onShow) {
            $common.setVisible(element, false);
            this.onShow();
        } else {
            this.raiseShown(Sys.EventArgs.Empty);
        }
    },

    hide: function() {
        /// <summary>
        /// Hide the popup
        /// </summary>

        if (!this._visible) {
            return;
        }

        var eventArgs = new Sys.CancelEventArgs();
        this.raiseHiding(eventArgs);
        if (eventArgs.get_cancel()) {
            return;
        }

        this._visible = false;
        if (this._onHide) {
            this.onHide();
        } else {
            this._hidePopup();
            this._hideCleanup();
        }
    },

    getBounds: function() {
        /// <summary>
        /// Get the expected bounds of the popup relative to its parent
        /// </summary>
        /// <returns type="Sys.UI.Bounds" mayBeNull="false">
        /// Bounds of the popup relative to its parent
        /// </returns>
        /// <remarks>
        /// The actual final position can only be calculated after it is
        /// initially set and we can verify it doesn't bleed off the edge
        /// of the screen.
        /// </remarks>

        var element = this.get_element();

        var offsetParent = element.offsetParent || document.documentElement;

        var diff;
        var parentBounds;
        if (this.get_parentElement()) {
            parentBounds = $common.getBounds(this.get_parentElement());
            var offsetParentLocation = $common.getLocation(offsetParent);
            diff = { x: parentBounds.x - offsetParentLocation.x, y: parentBounds.y - offsetParentLocation.y };
        } else {
            parentBounds = $common.getBounds(offsetParent);
            diff = { x: 0, y: 0 };
        }

        var width = element.offsetWidth - (element.clientLeft ? element.clientLeft * 2 : 0);
        var height = element.offsetHeight - (element.clientTop ? element.clientTop * 2 : 0);

        if (this._firstpopup) {
            element.style.width = width + "px";
            this._firstpopup = false;
        }

        var position, pos;
        switch (this._positioningMode) {
            case Sys.Extended.UI.PositioningMode.Center:
                pos = {
                    x: Math.round(parentBounds.width / 2 - width / 2),
                    y: Math.round(parentBounds.height / 2 - height / 2),
                    altX: Math.round(parentBounds.width / 2 - width / 2),
                    altY: Math.round(parentBounds.height / 2 - height / 2)
                };
                break;
            case Sys.Extended.UI.PositioningMode.BottomLeft:
                pos = {
                    x: 0,
                    y: parentBounds.height,
                    altX: parentBounds.width - width,
                    altY: 0 - height
                }
                break;
            case Sys.Extended.UI.PositioningMode.BottomRight:
                pos = {
                    x: parentBounds.width - width,
                    y: parentBounds.height,
                    altX: 0,
                    altY: 0 - height
                }
                break;
            case Sys.Extended.UI.PositioningMode.TopLeft:
                pos = {
                    x: 0,
                    y: -element.offsetHeight,
                    altX: parentBounds.width - width,
                    altY: parentBounds.height
                }
                break;
            case Sys.Extended.UI.PositioningMode.TopRight:
                pos = {
                    x: parentBounds.width - width,
                    y: -element.offsetHeight,
                    altX: 0,
                    altY: parentBounds.height
                }
                break;
            case Sys.Extended.UI.PositioningMode.Right:
                pos = {
                    x: parentBounds.width,
                    y: 0,
                    altX: -element.offsetWidth,
                    altY: parentBounds.height - height
                }
                break;
            case Sys.Extended.UI.PositioningMode.Left:
                pos = {
                    x: -element.offsetWidth,
                    y: 0,
                    altX: parentBounds.width,
                    altY: parentBounds.height - height
                }
                break;
            default:
                pos = { x: 0, y: 0, altX: 0, altY: 0 };
        }

        pos.x += this._x + diff.x;
        pos.altX += this._x + diff.x;
        pos.y += this._y + diff.y;
        pos.altY += this._y + diff.y;

        position = this._verifyPosition(pos, width, height, parentBounds);

        return new Sys.UI.Bounds(position.x, position.y, width, height);
    },

    _verifyPosition: function(pos, elementWidth, elementHeight, parentBounds) {
        /// <summary>
        /// Checks whether the popup is entirely visible and attempts to change its position to make it entirely visihle.
        /// </summary>

        var newX = 0, newY = 0;

        var windowBounds = this._getWindowBounds();

        if (!((pos.x + elementWidth > windowBounds.x + windowBounds.width) || (pos.x < windowBounds.x))) {
            newX = pos.x;
        } else {
            newX = pos.altX;

            if (pos.altX < windowBounds.x) {
                if (pos.x > pos.altX) {
                    newX = pos.x;
                }
            } else if (windowBounds.width + windowBounds.x - pos.altX < elementWidth) {
                var xDiff = pos.x > pos.altX ? Math.abs(windowBounds.x - pos.x) : (windowBounds.x - pos.x);
                if (xDiff < elementWidth - windowBounds.width - windowBounds.x + pos.altX) {
                    newX = pos.x;
                }
            }
        }

        if (!((pos.y + elementHeight > windowBounds.y + windowBounds.height) || (pos.y < windowBounds.y))) {
            newY = pos.y;
        } else {
            newY = pos.altY;

            if (pos.altY < windowBounds.y) {
                if (windowBounds.y - pos.altY > elementHeight - windowBounds.height - windowBounds.y + pos.y) {
                    newY = pos.y;
                }
            } else if (windowBounds.height + windowBounds.y - pos.altY < elementHeight) {
                if (windowBounds.y - pos.y < elementHeight - windowBounds.height - windowBounds.y + pos.altY) {
                    newY = pos.y;
                }
            }
        }

        return { x: newX, y: newY };
    },

    _getWindowBounds: function() {

        var bounds = {
            x: this._getWindowScrollLeft(),
            y: this._getWindowScrollTop(),
            width: this._getWindowWidth(),
            height: this._getWindowHeight()
        };
        return bounds;

    },

    _getWindowHeight: function() {

        var windowHeight = 0;
        if (document.documentElement && document.documentElement.clientHeight) {
            windowHeight = document.documentElement.clientHeight;
        }
        else if (document.body && document.body.clientHeight) {
            windowHeight = document.body.clientHeight;
        }
        return windowHeight;

    },

    _getWindowWidth: function() {

        var windowWidth = 0;
        if (document.documentElement && document.documentElement.clientWidth) {
            windowWidth = document.documentElement.clientWidth;
        }
        else if (document.body && document.body.clientWidth) {
            windowWidth = document.body.clientWidth;
        }
        return windowWidth;

    },

    _getWindowScrollTop: function() {

        var scrollTop = 0;
        if (typeof (window.pageYOffset) == 'number') {
            scrollTop = window.pageYOffset;
        }
        if (document.body && document.body.scrollTop) {
            scrollTop = document.body.scrollTop;
        }
        else if (document.documentElement && document.documentElement.scrollTop) {
            scrollTop = document.documentElement.scrollTop;
        }
        return scrollTop;

    },

    _getWindowScrollLeft: function() {

        var scrollLeft = 0;
        if (typeof (window.pageXOffset) == 'number') {
            scrollLeft = window.pageXOffset;
        }
        else if (document.body && document.body.scrollLeft) {
            scrollLeft = document.body.scrollLeft;
        }
        else if (document.documentElement && document.documentElement.scrollLeft) {
            scrollLeft = document.documentElement.scrollLeft;
        }
        return scrollLeft;

    },

    adjustPopupPosition: function(bounds) {
        /// <summary>
        /// Adjust the position of the popup after it's originally bet set
        /// to make sure that it's visible on the page.
        /// </summary>
        /// <param name="bounds" type="Sys.UI.Bounds" mayBeNull="true" optional="true">
        /// Original bounds of the parent element
        /// </param>

        var element = this.get_element();
        if (!bounds) {
            bounds = this.getBounds();
        }

        var newPosition = $common.getBounds(element);
        var updateNeeded = false;

        if (newPosition.x < 0) {
            bounds.x -= newPosition.x;
            updateNeeded = true;
        }
        if (newPosition.y < 0) {
            bounds.y -= newPosition.y;
            updateNeeded = true;
        }

        if (updateNeeded) {
            $common.setLocation(element, bounds);
        }
    },

    addBackgroundIFrame: function() {
        /// <summary>
        /// Add an empty IFRAME behind the popup (for IE6 only) so that SELECT, etc., won't
        /// show through the popup.
        /// </summary>

        var element = this.get_element();
        if ((Sys.Browser.agent === Sys.Browser.InternetExplorer) && (Sys.Browser.version < 7)) {
            var childFrame = element._hideWindowedElementsIFrame;

            if (!childFrame) {
                childFrame = document.createElement("iframe");
                childFrame.src = "javascript:'<html></html>';";
                childFrame.style.position = "absolute";
                childFrame.style.display = "none";
                childFrame.scrolling = "no";
                childFrame.frameBorder = "0";
                childFrame.tabIndex = "-1";
                childFrame.style.filter = "progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)";
                element.parentNode.insertBefore(childFrame, element);
                element._hideWindowedElementsIFrame = childFrame;
                this._moveHandler = Function.createDelegate(this, this._onMove);
                Sys.UI.DomEvent.addHandler(element, "move", this._moveHandler);
            }

            $common.setBounds(childFrame, $common.getBounds(element));

            childFrame.style.left = element.style.left;
            childFrame.style.top = element.style.top;

            childFrame.style.display = element.style.display;

            if (element.currentStyle && element.currentStyle.zIndex) {
                childFrame.style.zIndex = element.currentStyle.zIndex;
            } else if (element.style.zIndex) {
                childFrame.style.zIndex = element.style.zIndex;
            }
        }
    },

    setupPopup: function() {
        /// <summary>
        /// Position the popup relative to its parent
        /// </summary>

        var element = this.get_element();
        var bounds = this.getBounds();
        $common.setLocation(element, bounds);

        this.adjustPopupPosition(bounds);
        element.style.zIndex = 1000;
        this.addBackgroundIFrame();
    },

    _hidePopup: function() {
        /// <summary>
        /// Internal hide implementation
        /// </summary>

        var element = this.get_element();
        $common.setVisible(element, false);
        if (element.originalWidth) {
            element.style.width = element.originalWidth + "px";
            element.originalWidth = null;
        }
    },

    _hideCleanup: function() {
        /// <summary>
        /// Perform cleanup after hiding the element
        /// </summary>

        var element = this.get_element();

        if (this._moveHandler) {
            Sys.UI.DomEvent.removeHandler(element, "move", this._moveHandler);
            this._moveHandler = null;
        }

        if (Sys.Browser.agent === Sys.Browser.InternetExplorer) {
            var childFrame = element._hideWindowedElementsIFrame;
            if (childFrame) {
                childFrame.style.display = "none";
            }
        }

        this.raiseHidden(Sys.EventArgs.Empty);
    },

    _onMove: function() {
        /// <summary>
        /// Track the popup's movements so the hidden IFrame (IE6 only) can
        /// be moved along with it
        /// </summary>

        var element = this.get_element();
        if (element._hideWindowedElementsIFrame) {
            element.parentNode.insertBefore(element._hideWindowedElementsIFrame, element);
            element._hideWindowedElementsIFrame.style.top = element.style.top;
            element._hideWindowedElementsIFrame.style.left = element.style.left;
        }
    },

    get_onShow: function() {
        /// <value type="String" mayBeNull="true">
        /// Generic OnShow Animation's JSON definition
        /// </value>
        return this._onShow ? this._onShow.get_json() : null;
    },
    set_onShow: function(value) {
        if (!this._onShow) {
            this._onShow = new Sys.Extended.UI.Animation.GenericAnimationBehavior(this.get_element());
            this._onShow.initialize();
        }
        this._onShow.set_json(value);
        var animation = this._onShow.get_animation();
        if (animation) {
            animation.add_ended(this._onShowEndedHandler);
        }
        this.raisePropertyChanged('onShow');
    },
    get_onShowBehavior: function() {
        /// <value type="Sys.Extended.UI.Animation.GenericAnimationBehavior">
        /// Generic OnShow Animation's behavior
        /// </value>
        return this._onShow;
    },
    onShow: function() {
        /// <summary>
        /// Play the OnShow animation
        /// </summary>
        /// <returns />
        if (this._onShow) {
            if (this._onHide) {
                this._onHide.quit();
            }
            this._onShow.play();
        }
    },
    _onShowEnded: function() {
        /// <summary>
        /// Handler for the OnShow Animation's Ended event
        /// </summary>

        this.adjustPopupPosition();
        this.addBackgroundIFrame();

        this.raiseShown(Sys.EventArgs.Empty);
    },

    get_onHide: function() {
        /// <value type="String" mayBeNull="true">
        /// Generic OnHide Animation's JSON definition
        /// </value>
        return this._onHide ? this._onHide.get_json() : null;
    },
    set_onHide: function(value) {
        if (!this._onHide) {
            this._onHide = new Sys.Extended.UI.Animation.GenericAnimationBehavior(this.get_element());
            this._onHide.initialize();
        }
        this._onHide.set_json(value);
        var animation = this._onHide.get_animation();
        if (animation) {
            animation.add_ended(this._onHideEndedHandler);
        }
        this.raisePropertyChanged('onHide');
    },
    get_onHideBehavior: function() {
        /// <value type="Sys.Extended.UI.Animation.GenericAnimationBehavior">
        /// Generic OnHide Animation's behavior
        /// </value>
        return this._onHide;
    },
    onHide: function() {
        /// <summary>
        /// Play the OnHide animation
        /// </summary>
        /// <returns />
        if (this._onHide) {
            if (this._onShow) {
                this._onShow.quit();
            }
            this._onHide.play();
        }
    },
    _onHideEnded: function() {
        /// <summary>
        /// Handler for the OnHide Animation's Ended event
        /// </summary>

        this._hideCleanup();
    },

    get_parentElement: function() {
        /// <value type="Sys.UI.DomElement" domElement="true">
        /// Parent dom element.
        /// </value>

        if (!this._parentElement && this._parentElementID) {
            this.set_parentElement($get(this._parentElementID));
        }
        return this._parentElement;
    },
    set_parentElement: function(element) {
        this._parentElement = element;
        this.raisePropertyChanged('parentElement');
    },

    get_parentElementID: function() {
        /// <value type="String">
        /// Parent dom element.
        /// </value>

        if (this._parentElement) {
            return this._parentElement.id
        }
        return this._parentElementID;
    },
    set_parentElementID: function(elementID) {
        this._parentElementID = elementID;
        if (this.get_isInitialized()) {
            this.set_parentElement($get(elementID));
        }
    },

    get_positioningMode: function() {
        /// <value type="Sys.Extended.UI.PositioningMode">
        /// Positioning mode.
        /// </value>
        return this._positioningMode;
    },
    set_positioningMode: function(mode) {
        this._positioningMode = mode;
        this.raisePropertyChanged('positioningMode');
    },

    get_x: function() {
        /// <value type="Number">
        /// X coordinate.
        /// </value>
        return this._x;
    },
    set_x: function(value) {
        if (value != this._x) {
            this._x = value;

            if (this._visible) {
                this.setupPopup();
            }
            this.raisePropertyChanged('x');
        }
    },

    get_y: function() {
        /// <value type="Number">
        /// Y coordinate.
        /// </value>
        return this._y;
    },
    set_y: function(value) {
        if (value != this._y) {
            this._y = value;

            if (this._visible) {
                this.setupPopup();
            }
            this.raisePropertyChanged('y');
        }
    },

    get_visible: function() {
        /// <value type="Boolean" mayBeNull="false">
        /// Whether or not the popup is currently visible
        /// </value>
        return this._visible;
    },

    add_showing: function(handler) {
        /// <summary>
        /// Add an event handler for the showing event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('showing', handler);
    },
    remove_showing: function(handler) {
        /// <summary>
        /// Remove an event handler from the showing event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('showing', handler);
    },
    raiseShowing: function(eventArgs) {
        /// <summary>
        /// Raise the showing event
        /// </summary>
        /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
        /// Event arguments for the showing event
        /// </param>
        /// <returns />

        var handler = this.get_events().getHandler('showing');
        if (handler) {
            handler(this, eventArgs);
        }
    },

    add_shown: function(handler) {
        /// <summary>
        /// Add an event handler for the shown event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('shown', handler);
    },
    remove_shown: function(handler) {
        /// <summary>
        /// Remove an event handler from the shown event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('shown', handler);
    },
    raiseShown: function(eventArgs) {
        /// <summary>
        /// Raise the shown event
        /// </summary>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="false">
        /// Event arguments for the shown event
        /// </param>
        /// <returns />

        var handler = this.get_events().getHandler('shown');
        if (handler) {
            handler(this, eventArgs);
        }
    },

    add_hiding: function(handler) {
        /// <summary>
        /// Add an event handler for the hiding event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('hiding', handler);
    },
    remove_hiding: function(handler) {
        /// <summary>
        /// Remove an event handler from the hiding event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('hiding', handler);
    },
    raiseHiding: function(eventArgs) {
        /// <summary>
        /// Raise the hiding event
        /// </summary>
        /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
        /// Event arguments for the hiding event
        /// </param>
        /// <returns />

        var handler = this.get_events().getHandler('hiding');
        if (handler) {
            handler(this, eventArgs);
        }
    },

    add_hidden: function(handler) {
        /// <summary>
        /// Add an event handler for the hidden event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('hidden', handler);
    },
    remove_hidden: function(handler) {
        /// <summary>
        /// Remove an event handler from the hidden event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('hidden', handler);
    },
    raiseHidden: function(eventArgs) {
        /// <summary>
        /// Raise the hidden event
        /// </summary>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="false">
        /// Event arguments for the hidden event
        /// </param>
        /// <returns />

        var handler = this.get_events().getHandler('hidden');
        if (handler) {
            handler(this, eventArgs);
        }
    }
}
Sys.Extended.UI.PopupBehavior.registerClass('Sys.Extended.UI.PopupBehavior', Sys.Extended.UI.BehaviorBase);
Sys.registerComponent(Sys.Extended.UI.PopupBehavior, { name: "popup" });


Sys.Extended.UI.PositioningMode = function() {
    /// <summary>
    /// Positioning mode describing how the popup should be positioned
    /// relative to its specified parent
    /// </summary>
    /// <field name="Absolute" type="Number" integer="true" />
    /// <field name="Center" type="Number" integer="true" />
    /// <field name="BottomLeft" type="Number" integer="true" />
    /// <field name="BottomRight" type="Number" integer="true" />
    /// <field name="TopLeft" type="Number" integer="true" />
    /// <field name="TopRight" type="Number" integer="true" />
    /// <field name="Right" type="Number" integer="true" />
    /// <field name="Left" type="Number" integer="true" />
    throw Error.invalidOperation();
}
Sys.Extended.UI.PositioningMode.prototype = {
    Absolute: 0,
    Center: 1,
    BottomLeft: 2,
    BottomRight: 3,
    TopLeft: 4,
    TopRight: 5,
    Right: 6,
    Left: 7
}
Sys.Extended.UI.PositioningMode.registerEnum('Sys.Extended.UI.PositioningMode');

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedAnimations", "ExtendedAnimationBehavior"], execute);
}
else {
    execute();
}

})();
@// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />

(function() {
var scriptName = "ExtendedMutuallyExclusiveCheckBox";

function execute() {

Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.MutuallyExclusiveCheckBoxBehavior = function(element) {
    /// <summary>
    /// The MutuallyExclusiveCheckBoxBehavior allows only one checkbox in
    /// a group with the same Key to be checked at a time
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// The DOM Element the behavior is associated with
    /// </param>
    Sys.Extended.UI.MutuallyExclusiveCheckBoxBehavior.initializeBase(this, [element]);
    
    this._key = "";
    this._clickHandler = Function.createDelegate(this, this._onclick);
}
Sys.Extended.UI.MutuallyExclusiveCheckBoxBehavior.prototype = {
    initialize : function() {
        /// <summary>
        /// Initialize the behavior
        /// </summary>
        Sys.Extended.UI.MutuallyExclusiveCheckBoxBehavior.callBaseMethod(this, 'initialize');
        $addHandler(this.get_element(), "click", this._clickHandler);
    },
    
    dispose : function() {
        /// <summary>
        /// Dispose the behavior
        /// </summary>
        if (this._key) {
            var keys = Sys.Extended.UI.MutuallyExclusiveCheckBoxBehavior.Keys;
            var ar = keys[this._key];
            Array.remove(ar, this);
            this._key = null;
        }
        if (this._clickHandler) {
            $removeHandler(this.get_element(), "click", this._clickHandler);
            this._clickHandler = null;
        }
        Sys.Extended.UI.MutuallyExclusiveCheckBoxBehavior.callBaseMethod(this, 'dispose');
    },
    
    get_Key : function() {
        /// <value type="String">
        /// The unique key to use to associate checkboxes. This key does not respect INamingContainer renaming.
        /// </value>
        return this._key;
    },
    set_Key : function(value) {
        var keys = Sys.Extended.UI.MutuallyExclusiveCheckBoxBehavior.Keys;
        if(value != this._key) {
            if(this._key) {
                var ar = keys[this._key];
                Array.remove(ar, this._key);
            }
            this._key = value;
            if(value) {
                var ar = keys[this._key];
                if(ar == null) {
                    ar = keys[this._key] = [];
                }
                Array.add(ar, this);
            }
        }
    },
    
    _onclick : function() {
        /// <summary>
        /// Click handler used to ensure only one checkbox in its key is checked
        /// </summary>
        var element = this.get_element();
        var keys = Sys.Extended.UI.MutuallyExclusiveCheckBoxBehavior.Keys;
        if(this._key && element.checked) {
            var ar = keys[this._key];
            var t = this;
            Array.forEach(ar, function(b) {
                /// <summary>
                /// Uncheck all other checkboxes in the same key group
                /// </summary>
                /// <param name="b" type="Sys.Extended.UI.MutuallyExclusiveCheckBoxBehavior">
                /// Checkbox in the same key group
                /// </param>
                if(b != t) {
                    b.get_element().checked = false;
                    $common.tryFireEvent(b.get_element(), "change");
                }
            });
        }
        
        this.raiseChecked(new Sys.Extended.UI.MutuallyExclusiveCheckBoxEventArgs(element, this._key));
    },
    
    add_checked : function(handler) {
        /// <summary>
        /// Add an event handler for the checked event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('checked', handler);
    },
    remove_checked : function(handler) {
        /// <summary>
        /// Remove an event handler from the checked event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('checked', handler);
    },
    raiseChecked : function(eventArgs) {
        /// <summary>
        /// Raise the checked event
        /// </summary>
        /// <param name="eventArgs" type="Sys.Extended.UI.MutuallyExclusiveCheckBoxEventArgs" mayBeNull="false">
        /// Event arguments for the checked event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('checked');
        if (handler) {
            handler(this, eventArgs);
        }
    }
}    
Sys.Extended.UI.MutuallyExclusiveCheckBoxBehavior.registerClass('Sys.Extended.UI.MutuallyExclusiveCheckBoxBehavior', Sys.Extended.UI.BehaviorBase);
Sys.Extended.UI.MutuallyExclusiveCheckBoxBehavior.Keys = {};
Sys.registerComponent(Sys.Extended.UI.MutuallyExclusiveCheckBoxBehavior, { name: "mutuallyExclusiveCheckBox", parameters: ["Key"] });

Sys.Extended.UI.MutuallyExclusiveCheckBoxEventArgs = function(checkbox, key) {
    /// <summary>
    /// Event arguments used when the checked event is raised
    /// </summary>
    /// <param name="checkbox" type="Sys.UI.DomElement" mayBeNull="False" isDomElement="true">
    /// Checkbox that was checked or unchecked
    /// </param>
    /// <param name="key" type="String" mayBeNull="False">
    /// The unique key used to associate checkboxes
    /// </param>
    Sys.Extended.UI.MutuallyExclusiveCheckBoxEventArgs.initializeBase(this);
    
    this._key = key;
    this._checkbox = checkbox;
}
Sys.Extended.UI.MutuallyExclusiveCheckBoxEventArgs.prototype = {
    get_checkbox : function() {
        /// <value type="Sys.UI.DomElement" mayBeNull="False">
        /// Checkbox that was checked or unchecked
        /// </value>
        return this._checkbox;
    },
    
    get_key : function() {
        /// <value type="String" mayBeNull="False">
        /// The unique key used to associate checkboxes
        /// </value>
        return this._key;
    }
}
Sys.Extended.UI.MutuallyExclusiveCheckBoxEventArgs.registerClass('Sys.Extended.UI.MutuallyExclusiveCheckBoxEventArgs', Sys.EventArgs);

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedBase", "ExtendedCommon"], execute);
}
else {
    execute();
}

})();
@w// (c) 2010 CodePlex Foundation
(function(h,a){var g="string",j=".",o="_readyQueue",n="_domReadyQueue",e=false,b=null,c=true,i="function",f="number",d="undefined",r=function(a){a=a||{};k(arguments,function(b){b&&q(b,function(c,b){a[b]=c})},1);return a},q=function(a,c){for(var b in a)c(a[b],b)},k=function(a,g,j){var e;if(a){a=a!==h&&typeof a.nodeType===d&&(a instanceof Array||typeof a.length===f&&(typeof a.callee===i||a.item&&typeof a.nodeType===d&&!a.addEventListener&&!a.attachEvent))?a:[a];for(var b=j||0,k=a.length;b<k;b++)if(g(a[b],b)){e=c;break}}return!e},l=function(b,e,d){var c=b[e],a=typeof c===i;a&&c.call(b,d);return a};if(!a||!a.loader){function D(a){a=a||{};k(arguments,function(b){b&&q(b,function(c,b){if(typeof a[b]===d)a[b]=c})},1);return a}var p=!!document.attachEvent;function t(b,a){var c=b[a];delete b[a];return c}function B(d,a,c){k(t(d,a),function(a){a.apply(b,c||[])})}function z(a,c,b){return a?(a[c]=a[c]||b):b}function x(c,b,a){z(c,b,[]).push(a)}function s(b,a){return(a||document).getElementsByTagName(b)}function A(a){return document.createElement(a)}function u(a,d,g,i,h,f){function c(){if(!p||!h||/loaded|complete/.test(a.readyState)){if(p)a.detachEvent(g||"on"+d,c);else{a.removeEventListener(d,c,e);f&&a.removeEventListener("error",c,e)}i.apply(a);a=b}}if(p)a.attachEvent(g||"on"+d,c);else{a.addEventListener(d,c,e);f&&a.addEventListener("error",c,e)}}function v(){a._domReady&&a._2Pass(t(a,n))}function w(){var b=a._ready;if(!b&&a._domReady&&!(a.loader&&a.loader._loading))a._ready=b=c;b&&a._2Pass(t(a,o))}h.Sys=a=D(a,{version:[3,0,31106,0],__namespace:c,debug:e,scripts:{},activateDom:c,composites:{},components:{},plugins:{},create:{},converters:{},_domLoaded:function(){if(a._domChecked)return;a._domChecked=c;function d(){if(!a._domReady){a._domReady=c;var d=a._autoRequire;d&&a.require(d,function(){a._autoRequire=b;B(a,"_autoQueue")},autoToken);v();w()}}u(h,"load",b,d);var e;if(p)if(h==h.top&&document.documentElement.doScroll){var g,i,f=A("div");e=function(){try{f.doScroll("left")}catch(a){g=h.setTimeout(e,0);return}f=b;d()};e()}else u(document,b,"onreadystatechange",d,c);else document.addEventListener&&u(document,"DOMContentLoaded",b,d)},_getById:function(b,d,h,f,a,g){if(a)if(f&&a.id===d)b.push(a);else!g&&k(s("*",a),function(a){if(a.id===d){b.push(a);return c}});else{var e=document.getElementById(d);e&&b.push(e)}return b.length},_getByClass:function(k,d,g,l,a,m){function h(b){var e,a=b.className;if(a&&(a===d||a.indexOf(" "+d)>=0||a.indexOf(d+" ")>=0)){k.push(b);e=c}return e}var b,f,e;if(l&&h(a)&&g)return c;if(!m){a=a||document;var i=a.querySelectorAll||a.getElementsByClassName;if(i){if(a.querySelectorAll)d=j+d;e=i.call(a,d);for(b=0,f=e.length;b<f;b++){k.push(e[b]);if(g)return c}}else{e=s("*",a);for(b=0,f=e.length;b<f;b++)if(h(e[b])&&g)return c}}},query:function(b,c){return new a.ElementSet(b,c)},"get":function(b,a){return a&&typeof a.get===i?a.get(b):this._find(b,a,c)},_find:function(m,d,f,i){var e=[],l;if(typeof m===g)l=[m];else l=m;var j=d instanceof Array,n=/^([\$#\.])((\w|[$:\.\-])+)$/,o=/^((\w+)|\*)$/;if(typeof d===g||d instanceof Array)d=a._find(d);if(d instanceof a.ElementSet)d=d.get();k(l,function(b){if(typeof b!==g)if(i)contains(d,b)&&e.push(b);else e.push(b);else{var l=n.exec(b);if(l&&l.length===4){b=l[2];var q=l[1];if(q==="$")a._getComponent(e,b,d);else{var p=q==="#"?a._getById:a._getByClass;if(d)k(d,function(a){if(a.nodeType===1)return p(e,b,f,j,a,i)});else p(e,b,f)}}else if(o.test(b))if(d instanceof Array)k(d,function(a){if(a.nodeType===1){if(j&&(b==="*"||a.tagName.toLowerCase()===b)){e.push(a);if(f)return c}if(!i)if(!k(s(b,a),function(a){e.push(a);if(f)return c}))return c}});else{var m=s(b,d);if(f){m[0]&&e.push(m[0]);return c}k(m,function(a){e.push(a)})}else if(h.jQuery){!i&&e.push.apply(e,jQuery(b,d).get());j&&e.push.apply(e,jQuery(d).filter(b).get())}}});return e.length?f?e[0]||b:e:b},onDomReady:function(a){x(this,n,a);v()},onReady:function(a){x(this,o,a);w()},_set:function(a,b){q(b,function(c,b){l(a,"add_"+b,c)||l(a,"set_"+b,c)||(a[b]=c)})}});a._getComponent=a._getComponent||function(){};a._2Pass=a._2Pass||function(a){k(a,function(a){a()})};var m;if(!a.ElementSet){m=a.ElementSet=function(c,b){this._elements=typeof b==="object"&&typeof b.query===i?b.query(c).get():a._find(c,b)||[]};m.prototype={__class:c,components:function(d,c){var b=new a.ElementSet(this.get());return new a.ComponentSet(b,d,c)},component:function(b,a){return this.components(b,a).get(0)},each:function(c){for(var b=this._elements,a=0,d=b.length;a<d;a++)if(c.call(b[a],a)===e)break;return this},"get":function(c){var a=this._elements;return typeof c===d?Array.apply(b,a):a[c]||b},find:function(b){return new a.ElementSet(b,this)},filter:function(b){return new a.ElementSet(a._find(b,this._elements,e,c))}}}if(!a.ComponentSet){m=a.ComponentSet=function(b,d,c){this._elementSet=b||(b=new a.ElementSet);this._components=this._execute(b,d,c)};m.prototype={__class:c,setProperties:function(b){return this.each(function(){a._set(this,b)})},"get":function(c){var a=this._components;return typeof c===d?Array.apply(b,a):a[c||0]||b},each:function(a){k(this._components,function(b,d){if(a.call(b,d)===e)return c});return this},elements:function(){return this._elementSet},_execute:function(f,b,c){var a=[];function e(c){var a;return c instanceof b||(a=c.constructor)&&(a===b||a.inheritsFrom&&a.inheritsFrom(b)||a.implementsInterface&&a.implementsInterface(b))}if(b instanceof Array)a.push.apply(a,b);else f.each(function(){var c=this.control;c&&(!b||e(c))&&a.push(c);k(this._behaviors,function(c){(!b||e(c))&&a.push(c)})});if(typeof c!==d)if(a[c])a=[a[c]];else a=[];return a}}}m=b}var C=function(b,d){if(d)return function(){return a.plugins[b.name].plugin.apply(this,arguments)};else{var c=function(){var c=arguments.callee,b=c._component;return a._createComp.call(this,b,b.defaults,arguments)};c._component=b;return c}};a._getCreate=C;function y(){var u="collectionChanged",t="propertyChanged",o=-1,z="Undefined",n="",p="\n",y="Exception",m,s;a._foreach=k;a._forIn=q;a._merge=r;a._callIf=l;m=Function;m.__typeName="Function";m.__class=c;m.createCallback=function(b,a){return function(){var e=arguments.length;if(e>0){for(var d=[],c=0;c<e;c++)d[c]=arguments[c];d[e]=a;return b.apply(this,d)}return b.call(this,a)}};m.createDelegate=function(a,b){return function(){return b.apply(a,arguments)}};m.emptyFunction=m.emptyMethod=function(){};m.validateParameters=function(c,b,a){return Function._validateParams(c,b,a)};m._validateParams=function(i,g,d){var a,f=g.length;d=d!==e;a=Function._validateParameterCount(i,g,d);if(a){a.popStackFrame();return a}for(var c=0,k=i.length;c<k;c++){var h=g[Math.min(c,f-1)],j=h.name;if(h.parameterArray)j+="["+(c-f+1)+"]";else if(!d&&c>=f)break;a=Function._validateParameter(i[c],h,j);if(a){a.popStackFrame();return a}}return b};m._validateParameterCount=function(m,g,l){var a,f,d=g.length,h=m.length;if(h<d){var i=d;for(a=0;a<d;a++){var j=g[a];if(j.optional||j.parameterArray)i--}if(h<i)f=c}else if(l&&h>d){f=c;for(a=0;a<d;a++)if(g[a].parameterArray){f=e;break}}if(f){var k=Error.parameterCount();k.popStackFrame();return k}return b};m._validateParameter=function(e,a,j){var c,i=a.type,n=!!a.integer,m=!!a.domElement,o=!!a.mayBeNull;c=Function._validateParameterType(e,i,n,m,o,j);if(c){c.popStackFrame();return c}var g=a.elementType,h=!!a.elementMayBeNull;if(i===Array&&typeof e!==d&&e!==b&&(g||!h))for(var l=!!a.elementInteger,k=!!a.elementDomElement,f=0;f<e.length;f++){var p=e[f];c=Function._validateParameterType(p,g,l,k,h,j+"["+f+"]");if(c){c.popStackFrame();return c}}return b};m._validateParameterType=function(c,g,n,m,o,h){var e,k;if(typeof c===d||c===b){if(o)return b;e=c===b?Error.argumentNull(h):Error.argumentUndefined(h);e.popStackFrame();return e}if(g&&g.__enum){if(typeof c!==f){e=Error.argumentType(h,Object.getType(c),g);e.popStackFrame();return e}if(c%1===0){var i=g.prototype;if(!g.__flags||c===0){for(k in i)if(i[k]===c)return b}else{var l=c;for(k in i){var j=i[k];if(j===0)continue;if((j&c)===j)l-=j;if(l===0)return b}}}e=Error.argumentOutOfRange(h,c,String.format(a.Res.enumInvalidValue,c,g.getName()));e.popStackFrame();return e}if(m&&(!a._isDomElement(c)||c.nodeType===3)){e=Error.argument(h,a.Res.argumentDomElement);e.popStackFrame();return e}if(g&&!a._isInstanceOfType(g,c)){e=Error.argumentType(h,Object.getType(c),g);e.popStackFrame();return e}if(g===Number&&n)if(c%1!==0){e=Error.argumentOutOfRange(h,c,a.Res.argumentInteger);e.popStackFrame();return e}return b};m=Error;m.__typeName="Error";m.__class=c;a._errorArgument=function(e,b,g){var f="Sys.Argument"+e+y,d=f+": "+(g||a.Res["argument"+e]);if(b)d+=p+String.format(a.Res.paramName,b);var c=Error.create(d,{name:f,paramName:b});c.popStackFrame();c.popStackFrame();return c};a._error=function(g,f,d){var c="Sys."+g+y,e=c+": "+(f||a.Res[d]),b=Error.create(e,{name:c});b.popStackFrame();b.popStackFrame();return b};m.create=function(c,b){var a=new Error(c);a.message=c;if(b)for(var d in b)a[d]=b[d];a.popStackFrame();return a};m.argument=function(b,c){return a._errorArgument(n,b,c)};m.argumentNull=function(b,c){return a._errorArgument("Null",b,c)};m.argumentOutOfRange=function(f,c,h){var e="Sys.ArgumentOutOfRangeException: "+(h||a.Res.argumentOutOfRange);if(f)e+=p+String.format(a.Res.paramName,f);if(typeof c!==d&&c!==b)e+=p+String.format(a.Res.actualValue,c);var g=Error.create(e,{name:"Sys.ArgumentOutOfRangeException",paramName:f,actualValue:c});g.popStackFrame();return g};m.argumentType=function(e,d,c,f){var b="Sys.ArgumentTypeException: ";if(f)b+=f;else if(d&&c)b+=String.format(a.Res.argumentTypeWithTypes,d.getName(),c.getName());else b+=a.Res.argumentType;if(e)b+=p+String.format(a.Res.paramName,e);var g=Error.create(b,{name:"Sys.ArgumentTypeException",paramName:e,actualType:d,expectedType:c});g.popStackFrame();return g};m.argumentUndefined=function(b,c){return a._errorArgument(z,b,c)};m.format=function(b){return a._error("Format",b,"format")};m.invalidOperation=function(b){return a._error("InvalidOperation",b,"invalidOperation")};m.notImplemented=function(b){return a._error("NotImplemented",b,"notImplemented")};m.parameterCount=function(b){return a._error("ParameterCount",b,"parameterCount")};m.prototype.popStackFrame=function(){var a=this;if(typeof a.stack===d||a.stack===b||typeof a.fileName===d||a.fileName===b||typeof a.lineNumber===d||a.lineNumber===b)return;var c=a.stack.split(p),f=c[0],h=a.fileName+":"+a.lineNumber;while(typeof f!==d&&f!==b&&f.indexOf(h)<0){c.shift();f=c[0]}var g=c[1];if(typeof g===d||g===b)return;var e=g.match(/@(.*):(\d+)$/);if(typeof e===d||e===b)return;a.fileName=e[1];a.lineNumber=parseInt(e[2]);c.shift();a.stack=c.join(p)};m=Object;m.__typeName="Object";m.__class=c;m.getType=function(b){var a=b.constructor;return!a||typeof a!==i||!a.__typeName||a.__typeName==="Object"?Object:a};m.getTypeName=function(a){return Object.getType(a).getName()};m=String;m.__typeName="String";m.__class=c;s=m.prototype;s.endsWith=function(a){return this.substr(this.length-a.length)===a};s.startsWith=function(a){return this.substr(0,a.length)===a};s.trim=function(){return this.replace(/^\s+|\s+$/g,n)};s.trimEnd=function(){return this.replace(/\s+$/,n)};s.trimStart=function(){return this.replace(/^\s+/,n)};m.format=function(){return String._toFormattedString(e,arguments)};m._toFormattedString=function(p,m){for(var f=n,h=m[0],a=0;c;){var i=h.indexOf("{",a),g=h.indexOf("}",a);if(i<0&&g<0){f+=h.slice(a);break}if(g>0&&(g<i||i<0)){f+=h.slice(a,g+1);a=g+2;continue}f+=h.slice(a,i);a=i+1;if(h.charAt(a)==="{"){f+="{";a++;continue}if(g<0)break;var k=h.substring(a,g),j=k.indexOf(":"),o=parseInt(j<0?k:k.substring(0,j),10)+1,l=j<0?n:k.substring(j+1),e=m[o];if(typeof e===d||e===b)e=n;if(e.toFormattedString)f+=e.toFormattedString(l);else if(p&&e.localeFormat)f+=e.localeFormat(l);else if(e.format)f+=e.format(l);else f+=e.toString();a=g+1}return f};m=Boolean;m.__typeName="Boolean";m.__class=c;m.parse=function(d){var b=d.trim().toLowerCase(),a;if(b==="false")a=e;else if(b==="true")a=c;return a};m=Date;m.__typeName="Date";m.__class=c;m=Number;m.__typeName="Number";m.__class=c;m=RegExp;m.__typeName="RegExp";m.__class=c;if(!h)this.window=this;h.Type=m=Function;s=m.prototype;s.callBaseMethod=function(b,e,c){var d=a._getBaseMethod(this,b,e);return c?d.apply(b,c):d.apply(b)};s.getBaseMethod=function(b,c){return a._getBaseMethod(this,b,c)};s.getBaseType=function(){return typeof this.__baseType===d?b:this.__baseType};s.getInterfaces=function(){var c=[],a=this;while(a){var b=a.__interfaces;if(b)for(var d=0,f=b.length;d<f;d++){var e=b[d];!Array.contains(c,e)&&c.push(e)}a=a.__baseType}return c};s.getName=function(){return typeof this.__typeName===d?n:this.__typeName};s.implementsInterface=function(h){var f=this;f.resolveInheritance();var g=h.getName(),a=f.__interfaceCache;if(a){var i=a[g];if(typeof i!==d)return i}else a=f.__interfaceCache={};var b=f;while(b){var j=b.__interfaces;if(j&&Array.indexOf(j,h)!==o)return a[g]=c;b=b.__baseType}return a[g]=e};s.inheritsFrom=function(b){this.resolveInheritance();return a._inheritsFrom(this,b)};a._inheritsFrom=function(e,b){var d;if(b){var a=e.__baseType;while(a){if(a===b){d=c;break}a=a.__baseType}}return!!d};s.initializeBase=function(b,c){this.resolveInheritance();var a=this.__baseType;if(a)c?a.apply(b,c):a.apply(b);return b};s.isImplementedBy=function(a){if(typeof a===d||a===b)return e;var c=Object.getType(a);return!!(c.implementsInterface&&c.implementsInterface(this))};s.isInstanceOfType=function(b){return a._isInstanceOfType(this,b)};s.registerClass=function(f,e,g){var b=this,j=b.prototype;j.constructor=b;b.__typeName=f;b.__class=c;if(e){b.__baseType=e;b.__basePrototypePending=c}a.__upperCaseTypes[f.toUpperCase()]=b;if(g)for(var i=b.__interfaces=[],d=2,k=arguments.length;d<k;d++){var h=arguments[d];i.push(h)}return b};a.registerComponent=function(d,c){var f=d.getName(),e=a.UI&&(a._inheritsFrom(d,a.UI.Control)||a._inheritsFrom(d,a.UI.Behavior)),b=c&&c.name;if(!b){b=f;var g=b.lastIndexOf(j);if(g>=0){b=b.substr(g+1);if(b&&b.charAt(0)==="_")return}b=b.substr(0,1).toLowerCase()+b.substr(1)}if(!c)c={};c.name=b;c.type=d;c.typeName=f;c._isBehavior=e;c=a.components[b]=r(a.components[b],c);var i=a._getCreate(c),h=e?a.ElementSet.prototype:a.create;h[b]=i};a.registerPlugin=function(b){var e=b.name,f=b.functionName||e;a.plugins[e]=r(a.plugins[e],b);var g=b.plugin,d;if(b.global)d=a;else if(b.dom)d=a.ElementSet.prototype;else if(b.components)d=a.ComponentSet.prototype;if(d)d[f]=a._getCreate(b,c)};a._createComp=function(e,m,f){var j=e.type,i=e.parameters||[],l=e._isBehavior,n=l?f[0]:b,c=f[i.length]||{};c=r({},m,c);k(i,function(a,h){var e=typeof a===g?a:a.name,b=f[h];if(typeof b!==d&&typeof c[e]===d)c[e]=b});if(this instanceof a.ElementSet){var h=[];this.each(function(){h.push(a._create(j,c,this))});return new a.ComponentSet(this,h)}else return a._create(j,c)};a._create=function(f,h,c){var e=typeof c;if(e===g)c=a.get(c);var b;a._2Pass(function(){b=e===d?new f:new f(c);l(b,"beginUpdate");a._set(b,h);var g=a.Component;if(!g||!g._register(b))l(b,"endUpdate")||l(b,"initialize")});return b};s.registerInterface=function(d){var b=this;a.__upperCaseTypes[d.toUpperCase()]=b;b.prototype.constructor=b;b.__typeName=d;b.__interface=c;return b};s.resolveInheritance=function(){var a=this;if(a.__basePrototypePending){var e=a.__baseType;e.resolveInheritance();var c=e.prototype,d=a.prototype;for(var b in c)d[b]=d[b]||c[b];delete a.__basePrototypePending}};m.getRootNamespaces=function(){return Array.clone(a.__rootNamespaces)};m.isClass=function(a){return!!(a&&a.__class)};m.isInterface=function(a){return!!(a&&a.__interface)};m.isNamespace=function(a){return!!(a&&a.__namespace)};m.parse=function(d,f){var c;if(f){c=a.__upperCaseTypes[f.getName().toUpperCase()+j+d.toUpperCase()];return c||b}if(!d)return b;var e=Type.__htClasses;if(!e)Type.__htClasses=e={};c=e[d];if(!c){c=h.eval(d);e[d]=c}return c};m.registerNamespace=function(a){Type._registerNamespace(a)};m._registerNamespace=function(g){for(var f=h,e=g.split(j),d=0,k=e.length;d<k;d++){var i=e[d],b=f[i];if(!b)b=f[i]={};if(!b.__namespace){!d&&g!=="Sys"&&a.__rootNamespaces.push(b);b.__namespace=c;b.__typeName=e.slice(0,d+1).join(j);b.getName=function(){return this.__typeName}}f=b}};m._checkDependency=function(f,b){var g=Type._registerScript._scripts,c=g?!!g[f]:e;if(typeof b!==d&&!c)throw Error.invalidOperation(String.format(a.Res.requiredScriptReferenceNotIncluded,b,f));return c};m._registerScript=function(b,e){var d=Type._registerScript._scripts;if(!d)Type._registerScript._scripts=d={};if(d[b])throw Error.invalidOperation(String.format(a.Res.scriptAlreadyLoaded,b));d[b]=c;if(e)for(var f=0,h=e.length;f<h;f++){var g=e[f];if(!Type._checkDependency(g))throw Error.invalidOperation(String.format(a.Res.scriptDependencyNotFound,b,g));}};m._registerNamespace("Sys");a.__upperCaseTypes={};a.__rootNamespaces=[a];a._isInstanceOfType=function(g,f){if(typeof f===d||f===b)return e;if(f instanceof g)return c;var a=Object.getType(f);return!!(a===g)||a.inheritsFrom&&a.inheritsFrom(g)||a.implementsInterface&&a.implementsInterface(g)};a._getBaseMethod=function(e,f,d){var c=e.getBaseType();if(c){var a=c.prototype[d];return a instanceof Function?a:b}return b};a._isDomElement=function(b){var d=e;if(typeof b.nodeType!==f){var c=b.ownerDocument||b.document||b;if(c!=b){var g=c.defaultView||c.parentWindow;d=g!=b}else d=!c.body||!a._isDomElement(c.body)}return!d};var I=a._isBrowser=function(b){return a.Browser.agent===a.Browser[b]};k(a._ns,m._registerNamespace);delete a._ns;m=Array;m.__typeName="Array";m.__class=c;var B=a._indexOf=function(e,f,a){if(typeof f===d)return o;var c=e.length;if(c!==0){a=a-0;if(isNaN(a))a=0;else{if(isFinite(a))a=a-a%1;if(a<0)a=Math.max(0,c+a)}for(var b=a;b<c;b++)if(e[b]===f)return b}return o};m.add=m.enqueue=function(a,b){a[a.length]=b};m.addRange=function(a,b){a.push.apply(a,b)};m.clear=function(a){a.length=0};m.clone=function(a){return a.length===1?[a[0]]:Array.apply(b,a)};m.contains=function(a,b){return B(a,b)>=0};m.dequeue=function(a){return a.shift()};m.forEach=function(b,f,e){for(var a=0,g=b.length;a<g;a++){var c=b[a];typeof c!==d&&f.call(e,c,a,b)}};m.indexOf=B;m.insert=function(a,b,c){a.splice(b,0,c)};m.parse=function(a){return a?h.eval("("+a+")"):[]};m.remove=function(b,c){var a=B(b,c);a>=0&&b.splice(a,1);return a>=0};m.removeAt=function(a,b){a.splice(b,1)};Type._registerScript("MicrosoftAjaxCore.js");m=a.IDisposable=function(){};m.registerInterface("Sys.IDisposable");m=a.StringBuilder=function(a){this._parts=typeof a!==d&&a!==b&&a!==n?[a.toString()]:[];this._value={};this._len=0};m.prototype={append:function(a){this._parts.push(a);return this},appendLine:function(a){this._parts.push(typeof a===d||a===b||a===n?"\r\n":a+"\r\n");return this},clear:function(){this._parts=[];this._value={};this._len=0},isEmpty:function(){return!this._parts.length||!this.toString()},toString:function(a){var e=this;a=a||n;var c=e._parts;if(e._len!==c.length){e._value={};e._len=c.length}var i=e._value,h=i[a];if(typeof h===d){if(a!==n)for(var f=0;f<c.length;){var g=c[f];if(typeof g===d||g===n||g===b)c.splice(f,1);else f++}i[a]=h=c.join(a)}return h}};m.registerClass("Sys.StringBuilder");var w=navigator.userAgent,v=a.Browser={InternetExplorer:{},Firefox:{},Safari:{},Opera:{},agent:b,hasDebuggerStatement:e,name:navigator.appName,version:parseFloat(navigator.appVersion),documentMode:0};if(w.indexOf(" MSIE ")>o){v.agent=v.InternetExplorer;v.version=parseFloat(w.match(/MSIE (\d+\.\d+)/)[1]);if(v.version>7&&document.documentMode>6)v.documentMode=document.documentMode;v.hasDebuggerStatement=c}else if(w.indexOf(" Firefox/")>o){v.agent=v.Firefox;v.version=parseFloat(w.match(/ Firefox\/(\d+\.\d+)/)[1]);v.name="Firefox";v.hasDebuggerStatement=c}else if(w.indexOf(" AppleWebKit/")>o){v.agent=v.Safari;v.version=parseFloat(w.match(/ AppleWebKit\/(\d+(\.\d+)?)/)[1]);v.name="Safari"}else if(w.indexOf("Opera/")>o)v.agent=v.Opera;m=a.EventArgs=function(){};m.registerClass("Sys.EventArgs");a.EventArgs.Empty=new a.EventArgs;m=a.CancelEventArgs=function(){a.CancelEventArgs.initializeBase(this);this._cancel=e};m.prototype={get_cancel:function(){return this._cancel},set_cancel:function(a){this._cancel=a}};m.registerClass("Sys.CancelEventArgs",a.EventArgs);m=a.EventHandlerList=function(){this._list={}};m.prototype={_addHandler:function(b,a){Array.add(this._getEvent(b,c),a)},addHandler:function(b,a){this._addHandler(b,a)},_removeHandler:function(c,b){var a=this._getEvent(c);if(!a)return;Array.remove(a,b)},_removeHandlers:function(b){if(!b)this._list={};else{var a=this._getEvent(b);if(!a)return;a.length=0}},removeHandler:function(b,a){this._removeHandler(b,a)},getHandler:function(c){var a=this._getEvent(c);if(!a||!a.length)return b;a=Array.clone(a);return function(c,d){for(var b=0,e=a.length;b<e;b++)a[b](c,d)}},_getEvent:function(c,d){var a=this._list[c];if(!a){if(!d)return b;this._list[c]=a=[]}return a}};m.registerClass("Sys.EventHandlerList");Type.registerNamespace("Sys.UI");m=a._Debug=function(){};m.prototype={_appendConsole:function(a){typeof Debug!==d&&Debug.writeln;h.console&&h.console.log&&h.console.log(a);h.opera&&h.opera.postError(a);h.debugService&&h.debugService.trace(a)},_getTrace:function(){var c=a.get("#TraceConsole");return c&&c.tagName.toUpperCase()==="TEXTAREA"?c:b},_appendTrace:function(b){var a=this._getTrace();if(a)a.value+=b+p},"assert":function(d,b,c){if(!d){b=c&&this.assert.caller?String.format(a.Res.assertFailedCaller,b,this.assert.caller):String.format(a.Res.assertFailed,b);confirm(String.format(a.Res.breakIntoDebugger,b))&&this.fail(b)}},clearTrace:function(){var a=this._getTrace();if(a)a.value=n},fail:function(b){this._appendConsole(b);a.Browser.hasDebuggerStatement&&h.eval("debugger")},trace:function(a){this._appendConsole(a);this._appendTrace(a)},traceDump:function(a,b){this._traceDump(a,b,c)},_traceDump:function(a,l,o,c,j){var e=this;l=l||"traceDump";c=c||n;var k=c+l+": ";if(a===b){e.trace(k+"null");return}switch(typeof a){case d:e.trace(k+z);break;case f:case g:case"boolean":e.trace(k+a);break;default:if(Date.isInstanceOfType(a)||RegExp.isInstanceOfType(a)){e.trace(k+a.toString());break}if(!j)j=[];else if(Array.contains(j,a)){e.trace(k+"...");return}j.push(a);if(a==h||a===document||h.HTMLElement&&a instanceof HTMLElement||typeof a.nodeName===g){var t=a.tagName||"DomElement";if(a.id)t+=" - "+a.id;e.trace(c+l+" {"+t+"}")}else{var r=Object.getTypeName(a);e.trace(c+l+(typeof r===g?" {"+r+"}":n));if(c===n||o){c+="    ";var m,s,u,p,q;if(a instanceof Array){s=a.length;for(m=0;m<s;m++)e._traceDump(a[m],"["+m+"]",o,c,j)}else for(p in a){q=a[p];typeof q!==i&&e._traceDump(q,p,o,c,j)}}}Array.remove(j,a)}}};m.registerClass("Sys._Debug");m=a.Debug=new a._Debug;m.isDebug=e;function H(e,h){var d=this,c,b,m;if(h){c=d.__lowerCaseValues;if(!c){d.__lowerCaseValues=c={};var j=d.prototype;for(var l in j)c[l.toLowerCase()]=j[l]}}else c=d.prototype;function i(c){if(typeof b!==f)throw Error.argument("value",String.format(a.Res.enumInvalidValue,c,this.__typeName));}if(!d.__flags){m=h?e.toLowerCase():e;b=c[m.trim()];typeof b!==f&&i.call(d,e);return b}else{for(var k=(h?e.toLowerCase():e).split(","),n=0,g=k.length-1;g>=0;g--){var o=k[g].trim();b=c[o];typeof b!==f&&i.call(d,e.split(",")[g].trim());n|=b}return n}}function G(e){var f=this;if(typeof e===d||e===b)return f.__string;var g=f.prototype,a;if(!f.__flags||e===0){for(a in g)if(g[a]===e)return a}else{var c=f.__sortedValues;if(!c){c=[];for(a in g)c.push({key:a,value:g[a]});c.sort(function(a,b){return a.value-b.value});f.__sortedValues=c}var i=[],j=e;for(a=c.length-1;a>=0;a--){var k=c[a],h=k.value;if(h===0)continue;if((h&e)===h){i.push(k.key);j-=h;if(j===0)break}}if(i.length&&j===0)return i.reverse().join(", ")}return n}m=Type;m.prototype.registerEnum=function(d,f){var b=this;a.__upperCaseTypes[d.toUpperCase()]=b;for(var e in b.prototype)b[e]=b.prototype[e];b.__typeName=d;b.parse=H;b.__string=b.toString();b.toString=G;b.__flags=f;b.__enum=c};m.isEnum=function(a){return!!(a&&a.__enum)};m.isFlags=function(a){return!!(a&&a.__flags)};m=a.CollectionChange=function(h,a,e,c,g){var d=this;d.action=h;if(a)if(!(a instanceof Array))a=[a];d.newItems=a||b;if(typeof e!==f)e=o;d.newStartingIndex=e;if(c)if(!(c instanceof Array))c=[c];d.oldItems=c||b;if(typeof g!==f)g=o;d.oldStartingIndex=g};m.registerClass("Sys.CollectionChange");m=a.NotifyCollectionChangedAction=function(){};m.prototype={add:0,remove:1,reset:2};m.registerEnum("Sys.NotifyCollectionChangedAction");m=a.NotifyCollectionChangedEventArgs=function(b){this._changes=b;a.NotifyCollectionChangedEventArgs.initializeBase(this)};m.prototype={get_changes:function(){return this._changes||[]}};m.registerClass("Sys.NotifyCollectionChangedEventArgs",a.EventArgs);m=a.INotifyPropertyChange=function(){};m.registerInterface("Sys.INotifyPropertyChange");m=a.PropertyChangedEventArgs=function(b){a.PropertyChangedEventArgs.initializeBase(this);this._propertyName=b};m.prototype={get_propertyName:function(){return this._propertyName}};m.registerClass("Sys.PropertyChangedEventArgs",a.EventArgs);m=a.Observer=function(){};m.registerClass("Sys.Observer");m.makeObservable=function(b){var d=b instanceof Array,c=a.Observer;if(b.setValue===c._observeMethods.setValue)return b;c._addMethods(b,c._observeMethods);d&&c._addMethods(b,c._arrayMethods);return b};m._addMethods=function(c,a){for(var b in a)c[b]=a[b]};m._addEventHandler=function(e,b,d){a.Observer._getContext(e,c).events._addHandler(b,d)};m.addEventHandler=function(d,b,c){a.Observer._addEventHandler(d,b,c)};m._removeEventHandler=function(e,b,d){a.Observer._getContext(e,c).events._removeHandler(b,d)};m.removeEventHandler=function(d,b,c){a.Observer._removeEventHandler(d,b,c)};m.clearEventHandlers=function(d,b){a.Observer._getContext(d,c).events._removeHandlers(b)};m.raiseEvent=function(c,f,e){var d=a.Observer._getContext(c);if(!d)return;var b=d.events.getHandler(f);b&&b(c,e||a.EventArgs.Empty)};m.addPropertyChanged=function(c,b){a.Observer._addEventHandler(c,t,b)};m.removePropertyChanged=function(c,b){a.Observer._removeEventHandler(c,t,b)};m.beginUpdate=function(b){a.Observer._getContext(b,c).updating=c};m.endUpdate=function(d){var c=a.Observer._getContext(d);if(!c||!c.updating)return;c.updating=e;var g=c.dirty;c.dirty=e;if(g){if(d instanceof Array){var f=c.changes;c.changes=b;a.Observer.raiseCollectionChanged(d,f)}a.Observer.raisePropertyChanged(d,n)}};m.isUpdating=function(c){var b=a.Observer._getContext(c);return b?b.updating:e};m._setValue=function(e,p,m){for(var f,u,q=e,h=p.split(j),o=0,s=h.length-1;o<s;o++){var r=h[o];f=e["get_"+r];if(typeof f===i)e=f.call(e);else e=e[r];var t=typeof e;if(e===b||t===d)throw Error.invalidOperation(String.format(a.Res.nullReferenceInPath,p));}var k,g=h[s];f=e["get_"+g];if(typeof f===i)k=f.call(e);else k=e[g];l(e,"set_"+g,m)||(e[g]=m);if(k!==m){var n=a.Observer._getContext(q);if(n&&n.updating){n.dirty=c;return}a.Observer.raisePropertyChanged(q,h[0])}};m.setValue=function(c,b,d){a.Observer._setValue(c,b,d)};m.raisePropertyChanged=function(c,b){a.Observer.raiseEvent(c,t,new a.PropertyChangedEventArgs(b))};m.addCollectionChanged=function(c,b){a.Observer._addEventHandler(c,u,b)};m.removeCollectionChanged=function(c,b){a.Observer._removeEventHandler(c,u,b)};m._collectionChange=function(e,d){var a=this._getContext(e);if(a&&a.updating){a.dirty=c;var b=a.changes;if(!b)a.changes=b=[d];else b.push(d)}else{this.raiseCollectionChanged(e,[d]);this.raisePropertyChanged(e,"length")}};m.add=function(b,c){var d=new a.CollectionChange(a.NotifyCollectionChangedAction.add,[c],b.length);Array.add(b,c);a.Observer._collectionChange(b,d)};m.addRange=function(b,c){var d=new a.CollectionChange(a.NotifyCollectionChangedAction.add,c,b.length);Array.addRange(b,c);a.Observer._collectionChange(b,d)};m.clear=function(c){var d=Array.clone(c);Array.clear(c);a.Observer._collectionChange(c,new a.CollectionChange(a.NotifyCollectionChangedAction.reset,b,o,d,0))};m.insert=function(b,c,d){Array.insert(b,c,d);a.Observer._collectionChange(b,new a.CollectionChange(a.NotifyCollectionChangedAction.add,[d],c))};m.remove=function(d,f){var g=Array.indexOf(d,f);if(g!==o){Array.remove(d,f);a.Observer._collectionChange(d,new a.CollectionChange(a.NotifyCollectionChangedAction.remove,b,o,[f],g));return c}return e};m.removeAt=function(d,c){if(c>o&&c<d.length){var e=d[c];Array.removeAt(d,c);a.Observer._collectionChange(d,new a.CollectionChange(a.NotifyCollectionChangedAction.remove,b,o,[e],c))}};m.raiseCollectionChanged=function(c,b){a.Observer.raiseEvent(c,u,new a.NotifyCollectionChangedEventArgs(b))};m._observeMethods={add_propertyChanged:function(b){a.Observer._addEventHandler(this,t,b)},remove_propertyChanged:function(b){a.Observer._removeEventHandler(this,t,b)},addEventHandler:function(b,c){a.Observer._addEventHandler(this,b,c)},removeEventHandler:function(b,c){a.Observer._removeEventHandler(this,b,c)},clearEventHandlers:function(b){a.Observer._getContext(this,c).events._removeHandlers(b)},get_isUpdating:function(){return a.Observer.isUpdating(this)},beginUpdate:function(){a.Observer.beginUpdate(this)},endUpdate:function(){a.Observer.endUpdate(this)},setValue:function(c,b){a.Observer._setValue(this,c,b)},raiseEvent:function(d,c){a.Observer.raiseEvent(this,d,c||b)},raisePropertyChanged:function(b){a.Observer.raiseEvent(this,t,new a.PropertyChangedEventArgs(b))}};m._arrayMethods={add_collectionChanged:function(b){a.Observer._addEventHandler(this,u,b)},remove_collectionChanged:function(b){a.Observer._removeEventHandler(this,u,b)},add:function(b){a.Observer.add(this,b)},addRange:function(b){a.Observer.addRange(this,b)},clear:function(){a.Observer.clear(this)},insert:function(b,c){a.Observer.insert(this,b,c)},remove:function(b){return a.Observer.remove(this,b)},removeAt:function(b){a.Observer.removeAt(this,b)},raiseCollectionChanged:function(b){a.Observer.raiseEvent(this,u,new a.NotifyCollectionChangedEventArgs(b))}};m._getContext=function(c,d){var a=c._observerContext;return a?a():d?(c._observerContext=this._createContext())():b};m._createContext=function(){var b={events:new a.EventHandlerList};return function(){return b}};Type.registerNamespace("Sys.Services");var x=a.Services,A="Service",F="Role",E="Authentication",D="Profile";function C(a){this._path=a}x[E+A]={set_path:C,_setAuthenticated:function(a){this._auth=a}};x["_"+E+A]={};x[D+A]={set_path:C};x["_"+D+A]={};x.ProfileGroup=function(a){this._propertygroup=a};x[F+A]={set_path:C};x["_"+F+A]={};a._domLoaded()}if(a.loader)a.loader.registerScript("Core",b,y);else y()})(window,window.Sys);�0// (c) 2010 CodePlex Foundation
function MaskedEditSetMessage(a,b,c){a.errormessage=b;if(c=="")a.text=b;else a.text=c;a.innerHTML=a.text}function MaskedEditMessageShow(a,b){if(typeof a.display=="string"){if(a.display=="None")return;if(a.display=="Dynamic"){a.style.display=b?"none":"inline";return}}a.style.visibility=b?"hidden":"visible"}function MaskedEditSetCssClass(b,c){var a=$get(b.TargetValidator);Sys.UI.DomElement.removeCssClass(a,b.InvalidValueCssClass);Sys.UI.DomElement.removeCssClass(a,b.CssBlurNegative);Sys.UI.DomElement.removeCssClass(a,b.CssFocus);Sys.UI.DomElement.removeCssClass(a,b.CssFocusNegative);c!=""&&Sys.UI.DomElement.addCssClass(a,c)}function MaskedEditValidatorDateTime(a){var f=false,d=true,b="";MaskedEditSetMessage(a,b,b);MaskedEditSetCssClass(a,b);MaskedEditMessageShow(a,d);if(a.IsMaskedEdit=="false")return d;var e=$get(a.TargetValidator);if(a.ValidEmpty=="false")if(Sys.Extended.UI.TextBoxWrapper.get_Wrapper(e).get_Value()==a.InitialValue){MaskedEditSetMessage(a,a.EmptyValueMessage,a.EmptyValueText);MaskedEditSetCssClass(a,a.InvalidValueCssClass);MaskedEditMessageShow(a,f);return f}if(Sys.Extended.UI.TextBoxWrapper.get_Wrapper(e).get_Value()==b)return d;var c=d,g=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(e).get_Value();if(a.ValidationExpression!=b){var p=new RegExp(a.ValidationExpression),h=p.exec(g);c=h!=null&&g==h[0];if(!c){MaskedEditSetMessage(a,a.InvalidValueMessage,a.InvalidValueText);MaskedEditSetCssClass(a,a.InvalidValueCssClass);MaskedEditMessageShow(a,f);return f}}var m=e.MaskedEditBehavior.AutoFormatDate(),n=e.MaskedEditBehavior.AutoFormatTime(),k=b,l=b;if(a.MinimumValue!=b){k=a.MinimumValue.split(" ")[0];l=a.MinimumValue.split(" ")[1]}var i=b,j=b;if(a.MaximumValue!=b){i=a.MaximumValue.split(" ")[0];j=a.MaximumValue.split(" ")[1]}c=MaskedEditValidatorPartDate(a,m,k,i);if(c)c=MaskedEditValidatorPartTime(a,n,l,j);if(c&&a.ClientValidationFunction!=b){var o={Value:g,IsValid:d};eval(a.ClientValidationFunction+"(value, args);");c=o.IsValid;if(!c){MaskedEditSetMessage(a,a.InvalidValueMessage,a.InvalidValueText);MaskedEditSetCssClass(a,a.InvalidValueCssClass)}}!c&&MaskedEditMessageShow(a,c);return c}function MaskedEditValidatorPartTime(b,n,h,g){var a=10,e=-1,x="([0-5][0-9])\\s(",w="([0-5][0-9])",k=true,j=b.TimeSeparator,y=b.AmPmSymbol,v=y.split(";"),z=y.replace(";","|"),A="^(^([0][0-9]|[1][0-2])"+j+w+j+x+z+")$)|(^([0][0-9]|[1][0-2])"+j+x+z+")$)$",B="^(^([0-1][0-9]|[2][0-3])"+j+w+j+"([0-5][0-9])$)|(^([0-1][0-9]|[2][0-3])"+j+"([0-5][0-9])$)$",f=e,p=e,s=e,r="",q=n.split(j),t=new RegExp(A),l=t.exec(n),u=new RegExp(B),m=u.exec(n);if(l&&l[0]==n){r=n.substring(n.length-2).substring(0,1);f=parseInt(q[0],a);if(r.toUpperCase()==v[1].substring(0,1).toUpperCase()){f+=12;if(f==24)f=12}p=parseInt(q[1],a);s=b.length>9?parseInt(q[2].substring(0,2),a):0}else if(m&&m[0]==n){f=parseInt(q[0],a);p=parseInt(q[1],a);s=n.length>5?parseInt(q[2],a):0}if(f==e||p==e||s==e)k=false;if(!k){MaskedEditSetMessage(b,b.InvalidValueMessage,b.InvalidValueText);MaskedEditSetCssClass(b,b.InvalidValueCssClass)}if(k&&(g!=""||h!="")){var c,i,o,d;if(h!=""){c=e;i=e;o=e;d=h.split(j);l=t.exec(h);m=u.exec(h);if(l&&l[0]==h){r=h.substring(h.length-2).substring(0,1);c=parseInt(d[0],a);if(r.toUpperCase()==v[1].substring(0,1).toUpperCase()){c+=12;if(c==24)c=0}i=parseInt(d[1],a);o=h.length>9?parseInt(d[2].substring(0,2),a):0}else if(m&&m[0]==h){c=parseInt(d[0],a);i=parseInt(d[1],a);o=h.length>5?parseInt(d[2],a):0}k=f>c||f==c&&p>i||f==c&&p==i&&s>=o;if(!k){MaskedEditSetMessage(b,b.MinimumValueMessage,b.MinimumValueText);MaskedEditSetCssClass(b,b.InvalidValueCssClass)}}if(g!=""&&k){c=e;i=e;o=e;d=g.split(j);l=t.exec(g);m=u.exec(g);if(l&&l[0]==g){r=g.substring(g.length-2).substring(0,1);c=parseInt(d[0],a);if(r.toUpperCase()==v[1].substring(0,1).toUpperCase()){c+=12;if(c==24)c=0}i=parseInt(d[1],a);o=g.length>9?parseInt(d[2].substring(0,2),a):0}else if(m&&m[0]==g){c=parseInt(d[0],a);i=parseInt(d[1],a);o=g.length>5?parseInt(d[2],a):0}k=f<c||f==c&&p<i||f==c&&p==i&&s<=o;if(!k){MaskedEditSetMessage(b,b.MaximumValueMessage,b.MaximumValueText);MaskedEditSetCssClass(b,b.InvalidValueCssClass)}}}return k}function MaskedEditValidatorPartDate(a,p,o,n){var d=10,f=true,e=a.DateFormat,m=a.DateSeparator,l=p.split(m);if(parseInt(l.length,d)!=3){MaskedEditSetMessage(a,a.InvalidValueMessage,a.InvalidValueText);MaskedEditSetCssClass(a,a.InvalidValueCssClass);f=false}if(e.indexOf("D")==-1||e.indexOf("M")==-1||e.indexOf("Y")==-1){MaskedEditSetMessage(a,a.InvalidValueMessage,a.InvalidValueText);MaskedEditSetCssClass(a,a.InvalidValueCssClass);f=false}var k=-1,i=-1,c=-1;if(f){k=parseInt(l[e.indexOf("D")],d);i=parseInt(l[e.indexOf("M")],d);c=parseInt(l[e.indexOf("Y")],d);if(c<100)c=parseInt(c+a.Century,d);else if(c<999)c+=parseInt(a.Century.substring(0,1)+c,d);f=k>0&&i>0&&c>0&&(k<=([,31,28,31,30,31,30,31,31,30,31,30,31])[i]||k==29&&i==2&&c%4==0&&(c%100>0||c%400==0))}if(!f){MaskedEditSetMessage(a,a.InvalidValueMessage,a.InvalidValueText);MaskedEditSetCssClass(a,a.InvalidValueCssClass)}if(f&&(n!=""||o!="")){var g,j=-1,h=-1,b=-1;if(o!=""){g=o.split(m);j=parseInt(g[e.indexOf("D")],d);h=parseInt(g[e.indexOf("M")],d);b=parseInt(g[e.indexOf("Y")],d);if(b<100)b=parseInt(b+a.Century,d);else if(b<999)b+=parseInt(a.Century.substring(0,1)+b,d);f=j>0&&h>0&&b>0&&c>b||c==b&&i>h||c==b&&i==h&&k>=j;if(!f){MaskedEditSetMessage(a,a.MinimumValueMessage,a.MinimumValueText);MaskedEditSetCssClass(a,a.InvalidValueCssClass)}}if(f&&n!=""){g=n.split(m);j=parseInt(g[e.indexOf("D")],d);h=parseInt(g[e.indexOf("M")],d);b=parseInt(g[e.indexOf("Y")],d);if(b<100)b=parseInt(b+a.Century,d);else if(b<999)b+=parseInt(a.Century.substring(0,1)+b,d);f=j>0&&h>0&&b>0&&c<b||c==b&&i<h||c==b&&i==h&&k<=j;if(!f){MaskedEditSetMessage(a,a.MaximumValueMessage,a.MaximumValueText);MaskedEditSetCssClass(a,a.InvalidValueCssClass)}}}return f}function MaskedEditValidatorDate(a){var d=false,c=true;MaskedEditSetMessage(a,"","");MaskedEditSetCssClass(a,"");MaskedEditMessageShow(a,c);if(a.IsMaskedEdit=="false")return c;var f=$get(a.TargetValidator);if(a.ValidEmpty=="false")if(Sys.Extended.UI.TextBoxWrapper.get_Wrapper(f).get_Value()==a.InitialValue){MaskedEditSetMessage(a,a.EmptyValueMessage,a.EmptyValueText);MaskedEditSetCssClass(a,a.InvalidValueCssClass);MaskedEditMessageShow(a,d);return d}if(Sys.Extended.UI.TextBoxWrapper.get_Wrapper(f).get_Value()=="")return c;var b=c,e=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(f).get_Value();if(a.ValidationExpression!=""){var i=new RegExp(a.ValidationExpression),g=i.exec(e);b=g!=null&&e==g[0];if(!b){MaskedEditSetMessage(a,a.InvalidValueMessage,a.InvalidValueText);MaskedEditSetCssClass(a,a.InvalidValueCssClass);MaskedEditMessageShow(a,d);return d}}b=MaskedEditValidatorPartDate(a,e,a.MinimumValue,a.MaximumValue);if(b&&a.ClientValidationFunction!=""){var h={Value:e,IsValid:c};eval(a.ClientValidationFunction+"(value, args);");b=h.IsValid;if(!b){MaskedEditSetMessage(a,a.InvalidValueMessage,a.InvalidValueText);MaskedEditSetCssClass(a,a.InvalidValueCssClass)}}!b&&MaskedEditMessageShow(a,b);return b}function MaskedEditValidatorTime(a){var d=false,c=true;MaskedEditSetMessage(a,"","");MaskedEditSetCssClass(a,"");MaskedEditMessageShow(a,c);if(a.IsMaskedEdit=="false")return c;var f=$get(a.TargetValidator);if(a.ValidEmpty=="false")if(Sys.Extended.UI.TextBoxWrapper.get_Wrapper(f).get_Value()==a.InitialValue){MaskedEditSetMessage(a,a.EmptyValueMessage,a.EmptyValueText);MaskedEditSetCssClass(a,a.InvalidValueCssClass);MaskedEditMessageShow(a,d);return d}if(Sys.Extended.UI.TextBoxWrapper.get_Wrapper(f).get_Value()=="")return c;var b=c,e=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(f).get_Value();if(a.ValidationExpression!=""){var i=new RegExp(a.ValidationExpression),g=i.exec(e);b=g!=null&&e==g[0];if(!b){MaskedEditSetMessage(a,a.InvalidValueMessage,a.InvalidValueText);MaskedEditSetCssClass(a,a.InvalidValueCssClass);MaskedEditMessageShow(a,d);return d}}b=MaskedEditValidatorPartTime(a,e,a.MinimumValue,a.MaximumValue);if(b&&a.ClientValidationFunction!=""){var h={Value:e,IsValid:c};eval(a.ClientValidationFunction+"(value, args);");b=h.IsValid;if(!b){MaskedEditSetMessage(a,a.InvalidValueMessage,a.InvalidValueText);MaskedEditSetCssClass(a,a.InvalidValueCssClass)}}!b&&MaskedEditMessageShow(a,b);return b}function MaskedEditValidatorNumber(a){var d=null,i=false,j=true,f="";MaskedEditSetMessage(a,f,f);MaskedEditSetCssClass(a,f);MaskedEditMessageShow(a,j);if(a.IsMaskedEdit=="false")return j;var m=$get(a.TargetValidator);if(a.ValidEmpty=="false")if(Sys.Extended.UI.TextBoxWrapper.get_Wrapper(m).get_Value()==a.InitialValue){MaskedEditSetMessage(a,a.EmptyValueMessage,a.EmptyValueText);MaskedEditSetCssClass(a,a.InvalidValueCssClass);MaskedEditMessageShow(a,i);return i}if(Sys.Extended.UI.TextBoxWrapper.get_Wrapper(m).get_Value()==f)return j;var c=j,q=a.Thousands,p=a.Decimal,n=a.Money,t=a.LastMaskPosition+n.length+1,g=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(m).get_Value();if(a.ValidationExpression!=f){var s=new RegExp(a.ValidationExpression),o=s.exec(g);c=o!=d&&g==o[0];if(!c){MaskedEditSetMessage(a,a.InvalidValueMessage,a.InvalidValueText);MaskedEditSetCssClass(a,a.InvalidValueCssClass);MaskedEditMessageShow(a,i);return i}}c=i;var k=d,l=d,e=d,h=d,b=d;g=g.replace(new RegExp("(\\"+q+")","g"),f);g=g.replace(new RegExp("(\\"+n+")","g"),f);e=g.match(/^\s*(\S+(\s+\S+)*)\s*$/);if(e!=d)g=e[1];l=/^\s*[-\+]?\d+\s*$/;if(g.match(l)!=d){h=parseInt(g,10);c=h==(isNaN(h)?d:h)}if(c){if(a.MaximumValue!=f){b=parseInt(a.MaximumValue,10);if(b==(isNaN(b)?d:b))if(h>b){c=i;MaskedEditSetMessage(a,a.MaximumValueMessage,a.MaximumValueText);MaskedEditSetCssClass(a,a.InvalidValueCssClass)}}if(c&&a.MinimumValue!=f){b=parseInt(a.MinimumValue,10);if(b==(isNaN(b)?d:b))if(h<b){c=i;MaskedEditSetMessage(a,a.MinimumValueMessage,a.MinimumValueText);MaskedEditSetCssClass(a,a.InvalidValueCssClass)}}}else{l=new RegExp("^\\s*([-\\+])?(\\d+)?(\\"+p+"(\\d+))?\\s*$");e=g.match(l);if(e!=d){k=d;if(typeof e[1]!="undefined")k=e[1]+(e[2].length>0?e[2]:"0")+"."+e[4];else k=(e[2].length>0?e[2]:"0")+"."+e[4];h=parseFloat(k);c=h==(isNaN(h)?d:h)}if(!c){MaskedEditSetMessage(a,a.InvalidValueMessage,a.InvalidValueText);MaskedEditSetCssClass(a,a.InvalidValueCssClass)}if(c){if(a.MaximumValue!=f){b=parseFloat(a.MaximumValue);if(b==(isNaN(b)?d:b))if(h>b){c=i;MaskedEditSetMessage(a,a.MaximumValueMessage,a.MaximumValueText);MaskedEditSetCssClass(a,a.InvalidValueCssClass)}}if(c&&a.MinimumValue!=f){b=parseFloat(a.MinimumValue);if(b==(isNaN(b)?d:b))if(h<b){c=i;MaskedEditSetMessage(a,a.MinimumValueMessage,a.MinimumValueText);MaskedEditSetCssClass(a,a.InvalidValueCssClass)}}}}if(c&&a.ClientValidationFunction!=f){var r={Value:g,IsValid:j};eval(a.ClientValidationFunction+"(value, args);");c=r.IsValid;if(!c){MaskedEditSetMessage(a,a.InvalidValueMessage,a.InvalidValueText);MaskedEditSetCssClass(a,a.InvalidValueCssClass)}}!c&&MaskedEditMessageShow(a,c);return c}function MaskedEditValidatorNone(a){var e=null,d=false,f=true;MaskedEditSetMessage(a,"","");MaskedEditSetCssClass(a,"");MaskedEditMessageShow(a,f);if(a.IsMaskedEdit=="false")return f;var h=$get(a.TargetValidator);if(a.ValidEmpty=="false")if(Sys.Extended.UI.TextBoxWrapper.get_Wrapper(h).get_Value()==a.InitialValue){MaskedEditSetMessage(a,a.EmptyValueMessage,a.EmptyValueText);MaskedEditSetCssClass(a,a.InvalidValueCssClass);MaskedEditMessageShow(a,d);return d}if(Sys.Extended.UI.TextBoxWrapper.get_Wrapper(h).get_Value()=="")return f;var b=f,g=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(h).get_Value();if(a.ValidationExpression!=""){var l=new RegExp(a.ValidationExpression),i=l.exec(g);b=i!=e&&g==i[0];if(!b){MaskedEditSetMessage(a,a.InvalidValueMessage,a.InvalidValueText);MaskedEditSetCssClass(a,a.InvalidValueCssClass);MaskedEditMessageShow(a,d);return d}}var j=/^\d+\s*$/,c=e;if(a.MaximumValue!="")if(a.MaximumValue.match(j)!=e){c=parseInt(a.MaximumValue,10);if(c==(isNaN(c)?e:c))if(g.length>c){b=d;MaskedEditSetMessage(a,a.MaximumValueMessage,a.MaximumValueText);MaskedEditSetCssClass(a,a.InvalidValueCssClass)}}if(b&&a.MinimumValue!="")if(a.MinimumValue.match(j)!=e){c=parseInt(a.MinimumValue,10);if(c==(isNaN(c)?e:c))if(g.length<c){b=d;MaskedEditSetMessage(a,a.MinimumValueMessage,a.MinimumValueText);MaskedEditSetCssClass(a,a.InvalidValueCssClass)}}if(b&&a.ClientValidationFunction!=""){var k={Value:g,IsValid:f};eval(a.ClientValidationFunction+"(value, args);");b=k.IsValid;if(!b){MaskedEditSetMessage(a,a.InvalidValueMessage,a.InvalidValueText);MaskedEditSetCssClass(a,a.InvalidValueCssClass)}}!b&&MaskedEditMessageShow(a,b);return b};�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.Redo = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.Redo.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.Redo.prototype = {
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.Redo.callBaseMethod(this, "callMethod")) return false;
        this._designPanel.redo();
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.Redo.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.Redo", Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);

�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.Paste = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.Paste.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.Paste.prototype = {
    canBeShown : function() {
        return Sys.Extended.UI.HTMLEditor.isIE;
    },
    
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.Paste.callBaseMethod(this, "callMethod")) return false;
        var editor = this._designPanel;

        if(Sys.Extended.UI.HTMLEditor.isIE) {
            editor._saveContent();
            editor.openWait();
            setTimeout(function(){editor._paste(true); editor.closeWait();},0)
        } else {
            var sel   = editor._getSelection();
            var range = editor._createRange(sel);

            editor._removeAllRanges(sel);
            alert(String.format(Sys.Extended.UI.Resources.HTMLEditor_toolbar_button_Use_verb, (Sys.Extended.UI.HTMLEditor.isSafari && navigator.userAgent.indexOf("mac") != -1)?"Apple-V":"Ctrl-V" ));
            editor._selectRange(sel,range);
            editor.isWord = false;
            editor.isPlainText = false;
        }
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.Paste.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.Paste", Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);

�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.FontName=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.FontName.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.FontName.prototype={initialize:function(){Sys.Extended.UI.HTMLEditor.ToolbarButton.FontName.callBaseMethod(this,"initialize")},callMethod:function(a){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.FontName.callBaseMethod(this,"callMethod"))return false;try{var b=this._designPanel;b._execCommand("fontname",false,a.options.item(a.selectedIndex).value)}catch(d){}},checkState:function(){var e=this;if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.FontName.callBaseMethod(e,"checkState"))return false;var f=e._designPanel,a=null;try{a=Function.createDelegate(f,Sys.Extended.UI.HTMLEditor._queryCommandValue)("fontname")}catch(i){}if(!f._FontNotSet)if(!a||a.length==0)a=Sys.Extended.UI.HTMLEditor.getStyle(f._doc.body,"font-family");var c=e._select,b=0;if(a&&a.length>0){var g=a.toLowerCase().split(",")[0].replace(/^(['"])/,"").replace(/(['"])$/,"");for(b=0;b<c.options.length;b++){var h=c.options.item(b).value.toLowerCase().split(",")[0];if(h==g)break}if(b==c.options.length)try{var d=document.createElement("OPTION");d.value=a.replace(/^(['"])/,"").replace(/(['"])$/,"");d.text=a.split(",")[0].replace(/^(['"])/,"").replace(/(['"])$/,"");c.add(d,Sys.Extended.UI.HTMLEditor.isIE?b:null);$addHandler(d,"click",e._onclick_option$delegate)}catch(i){b=0}}c.selectedIndex=b}};Sys.Extended.UI.HTMLEditor.ToolbarButton.FontName.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.FontName",Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeSelectButton);"Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedForeColor=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedForeColor.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedForeColor.prototype={setColor:function(a){this._designPanel._execCommand("forecolor",false,a)}};Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedForeColor.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedForeColor",Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedColorButton);Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.CommonButton=function(b){var a=this;Sys.Extended.UI.HTMLEditor.ToolbarButton.CommonButton.initializeBase(a,[b]);a._loaded=false;a._preservePlace=false;a._editPanel=null;a._activeModes=null;a._app_onload$delegate=Function.createDelegate(a,a._app_onload);a._cssClass="";a._onmouseover$delegate=Function.createDelegate(a,a._onmouseover);a._onmouseout$delegate=Function.createDelegate(a,a._onmouseout);a._onmousedown$delegate=Function.createDelegate(a,a._onmousedown);a._onmouseup$delegate=Function.createDelegate(a,a._onmouseup);a._onclick$delegate=Function.createDelegate(a,a._onclick)};Sys.Extended.UI.HTMLEditor.ToolbarButton.CommonButton.prototype={get_preservePlace:function(){return this._preservePlace},set_preservePlace:function(a){this._preservePlace=a},set_activeEditPanel:function(b){var a=this;a._editPanel=b;if(a._editPanel==null)a.hideButton();else if(a.isAllowedActiveMode(a._editPanel.get_activeMode())&&a.canBeShown()){a.showButton();a.onEditPanelActivity()}else a.hideButton()},isImage:function(){return true},checkRangeInDesign:function(){var a=this;if(typeof a._designPanel=="undefined")return false;if(a._designPanel==null)return false;if(a._designPanel.isPopup())return false;var b=Sys.Extended.UI.HTMLEditor.getSelParent(a._designPanel);if(b.nodeType==3)b=b.parentNode;return b.ownerDocument==a._designPanel._doc},get_buttonName:function(){var a=Object.getType(this).getName();a=a.substring(a.lastIndexOf(".")+1);return a},get_message:function(a){var b="Sys.Extended.UI.Resources.HTMLEditor_toolbar_button_"+this.get_buttonName()+"_message_"+a;return eval(b)},isDisplayed:function(){var a=this.get_element();if(a){var b=a.style;return b.display!="none"&&b.visibility!="hidden"}else return false},hideButton:function(){var a=this.get_element();if(a)if(!this._preservePlace)a.style.display="none";else a.style.visibility="hidden"},showButton:function(){var a=this.get_element();if(a){if(a.style.display=="none")a.style.display="";if(this._preservePlace)a.style.visibility="visible"}},canBeShown:function(){return true},onEditPanelActivity:function(){},get_activeModes:function(){if(this._activeModes==null)this._activeModes=[];return this._activeModes},set_activeModes:function(a){this.get_activeModes().push(a)},get_activeModesIds:function(){},set_activeModesIds:function(c){for(var b=c.split(";"),a=0;a<b.length;a++)this.set_activeModes(parseInt(b[a]))},set_toolTip:function(a){this.get_element().title=a},get_toolTip:function(){return this.get_element().title},isAllowedActiveMode:function(b){for(var a=0;a<this.get_activeModes().length;a++)if(this.get_activeModes()[a]==b)return true;return false},initialize:function(){var c="none",a=this;Sys.Extended.UI.HTMLEditor.ToolbarButton.CommonButton.callBaseMethod(a,"initialize");Sys.Application.add_load(a._app_onload$delegate);var b=a.get_element();if(a._preservePlace&&!a.canBeShown())b.style.display=c;a._cssClass=b.className;a.isImage()&&$addHandlers(b,{mouseover:a._onmouseover$delegate,mouseout:a._onmouseout$delegate,mousedown:a._onmousedown$delegate,mouseup:a._onmouseup$delegate,click:a._onclick$delegate});if(Sys.Extended.UI.HTMLEditor.isIE){function d(a){if(a.nodeType==1&&a.tagName){var b=a.tagName.toUpperCase();if(b!="INPUT"&&b!="TEXTAREA"&&b!="IFRAME")a.unselectable="on";for(var c=0;c<a.childNodes.length;c++)d(a.childNodes.item(c))}}d(b)}else try{b.style.MozUserSelect=c;b.parentNode.style.MozUserSelect=c}catch(e){}},dispose:function(){var a=this;a.isImage()&&$common.removeHandlers(a.get_element(),{mouseover:a._onmouseover$delegate,mouseout:a._onmouseout$delegate,mousedown:a._onmousedown$delegate,mouseup:a._onmouseup$delegate,click:a._onclick$delegate});a._loaded=false;Sys.Application.remove_load(a._app_onload$delegate);Sys.Extended.UI.HTMLEditor.ToolbarButton.CommonButton.callBaseMethod(a,"dispose")},_app_onload:function(){this.onButtonLoaded();this._loaded=true},onButtonLoaded:function(){},_onmouseover:function(){if(!this.isEnable())return false;Sys.UI.DomElement.addCssClass(this.get_element(),this._cssClass+"_hover");return true},_onmouseout:function(){var a=this;if(!a.isEnable())return false;Sys.UI.DomElement.removeCssClass(a.get_element(),a._cssClass+"_hover");Sys.UI.DomElement.removeCssClass(a.get_element(),a._cssClass+"_mousedown");return true},_onmousedown:function(){if(!this.isEnable())return null;Sys.UI.DomElement.addCssClass(this.get_element(),this._cssClass+"_mousedown");return false},_onmouseup:function(){if(!this.isEnable())return false;Sys.UI.DomElement.removeCssClass(this.get_element(),this._cssClass+"_mousedown");return true},_onclick:function(){return!this.isEnable()?false:true},isEnable:function(){return!this._loaded?false:this._editPanel==null?false:true},setActivity:function(b){var a=this;if(b)Sys.UI.DomElement.addCssClass(a.get_element(),a._cssClass+"_active");else Sys.UI.DomElement.removeCssClass(a.get_element(),a._cssClass+"_active")}};Sys.Extended.UI.HTMLEditor.ToolbarButton.CommonButton.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.CommonButton",Sys.UI.Control);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorSelector=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorSelector.initializeBase(this,[a]);this._fixedColorButton=null};Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorSelector.prototype={get_fixedColorButton:function(){return this._fixedColorButton},set_fixedColorButton:function(a){this._fixedColorButton=a},callMethod:function(){var a=this;if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorSelector.callBaseMethod(a,"callMethod"))return false;a.openPopup(Function.createDelegate(a,a._onopened));return true},_onopened:function(a){a.setColor=Function.createDelegate(this,this.setColor)},setColor:function(a){this.closePopup();this._fixedColorButton!=null&&this._fixedColorButton.set_defaultColor(a)}};Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorSelector.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorSelector",Sys.Extended.UI.HTMLEditor.ToolbarButton.Selector);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.Popups");

Sys.Extended.UI.HTMLEditor.Popups.PopupCommonButton = function(element) {
    Sys.Extended.UI.HTMLEditor.Popups.PopupCommonButton.initializeBase(this, [element]);

    this._loaded = false;
    this._activated = null;
    this._app_onload$delegate = Function.createDelegate(this, this._app_onload);
    this._cssClass = "";
    this._name = "";

    this._onmouseover$delegate = Function.createDelegate(this, this._onmouseover);
    this._onmouseout$delegate = Function.createDelegate(this, this._onmouseout);
    this._onmousedown$delegate = Function.createDelegate(this, this._onmousedown);
    this._onmouseup$delegate = Function.createDelegate(this, this._onmouseup);
    this._onclick$delegate = Function.createDelegate(this, this._onclick);
}

Sys.Extended.UI.HTMLEditor.Popups.PopupCommonButton.prototype = {

    isImage: function() {
        return true;
    },

    set_toolTip: function(value) {
        this.get_element().title = value;
    },
    get_toolTip: function() {
        return this.get_element().title;
    },

    set_name: function(value) {
        this._name = value;
    },
    get_name: function() {
        return this._name;
    },

    initialize: function() {
        var element = this.get_element();
        Sys.Extended.UI.HTMLEditor.Popups.PopupCommonButton.callBaseMethod(this, "initialize");
        Sys.Application.add_load(this._app_onload$delegate);
        this._cssClass = element.className.split(" ")[0];

        if (this.isImage()) {
            $addHandlers(element, {
                mouseover: this._onmouseover$delegate,
                mouseout: this._onmouseout$delegate,
                mousedown: this._onmousedown$delegate,
                mouseup: this._onmouseup$delegate,
                click: this._onclick$delegate
            });
        }

        if (Sys.Extended.UI.HTMLEditor.isIE) {
            function diveSelectable(el) {
                if (el.nodeType == 1 && el.tagName) {
                    var tag = el.tagName.toUpperCase();
                    if (tag != "INPUT" && tag != "TEXTAREA" && tag != "IFRAME") {
                        el.unselectable = "on";
                    }
                    for (var k = 0; k < el.childNodes.length; k++) {
                        diveSelectable(el.childNodes.item(k));
                    }
                }
            }

            diveSelectable(element);
        } else {
            try {
                element.style.MozUserSelect = "none";
                element.parentNode.style.MozUserSelect = "none";
            } catch (ex) { }
        }
    },

    activate: function(element) {
        this._activated = element;
        if (this.isImage()) {
            Sys.Extended.UI.HTMLEditor._addEvent(this._activated, "mouseover", this._onmouseover$delegate);
            Sys.Extended.UI.HTMLEditor._addEvent(this._activated, "mouseout", this._onmouseout$delegate);
            Sys.Extended.UI.HTMLEditor._addEvent(this._activated, "mousedown", this._onmousedown$delegate);
            Sys.Extended.UI.HTMLEditor._addEvent(this._activated, "mouseup", this._onmouseup$delegate);
            Sys.Extended.UI.HTMLEditor._addEvent(this._activated, "click", this._onclick$delegate);
        }
    },

    dispose: function() {
        if (this.isImage() && this._activated != null) {
            Sys.Extended.UI.HTMLEditor._removeEvent(this._activated, "mouseover", this._onmouseover$delegate);
            Sys.Extended.UI.HTMLEditor._removeEvent(this._activated, "mouseout", this._onmouseout$delegate);
            Sys.Extended.UI.HTMLEditor._removeEvent(this._activated, "mousedown", this._onmousedown$delegate);
            Sys.Extended.UI.HTMLEditor._removeEvent(this._activated, "mouseup", this._onmouseup$delegate);
            Sys.Extended.UI.HTMLEditor._removeEvent(this._activated, "click", this._onclick$delegate);
        }
        this._activated = null;

        this._loaded = false;
        Sys.Application.remove_load(this._app_onload$delegate);
        Sys.Extended.UI.HTMLEditor.Popups.PopupCommonButton.callBaseMethod(this, "dispose");
    },

    _app_onload: function(sender, e) {
        if (this._loaded) return;
        this.onButtonLoaded();
        this._loaded = true;
    },

    onButtonLoaded: function() {
    },

    _onmouseover: function(e) {
        if (!this.isEnable()) {
            return false;
        }
        Sys.UI.DomElement.addCssClass(this._activated, this._cssClass + "_hover");
        return true;
    },

    _onmouseout: function(e) {
        if (!this.isEnable()) {
            return false;
        }
        var _target1 = e.toElement || e.relatedTarget;

        try {
            while (_target1 && typeof _target1 != "undefined")
                if (_target1 == this._activated)
                break;
            else
                _target1 = _target1.parentNode;
        } catch (e) { _target1 = null; }

        if (_target1 != null) {
            return true;
        }

        Sys.UI.DomElement.removeCssClass(this._activated, this._cssClass + "_hover");
        Sys.UI.DomElement.removeCssClass(this._activated, this._cssClass + "_mousedown");
        return true;
    },

    _onmousedown: function(e) {
        if (!this.isEnable()) {
            return null;
        }
        Sys.UI.DomElement.addCssClass(this._activated, this._cssClass + "_mousedown");
        return false;
    },

    _onmouseup: function(e) {
        if (!this.isEnable()) {
            return false;
        }
        Sys.UI.DomElement.removeCssClass(this._activated, this._cssClass + "_mousedown");
        return true;
    },

    _onclick: function(e) {
        if (!this.isEnable()) {
            return false;
        }
        this.callMethod(e);
        return true;
    },

    callMethod: function(e) {
        var doc = this._activated.ownerDocument || this._activated.document || target;
        var contWin = doc.defaultView || doc.parentWindow;
        var method = contWin.popupMediator.get_callMethodByName(this._name);
        Function.createDelegate(this, method)(contWin);
    },

    isEnable: function() {
        if (!this._loaded) {
            return false;
        }
        return true;
    }
}

Sys.Extended.UI.HTMLEditor.Popups.PopupCommonButton.registerClass("Sys.Extended.UI.HTMLEditor.Popups.PopupCommonButton", Sys.UI.Control);

�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.Popups");

Sys.Extended.UI.HTMLEditor.Popups.PopupBGIButton = function(element) {
    Sys.Extended.UI.HTMLEditor.Popups.PopupBGIButton.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.Popups.PopupBGIButton.prototype = {
}

Sys.Extended.UI.HTMLEditor.Popups.PopupBGIButton.registerClass("Sys.Extended.UI.HTMLEditor.Popups.PopupBGIButton", Sys.Extended.UI.HTMLEditor.Popups.PopupBoxButton);

Type.registerNamespace("Sys.Extended.UI.HTMLEditor.Popups");

Sys.Extended.UI.HTMLEditor.Popups.AttachedTemplatePopup = function(element) {
    Sys.Extended.UI.HTMLEditor.Popups.AttachedTemplatePopup.initializeBase(this, [element]);

    this._contentDiv = null;
}

Sys.Extended.UI.HTMLEditor.Popups.AttachedTemplatePopup.prototype = {

    get_contentDiv : function() {
        return this._contentDiv;
    },

    set_contentDiv : function(value) {
        this._contentDiv = value;
    },
    
    initialize : function() {
        Sys.Extended.UI.HTMLEditor.Popups.AttachedTemplatePopup.callBaseMethod(this, "initialize");
        this.set_initialContent(this._contentDiv.innerHTML);
    },
    
    dispose : function() {
        Sys.Extended.UI.HTMLEditor.Popups.AttachedTemplatePopup.callBaseMethod(this, "dispose");
    }
}

Sys.Extended.UI.HTMLEditor.Popups.AttachedTemplatePopup.registerClass("Sys.Extended.UI.HTMLEditor.Popups.AttachedTemplatePopup", Sys.Extended.UI.HTMLEditor.Popups.AttachedPopup);
~C// (c) 2010 CodePlex Foundation


/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />
/// <reference path="../RoundedCorners/RoundedCornersBehavior.js" />
/// <reference path="../Compat/Timer/Timer.js" />

(function () {
    var scriptName = "ExtendedDropShadow";
    var e = null;

    function execute() {

        Type.registerNamespace('Sys.Extended.UI');

        Sys.Extended.UI.DropShadowBehavior = function (element) {
            /// <summary>
            /// The DropShadowBehavior is used to attach a drop shadow to the element
            /// </summary>
            /// <param name="element" type="Sys.UI.DomElement" domElement="true">
            /// DOM Element the behavior is associated with
            /// </param>
            Sys.Extended.UI.DropShadowBehavior.initializeBase(this, [element]);

            this._opacity = 1.0;
            this._width = 5;

            this._shadowDiv = null;

            this._trackPosition = null;
            this._trackPositionDelay = 50;
            this._timer = null;
            this._tickHandler = null;
            this._roundedBehavior = null;
            this._shadowRoundedBehavior = null;

            this._rounded = false;
            this._radius = 5;

            this._lastX = null;
            this._lastY = null;
            this._lastW = null;
            this._lastH = null;
        }
        Sys.Extended.UI.DropShadowBehavior.prototype = {
            initialize: function () {
                /// <summary>
                /// Initialize the behavior
                /// </summary>
                Sys.Extended.UI.DropShadowBehavior.callBaseMethod(this, 'initialize');

                e = this.get_element();

                if ($common.getCurrentStyle(e, 'position', e.style.position) != "absolute") {
                    e.style.position = "relative";
                }

                if (this._rounded) {
                    this.setupRounded();
                }

                if (this._trackPosition) {
                    this.startTimer();
                }

                this.setShadow();
            },

            dispose: function () {
                /// <summary>
                /// Dispose the behavior
                /// </summary>

                this.stopTimer();
                this.disposeShadowDiv();
                Sys.Extended.UI.DropShadowBehavior.callBaseMethod(this, 'dispose');

            },

            buildShadowDiv: function () {
                /// <summary>
                /// Create the div that we'll use as the shadow
                /// </summary>

                e = this.get_element();

                if (!this.get_isInitialized() || !e || !this._width) return;

                if (e.style.boxShadow == undefined && e.style.MozBoxShadow == undefined && e.style.WebkitBoxShadow == undefined) {

                    var div = document.createElement("DIV");
                    div.style.backgroundColor = "black";
                    div.style.position = "absolute";

                    if (e.id) {
                        div.id = e.id + "_DropShadow";
                    }

                    this._shadowDiv = div;

                    e.parentNode.appendChild(div);

                    if (this._rounded) {
                        this._shadowDiv.style.height = Math.max(0, e.offsetHeight - (2 * this._radius)) + "px";
                        if (!this._shadowRoundedBehavior) {
                            this._shadowRoundedBehavior = $create(Sys.Extended.UI.RoundedCornersBehavior, { "Radius": this._radius }, null, null, this._shadowDiv);
                        } else {
                            this._shadowRoundedBehavior.set_Radius(this._radius);
                        }
                    } else if (this._shadowRoundedBehavior) {
                        this._shadowRoundedBehavior.set_Radius(0);
                    }

                    if (this._opacity != 1.0) {
                        this.setupOpacity();
                    }

                    this.setShadow(false, true);
                    this.updateZIndex();
                }

            },

            disposeShadowDiv: function () {
                /// <summary>
                /// Dispose of the div we use as the shadow
                /// </summary>

                if (this._shadowDiv) {
                    if (this._shadowDiv.parentNode) {
                        this._shadowDiv.parentNode.removeChild(this._shadowDiv);
                    }
                    this._shadowDiv = null;
                }

                if (this._shadowRoundedBehavior) {
                    this._shadowRoundedBehavior.dispose();
                    this._shadowRoundedBehavior = null;
                }
            },

            onTimerTick: function () {
                /// <summary>
                /// Timer's tick handler that is used to position the shadow when its target moves
                /// </summary>
                this.setShadow();
            },

            startTimer: function () {
                /// <summary>
                /// Start the timer (and hence start tracking the bounds of the target element)
                /// </summary>

                if (!this._timer) {
                    if (!this._tickHandler) {
                        this._tickHandler = Function.createDelegate(this, this.onTimerTick);
                    }
                    this._timer = new Sys.Timer();
                    this._timer.set_interval(this._trackPositionDelay);
                    this._timer.add_tick(this._tickHandler);
                    this._timer.set_enabled(true);
                }
            },

            stopTimer: function () {
                /// <summary>
                /// Stop the timer (and hence stop tracking the bounds of the target element)
                /// </summary>

                if (this._timer) {
                    this._timer.remove_tick(this._tickHandler);
                    this._timer.set_enabled(false);
                    this._timer.dispose();
                    this._timer = null;
                }
            },

            setShadow: function (force, norecurse) {
                /// <summary>
                /// This function does the heavy lifting of positioning and sizing the shadow.
                /// It caches values to avoid extra work - it's called on a timer so we need to
                /// keep it light weight.
                /// </summary>
                /// <param name="force" type="Boolean">
                /// Whether to force the bounds change
                /// </param>
                /// <param name="norecurse" type="Boolean">
                /// Whether to recurse if we need to recreate the shadow div
                /// </param>

                e = this.get_element();

                if (!this.get_isInitialized() || !e || (!this._width && !force)) return;

                if (e.style.boxShadow == undefined && e.style.MozBoxShadow == undefined && e.style.WebkitBoxShadow == undefined) {

                    var existingShadow = this._shadowDiv;
                    if (!existingShadow) {
                        this.buildShadowDiv();
                    }

                    var location = { x: e.offsetLeft, y: e.offsetTop };

                    if (force || this._lastX != location.x || this._lastY != location.y || !existingShadow) {
                        this._lastX = location.x;
                        this._lastY = location.y;

                        var w = this.get_Width();

                        location.x += w;
                        location.y += w;

                        $common.setLocation(this._shadowDiv, location);
                    }

                    var h = e.offsetHeight;
                    var w = e.offsetWidth;

                    if (force || h != this._lastH || w != this._lastW || !existingShadow) {
                        this._lastW = w;
                        this._lastH = h;
                        if (!this._rounded || !existingShadow || norecurse) {
                            this._shadowDiv.style.width = w + "px";
                            this._shadowDiv.style.height = h + "px";
                        } else {
                            this.disposeShadowDiv();
                            this.setShadow();
                        }
                    }

                    if (this._shadowDiv) {
                        this._shadowDiv.style.visibility = $common.getCurrentStyle(e, 'visibility');
                    }
                }
                else {

                    var boxShadowVals;

                    if (this._opacity == ".25")
                        boxShadowVals = this._width + "px " + this._width + "px " + this._width + "px " + "#D3D3D3";
                    else if (this._opacity == ".5")
                        boxShadowVals = this._width + "px " + this._width + "px " + this._width + "px " + "#778899";
                    else if (this._opacity == ".75")
                        boxShadowVals = this._width + "px " + this._width + "px " + this._width + "px " + "#808080";
                    else
                        boxShadowVals = this._width + "px " + this._width + "px " + this._width + "px " + "#000";

                    if (e.style.boxShadow != undefined) {
                        e.style.boxShadow = boxShadowVals;
                    }
                    else if (e.style.MozBoxShadow != undefined) {
                        e.style.MozBoxShadow = boxShadowVals;
                    }
                    else if (e.style.WebkitBoxShadow != undefined) {
                        e.style.WebkitBoxShadow = boxShadowVals;
                    }
                }
            },

            setupOpacity: function () {
                /// <summary>
                /// Set the opacity of the shadow div
                /// </summary>                
                if (this.get_isInitialized() && this._shadowDiv) {
                    $common.setElementOpacity(this._shadowDiv, this._opacity);
                }

            },

            setupRounded: function () {
                /// <summary>
                /// Demand create and initialize the RoundedCornersBehavior
                /// </summary>

                if (!this._roundedBehavior && this._rounded) {
                    this._roundedBehavior = $create(Sys.Extended.UI.RoundedCornersBehavior, null, null, null, this.get_element());
                }
                if (this._roundedBehavior) {
                    this._roundedBehavior.set_Radius(this._rounded ? this._radius : 0);
                }
            },

            updateZIndex: function () {
                /// <summary>
                /// Update the z-Index so the shadow div remains behind the target element
                /// </summary>

                if (!this._shadowDiv) return;

                var e = this.get_element();
                var targetZIndex = e.style.zIndex;
                var shadowZIndex = this._shadowDiv.style.zIndex;

                if (shadowZIndex && targetZIndex && targetZIndex > shadowZIndex) {
                    return;
                } else {
                    targetZIndex = Math.max(2, targetZIndex);
                    shadowZIndex = targetZIndex - 1;
                }
                e.style.zIndex = targetZIndex;
                this._shadowDiv.style.zIndex = shadowZIndex;
            },

            updateRoundedCorners: function () {
                /// <summary>
                /// Update the RoundedCorndersBehavior and recreate the shadow div so its corners are rounded as well
                /// </summary>
                if (this.get_isInitialized()) {
                    this.setupRounded();
                    this.disposeShadowDiv();
                    this.setShadow();
                }
            },

            get_Opacity: function () {
                /// <value type="Number">
                /// The opacity of the drop shadow, from 0 (fully transparent) to 1.0 (fully opaque). The default value is .5.
                /// </value>
                return this._opacity;
            },
            set_Opacity: function (value) {
                if (this._opacity != value) {
                    this._opacity = value;

                    this.setShadow();
                    this.setupOpacity();

                    this.raisePropertyChanged('Opacity');
                }
            },

            get_Rounded: function () {
                /// <value type="Boolean">
                /// Whether or not the corners of the target and drop shadow should be rounded
                /// </value>
                return this._rounded;
            },
            set_Rounded: function (value) {

                if (value != this._rounded) {
                    this._rounded = value;

                    this.updateRoundedCorners();
                    this.raisePropertyChanged('Rounded');
                }
            },

            get_Radius: function () {
                /// <value type="Number" integer="true">
                /// Radius, in pixels, of the rounded corners
                /// </value>
                return this._radius;
            },
            set_Radius: function (value) {
                if (value != this._radius) {
                    this._radius = value;

                    this.updateRoundedCorners();
                    this.raisePropertyChanged('Radius');
                }
            },

            get_Width: function () {
                /// <value type="Number" integer="true">
                /// Width in pixels of the drop shadow.  The default value is 5 pixels.
                /// </value>
                return this._width;
            },
            set_Width: function (value) {

                if (value != this._width) {
                    this._width = value;

                    if (this._shadowDiv) {
                        $common.setVisible(this._shadowDiv, value > 0);
                    }

                    this.setShadow(true);
                    this.raisePropertyChanged('Width');
                }
            },

            get_TrackPositionDelay: function () {
                /// <value type="Number">
                /// Length of the timer interval used when tracking the position of the target
                /// </value>
                return this._trackPositionDelay;
            },
            set_TrackPositionDelay: function (value) {
                if (value != this._trackPositionDelay) {
                    this._trackPositionDelay = value;

                    if (!e)
                        e = this.get_element();

                    if (e.style.boxShadow == undefined && e.style.MozBoxShadow == undefined && e.style.WebkitBoxShadow == undefined) {
                        if (this._trackPosition) {
                            this.stopTimer();
                            this.startTimer();
                        }
                        this.raisePropertyChanged('TrackPositionDelay');
                    }
                }
            },

            get_TrackPosition: function () {
                /// <value type="Boolean">
                /// Whether the drop shadow should track the position of the panel it is attached to. Use this if the panel is absolutely positioned or will otherwise move.
                /// </value>
                return this._trackPosition;
            },

            set_TrackPosition: function (value) {
                if (value != this._trackPosition) {
                    this._trackPosition = value;

                    if (!e)
                        e = this.get_element();

                    if (e.style.boxShadow == undefined && e.style.MozBoxShadow == undefined && e.style.WebkitBoxShadow == undefined) {
                        if (this.get_element()) {
                            if (value) {
                                this.startTimer();
                            } else {
                                this.stopTimer();
                            }
                        }
                        this.raisePropertyChanged('TrackPosition');
                    }
                }
            }
        }
        Sys.Extended.UI.DropShadowBehavior.registerClass('Sys.Extended.UI.DropShadowBehavior', Sys.Extended.UI.BehaviorBase);
        Sys.registerComponent(Sys.Extended.UI.DropShadowBehavior, { name: "dropShadow" });

    } // execute

    if (window.Sys && Sys.loader) {
        Sys.loader.registerScript(scriptName, ["ExtendedBase", "ExtendedCommon", "ExtendedTimer", "ExtendedRoundedCorners"], execute);
    }
    else {
        execute();
    }

})();
s/// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedDropDown";function a(){var j="hoverOut",i="hoverOver",h="hidden",g="hiding",f="popup",e="shown",d="showing",c=true,b=false,a=null;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.DropDownBehavior=function(e){var c=this;Sys.Extended.UI.DropDownBehavior.initializeBase(c,[e]);c._dropDownControl=a;c._highlightBorderColor="#2353B2";c._highlightBackgroundColor="#FFF3DB";c._dropArrowBackgroundColor="#C6E1FF";c._dropArrowImageUrl=a;if(Sys.loader){var d=Sys.loader.basePath;if(d){if(d.charAt(d.length-1)!=="/")d+="/";c._dropArrowImageUrl=d+"extended/dropdown/drop-arrow.gif"}}c._dropArrowWidth="16px";c._oldBackgroundColor=a;c._dropFrame=a;c._dropArrow=a;c._dropArrowImage=a;c._dropWrapper=a;c._isOpen=b;c._isOver=b;c._wasClicked=a;c._dropWrapperHoverBehavior=a;c._dropPopupPopupBehavior=a;c._onShowJson=a;c._onHideJson=a;c._dropDownControl$delegates={click:Function.createDelegate(c,c._dropDownControl_onclick),contextmenu:Function.createDelegate(c,c._dropDownControl_oncontextmenu)};c._dropFrame$delegates={click:Function.createDelegate(c,c._dropFrame_onclick),contextmenu:Function.createDelegate(c,c._dropFrame_oncontextmenu)};c._dropWrapper$delegates={click:Function.createDelegate(c,c._dropWrapper_onclick),contextmenu:Function.createDelegate(c,c._dropWrapper_oncontextmenu)};c._document$delegates={click:Function.createDelegate(c,c._document_onclick),contextmenu:Function.createDelegate(c,c._document_oncontextmenu)};c._dropWrapperHoverBehavior$delegates={hover:Function.createDelegate(c,c._dropWrapperHoverBehavior_onhover),unhover:Function.createDelegate(c,c._dropWrapperHoverBehavior_onunhover)}};Sys.Extended.UI.DropDownBehavior.prototype={initialize:function(){var h="_dropWrapper",g="ajax__dropdown_arrow",f="ajax__dropdown_frame_line",e="div",d=this;Sys.Extended.UI.DropDownBehavior.callBaseMethod(d,"initialize");var i=d.get_element(),k=i.parentNode;d._dropDownControl==a&&$common.createElementFromTemplate({parent:k,nameTable:d,name:"_dropDownControl",nodeName:e,visible:b,cssClasses:d._dropDownControl?a:["ajax__dropdown_panel"],properties:{__GENERATED:c}});$addHandlers(d._dropDownControl,d._dropDownControl$delegates);var j={};if(d._dropArrowImageUrl)j.src=d._dropArrowImageUrl;$common.createElementFromTemplate({parent:k,nameTable:d,name:"_dropFrame",nodeName:"span",visible:b,children:[{name:"_dropFrameTop",nodeName:e,cssClasses:[f]},{name:"_dropFrameRight",nodeName:e,cssClasses:[f]},{name:"_dropFrameBottom",nodeName:e,cssClasses:[f]},{name:"_dropFrameLeft",nodeName:e,cssClasses:[f]},{name:"_dropArrow",nodeName:e,cssClasses:!d._dropArrowImageUrl?[g,"ajax__dropdown_arrow_image"]:[g],properties:{style:{width:d._dropArrowWidth,backgroundColor:d._dropArrowBackgroundColor}},events:d._dropFrame$delegates,children:[{name:"_dropArrowWrapper",nodeName:e,visible:!!d._dropArrowImageUrl,cssClasses:["ajax__dropdown_arrow_wrapper"],children:[{name:"_dropArrowImage",nodeName:"img",properties:j}]}]}]});$common.createElementFromTemplate({parent:a,nameTable:d,name:h,nodeName:"span",properties:{id:i.id+h,style:{cursor:"default"}},events:d._dropWrapper$delegates,content:i});d._dropPopupPopupBehavior=$create(Sys.Extended.UI.PopupBehavior,{positioningMode:Sys.Extended.UI.PositioningMode.BottomRight,parentElement:i,y:-1},a,a,d._dropDownControl);d._onShowJson&&d._dropPopupPopupBehavior.set_onShow(d._onShowJson);d._onHideJson&&d._dropPopupPopupBehavior.set_onHide(d._onHideJson);d._dropWrapperHoverBehavior=$create(Sys.Extended.UI.HoverBehavior,{hoverElement:d._dropFrame},d._dropWrapperHoverBehavior$delegates,a,d._dropWrapper);$addHandlers(document,d._document$delegates)},dispose:function(){var c=this,d=c.get_element();if(c._isOpen){c.hide();c.unhover();c._isOpen=b}$common.removeHandlers(document,c._document$delegates);c._onShowJson=a;c._onHideJson=a;if(c._dropPopupPopupBehavior){c._dropPopupPopupBehavior.dispose();c._dropPopupPopupBehavior=a}if(c._dropWrapperHoverBehavior){c._dropWrapperHoverBehavior.dispose();c._dropWrapperHoverBehavior=a}if(c._dropFrame){$common.removeElement(c._dropFrame);c._dropFrame=a;c._dropFrameTop=a;c._dropFrameRight=a;c._dropFrameBottom=a;c._dropFrameLeft=a;c._dropArrow=a;c._dropArrowWrapper=a;c._dropArrowImage=a}if(c._dropWrapper){$common.removeHandlers(c._dropWrapper,c._dropWrapper$delegates);$common.unwrapElement(d,c._dropWrapper);c._dropWrapper=a}if(c._dropDownControl){$common.removeHandlers(c._dropDownControl,c._dropDownControl$delegates);c._dropDownControl.__GENERATED&&$common.removeElement(c._dropDownControl);c._dropDownControl=a}Sys.Extended.UI.DropDownBehavior.callBaseMethod(c,"dispose")},hover:function(){var a=this,e=a.get_element();if(!a._isOver){a._isOver=c;a.raiseHoverOver(Sys.EventArgs.Empty);var d=$common.getBounds(e);$common.setLocation(a._dropFrame,{x:0,y:0});$common.setVisible(a._dropFrame,c);var f=$common.getLocation(a._dropFrame);$common.setVisible(a._dropFrame,b);d.x-=f.x;d.y-=f.y;$common.setBounds(a._dropFrameTop,{x:d.x,y:d.y,width:d.width,height:1});$common.setBounds(a._dropFrameRight,{x:d.x+d.width-1,y:d.y,width:1,height:d.height});$common.setBounds(a._dropFrameBottom,{x:d.x,y:d.y+d.height-1,width:d.width,height:1});$common.setBounds(a._dropFrameLeft,{x:d.x,y:d.y,width:1,height:d.height});$common.setBounds(a._dropArrow,{x:d.x+d.width-17,y:d.y+1,width:16,height:d.height-2});a._dropFrameTop.style.backgroundColor=a._highlightBorderColor;a._dropFrameRight.style.backgroundColor=a._highlightBorderColor;a._dropFrameBottom.style.backgroundColor=a._highlightBorderColor;a._dropFrameLeft.style.backgroundColor=a._highlightBorderColor;$common.setVisible(a._dropFrame,c);if(!a._oldBackgroundColor)a._oldBackgroundColor=$common.getCurrentStyle(e,"backgroundColor");e.style.backgroundColor=a._highlightBackgroundColor}},unhover:function(){var c=this,d=c.get_element();if(c._isOver||!c._isOpen){c._isOver=b;if(!c._isOpen){$common.setVisible(c._dropFrame,b);if(c._oldBackgroundColor){d.style.backgroundColor=c._oldBackgroundColor;c._oldBackgroundColor=a}else d.style.backgroundColor="transparent"}c.raiseHoverOut(Sys.EventArgs.Empty)}},show:function(){var a=this;if(!a._isOpen){a.hover();var b=new Sys.CancelEventArgs;a.raiseShowing(b);a.raisePopup(b);if(b.get_cancel())return;a._isOpen=c;a.populate();(!a._dynamicPopulateBehavior||a._dynamicPopulateBehavior._populated&&a._cacheDynamicResults)&&a._showPopup()}},_showPopup:function(){this._dropPopupPopupBehavior.show();this.raiseShown(Sys.EventArgs.Empty)},hide:function(){var a=this;if(a._isOpen){var c=new Sys.CancelEventArgs;a.raiseHiding(c);if(c.get_cancel())return;a._isOpen=b;a._dropPopupPopupBehavior.hide();a.raiseHidden(Sys.EventArgs.Empty)}},_dropWrapperHoverBehavior_onhover:function(){this.hover()},_dropWrapperHoverBehavior_onunhover:function(){this.unhover()},_dropWrapper_onclick:function(b){var a=this;if(b.target.tagName!="A"){if(!a._isOpen)a.show();else a.hide();a._wasClicked=c}},_dropWrapper_oncontextmenu:function(a){if(a.target.tagName!="A"){this._wasClicked=c;a.preventDefault();this.show()}},_dropFrame_onclick:function(){var a=this;if(!a._isOpen)a.show();else a.hide();a._wasClicked=c},_dropFrame_oncontextmenu:function(a){this._wasClicked=c;a.preventDefault();this.show()},_dropDownControl_onclick:function(){},_dropDownControl_oncontextmenu:function(a){this._wasClicked=c;a.preventDefault()},_document_onclick:function(){var a=this;if(a._wasClicked)a._wasClicked=b;else if(a._isOpen){a.hide();a.unhover()}},_document_oncontextmenu:function(){var a=this;if(a._wasClicked)a._wasClicked=b;else if(a._isOpen){a.hide();a.unhover()}},_onPopulated:function(b,a){Sys.Extended.UI.DropDownBehavior.callBaseMethod(this,"_onPopulated",[b,a]);this._isOpen&&this._showPopup()},get_onShow:function(){return this._dropPopupPopupBehavior?this._dropPopupPopupBehavior.get_onShow():this._onShowJson},set_onShow:function(b){var a=this;if(a._dropPopupPopupBehavior)a._dropPopupPopupBehavior.set_onShow(b);else a._onShowJson=b;a.raisePropertyChanged("onShow")},get_onShowBehavior:function(){return this._dropPopupPopupBehavior?this._dropPopupPopupBehavior.get_onShowBehavior():a},onShow:function(){this._dropPopupPopupBehavior&&this._dropPopupPopupBehavior.onShow()},get_onHide:function(){return this._dropPopupPopupBehavior?this._dropPopupPopupBehavior.get_onHide():this._onHideJson},set_onHide:function(b){var a=this;if(a._dropPopupPopupBehavior)a._dropPopupPopupBehavior.set_onHide(b);else a._onHideJson=b;a.raisePropertyChanged("onHide")},get_onHideBehavior:function(){return this._dropPopupPopupBehavior?this._dropPopupPopupBehavior.get_onHideBehavior():a},onHide:function(){this._dropPopupPopupBehavior&&this._dropPopupPopupBehavior.onHide()},get_dropDownControl:function(){return this._dropDownControl},set_dropDownControl:function(a){if(this._dropDownControl!=a){this._dropDownControl=a;this.raisePropertyChanged("dropDownControl")}},get_highlightBorderColor:function(){return this._highlightBorderColor},set_highlightBorderColor:function(a){if(this._highlightBorderColor!=a){this._highlightBorderColor=a;this.raisePropertyChanged("highlightBorderColor")}},get_highlightBackgroundColor:function(){return this._highlightBackgroundColor},set_highlightBackgroundColor:function(b){var a=this;if(a._highlightBackgroundColor!=b){a._highlightBackgroundColor=b;if(a.get_isInitialized()&&a._isOpen)a._dropWrapper.style.backgroundColor=b;a.raisePropertyChanged("highlightBackgroundColor")}},get_dropArrowBackgroundColor:function(){return this._dropArrowBackgroundColor},set_dropArrowBackgroundColor:function(b){var a=this;if(a._dropArrowBackgroundColor!=b){a._dropArrowBackgroundColor=b;if(a.get_isInitialized())a._dropArrow.style.backgroundColor=b;a.raisePropertyChanged("dropArrowBackgroundColor")}},get_dropArrowImageUrl:function(){return this._dropArrowImageUrl},set_dropArrowImageUrl:function(b){var a=this;if(a._dropArrowImageUrl!=b){a._dropArrowImageUrl=b;if(a.get_isInitialized()){if(a._dropArrow.className){a._dropArrow.className="";a._dropArrowWrapper.style.display="block"}a._dropArrowImage.src=b}a.raisePropertyChanged("dropArrowImageUrl")}},get_dropArrowWidth:function(){return this._dropArrowWidth},set_dropArrowWidth:function(b){var a=this;if(a._dropArrowWidth!=b){a._dropArrowWidth=b;if(a.get_isInitialized())a._dropArrow.style.width=b;a.raisePropertyChanged("dropArrowWidth")}},get_isOver:function(){return this._isOver},get_isOpen:function(){return this._isOpen},add_showing:function(a){this.get_events().addHandler(d,a)},remove_showing:function(a){this.get_events().removeHandler(d,a)},raiseShowing:function(b){var a=this.get_events().getHandler(d);a&&a(this,b)},add_shown:function(a){this.get_events().addHandler(e,a)},remove_shown:function(a){this.get_events().removeHandler(e,a)},raiseShown:function(b){var a=this.get_events().getHandler(e);a&&a(this,b)},add_popup:function(a){this.get_events().addHandler(f,a)},remove_popup:function(a){this.get_events().removeHandler(f,a)},raisePopup:function(b){var a=this.get_events().getHandler(f);a&&a(this,b)},add_hiding:function(a){this.get_events().addHandler(g,a)},remove_hiding:function(a){this.get_events().removeHandler(g,a)},raiseHiding:function(b){var a=this.get_events().getHandler(g);a&&a(this,b)},add_hidden:function(a){this.get_events().addHandler(h,a)},remove_hidden:function(a){this.get_events().removeHandler(h,a)},raiseHidden:function(b){var a=this.get_events().getHandler(h);a&&a(this,b)},add_hoverOver:function(a){this.get_events().addHandler(i,a)},remove_hoverOver:function(a){this.get_events().removeHandler(i,a)},raiseHoverOver:function(b){var a=this.get_events().getHandler(i);a&&a(this,b)},add_hoverOut:function(a){this.get_events().addHandler(j,a)},remove_hoverOut:function(a){this.get_events().removeHandler(j,a)},raiseHoverOut:function(b){var a=this.get_events().getHandler(j);a&&a(this,b)}};Sys.Extended.UI.DropDownBehavior.registerClass("Sys.Extended.UI.DropDownBehavior",Sys.Extended.UI.DynamicPopulateBehaviorBase);Sys.registerComponent(Sys.Extended.UI.DropDownBehavior,{name:"dropDown"})}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedDynamicPopulate","ExtendedAnimationBehavior","ExtendedPopup","ExtendedHover"],a);else a()})();[B// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedDragDrop";function a(){var m="keypress",l="dragleave",k="dragenter",j="dragstart",h="dragover",g="mousemove",f="mouseup",i="initialize",e=false,b=true,d="dragStop",c="dragStart",a=null;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.IDragSource=function(){};Sys.Extended.UI.IDragSource.prototype={get_dragDataType:function(){throw Error.notImplemented();},getDragData:function(){throw Error.notImplemented();},get_dragMode:function(){throw Error.notImplemented();},onDragStart:function(){throw Error.notImplemented();},onDrag:function(){throw Error.notImplemented();},onDragEnd:function(){throw Error.notImplemented();}};Sys.Extended.UI.IDragSource.registerInterface("Sys.Extended.UI.IDragSource");Sys.Extended.UI.IDropTarget=function(){};Sys.Extended.UI.IDropTarget.prototype={get_dropTargetElement:function(){throw Error.notImplemented();},canDrop:function(){throw Error.notImplemented();},drop:function(){throw Error.notImplemented();},onDragEnterTarget:function(){throw Error.notImplemented();},onDragLeaveTarget:function(){throw Error.notImplemented();},onDragInTarget:function(){throw Error.notImplemented();}};Sys.Extended.UI.IDropTarget.registerInterface("Sys.Extended.UI.IDropTarget");Sys.Extended.UI.DragMode=function(){throw Error.invalidOperation();};Sys.Extended.UI.DragMode.prototype={Copy:0,Move:1};Sys.Extended.UI.DragMode.registerEnum("Sys.Extended.UI.DragMode");Sys.Extended.UI.DragDropEventArgs=function(c,a,b){this._dragMode=c;this._dataType=a;this._data=b};Sys.Extended.UI.DragDropEventArgs.prototype={get_dragMode:function(){return this._dragMode||a},get_dragDataType:function(){return this._dataType||a},get_dragData:function(){return this._data||a}};Sys.Extended.UI.DragDropEventArgs.registerClass("Sys.Extended.UI.DragDropEventArgs");Sys.Extended.UI._DragDropManager=function(){this._instance=a;this._events=a};Sys.Extended.UI._DragDropManager.prototype={add_dragStart:function(a){this.get_events().addHandler(c,a)},remove_dragStart:function(a){this.get_events().removeHandler(c,a)},get_events:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},add_dragStop:function(a){this.get_events().addHandler(d,a)},remove_dragStop:function(a){this.get_events().removeHandler(d,a)},_getInstance:function(){var a=this;if(!a._instance){if(Sys.Browser.agent===Sys.Browser.InternetExplorer)a._instance=new Sys.Extended.UI.IEDragDropManager;else a._instance=new Sys.Extended.UI.GenericDragDropManager;a._instance.initialize();a._instance.add_dragStart(Function.createDelegate(a,a._raiseDragStart));a._instance.add_dragStop(Function.createDelegate(a,a._raiseDragStop))}return a._instance},startDragDrop:function(b,c,d,a){this._getInstance().startDragDrop(b,c,d,a)},registerDropTarget:function(a){this._getInstance().registerDropTarget(a)},unregisterDropTarget:function(a){this._getInstance().unregisterDropTarget(a)},dispose:function(){delete this._events;Sys.Application.unregisterDisposableObject(this);Sys.Application.removeComponent(this)},_raiseDragStart:function(d,b){var a=this.get_events().getHandler(c);a&&a(this,b)},_raiseDragStop:function(c,b){var a=this.get_events().getHandler(d);a&&a(this,b)}};Sys.Extended.UI._DragDropManager.registerClass("Sys.Extended.UI._DragDropManager");Sys.Extended.UI.DragDropManager=new Sys.Extended.UI._DragDropManager;Sys.Extended.UI.IEDragDropManager=function(){var c=this;Sys.Extended.UI.IEDragDropManager.initializeBase(c);c._dropTargets=a;c._radius=10;c._useBuiltInDragAndDropFunctions=b;c._activeDragVisual=a;c._activeContext=a;c._activeDragSource=a;c._underlyingTarget=a;c._oldOffset=a;c._potentialTarget=a;c._isDragging=e;c._mouseUpHandler=a;c._documentMouseMoveHandler=a;c._documentDragOverHandler=a;c._dragStartHandler=a;c._mouseMoveHandler=a;c._dragEnterHandler=a;c._dragLeaveHandler=a;c._dragOverHandler=a;c._dropHandler=a};Sys.Extended.UI.IEDragDropManager.prototype={add_dragStart:function(a){this.get_events().addHandler(c,a)},remove_dragStart:function(a){this.get_events().removeHandler(c,a)},add_dragStop:function(a){this.get_events().addHandler(d,a)},remove_dragStop:function(a){this.get_events().removeHandler(d,a)},initialize:function(){var a=this;Sys.Extended.UI.IEDragDropManager.callBaseMethod(a,i);a._mouseUpHandler=Function.createDelegate(a,a._onMouseUp);a._documentMouseMoveHandler=Function.createDelegate(a,a._onDocumentMouseMove);a._documentDragOverHandler=Function.createDelegate(a,a._onDocumentDragOver);a._dragStartHandler=Function.createDelegate(a,a._onDragStart);a._mouseMoveHandler=Function.createDelegate(a,a._onMouseMove);a._dragEnterHandler=Function.createDelegate(a,a._onDragEnter);a._dragLeaveHandler=Function.createDelegate(a,a._onDragLeave);a._dragOverHandler=Function.createDelegate(a,a._onDragOver);a._dropHandler=Function.createDelegate(a,a._onDrop)},dispose:function(){var b=this;if(b._dropTargets){for(var c=0;c<b._dropTargets;c++)b.unregisterDropTarget(b._dropTargets[c]);b._dropTargets=a}Sys.Extended.UI.IEDragDropManager.callBaseMethod(b,"dispose")},startDragDrop:function(f,e,k,i){var d=this,m=window._event;if(d._isDragging)return;d._underlyingTarget=a;d._activeDragSource=f;d._activeDragVisual=e;d._activeContext=k;d._useBuiltInDragAndDropFunctions=typeof i!="undefined"?i:b;var j={x:m.clientX,y:m.clientY};e.originalPosition=e.style.position;e.style.position="absolute";document._lastPosition=j;e.startingPoint=j;var n=d.getScrollOffset(e,b);e.startingPoint=d.addPoints(e.startingPoint,n);var g=parseInt(e.style.left),h=parseInt(e.style.top);if(isNaN(g))g="0";if(isNaN(h))h="0";e.startingPoint=d.subtractPoints(e.startingPoint,{x:g,y:h});d._prepareForDomChanges();f.onDragStart();var o=new Sys.Extended.UI.DragDropEventArgs(f.get_dragMode(),f.get_dragDataType(),f.getDragData(k)),l=d.get_events().getHandler(c);l&&l(d,o);d._recoverFromDomChanges();d._wireEvents();d._drag(b)},_stopDragDrop:function(c){var b=this,g=window._event;if(b._activeDragSource!=a){b._unwireEvents();if(!c)c=b._underlyingTarget==a;!c&&b._underlyingTarget!=a&&b._underlyingTarget.drop(b._activeDragSource.get_dragMode(),b._activeDragSource.get_dragDataType(),b._activeDragSource.getDragData(b._activeContext));b._activeDragSource.onDragEnd(c);var f=b.get_events().getHandler(d);f&&f(b,Sys.EventArgs.Empty);b._activeDragVisual.style.position=b._activeDragVisual.originalPosition;b._activeDragSource=a;b._activeContext=a;b._activeDragVisual=a;b._isDragging=e;b._potentialTarget=a;g.preventDefault()}},_drag:function(h){var c=this,g=window._event,f={x:g.clientX,y:g.clientY};document._lastPosition=f;var i=c.getScrollOffset(c._activeDragVisual,b),d=c.addPoints(c.subtractPoints(f,c._activeDragVisual.startingPoint),i);if(!h&&parseInt(c._activeDragVisual.style.left)==d.x&&parseInt(c._activeDragVisual.style.top)==d.y)return;$common.setLocation(c._activeDragVisual,d);c._prepareForDomChanges();c._activeDragSource.onDrag();c._recoverFromDomChanges();c._potentialTarget=c._findPotentialTarget(c._activeDragSource,c._activeDragVisual);var e=c._potentialTarget!=c._underlyingTarget||c._potentialTarget==a;e&&c._underlyingTarget!=a&&c._leaveTarget(c._activeDragSource,c._underlyingTarget);if(c._potentialTarget!=a)if(e){c._underlyingTarget=c._potentialTarget;c._enterTarget(c._activeDragSource,c._underlyingTarget)}else c._moveInTarget(c._activeDragSource,c._underlyingTarget);else c._underlyingTarget=a},_wireEvents:function(){var a=this;if(a._useBuiltInDragAndDropFunctions){$addHandler(document,f,a._mouseUpHandler);$addHandler(document,g,a._documentMouseMoveHandler);$addHandler(document.body,h,a._documentDragOverHandler);$addHandler(a._activeDragVisual,j,a._dragStartHandler);$addHandler(a._activeDragVisual,"dragend",a._mouseUpHandler);$addHandler(a._activeDragVisual,"drag",a._mouseMoveHandler)}else{$addHandler(document,f,a._mouseUpHandler);$addHandler(document,g,a._mouseMoveHandler)}},_unwireEvents:function(){var a=this;if(a._useBuiltInDragAndDropFunctions){$removeHandler(a._activeDragVisual,"drag",a._mouseMoveHandler);$removeHandler(a._activeDragVisual,"dragend",a._mouseUpHandler);$removeHandler(a._activeDragVisual,j,a._dragStartHandler);$removeHandler(document.body,h,a._documentDragOverHandler);$removeHandler(document,g,a._documentMouseMoveHandler);$removeHandler(document,f,a._mouseUpHandler)}else{$removeHandler(document,g,a._mouseMoveHandler);$removeHandler(document,f,a._mouseUpHandler)}},registerDropTarget:function(c){var b=this;if(b._dropTargets==a)b._dropTargets=[];Array.add(b._dropTargets,c);b._wireDropTargetEvents(c)},unregisterDropTarget:function(a){this._unwireDropTargetEvents(a);this._dropTargets&&Array.remove(this._dropTargets,a)},_wireDropTargetEvents:function(c){var b=this,a=c.get_dropTargetElement();a._dropTarget=c;$addHandler(a,k,b._dragEnterHandler);$addHandler(a,l,b._dragLeaveHandler);$addHandler(a,h,b._dragOverHandler);$addHandler(a,"drop",b._dropHandler)},_unwireDropTargetEvents:function(d){var c=this,b=d.get_dropTargetElement();if(b._dropTarget){b._dropTarget=a;$removeHandler(b,k,c._dragEnterHandler);$removeHandler(b,l,c._dragLeaveHandler);$removeHandler(b,h,c._dragOverHandler);$removeHandler(b,"drop",c._dropHandler)}},_onDragStart:function(e){window._event=e;document.selection.empty();var d=e.dataTransfer;if(!d&&e.rawEvent)d=e.rawEvent.dataTransfer;var c=this._activeDragSource.get_dragDataType().toLowerCase(),b=this._activeDragSource.getDragData(this._activeContext);if(b){if(c!="text"&&c!="url"){c="text";if(b.innerHTML!=a)b=b.innerHTML}d.effectAllowed="move";d.setData(c,b.toString())}},_onMouseUp:function(a){window._event=a;this._stopDragDrop(e)},_onDocumentMouseMove:function(a){window._event=a;this._dragDrop()},_onDocumentDragOver:function(a){window._event=a;this._potentialTarget&&a.preventDefault()},_onMouseMove:function(a){window._event=a;this._drag()},_onDragEnter:function(c){window._event=c;if(this._isDragging)c.preventDefault();else for(var b=Sys.Extended.UI.IEDragDropManager._getDataObjectsForDropTarget(this._getDropTarget(c.target)),a=0;a<b.length;a++)this._dropTarget.onDragEnterTarget(Sys.Extended.UI.DragMode.Copy,b[a].type,b[a].value)},_onDragLeave:function(c){window._event=c;if(this._isDragging)c.preventDefault();else for(var b=Sys.Extended.UI.IEDragDropManager._getDataObjectsForDropTarget(this._getDropTarget(c.target)),a=0;a<b.length;a++)this._dropTarget.onDragLeaveTarget(Sys.Extended.UI.DragMode.Copy,b[a].type,b[a].value)},_onDragOver:function(c){window._event=c;if(this._isDragging)c.preventDefault();else for(var b=Sys.Extended.UI.IEDragDropManager._getDataObjectsForDropTarget(this._getDropTarget(c.target)),a=0;a<b.length;a++)this._dropTarget.onDragInTarget(Sys.Extended.UI.DragMode.Copy,b[a].type,b[a].value)},_onDrop:function(c){window._event=c;if(!this._isDragging)for(var b=Sys.Extended.UI.IEDragDropManager._getDataObjectsForDropTarget(this._getDropTarget(c.target)),a=0;a<b.length;a++)this._dropTarget.drop(Sys.Extended.UI.DragMode.Copy,b[a].type,b[a].value);c.preventDefault()},_getDropTarget:function(b){while(b){if(b._dropTarget!=a)return b._dropTarget;b=b.parentNode}return a},_dragDrop:function(){if(this._isDragging)return;this._isDragging=b;this._activeDragVisual.dragDrop();document.selection.empty()},_moveInTarget:function(a,b){this._prepareForDomChanges();b.onDragInTarget(a.get_dragMode(),a.get_dragDataType(),a.getDragData(this._activeContext));this._recoverFromDomChanges()},_enterTarget:function(a,b){this._prepareForDomChanges();b.onDragEnterTarget(a.get_dragMode(),a.get_dragDataType(),a.getDragData(this._activeContext));this._recoverFromDomChanges()},_leaveTarget:function(a,b){this._prepareForDomChanges();b.onDragLeaveTarget(a.get_dragMode(),a.get_dragDataType(),a.getDragData(this._activeContext));this._recoverFromDomChanges()},_findPotentialTarget:function(e){var c=this,h=window._event;if(c._dropTargets==a)return a;for(var l=e.get_dragDataType(),k=e.get_dragMode(),j=e.getDragData(c._activeContext),f=c.getScrollOffset(document.body,b),m=h.clientX+f.x,n=h.clientY+f.y,i={x:m-c._radius,y:n-c._radius,width:c._radius*2,height:c._radius*2},g,d=0;d<c._dropTargets.length;d++){g=$common.getBounds(c._dropTargets[d].get_dropTargetElement());if($common.overlaps(i,g)&&c._dropTargets[d].canDrop(k,l,j))return c._dropTargets[d]}return a},_prepareForDomChanges:function(){this._oldOffset=$common.getLocation(this._activeDragVisual)},_recoverFromDomChanges:function(){var a=this,c=$common.getLocation(a._activeDragVisual);if(a._oldOffset.x!=c.x||a._oldOffset.y!=c.y){a._activeDragVisual.startingPoint=a.subtractPoints(a._activeDragVisual.startingPoint,a.subtractPoints(a._oldOffset,c));scrollOffset=a.getScrollOffset(a._activeDragVisual,b);var d=a.addPoints(a.subtractPoints(document._lastPosition,a._activeDragVisual.startingPoint),scrollOffset);$common.setLocation(a._activeDragVisual,d)}},addPoints:function(a,b){return{x:a.x+b.x,y:a.y+b.y}},subtractPoints:function(a,b){return{x:a.x-b.x,y:a.y-b.y}},getScrollOffset:function(c,f){var d=c.scrollLeft,e=c.scrollTop;if(f){var b=c.parentNode;while(b!=a&&b.scrollLeft!=a){d+=b.scrollLeft;e+=b.scrollTop;if(b==document.body&&(d!=0&&e!=0))break;b=b.parentNode}}return{x:d,y:e}},getBrowserRectangle:function(){var c=window.innerWidth,b=window.innerHeight;if(c==a)c=document.documentElement.clientWidth;if(b==a)b=document.documentElement.clientHeight;return{x:0,y:0,width:c,height:b}},getNextSibling:function(b){for(b=b.nextSibling;b!=a;b=b.nextSibling)if(b.innerHTML!=a)return b;return a},hasParent:function(b){return b.parentNode!=a&&b.parentNode.tagName!=a}};Sys.Extended.UI.IEDragDropManager.registerClass("Sys.Extended.UI.IEDragDropManager",Sys.Component);Sys.Extended.UI.IEDragDropManager._getDataObjectsForDropTarget=function(h){if(h==a)return[];for(var f=window._event,g=[],c=["URL","Text"],d,b=0;b<c.length;b++){var e=f.dataTransfer;if(!e&&f.rawEvent)e=f.rawEvent.dataTransfer;d=e.getData(c[b]);if(h.canDrop(Sys.Extended.UI.DragMode.Copy,c[b],d))d&&Array.add(g,{type:c[b],value:d})}return g};Sys.Extended.UI.GenericDragDropManager=function(){var b=this;Sys.Extended.UI.GenericDragDropManager.initializeBase(b);b._dropTargets=a;b._scrollEdgeConst=40;b._scrollByConst=10;b._scroller=a;b._scrollDeltaX=0;b._scrollDeltaY=0;b._activeDragVisual=a;b._activeContext=a;b._activeDragSource=a;b._oldOffset=a;b._potentialTarget=a;b._mouseUpHandler=a;b._mouseMoveHandler=a;b._keyPressHandler=a;b._scrollerTickHandler=a};Sys.Extended.UI.GenericDragDropManager.prototype={initialize:function(){var a=this;Sys.Extended.UI.GenericDragDropManager.callBaseMethod(a,i);a._mouseUpHandler=Function.createDelegate(a,a._onMouseUp);a._mouseMoveHandler=Function.createDelegate(a,a._onMouseMove);a._keyPressHandler=Function.createDelegate(a,a._onKeyPress);a._scrollerTickHandler=Function.createDelegate(a,a._onScrollerTick);a._scroller=new Sys.Timer;a._scroller.set_interval(10);a._scroller.add_tick(a._scrollerTickHandler)},startDragDrop:function(b,c,d){var a=this;a._activeDragSource=b;a._activeDragVisual=c;a._activeContext=d;Sys.Extended.UI.GenericDragDropManager.callBaseMethod(a,"startDragDrop",[b,c,d])},_stopDragDrop:function(a){this._scroller.set_enabled(e);Sys.Extended.UI.GenericDragDropManager.callBaseMethod(this,"_stopDragDrop",[a])},_drag:function(a){Sys.Extended.UI.GenericDragDropManager.callBaseMethod(this,"_drag",[a]);this._autoScroll()},_wireEvents:function(){$addHandler(document,f,this._mouseUpHandler);$addHandler(document,g,this._mouseMoveHandler);$addHandler(document,m,this._keyPressHandler)},_unwireEvents:function(){$removeHandler(document,m,this._keyPressHandler);$removeHandler(document,g,this._mouseMoveHandler);$removeHandler(document,f,this._mouseUpHandler)},_wireDropTargetEvents:function(){},_unwireDropTargetEvents:function(){},_onMouseUp:function(a){window._event=a;this._stopDragDrop(e)},_onMouseMove:function(a){window._event=a;this._drag()},_onKeyPress:function(a){window._event=a;var c=a.keyCode?a.keyCode:a.rawEvent.keyCode;c==27&&this._stopDragDrop(b)},_autoScroll:function(){var a=this,d=window._event,c=a.getBrowserRectangle();if(c.width>0){a._scrollDeltaX=a._scrollDeltaY=0;if(d.clientX<c.x+a._scrollEdgeConst)a._scrollDeltaX=-a._scrollByConst;else if(d.clientX>c.width-a._scrollEdgeConst)a._scrollDeltaX=a._scrollByConst;if(d.clientY<c.y+a._scrollEdgeConst)a._scrollDeltaY=-a._scrollByConst;else if(d.clientY>c.height-a._scrollEdgeConst)a._scrollDeltaY=a._scrollByConst;if(a._scrollDeltaX!=0||a._scrollDeltaY!=0)a._scroller.set_enabled(b);else a._scroller.set_enabled(e)}},_onScrollerTick:function(){var d=document.body.scrollLeft,f=document.body.scrollTop;window.scrollBy(this._scrollDeltaX,this._scrollDeltaY);var c=document.body.scrollLeft,e=document.body.scrollTop,a=this._activeDragVisual,b={x:parseInt(a.style.left)+(c-d),y:parseInt(a.style.top)+(e-f)};$common.setLocation(a,b)}};Sys.Extended.UI.GenericDragDropManager.registerClass("Sys.Extended.UI.GenericDragDropManager",Sys.Extended.UI.IEDragDropManager)}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedTimer","ExtendedCommon"],a);else a()})();1GIF89a��,��<��<���!�,0����;1GIF89a��,��<��<���!�,0����;rGIF89a��������������������������������������������������������������������������������������������������������������������������������������������~~~}}}zzzkkkiiifffaaa[[[XXXLLLIIIHHHFFFCCC<<<;;;555���!�A,πA�����������������������������A��,588669
���
%;���-"�	+;�����-)?�Ƣ�0&�2*.$�ڐ�34��(1$���>'��4/#`�G҆�=����7@�@Q�wQ�ŏ!e	b���(4�0�eKH�bʜIR��8s��	��ϟ@�J4;�GIF89a����.a�9j�Ev�[��;t�F}�L��N�����������C~�K������N��s�ꃤ�r����������������������������������������R��������������������������������ޛ�������ѡ�����������������������������������������������������������������������������������������Q��w��w��u��{�鐼�������������������[��u�냱ㆮۚ������������ν������)^�a��b��V�����냪Ҟ���������cv�����������j�����������삼������������������������������������������ѵ�����������!��,�q	H����9v��Ç
b�ŋ3^H$	' �<�@2�ɐ�4��a�8�!�!���8[
�`�@{:J�b��K
<lY�T��a@�T'� -�V��� ���_Z�R�O�Js2�3*�*Tk��;W�1'����>�>y´b��Ç�@��Dxq��H̓�h�,P��Q0!�)Q�*@`��k�Y��QJS�|f�j�
�of̐#��0h��T����b��nG
4˜��Ǥ@�L��7�|<y9n��cb��%JĈ�|C���C�!G(�Dx�r�-�ؒH�p1FxE�@A�`1^y^a��`���Au^��-A_�!�W#��b��E[|�@P`����䒯��#XE)e@;GIF89a����������0e�������������������������������333���!�,� $�di����lۊ�+��,<�P۱��� NHĩ~��2�l��VQ�����4X�a���;(c��i���9�ٷc�;`vG].޿a
�
D�[�0��M}�0�D����0
��M
J��
0	�����mV�����"��b'��!;GIF89a�����������d�����t�E��������Mx�����������������!�,� $�di�O��l+�p�ƴ:��ú��?��8T�Cp�+�)A�|�'KJ�A�'t;U�b�7�o���P���2��ËpI
~o"��
�~
��"������"	������"�����"���������'��!;�GIF89a�7���@8@ H����`��P����� ( ���DDC���������^c\������Px�@p����0H�@h�p�ধ�0P�������333���������7>6PHPtsr`��@pЀ��������   ���`��������fffTTS����������������������������!�7,���pH,���r�l
���3JUN��+�������P�V�D@�Yv�N��	,.��V[F6 v&6.LB5�("

	.��3�51�*4.1�����14�������4���4.��-�-)��-.�Ê/��30��/�0���3��܊�����2�����5��G��A;�GIF89a������������������̾�����������������������������������������������������������������������ķ��������������sssmmmYYYMMMIII@@@???333���!�.,�@�pH,��r�l6�I��	�Z�ի5��r�C��@�L�+�w�VJ�^��֪��*�(+!|P��c$%+$	��P��n
-,����n�-�P��n z��P�"c&#*'
��P��
��P�����P�����B	�����P�����G��A;9GIF89a  ���������ɷ����������н�����XXX��װ��������!�,  �P�I��մͻ�Ȳ�� �򭟰L#͒�x3�<sԷ܇��l*a�X����	<��C3�8xiȨ��"
��rQLuNP���P�gE��8d2U$4iy+;M2w@X,�2��Z�1��
�R����EU�U��8�<�����<�9��=�Q�����yS<]Q�R�[~k7ժ����|n�������n��*�]��'���H!"�����6H����#;�GIF89a�������������������������������������������������������������������������������������������������������������������������������������)^��������!�C,��C������������!$%������"'*,������&+0������023?����3��,68B���A�@�04	9��:9�ւ7;>��B<�;��=��?=�.		@��
�(L� !BA P����=*� ����Q��J8	�A@�@���
&J�!�C	-^����
R"���h԰qÆ�4f�(0 ��R�����2������a�<p�ʓV졻x;�.ajax__multi_slider_default .outer_rail_vertical{position:absolute;background:url(<%=WebResource("MultiHandleSlider.Images.slider_v_rail_outer.gif")%>) repeat-y;width:22px;height:150px;}
.ajax__multi_slider_default .inner_rail_vertical{position:absolute;background:url(<%=WebResource("MultiHandleSlider.Images.slider_v_rail.gif")%>) repeat-y;width:22px;z-index:100;}
.ajax__multi_slider_default .inner_rail_horizontal{position:absolute;background:url(<%=WebResource("MultiHandleSlider.Images.slider_h_rail.gif")%>) repeat-x;height:22px;z-index:100;}
.ajax__multi_slider_default .outer_rail_horizontal{position:absolute;background:url(<%=WebResource("MultiHandleSlider.Images.slider_h_rail_outer.gif")%>) repeat-x;height:22px;width:150px;}
.ajax__multi_slider_default .handle_horizontal{position:absolute;background:url(<%=WebResource("MultiHandleSlider.Images.slider_h_handle.gif")%>) no-repeat;height:22px;width:10px;z-index:200;}
.ajax__multi_slider_default .handle_horizontal_hover{position:absolute;background:url(<%=WebResource("MultiHandleSlider.Images.slider_h_handle_hover.gif")%>) no-repeat;height:22px;width:10px;z-index:200;}
.ajax__multi_slider_default .handle_horizontal_down{position:absolute;background:url(<%=WebResource("MultiHandleSlider.Images.slider_h_handle_down.gif")%>) no-repeat;height:22px;width:10px;z-index:200;}
.ajax__multi_slider_default .handle_vertical{position:absolute;background:url(<%=WebResource("MultiHandleSlider.Images.slider_v_handle.gif")%>) no-repeat;height:10px;width:22px;z-index:200;}
.ajax__multi_slider_default .handle_vertical_hover{position:absolute;background:url(<%=WebResource("MultiHandleSlider.Images.slider_v_handle_hover.gif")%>) no-repeat;height:10px;width:22px;z-index:200;}
.ajax__multi_slider_default .handle_vertical_down{position:absolute;background:url(<%=WebResource("MultiHandleSlider.Images.slider_v_handle_down.gif")%>) no-repeat;height:10px;width:22px;z-index:200;}+�PNG


IHDR#"Յ`�	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�FVIDATxڬ�m���������n6wǙ��r��;�M��ФQ�b�+�䰴~(
�r��K
�Ђ�B)��"(j����4Ii�G��z�.����ۗ�ݙ�g���g�.����ٽ�����5��B����
6�Zw�R*���i�����p�����9�Ҟ��n����`b03���"���m���jU�q��0�@X��=��zh��y�RJ�����gΜ)h"Q�\N�ڵk�f�C�H�@�/���?��7�Z��qt����fS7
]������?ϟ?�رc�Q`��?�gbnn��W�2;;{c�H�r�?����k6��q�l6#�P�P+++��>8��O�@
�`���ҥK\�p�+K�������~E��ŋ��ݻ�U�0:�/4�a!B�8�R����ɧ�z�M�470����i}�b����m<��6O�ҥK?}5\�.�v)%��G6!���:˲���ɓ'h&$��j4_���u]R�T�����޷m۶�i�y�v{S�Ŀ�׏��0>>��g�}���wBS����.1����۷�Զm\�Ek���]���ѡ���n#�`ǎ�r�-��c�i�q�Z)
�l��RJ<��}�T*��"�R�r��R�/���CVWW)�J����$�I��ٳ��g�y�"�'n�H3۷o�'4;��O$�2�������ضM6���w�Ak��)%�������?������Q����9�j�;�	�:~��wm۾5tF�4#�T*E:�ƶml�fpp�#G�t��P( ���:z2�dppp�����333���
��*�GѮ]��O$�y⡜�dزe�\�T*�eY������lݺ�L&C"��(�RJ�ᦛnbǎ?�dǣ�[3���]ץ^�cY}}}Q�۷/���R	�4�d2�m���~$�V�5�a`���Xx�u���dx�7(��V��.+++�r98{�,[�n�@)�ŋ�<�}����ۋ����>���(�ˬ��Q��QJ�H$B�n��] �F0�^�+���</y�X��+����]��<�k׮q��	8u���vCCC���K=z�z�ޱ�R���u�I����V�k���>!���#�)�h�Z�޽���I�LLL��G199���B��=|ߧ^�S��뛝�
�],?)��h�q]�u;r�a$�I��Z-n��f^{�5�R=z���{�5�eE�&���E���Ova���z���<�m&�HkM����>caa���9��"{����o��,�Q�fm��…,//�=�0o
�Y(f?���+RJÈ`���QJ1;;��Ç�����_Gk��O?͹s碍|�g}}�q�<�0�V�\�re�X,��.j�:Z�����"�w��cw�q��{��%à���f��a���

�h4�V���i�DT���4�Z
�###�>}��g�~uu�M`(u�Hk3I�](��������L&C�RAJI*�¶mL�IJ,*�
J)z{{�,+�#�����RJ�l��_|�����VWW�z�}ÖTw��#�<��z�Щ<�YZZ:s���O>�$�T�j�J����J��*.��2�a�r9�����j���Ɖ�%�Q��'���fggg���~���/�����B�(:�F+�)�uq�uB000����{�r���f�y�0�@3*Jr��8p����0YA��ّ����d�'?����.��2�j�q����4I&�d�Y�<~�!o���V��v{*�2PZP7f&��y����˗�oH}�e
����"��>z��!�����r���4MR�+++|��Ǽ��۔�傔�Z��8l30��嚯5366�R���y�5$��
���R�G�?�Z��N����,..���J�)��rpx-���q�@:av��U��ׯwO�Ȓ
4J�0��@Vk��Z_qiƤs�
 0CCC�f�R�g{��#;�X��8��
;���� ���r�r�q6oC��ظ�=kˮ�֏eZ�HL2��0�uM�q�����*)�k��F�
0�iv����+�
�?�J� 6a��K|�
�=���Y���IEND�B`���PNG


IHDR2�
�Y	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�F�IDATx���Od�q��G�ةS�]K#RDd�F��SL�4u�);L�a�i��Rt����4:��Fď#��FDDDty���������׏��O���z����~����o\��I�`W�q
"CXjb�N�~�b��̝xIV0���e�Nz�;�y�����J"0մH�
�ɐ+�K��?q�F�ZX�J�${��&F�<�hI�d=�,~�ySC$C�Ud�z���3�E��8j��g!�L�d�:�C��*?�<�u��5�"_��$[!��髇u��]��Z=��|�:��h+)�lĨ�9f�����왏0�X���Ivq��볇͵I$����G�<��o�Hf�4����?{P;M��n�	����~=�
"�Ȟ���6����-l����&�l�ݙ��thk�Hf�bL���zX�E����ۯ�
�H����n���IDt���?�qO�H��m�p~PE�e����W���uIEND�B`�U)// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedSlideShow";function a(){var c=true,f="slideChanging",e="slideChanged",d="click",b=false,a=null;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.SlideShowBehavior=function(d){var c=this;Sys.Extended.UI.SlideShowBehavior.initializeBase(c,[d]);c._nextButtonID=a;c._previousButtonID=a;c._imageDescriptionLabelID=a;c._imageTitleLabelID=a;c._playButtonID=a;c._playButtonValue="||>";c._stopButtonValue="[]";c._slideShowServicePath=location.pathname;c._slideShowServiceMethod=a;c._contextKey=a;c._useContextKey=b;c._playInterval=3e3;c._tickHandler=a;c._loop=b;c._autoPlay=b;c._inPlayMode=b;c._elementImage=a;c._bNext=a;c._bPrevious=a;c._currentIndex=-1;c._currentValue=a;c._imageDescriptionLabel=a;c._imageTitleLabel=a;c._bPlay=a;c._slides=a;c._timer=a;c._currentImageElement=a;c._images=a;c._cachedImageIndex=-1;c._clickNextHandler=a;c._clickPreviousHandler=a;c._clickPlayHandler=a;c._tickHandler=a;c._imageLoadedHandler=a};Sys.Extended.UI.SlideShowBehavior.prototype={initialize:function(){var a=this;Sys.Extended.UI.SlideShowBehavior.callBaseMethod(a,"initialize");var b=a.get_element();a._elementImage=b;a._currentImageElement=document.createElement("IMG");a._currentImageElement.style.display="none";document.body.appendChild(a._currentImageElement);var c=document.createElement("DIV");b.parentNode.insertBefore(c,b);b.parentNode.removeChild(b);c.appendChild(b);c.align="center";a.controlsSetup();if(a._bNext){a._clickNextHandler=Function.createDelegate(a,a._onClickNext);$addHandler(a._bNext,d,a._clickNextHandler)}if(a._bPrevious){a._clickPreviousHandler=Function.createDelegate(a,a._onClickPrevious);$addHandler(a._bPrevious,d,a._clickPreviousHandler)}if(a._bPlay){a._clickPlayHandler=Function.createDelegate(a,a._onClickPlay);$addHandler(a._bPlay,d,a._clickPlayHandler)}a._imageLoadedHandler=Function.createDelegate(a,a._onImageLoaded);$addHandler(a._currentImageElement,"load",a._imageLoadedHandler);a._slideShowInit()},dispose:function(){var b=this;if(b._clickNextHandler){$removeHandler(b._bNext,d,b._clickNextHandler);b._clickNextHandler=a}if(b._clickPreviousHandler){$removeHandler(b._bPrevious,d,b._clickPreviousHandler);b._clickPreviousHandler=a}if(b._clickPlayHandler){$removeHandler(b._bPlay,d,b._clickPlayHandler);b._clickPlayHandler=a}if(b._imageLoadedHandler){$removeHandler(b._currentImageElement,"load",b._imageLoadedHandler);b._imageLoadedHandler=a}if(b._timer){b._timer.dispose();b._timer=a}Sys.Extended.UI.SlideShowBehavior.callBaseMethod(b,"dispose")},add_slideChanged:function(a){this.get_events().addHandler(e,a)},remove_slideChanged:function(a){this.get_events().removeHandler(e,a)},raiseSlideChanged:function(a){var b=this.get_events().getHandler(e);if(b){if(!a)a=Sys.EventArgs.Empty;b(this,a)}},add_slideChanging:function(a){this.get_events().addHandler(f,a)},remove_slideChanging:function(a){this.get_events().removeHandler(f,a)},raiseSlideChanging:function(d,e){var c=this.get_events().getHandler(f);if(c){var a=new Sys.Extended.UI.SlideShowEventArgs(d,e,this._currentIndex);c(this,a);return a.get_cancel()}return b},get_contextKey:function(){return this._contextKey},set_contextKey:function(b){var a=this;if(a._contextKey!=b){a._contextKey=b;a.set_useContextKey(c);a._elementImage&&a._slideShowInit();a.raisePropertyChanged("contextKey")}},get_useContextKey:function(){return this._useContextKey},set_useContextKey:function(a){if(this._useContextKey!=a){this._useContextKey=a;this.raisePropertyChanged("useContextKey")}},controlsSetup:function(){var a=this;if(a._previousButtonID)a._bPrevious=document.getElementById(a._previousButtonID);if(a._imageDescriptionLabelID)a._imageDescriptionLabel=document.getElementById(a._imageDescriptionLabelID);if(a._imageTitleLabelID)a._imageTitleLabel=document.getElementById(a._imageTitleLabelID);if(a._nextButtonID)a._bNext=document.getElementById(a._nextButtonID);if(a._playButtonID){a._bPlay=document.getElementById(a._playButtonID);a._bPlay.value=a._playButtonValue}},resetButtons:function(){var a=this;if(!a._loop){if(a._slides.length<=a._currentIndex+1){if(a._bNext)a._bNext.disabled=c;if(a._bPlay)a._bPlay.disabled=c;if(a._bPrevious)a._bPrevious.disabled=b;a._inPlayMode=b;a._timer&&a._timer.set_enabled(b);if(a._bPlay)a._bPlay.value=a._playButtonValue}else{if(a._bNext)a._bNext.disabled=b;if(a._bPlay)a._bPlay.disabled=b}if(a._currentIndex<=0){if(a._bPrevious)a._bPrevious.disabled=c}else if(a._bPrevious)a._bPrevious.disabled=b}else if(a._slides.length==0){if(a._bPrevious)a._bPrevious.disabled=c;if(a._bNext)a._bNext.disabled=c;if(a._bPlay)a._bPlay.disabled=c}if(a._inPlayMode){a._timer.set_enabled(b);a._timer.set_enabled(c)}},resetSlideShowButtonState:function(){var a=this;if(a._inPlayMode){if(a._bPlay)a._bPlay.value=a._stopButtonValue}else{a.resetButtons();if(a._bPlay)a._bPlay.value=a._playButtonValue}},setCurrentImage:function(){var a=this;if(a._slides[a._currentIndex])a._currentImageElement.src=a._slides[a._currentIndex].ImagePath;else a._currentImageElement.src="";Sys.Browser.agent==Sys.Browser.Opera&&a._onImageLoaded(c)},updateImage:function(b){var a=this;if(b){if(a.raiseSlideChanging(a._currentValue,b))return;a._currentValue=b;a._elementImage.src=b.ImagePath;a._elementImage.alt=b.Name;if(a._imageDescriptionLabel)a._imageDescriptionLabel.innerHTML=b.Description?b.Description:"";if(a._imageTitleLabel)a._imageTitleLabel.innerHTML=b.Name?b.Name:"";a.raiseSlideChanged(b);a.resetButtons()}},get_imageDescriptionLabelID:function(){return this._imageDescriptionLabelID},set_imageDescriptionLabelID:function(a){if(this._imageDescriptionLabelID!=a){this._imageDescriptionLabelID=a;this.raisePropertyChanged("imageDescriptionLabelID")}},get_imageTitleLabelID:function(){return this._imageTitleLabelID},set_imageTitleLabelID:function(a){if(this._imageTitleLabelID!=a){this._imageTitleLabelID=a;this.raisePropertyChanged("imageTitleLabelID")}},get_nextButtonID:function(){return this._nextButtonID},set_nextButtonID:function(a){if(this._nextButtonID!=a){this._nextButtonID=a;this.raisePropertyChanged("nextButtonID")}},get_playButtonID:function(){return this._playButtonID},set_playButtonID:function(a){if(this._playButtonID!=a){this._playButtonID=a;this.raisePropertyChanged("playButtonID")}},get_playButtonText:function(){return this._playButtonValue},set_playButtonText:function(a){if(this._playButtonValue!=a){this._playButtonValue=a;this.raisePropertyChanged("playButtonText")}},get_stopButtonText:function(){return this._stopButtonValue},set_stopButtonText:function(a){if(this._stopButtonValue!=a){this._stopButtonValue=a;this.raisePropertyChanged("stopButtonText")}},get_playInterval:function(){return this._playInterval},set_playInterval:function(a){if(this._playInterval!=a){this._playInterval=a;this.raisePropertyChanged("playInterval")}},get_previousButtonID:function(){return this._previousButtonID},set_previousButtonID:function(a){if(this._previousButtonID!=a){this._previousButtonID=a;this.raisePropertyChanged("previousButtonID")}},get_slideShowServicePath:function(){return this._slideShowServicePath},set_slideShowServicePath:function(a){if(this._slideShowServicePath!=a){this._slideShowServicePath=a;this.raisePropertyChanged("slideShowServicePath")}},get_slideShowServiceMethod:function(){return this._slideShowServiceMethod},set_slideShowServiceMethod:function(a){if(this._slideShowServiceMethod!=a){this._slideShowServiceMethod=a;this.raisePropertyChanged("slideShowServiceMethod")}},get_loop:function(){return this._loop},set_loop:function(a){if(this._loop!=a){this._loop=a;this.raisePropertyChanged("loop")}},get_autoPlay:function(){return this._autoPlay},set_autoPlay:function(a){if(this._autoPlay!=a){this._autoPlay=a;this.raisePropertyChanged("autoPlay")}},_onClickNext:function(a){a.preventDefault();a.stopPropagation();this._clickNext()},_onImageLoaded:function(){var a=this;a.updateImage(a._slides[a._currentIndex]);a.resetButtons();a._cacheImages()},_clickNext:function(){var a=this;if(a._slides){if(a._currentIndex+1<a._slides.length)++a._currentIndex;else if(a._loop)a._currentIndex=0;else return b;a.setCurrentImage();return c}return b},_onClickPrevious:function(a){a.preventDefault();a.stopPropagation();this._clickPrevious()},_clickPrevious:function(){var a=this;if(a._slides){if(a._currentIndex-1>=0)--a._currentIndex;else if(a._loop)a._currentIndex=a._slides.length-1;else return b;a.setCurrentImage();return c}return b},_onClickPlay:function(a){a.preventDefault();a.stopPropagation();this._play()},_play:function(){var a=this;if(a._inPlayMode){a._inPlayMode=b;a._timer.set_enabled(b);a.resetSlideShowButtonState()}else{a._inPlayMode=c;if(!a._timer){a._timer=new Sys.Timer;a._timer.set_interval(a._playInterval);a._tickHandler=Function.createDelegate(a,a._onPlay);a._timer.add_tick(a._tickHandler)}a.resetSlideShowButtonState();a._timer.set_enabled(c)}},_onPlay:function(){var a=this;if(a._slides)if(a._currentIndex+1<a._slides.length){++a._currentIndex;a.setCurrentImage();return c}else if(a._loop){a._currentIndex=0;a.setCurrentImage();return c}else{a._inPlayMode=b;a.resetSlideShowButtonState()}return b},_slideShowInit:function(){var c=this;c._currentIndex=-1;c._cachedImageIndex=-1;c._inPlayMode=b;c._currentValue=a;c._images=a;var d=a;if(c._useContextKey)d={contextKey:c._contextKey};Sys.Net.WebServiceProxy.invoke(c._slideShowServicePath,c._slideShowServiceMethod,b,d,Function.createDelegate(c,c._initSlides),a,a)},_initSlides:function(b){var a=this;a._slides=b;if(a._slides){a._images=[];a._clickNext();a._autoPlay&&a._play()}},_cacheImages:function(){var a=this;if(a._currentIndex%3==0)for(var c=a._cachedImageIndex,b=a._cachedImageIndex+1;b<a._slides.length;b++)if(a._slides[b]){a._images[b]=new Image;a._images[b].src=a._slides[b].ImagePath;a._cachedImageIndex=b;if(c+4<=b)break}}};Sys.Extended.UI.SlideShowBehavior.registerClass("Sys.Extended.UI.SlideShowBehavior",Sys.Extended.UI.BehaviorBase);Sys.registerComponent(Sys.Extended.UI.SlideShowBehavior,{name:"slideShow"});Sys.Extended.UI.SlideShowEventArgs=function(b,d,c){var a=this;Sys.Extended.UI.SlideShowEventArgs.initializeBase(a);a._previousSlide=b;a._nextSlide=d;a._slideIndex=c};Sys.Extended.UI.SlideShowEventArgs.prototype={get_previousSlide:function(){return this._previousSlide},get_nextSlide:function(){return this._nextSlide},get_slideIndex:function(){return this._slideIndex}};Sys.Extended.UI.SlideShowEventArgs.registerClass("Sys.Extended.UI.SlideShowEventArgs",Sys.CancelEventArgs)}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedBase","ExtendedCommon","ExtendedTimer","Network"],a);else a()})();�
// (c) 2010 CodePlex Foundation
Type.registerNamespace('Sys.Extended.UI.Seadragon');


Sys.Extended.UI.Seadragon.TileSource = function(width, height, tileSize, tileOverlap, minLevel, maxLevel) {
    this.aspectRatio = width / height;
    this.dimensions = new Sys.Extended.UI.Seadragon.Point(width, height);
    this.minLevel = minLevel ? minLevel : 0;
    this.maxLevel = maxLevel ? maxLevel :
            Math.ceil(Math.log(Math.max(width, height)) / Math.log(2));
    this.tileSize = tileSize ? tileSize : 0;
    this.tileOverlap = tileOverlap ? tileOverlap : 0;
}
Sys.Extended.UI.Seadragon.TileSource.prototype = {
    getLevelScale: function(level) {
        return 1 / (1 << (this.maxLevel - level));
    },

    getNumTiles: function(level) {
        var scale = this.getLevelScale(level);
        var x = Math.ceil(scale * this.dimensions.x / this.tileSize);
        var y = Math.ceil(scale * this.dimensions.y / this.tileSize);

        return new Sys.Extended.UI.Seadragon.Point(x, y);
    },

    getPixelRatio: function(level) {
        var imageSizeScaled = this.dimensions.times(this.getLevelScale(level));
        var rx = 1.0 / imageSizeScaled.x;
        var ry = 1.0 / imageSizeScaled.y;

        return new Sys.Extended.UI.Seadragon.Point(rx, ry);
    },

    getTileAtPoint: function(level, point) {
        var pixel = point.times(this.dimensions.x).times(this.getLevelScale(level));

        var tx = Math.floor(pixel.x / this.tileSize);
        var ty = Math.floor(pixel.y / this.tileSize);

        return new Sys.Extended.UI.Seadragon.Point(tx, ty);
    },

    getTileBounds: function(level, x, y) {
        var dimensionsScaled = this.dimensions.times(this.getLevelScale(level));

        var px = (x === 0) ? 0 : this.tileSize * x - this.tileOverlap;
        var py = (y === 0) ? 0 : this.tileSize * y - this.tileOverlap;

        var sx = this.tileSize + (x === 0 ? 1 : 2) * this.tileOverlap;
        var sy = this.tileSize + (y === 0 ? 1 : 2) * this.tileOverlap;

        sx = Math.min(sx, dimensionsScaled.x - px);
        sy = Math.min(sy, dimensionsScaled.y - py);

        var scale = 1.0 / dimensionsScaled.x;
        return new Sys.Extended.UI.Seadragon.Rect(px * scale, py * scale, sx * scale, sy * scale);
    },

    getTileUrl: function(level, x, y) {
        throw new Error("Method not implemented.");
    },

    tileExists: function(level, x, y) {
        var numTiles = this.getNumTiles(level);
        return level >= this.minLevel && level <= this.maxLevel &&
                x >= 0 && y >= 0 && x < numTiles.x && y < numTiles.y;
    }
}
Sys.Extended.UI.Seadragon.TileSource.registerClass('Sys.Extended.UI.Seadragon.TileSource', null, Sys.IDisposable);
:// (c) 2010 CodePlex Foundation
Type.registerNamespace("Sys.Extended.UI");Type.registerNamespace("Seadragon");Sys.Extended.UI.Seadragon.Strings={Errors:{Failure:"Sorry, but Seadragon Ajax can't run on your browser!\nPlease try using IE 7 or Firefox 3.\n",Dzc:"Sorry, we don't support Deep Zoom Collections!",Dzi:"Hmm, this doesn't appear to be a valid Deep Zoom Image.",Xml:"Hmm, this doesn't appear to be a valid Deep Zoom Image.",Empty:"You asked us to open nothing, so we did just that.",ImageFormat:"Sorry, we don't support {0}-based Deep Zoom Images.",Security:"It looks like a security restriction stopped us from loading this Deep Zoom Image.",Status:"This space unintentionally left blank ({0} {1}).",Unknown:"Whoops, something inexplicably went wrong. Sorry!"},Messages:{Loading:"Loading..."},Tooltips:{FullPage:"Toggle full page",Home:"Go home",ZoomIn:"Zoom in",ZoomOut:"Zoom out"},getString:function(e){for(var c=e.split("."),a=Sys.Extended.UI.Seadragon.Strings,b=0;b<c.length;b++)a=a[c[b]]||{};if(typeof a!="string")a="";var d=arguments;return a.replace(/\{\d+\}/g,function(b){var a=parseInt(b.match(/\d+/))+1;return a<d.length?d[a]:""})},setString:function(e,d){for(var c=e.split("."),b=Seadragon.Strings,a=0;a<c.length-1;a++){if(!b[c[a]])b[c[a]]={};b=b[c[a]]}b[c[a]]=d}};Seadragon.Strings=Sys.Extended.UI.Seadragon.Strings;�// (c) 2010 CodePlex Foundation
Type.registerNamespace("Sys.Extended.UI.Seadragon");Sys.Extended.UI.Seadragon.Job=function(c,b){var a=this;a._image=null;a._timeout=null;a._src=c;a._callback=b;a.TIMEOUT=5e3};Sys.Extended.UI.Seadragon.Job.prototype={_finish:function(d){var b=null,a=this;a._image.onload=b;a._image.onabort=b;a._image.onerror=b;a._timeout&&window.clearTimeout(a._timeout);var e=a._image,c=a._callback;window.setTimeout(function(){c(this._src,d?e:b)},1)},_onloadHandler:function(){this._finish(true)},_onerrorHandler:function(){this._finish(false)},start:function(){var a=this;a._image=new Image;a._image.onload=Function.createDelegate(a,a._onloadHandler);a._image.onabort=Function.createDelegate(a,a._onerrorHandler);a._image.onerror=Function.createDelegate(a,a._onerrorHandler);a._timeout=window.setTimeout(Function.createDelegate(a,a._onerrorHandler),a.TIMEOUT);a._image.src=a._src}};Sys.Extended.UI.Seadragon.Job.registerClass("Sys.Extended.UI.Seadragon.Job",null,Sys.IDisposable);Sys.Extended.UI.Seadragon.ImageLoader=function(a){this._downloading=0;this.imageLoaderLimit=a};Sys.Extended.UI.Seadragon.ImageLoader.prototype={_onComplete:function(a,c,b){this._downloading--;if(typeof a=="function")try{a(b)}catch(d){Seadragon.Debug.error(d.name+" while executing "+c+" callback: "+d.message,d)}},loadImage:function(e,b){var a=this;if(a._downloading>=a.imageLoaderLimit)return false;var c=Seadragon.Utils.createCallback(null,Function.createDelegate(a,a._onComplete),b),d=new Sys.Extended.UI.Seadragon.Job(e,c);a._downloading++;d.start();return true}};Sys.Extended.UI.Seadragon.ImageLoader.registerClass("Sys.Extended.UI.Seadragon.ImageLoader",null,Sys.IDisposable);7Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.RepeatDirection=function(){throw Error.invalidOperation();};Sys.Extended.UI.RepeatDirection.prototype={Vertical:0,Horizontal:1};Sys.Extended.UI.RepeatDirection.registerEnum("Sys.Extended.UI.RepeatDirection");Sys.Extended.UI.DragDropList=function(c){var b=null,a=this;Sys.Extended.UI.DragDropList.initializeBase(a,[c]);a._acceptedDataTypes=[];a._isDragging=b;a._dataType=b;a._dragMode=Sys.Extended.UI.DragMode.Move;a._dragVisual=b;a._direction=Sys.Extended.UI.RepeatDirection.Vertical;a._emptyTemplate=b;a._emptyTemplateInstance=b;a._dropCueTemplate=b;a._dropCueTemplateInstance=b;a._floatContainerInstance=b;a._originalParent=b;a._originalNextSibling=b;a._originalZIndex=b;a._currentContext=b;a._data=b};Sys.Extended.UI.DragDropList.IsValidDataType=function(a){return a&&typeof a=="string"&&a.length>=4?a.substring(0,4)==="HTML":false};Sys.Extended.UI.DragDropList.prototype={get_data:function(){return this._data},set_data:function(a){this._data=a},initialize:function(){var a=this;Sys.Extended.UI.DragDropList.callBaseMethod(a,"initialize");a.get_element().__dragDropList=a;Sys.Extended.UI.DragDropManager.registerDropTarget(a)},startDragDrop:function(d,c,b){var a=this;if(!a._isDragging){a._isDragging=true;a._currentContext=c;if(!b)b=a.createDragVisual(d);else a._dragVisual=b;Sys.Extended.UI.DragDropManager.startDragDrop(a,b,c,!(Sys.Browser.agent==Sys.Browser.InternetExplorer&&Sys.Browser.version>7&&Sys.Browser.documentMode!=0))}},createDragVisual:function(b){var a=this;if(a._dragMode===Sys.Extended.UI.DragMode.Copy)a._dragVisual=b.cloneNode(true);else a._dragVisual=b;var e=Sys.Extended.UI.DragDropManager._getInstance().getScrollOffset(b,true);a._dragVisual.preDragWidth=a._dragVisual.style.width;a._dragVisual.preDragHeight=a._dragVisual.style.height;a._dragVisual.style.width=b.offsetWidth+"px";a._dragVisual.style.height=b.offsetHeight+"px";a._dragVisual.style.opacity="0.4";a._dragVisual.style.filter="progid:DXImageTransform.Microsoft.BasicImage(opacity=0.4);";a._originalZIndex=a._dragVisual.style.zIndex;a._dragVisual.style.zIndex=99999;a._originalParent=a._dragVisual.parentNode;a._originalNextSibling=Sys.Extended.UI.DragDropManager._getInstance().getNextSibling(a._dragVisual);var f=$common.getLocation(b),c=a._getFloatContainer();$common.setLocation(c,f);Sys.Extended.UI.DragDropManager._getInstance().hasParent(a._dragVisual)&&a._dragVisual.parentNode.removeChild(a._dragVisual);c.appendChild(a._dragVisual);var d=Sys.Extended.UI.DragDropManager._getInstance().getScrollOffset(b,true);if(e.x!==d.x||e.y!==d.y){var h=Sys.Extended.UI.DragDropManager._getInstance().subtractPoints(e,d),g=Sys.Extended.UI.DragDropManager._getInstance().subtractPoints(f,h);$common.setLocation(c,g)}return c},get_emptyTemplate:function(){return this._emptyTemplate},set_emptyTemplate:function(a){this._emptyTemplate=a},get_dragDataType:function(){return this._dataType},set_dragDataType:function(a){this._dataType=a},getDragData:function(a){return a},get_dragMode:function(){return this._dragMode},set_dragMode:function(a){this._dragMode=a},dispose:function(){Sys.Extended.UI.DragDropManager.unregisterDropTarget(this);this.get_element().__dragDropList=null;Sys.Extended.UI.DragDropList.callBaseMethod(this,"dispose")},onDragStart:function(){this._validate()},onDrag:function(){},onDragEnd:function(c){var b=null,a=this;if(a._floatContainerInstance){if(a._dragMode===Sys.Extended.UI.DragMode.Copy)a._floatContainerInstance.removeChild(a._dragVisual);else{a._dragVisual.style.opacity="0.999";a._dragVisual.style.filter="";a._dragVisual.style.zIndex=a._originalZIndex?a._originalZIndex:0;if(a._dragVisual.preDragWidth!=b){a._dragVisual.style.width=a._dragVisual.preDragWidth;a._dragVisual.preDragWidth=b}if(a._dragVisual.preDragHeight!=b){a._dragVisual.style.height=a._dragVisual.preDragHeight;a._dragVisual.preDragHeight=b}if(c){a._dragVisual.parentNode.removeChild(a._dragVisual);if(a._originalNextSibling!=b)a._originalParent.insertBefore(a._dragVisual,a._originalNextSibling);else a._originalParent.appendChild(a._dragVisual)}else a._dragVisual.parentNode===a._floatContainerInstance&&a._dragVisual.parentNode.removeChild(a._dragVisual)}document.body.removeChild(a._floatContainerInstance)}else a._dragVisual.parentNode.removeChild(a._dragVisual);if(!c&&a._data&&a._dragMode===Sys.Extended.UI.DragMode.Move){var d=a.getDragData(a._currentContext);a._data&&d&&Array.remove(a._data,d)}a._isDragging=false;a._validate()},get_direction:function(){return this._direction},set_direction:function(a){this._direction=a},get_acceptedDataTypes:function(){return this._acceptedDataTypes},set_acceptedDataTypes:function(a){if(typeof a=="string")this._acceptedDataTypes=a.split(",");else this._acceptedDataTypes=a},get_dropCueTemplate:function(){return this._dropCueTemplate},set_dropCueTemplate:function(a){this._dropCueTemplate=a},get_dropTargetElement:function(){return this.get_element()},canDrop:function(c,b){for(var a=0;a<this._acceptedDataTypes.length;a++)if(this._acceptedDataTypes[a]===b)return true;return false},drop:function(d,c,e){var a=this;if(Sys.Extended.UI.DragDropList.IsValidDataType(c)&&d===Sys.Extended.UI.DragMode.Move){dragVisual=e;var b=a._findPotentialNextSibling(dragVisual);a._setDropCueVisible(false,dragVisual);dragVisual.parentNode.removeChild(dragVisual);if(b)a.get_element().insertBefore(dragVisual,b);else a.get_element().appendChild(dragVisual)}else a._setDropCueVisible(false)},onDragEnterTarget:function(c,a,b){if(Sys.Extended.UI.DragDropList.IsValidDataType(a)){this._setDropCueVisible(true,b);this._validate()}},onDragLeaveTarget:function(b,a){if(Sys.Extended.UI.DragDropList.IsValidDataType(a)){this._setDropCueVisible(false);this._validate()}},onDragInTarget:function(c,a,b){Sys.Extended.UI.DragDropList.IsValidDataType(a)&&this._setDropCueVisible(true,b)},_setDropCueVisible:function(d,c){var a=this;if(a._dropCueTemplate)if(d){if(!a._dropCueTemplateInstance){var e=document.createDocumentFragment();a._dropCueTemplateInstance=a._dropCueTemplate.cloneNode(true)}var b=a._findPotentialNextSibling(c);if(!Sys.Extended.UI.DragDropManager._getInstance().hasParent(a._dropCueTemplateInstance)){if(b)a.get_element().insertBefore(a._dropCueTemplateInstance,b);else a.get_element().appendChild(a._dropCueTemplateInstance);a._dropCueTemplateInstance.style.width=c.offsetWidth+"px";a._dropCueTemplateInstance.style.height=c.offsetHeight+"px"}else if(Sys.Extended.UI.DragDropManager._getInstance().getNextSibling(a._dropCueTemplateInstance)!==b){a.get_element().removeChild(a._dropCueTemplateInstance);if(b)a.get_element().insertBefore(a._dropCueTemplateInstance,b);else a.get_element().appendChild(a._dropCueTemplateInstance)}}else a._dropCueTemplateInstance&&Sys.Extended.UI.DragDropManager._getInstance().hasParent(a._dropCueTemplateInstance)&&a.get_element().removeChild(a._dropCueTemplateInstance)},_findPotentialNextSibling:function(f){var b=this;for(var d=$common.getBounds(f),e=b._direction===0,c,a=b.get_element().firstChild;a!==null;a=a.nextSibling)if(a.innerHTML&&a!==b._dropCueTemplateInstance&&a!==b._emptyTemplateInstance){c=$common.getBounds(a);if(!e&&d.x<=c.x||e&&d.y<=c.y)return a}return null},_validate:function(){var a=this;for(var c=a._dropCueTemplateInstance==null||!Sys.Extended.UI.DragDropManager._getInstance().hasParent(a._dropCueTemplateInstance),d=0,b=a.get_element().firstChild;b!==null;b=b.nextSibling)if(b.innerHTML&&b!==a._emptyTemplateInstance&&b!==a._dropCueTemplateInstance)d++;if(d>0)c=false;a._setEmptyTemplateVisible(c)},_setEmptyTemplateVisible:function(b){var a=this;if(a._emptyTemplate)if(b)if(!a._emptyTemplateInstance)a._emptyTemplateInstance=a._emptyTemplate.createInstance(a.get_element()).instanceElement;else!Sys.Extended.UI.DragDropManager._getInstance().hasParent(a._emptyTemplateInstance)&&a.get_element().appendChild(a._emptyTemplateInstance);else a._emptyTemplateInstance&&Sys.Extended.UI.DragDropManager._getInstance().hasParent(a._emptyTemplateInstance)&&a.get_element().removeChild(a._emptyTemplateInstance)},_getFloatContainer:function(){var a=this;if(!a._floatContainerInstance){a._floatContainerInstance=document.createElement(a.get_element().tagName);var b="0px 0px 0px 0px";a._floatContainerInstance.style.position="absolute";a._floatContainerInstance.style.padding=b;a._floatContainerInstance.style.margin=b;a._floatContainerInstance.className="dragVisualContainer";document.body.appendChild(a._floatContainerInstance)}else!Sys.Extended.UI.DragDropManager._getInstance().hasParent(a._floatContainerInstance)&&document.body.appendChild(a._floatContainerInstance);return a._floatContainerInstance}};Sys.Extended.UI.DragDropList.registerClass("Sys.Extended.UI.DragDropList",Sys.Extended.UI.BehaviorBase,Sys.Extended.UI.IDragSource,Sys.Extended.UI.IDropTarget,Sys.IDisposable);function callbackSuccessStub(c,d){var a=d.split(":"),e=a[0],b=$find(e);b&&b._onCallbackSuccess(c,a[1])}function callbackErrorStub(c,d){var a=d.split(":"),e=a[0],b=$find(e);alert("error");b&&b._onCallbackError(c,a[1])}Sys.Extended.UI.DragDropWatcher=function(c){var b=null,a=this;Sys.Extended.UI.DragDropWatcher.initializeBase(a,[c]);a._childList=[];a._inProgressDrops={};a._postbackCode=b;a._callbackCssStyle=b;a._argReplaceString=b;a._argContextString=b;a._argErrorString=b;a._argSuccessString=b};Sys.Extended.UI.DragDropWatcher.prototype={dispose:function(){Sys.Extended.UI.DragDropWatcher.callBaseMethod(this,"dispose")},initialize:function(){Sys.Extended.UI.DragDropWatcher.callBaseMethod(this,"initialize");this._saveChildOrder()},add_reorderComplete:function(a){this.get_events().addHandler("reorderComplete",a)},remove_reorderComplete:function(a){this.get_events().removeHandler("reorderComplete",a)},raiseReorderComplete:function(){var a=this.get_events().getHandler("reorderComplete");a&&a(this,Sys.EventArgs.Empty)},findChild:function(f,e){for(var c=0,d=f.childNodes,b=0;b<d.length;b++){var a=d[b];if(a!=null&&a.nodeName=="LI"){if(a.id==e)return c;c++}}return-1},canDrop:function(i,h,f){var b=this;if(b._inProgressDrops&&b._inProgressDrops.length>0)return false;var d=Sys.Extended.UI.DragDropWatcher.callBaseMethod(b,"canDrop",[i,h,f]);if(d){for(var g=$common.getBounds(f),e,c=false,j=b.get_element(),a=j.firstChild;a!=null&&!c;a=a.nextSibling){if(!a.id)continue;e=$common.getBounds(a);if(g.y<=e.y)break;c=a.id.lastIndexOf("Insert",a.id.length-6)!=-1}d=!c}return d},drop:function(g,f,e){var a=this;Sys.Extended.UI.DragDropWatcher.callBaseMethod(a,"drop",[g,f,e]);var b=e.id;if(!a._postbackCode||!b)return;var c=a.findChild(a.get_element(),b);Sys.Debug.assert(c!=-1,String.format(Sys.Extended.UI.Resources.ReorderList_DropWatcherBehavior_NoChild,b));var d=a._getSavedChildIndex(b);if(c!=-1&&c!=d){a._saveChildOrder();a.doPostBack(b,c,d)}},_setupDropState:function(a,c,d){if(a){var b=$get(a);this._inProgressDrops[a]={oldCss:b.className,newIndex:c,oldIndex:d};if(this._callbackCssStyle)b.className=this._callbackCssStyle}},_onDropCallback:function(a){var b=this;if(a){b.set_ClientState("true");var c=b._inProgressDrops[a];if(c){var d=$get(a);if(b._callbackCssStyle)d.className=c.oldCss;delete b._inProgressDrops[a]}return c}},doPostBack:function(c,d,e){var a=this,g=a._inProgressDrops[c];if(g)return;var f="reorder:"+c+":"+e.toString()+":"+d.toString(),b=a._postbackCode.replace(a._argReplaceString,f);if(a._argSuccessString)b=b.replace(a._argSuccessString,"callbackSuccessStub");if(a._argErrorString)b=b.replace(a._argErrorString,"callbackErrorStub");if(a._argContextString)b=b.replace(a._argContextString,a.get_id()+":"+c);a._setupDropState(c,d,e);window.setTimeout(b,0)},_onCallbackSuccess:function(a,b){if(a&&a.length>0)this._onCallbackError(a,b);else{this._onDropCallback(b);this.raiseReorderComplete()}},_onCallbackError:function(b,c){var a=this._onDropCallback(c);if(a.oldIndex||a.newIndex){this._saveChildOrder();this.doReorder(a.newIndex,a.oldIndex,true)}alert(String.format(Sys.Extended.UI.Resources.ReorderList_DropWatcherBehavior_CallbackError,b))},doReorder:function(b,a,h){var c=this,f=c.get_element(),e=c._childList;if(b>=0&&e.length>b&&b!=a){var d=$get(e[b]),j=c._inProgressDrops[d.id];if(j)return;if(d){if(a>b)a++;var i=a>=e.length;try{f.removeChild(d)}catch(f){}if(i)f.appendChild(d);else{var g=$get(e[a]);f.insertBefore(d,g)}if(!h)c.doPostBack(d.id,a,b);else{c._saveChildOrder();c.raiseReorderComplete()}}}},getItem:function(a){!this._childList&&this._saveChildOrder();return this._childList[a]},_getSavedChildIndex:function(b){if(this._childList&&b)for(var a=0;a<this._childList.length;a++)if(b==this._childList[a])return a;return-1},_saveChildOrder:function(){var c=this.get_element();if(!c)return;var b=c.childNodes;this._childList=[];for(var d=0,a=0;a<b.length;a++)if(b[a]&&b[a].parentNode===c&&b[a].tagName&&b[a].tagName.toLowerCase()=="li")this._childList[d++]=b[a].id},get_argReplaceString:function(){return this._argReplaceString},set_argReplaceString:function(a){if(this._argReplaceString!=a){this._argReplaceString=a;this.raisePropertyChanged("argReplaceString")}},get_argContextString:function(){return this._argContextString},set_argContextString:function(a){if(this._argContextString!=a){this._argContextString=a;this.raisePropertyChanged("argContextString")}},get_argErrorString:function(){return this._argErrorString},set_argErrorString:function(a){if(this._argErrorString!=a){this._argErrorString=a;this.raisePropertyChanged("argErrorString")}},get_argSuccessString:function(){return this._argSuccessString},set_argSuccessString:function(a){if(this._argSuccessString!=a){this._argSuccessString=a;this.raisePropertyChanged("argSuccessString")}},get_postbackCode:function(){return this._postbackCode},set_postbackCode:function(a){if(this._postbackCode!=a){this._postbackCode=a;this.raisePropertyChanged("postbackCode")}},get_callbackCssStyle:function(){return this._callbackCssStyle},set_callbackCssStyle:function(a){if(this._callbackCssStyle!=a){this._callbackCssStyle=a;this.raisePropertyChanged("callbackCssStyle")}}};Sys.Extended.UI.DragDropWatcher.registerClass("Sys.Extended.UI.DragDropWatcher",Sys.Extended.UI.DragDropList);=;// (c) 2010 CodePlex Foundation
(function(){var a=null;function b(){var e="object",j="lastFetchDataResults",f="hasChanges",h="isSaving",b=true,i="POST",c=false,d="undefined";Type._registerScript("MicrosoftAjaxDataContext.js",["MicrosoftAjaxComponentModel.js","MicrosoftAjaxCore.js"]);var g,l,k=Sys._merge;Type.registerNamespace("Sys.Net");g=Sys.Net.WebServiceOperation=function(b,c,e){if(typeof b===d)b=a;this.operation=b;this.parameters=c||a;this.httpVerb=e||a};g.prototype={operation:a,parameters:a,httpVerb:a};g.registerClass("Sys.Net.WebServiceOperation");Type.registerNamespace("Sys.Data");if(!Sys.Data.IDataProvider){g=Sys.Data.IDataProvider=function(){};g.registerInterface("Sys.Data.IDataProvider")}if(!Sys.Data.MergeOption){g=Sys.Data.MergeOption=function(){};g.prototype={appendOnly:0,overwriteChanges:1};g.registerEnum("Sys.Data.MergeOption")}g=Sys.Data.DataContext=function(){var a=this;Sys.Data.DataContext.initializeBase(a);a._dataChangedDel=Function.createDelegate(a,a._dataChanged);a._items={};a._methods={}};g.prototype={_useIdentity:c,_dirty:c,_lastResults:a,_items:a,_ignoreChange:c,_inserts:a,_edits:a,_deletes:a,_changelist:a,_hasChanges:c,_mergeOption:Sys.Data.MergeOption.overwriteChanges,_saverequest:a,_saving:c,_serviceUri:a,_saveOperation:a,_saveParameters:a,_saveHttpVerb:a,_saveTimeout:0,_methods:a,get_changes:function(){var a=this._changelist;if(!a)this._changelist=a=[];return a},get_createEntityMethod:function(){return this._methods.createEntity||a},set_createEntityMethod:function(a){this._methods.createEntity=a},get_getIdentityMethod:function(){return this._methods.getIdentity||a},set_getIdentityMethod:function(a){this._methods.getIdentity=a;this._useIdentity=!!a},get_handleSaveChangesResultsMethod:function(){return this._methods.handleSaveResults||a},set_handleSaveChangesResultsMethod:function(a){this._methods.handleSaveResults=a},get_isDeferredPropertyMethod:function(){return this._methods.isDeferredProperty||a},set_isDeferredPropertyMethod:function(a){this._methods.isDeferredProperty=a},get_getNewIdentityMethod:function(){return this._methods.getNewIdentity||a},set_getNewIdentityMethod:function(a){this._methods.getNewIdentity=a},get_getDeferredPropertyFetchOperationMethod:function(){return this._methods.getDeferredQuery||a},set_getDeferredPropertyFetchOperationMethod:function(a){this._methods.getDeferredQuery=a},get_items:function(){return this._items},get_lastFetchDataResults:function(){return this._lastResults||a},get_hasChanges:function(){return this._hasChanges},get_fetchDataMethod:function(){return this._methods.fetchData||a},set_fetchDataMethod:function(a){this._methods.fetchData=a},get_mergeOption:function(){return this._mergeOption},set_mergeOption:function(a){this._mergeOption=a},get_saveChangesMethod:function(){return this._methods.saveChanges||a},set_saveChangesMethod:function(a){this._methods.saveChanges=a},get_saveOperation:function(){return this._saveOperation||""},set_saveOperation:function(a){this._saveOperation=a},get_saveHttpVerb:function(){return this._saveHttpVerb||i},set_saveHttpVerb:function(a){this._saveHttpVerb=a},get_saveParameters:function(){return this._saveParameters},set_saveParameters:function(a){this._saveParameters=a},get_saveChangesTimeout:function(){return this._saveTimeout},set_saveChangesTimeout:function(a){this._saveTimeout=a},get_isSaving:function(){return this._saving},get_serviceUri:function(){return this._serviceUri||""},set_serviceUri:function(a){this._serviceUri=a},addLink:function(e,d,f){var c=this._toggleLink(e,d,f),g=this._setLinkField(b,e,d,f);if(!c||c.action!==Sys.Data.ChangeOperationType.remove)(g||c&&c.action===Sys.Data.ChangeOperationType.insert)&&this._registerChange(new Sys.Data.ChangeOperation(Sys.Data.ChangeOperationType.insert,a,e,d,f))},removeLink:function(e,d,f){var c=this._toggleLink(e,d,f),g=this._setLinkField(b,e,d,f,b);if(!c||c.action!==Sys.Data.ChangeOperationType.insert)(g||c&&c.action===Sys.Data.ChangeOperationType.remove)&&this._registerChange(new Sys.Data.ChangeOperation(Sys.Data.ChangeOperationType.remove,a,e,d,f))},setLink:function(d,b,e){this._toggleLink(d,b,e);this._setLinkField(c,d,b,e);this._registerChange(new Sys.Data.ChangeOperation(Sys.Data.ChangeOperationType.update,a,d,b,e))},abortSave:function(){var b=this;if(b._saverequest){b._saverequest.get_executor().abort();b._saverequest=a}if(b._saving){b._saving=c;b.raisePropertyChanged(h)}},clearChanges:function(){var b=this;b._edits=b._deletes=b._inserts=a;b._changelist&&Sys.Observer.clear(b._changelist);if(b._hasChanges){b._hasChanges=c;b.raisePropertyChanged(f)}},clearData:function(){this._clearData()},createEntity:function(a){var b=this.get_createEntityMethod();return b(this,a)},dispose:function(){var c=this;if(c._disposed)return;c._disposed=b;c.get_isSaving()&&c.abortSave();c.clearData();c._lastResults=a;c._saverequest=a;c._methods={};Sys.Data.DataContext.callBaseMethod(c,"dispose")},initialize:function(){this.updated();Sys.Data.DataContext.callBaseMethod(this,"initialize")},fetchDeferredProperty:function(n,g,m,h,j,l,o,c){var e=this,p=e.get_getDeferredPropertyFetchOperationMethod(),q=e,f=p(e,n,g,m||a,c);if(f&&f.operation){function r(d){q._setField(n,g,a,d,a,b);j&&j(d,c,g)}function s(a){l&&l(a,c,g)}if(typeof c===d)c=a;if(typeof h===d||h===a)h=e.get_mergeOption();return e.fetchData(f.operation,k(a,f.parameters,m),h,f.httpVerb||i,r,s,o||0,c)}},getNewIdentity:function(d,c){var b=this.get_getNewIdentityMethod();return b?b(this,d,c)||a:a},insertEntity:function(d,e){var b=this,c=a;if(b._useIdentity){c=b.getIdentity(d);if(c===a)c=b.getNewIdentity(d,e||a);if(!c)throw Error.invalidOperation(Sys.Data.DataRes.requiredIdentity);if(b._items[c])throw Error.invalidOperation(String.format(Sys.Data.DataRes.entityAlreadyExists,c));b._storeEntity(c,d)}else b._captureEntity(d);b._inserts=b._pushChange(b._inserts,d,c);b._registerChange(new Sys.Data.ChangeOperation(Sys.Data.ChangeOperationType.insert,d))},removeEntity:function(e){var c=this;if(c._ignoreChange)return;var g=c.getIdentity(e);if(g!==a){e=c._items[g];if(typeof e===d)return;delete c._items[g]}c._releaseEntity(e);var k=c,h=c.get_changes(),j=c._hasChanges;function i(){for(var a=0,b=h.length;a<b;a++)if(h[a].item===e){Sys.Observer.removeAt(h,a);k._hasChanges=!!h.length;return}}if(c._peekChange(c._inserts,e,g,b)){c._removeChanges(e,"*");i()}else{c._deletes=c._pushChange(c._deletes,e,g);c._peekChange(c._edits,e,g,b)&&i();c._removeChanges(e,"*",b);Sys.Observer.add(h,new Sys.Data.ChangeOperation(Sys.Data.ChangeOperationType.remove,e));c._hasChanges=b}c._hasChanges!==j&&c._raiseChanged(f)},fetchData:function(g,m,f,h,k,l,n,b){var e=this,j=e;if(typeof f===d||f===a)f=e.get_mergeOption();function p(c){if(j._disposed)return;var a=j.trackData(c,f);if(k){if(c instanceof Array&&a===c)a=Array.clone(a);k(a,b,g)}}function q(a){if(j._disposed)return;l&&l(a,b,g)}if(typeof b===d)b=a;var o=e.get_fetchDataMethod(),r=e.get_serviceUri();return o?o(e,r,g,m||a,h||i,p,q,n||0,b):Sys.Net.WebServiceProxy.invoke(r,g,h?h==="GET":c,m||a,p,q,b,n||0)},_clearData:function(c){var b=this;if(b._useIdentity)for(var d in b._items){var f=b._items[d];b._releaseEntity(f)}else b._lastResults&&b._release(b._lastResults);b._items={};var e=b._lastResults;b._lastResults=c||a;b.clearChanges();c&&b._capture(c);e!==a&&b._raiseChanged(j)},_fixAfterSave:function(f,b,c){var a=this;if(a._useIdentity){var e=a.getIdentity(b),d=a.getIdentity(c);a._combine(b,c);if(e!==d){delete a._items[e];a._items[d]=b}}else{a._combine(b,c);f.action===Sys.NotifyCollectionChangedAction.add&&a._captureEntity(b)}},trackData:function(b,e){var c=this;if(c._useIdentity){if(typeof e===d||e===a)e=c.get_mergeOption();var f;if(b instanceof Array)b=c._storeEntities(b,e);else if(typeof b!==d&&b!==a){f=c._storeEntities([b],e);if(f.length===0)b=a}var g=c._lastResults;c._lastResults=b;g!==a&&c._raiseChanged(j)}else c._clearData(b);return b},_processResults:function(f,h,a){if(a&&a.length===h.length){f._ignoreChange=b;try{for(var d=0,k=a.length;d<k;d++){var g=a[d],i=h[d],j=i.item;g&&typeof g===e&&f._fixAfterSave(i,j,g)}}finally{f._ignoreChange=c}}},_peekChange:function(d,f,e,g){if(!d)return c;if(e!==a){var h="id$"+e,i=d[h];if(i){if(g)d[h]=a;return b}}else return g?Array.remove(d,f):Array.contains(d,f)},_pushChange:function(c,e,d){if(!c)c=[];if(d===a)c.push(e);else c["id$"+d]=b;return c},_registerChange:function(c){var a=this;Sys.Observer.add(a.get_changes(),c);if(!a._hasChanges){a._hasChanges=b;a.raisePropertyChanged(f)}},saveChanges:function(k,l,j){var d=this,f=c,p=d.get_serviceUri(),m=d.get_saveOperation(),e=d,g;function i(d){if(e._disposed)return;if(!f){f=b;window.setTimeout(function(){i(d)},0)}else{e.clearChanges();var l=e.get_handleSaveChangesResultsMethod();(l||e._processResults)(e,g,d);e._saverequest=a;e._saving=c;e._raiseChanged(h);k&&k(d,j,m)}}function n(d){if(e._disposed)return;if(!f){f=b;window.setTimeout(function(){n(d)},0)}else{e._saverequest=a;e._saving=c;e._raiseChanged(h);l&&l(d,j,m)}}if(!d._hasChanges){i(a);return a}g=Array.clone(d.get_changes());if(g.length===0){i(a);return a}d.get_isSaving()&&d.abortSave();d._saving=b;d._raiseChanged(h);var o=d._filterLinks(g);d._saverequest=(d.get_saveChangesMethod()||d._saveInternal)(d,o,i,n,j);f=b;return d._saverequest},_isDeleted:function(f){var d,g,a,e=this.get_changes(),h=this.getIdentity(f);for(d=0,g=e.length;d<g;d++){a=e[d];if(a.action===Sys.Data.ChangeOperationType.remove&&a.item&&(a.item===f||this.getIdentity(a.item)===h))return b}return c},_removeChanges:function(j,i,m){var h=this,b,k,d,a,g=h.get_changes(),l=i==="*";for(b=0,k=g.length;b<k;b++){a=g[b];if(i&&(!m||a.action===Sys.Data.ChangeOperationType.insert)&&(a.linkSource===j||l&&a.linkTarget===j)&&(l||a.linkSourceField===i)||!i&&a.item&&typeof a.item===e&&(a.item===j||h.getIdentity(a.item)===h.getIdentity(j))){if(!d)d=[];d.push(a)}}if(d){Sys.Observer.beginUpdate(g);for(b=0,k=d.length;b<k;b++)Sys.Observer.remove(g,d[b]);Sys.Observer.endUpdate(g);if(g.length===0){h._hasChanges=c;h.raisePropertyChanged(f)}}},_setLinkField:function(j,e,g,i,h){var f=this;if(j){var d=e[g];if(d===a||f._getValueType(e,g,d)!==2){if(h)return c;e[g]=d=[]}f._ignoreChange=b;try{if(Array.contains(d,i))if(h){Sys.Observer.remove(d,i);return b}else return c;else if(h)return c;else{Sys.Observer.add(d,i);return b}}finally{f._ignoreChange=c}}else{f._ignoreChange=b;try{if(h)Sys.Observer.setValue(e,g,a);else Sys.Observer.setValue(e,g,i);return b}finally{f._ignoreChange=c}}},_toggleLink:function(h,j,i){var c=this;for(var b,d=c.get_changes(),e=0,k=d.length;e<k;e++){b=d[e];if(b.linkSourceField===j&&b.linkSource===h&&(b.linkTarget===i||b.action===Sys.Data.ChangeOperationType.update)){Sys.Observer.remove(d,b);var g=c._hasChanges;c._hasChanges=!!d.length;g!==c._hasChanges&&c.raisePropertyChanged(f);return b}}return a},updated:function(){if(this._dirty){this._dirty=c;this.raisePropertyChanged("")}},_capture:function(b){if(b instanceof Array)for(var c=0,d=b.length;c<d;c++)this._captureEntity(b[c]);else b!==a&&this._captureEntity(b)},_captureEntity:function(a){this._isCaptureable(a)&&Sys.Observer.addPropertyChanged(a,this._dataChangedDel)},_dataChanged:function(c){var a=this;if(a._ignoreChange)return;var g=a.get_changes(),d=a.getIdentity(c);if(!a._peekChange(a._inserts,c,d)){var e=a._peekChange(a._edits,c,d);if(!e){Sys.Observer.add(g,new Sys.Data.ChangeOperation(Sys.Data.ChangeOperationType.update,c));a._edits=a._pushChange(a._edits,c,d);if(!a._hasChanges){a._hasChanges=b;a.raisePropertyChanged(f)}}}},_isActive:function(){return this.get_isInitialized()&&!this.get_isUpdating()},_isCaptureable:function(b){if(b===a)return c;var d=typeof b;return d===e||d==="unknown"},_raiseChanged:function(a){if(this._isActive()){this.raisePropertyChanged(a);return b}else{this._dirty=b;return c}},_release:function(b){if(b instanceof Array)for(var c=0,d=b.length;c<d;c++)this._releaseEntity(b[c]);else b!==a&&this._releaseEntity(b)},_releaseEntity:function(a){this._isCaptureable(a)&&Sys.Observer.removePropertyChanged(a,this._dataChangedDel)},_saveInternal:function(b,j,i,e,f){var h=b.get_serviceUri(),d=b.get_saveOperation()||"",g=a;if(!h)e(new Sys.Net.WebServiceError(c,String.format(Sys.Res.webServiceFailedNoMsg,d)),f,d);else g=Sys.Net.WebServiceProxy.invoke(h,d,b.get_saveHttpVerb()==="GET",k(a,b.get_saveParameters(),{changeSet:j}),i,e,f,b.get_saveChangesTimeout()||0);return g},_filterLinks:function(g){var d=this;if(!d._useIdentity)return g;for(var i=g.length,h=new Array(i),f=0;f<i;f++){var a=g[f],e=a.item,b=a.linkSource,c=a.linkTarget;if(e)e=d._getEntityOnly(e);if(b)b=d._getEntityOnly(b);if(c)c=d._getEntityOnly(c);h[f]=new Sys.Data.ChangeOperation(a.action,e,b,a.linkSourceField,c)}return h},_getEntityOnly:function(d){var c={};this._combine(c,d,a,b);return c},getIdentity:function(b){if(b===a)return a;var c=this.get_getIdentityMethod();return c?c(this,b)||a:a},isDeferredProperty:function(d,b){var a=this.get_isDeferredPropertyMethod();return a?a(this,d,b)||c:c},_getValueType:function(f,g,b){var c=typeof b;return c===d?0:b===a||c!==e?2:this.isDeferredProperty(f,g)?1:2},_setField:function(f,g,m,a,n,o){var d=this,i=b,l=f instanceof Array,j=n===Sys.Data.MergeOption.appendOnly;if(!l){var h=f[g],k=d._getValueType(f,g,h);if(j){if(k===2&&(!h||!a||typeof h!==e||h instanceof Array||typeof a!==e||a instanceof Array||d.getIdentity(h)!==d.getIdentity(a)))i=c}else if(k===2&&a&&m&&d._getValueType(m,g,a)===1)i=c}if(i){if(l)f[g]=a;else{d._ignoreChange=b;try{Sys.Observer.setValue(f,g,a)}finally{d._ignoreChange=c}}o&&!j&&d._removeChanges(f,g)}return i},_combine:function(g,i,h,m){var f=this,n=c;for(var j in i){var d=i[j],o=typeof d;if(o==="function")continue;if(f._useIdentity&&d instanceof Array){if(!m){d=f._storeEntities(d,h);g&&f._setField(g,j,i,d,h,b)}}else{var l=a;if(d&&o===e)l=f.getIdentity(d);if(l!==a)!m&&f._storeEntity(l,d,g,j,i,h);else if(g){var k=g[j];if(k&&typeof k===e&&f.getIdentity(k))continue;if(f._setField(g,j,i,d,h)&&!n&&(typeof h!=="number"||h===Sys.Data.MergeOption.overwriteChanges)){n=b;f._removeChanges(g)}}}}},_storeEntity:function(j,e,h,i,l,g){var f=this,k=b,a=f._items[j];if(typeof a!==d)if(a===e)k=c;else f._combine(a,e,g);else{f._items[j]=a=e;f._captureEntity(e);f._combine(e,e,g)}h&&h[i]!==a&&f._setField(h,i,l,a,g,b);return k},_storeEntities:function(f,j){var g=this,b,h,i,d,k=j===Sys.Data.MergeOption.appendOnly;for(b=0,h=f.length;b<h;b++){var c=f[b],m=c&&typeof c===e;if(m){if(k)if(g._isDeleted(c)){d=d||[];d.push(c);continue}var l=g.getIdentity(c);if(l!==a)g._storeEntity(l,c,f,b,a,j)&&!k&&g._removeChanges(c)}}if(d){i=Array.clone(f);for(b=0,h=d.length;b<h;b++)Array.remove(i,d[b])}return i||f}};g.registerClass("Sys.Data.DataContext",Sys.Component,Sys.Data.IDataProvider);Sys.registerComponent(g);g=Sys.Data.ChangeOperationType=function(){};g.prototype={insert:0,update:1,remove:2};g.registerEnum("Sys.Data.ChangeOperationType");g=Sys.Data.ChangeOperation=function(e,f,c,b,d){var a=this;a.action=e;a.item=f;a.linkSourceField=b;a.linkSource=c;a.linkTarget=d};g.prototype={action:a,item:a,linkSource:a,linkSourceField:a,linkTarget:a};g.registerClass("Sys.Data.ChangeOperation")}if(window.Sys&&Sys.loader)Sys.loader.registerScript("DataContext",a,b);else b()})();MType.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.Rtl=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.Rtl.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.Rtl.prototype={callMethod:function(){var a=this;if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.Rtl.callBaseMethod(a,"callMethod"))return false;a._designPanel._doc.body.style.direction=!a.checkState()?"rtl":"";if(!Sys.Extended.UI.HTMLEditor.isIE){var b=a._designPanel._getSelection(),d=a._designPanel._createRange(b);a._designPanel._removeAllRanges(b);a._designPanel._selectRange(b,d);a._designPanel.focusEditor()}var c=a;setTimeout(function(){c._editPanel.updateToolbar()},0)},checkState:function(){return!Sys.Extended.UI.HTMLEditor.ToolbarButton.Rtl.callBaseMethod(this,"checkState")?false:this._designPanel._doc.body.style.direction&&this._designPanel._doc.body.style.direction=="rtl"?true:false}};Sys.Extended.UI.HTMLEditor.ToolbarButton.Rtl.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.Rtl",Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton);NType.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveLink=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveLink.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveLink.prototype={callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveLink.callBaseMethod(this,"callMethod"))return false;var b=this._designPanel,d=b._getSelection(),e=b._createRange(d),a=Sys.Extended.UI.HTMLEditor.getSelParent(b);if(a.nodeType==3)a=a.parentNode;while(a&&Sys.Extended.UI.HTMLEditor.isStyleTag(a.tagName)&&a.tagName.toUpperCase()!="A")a=a.parentNode;if(a&&a.tagName.toUpperCase()=="A"){b._saveContent();var c=a.firstChild;while(a.firstChild)a.parentNode.insertBefore(a.firstChild,a);a.parentNode.removeChild(a);c&&Sys.Extended.UI.HTMLEditor._setCursor(c,b);setTimeout(function(){b._editPanel.updateToolbar()},0);b.onContentChanged()}}};Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveLink.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveLink",Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.PasteText = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.PasteText.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.PasteText.prototype = {
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.PasteText.callBaseMethod(this, "callMethod")) return false;
        var editor = this._designPanel;

        if(Sys.Extended.UI.HTMLEditor.isIE)
        {
            editor._saveContent();
            editor.openWait();
            setTimeout(function(){editor._paste(false); editor.closeWait();},0)
        } else {
            var sel   = editor._getSelection();
            var range = editor._createRange(sel);
            var useVerb = String.format(Sys.Extended.UI.Resources.HTMLEditor_toolbar_button_Use_verb, (Sys.Extended.UI.HTMLEditor.isSafari && navigator.userAgent.indexOf("mac") != -1)?"Apple-V":"Ctrl-V" );
            var mess = String.format(Sys.Extended.UI.Resources.HTMLEditor_toolbar_button_OnPastePlainText, useVerb);

            alert(mess);

            setTimeout(function(){
                editor._removeAllRanges(sel);
                editor._selectRange(sel,range);
            },0);
            editor.isPlainText = true;
        }
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.PasteText.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.PasteText", Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);

PType.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.Ltr=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.Ltr.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.Ltr.prototype={callMethod:function(){var a=this;if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.Ltr.callBaseMethod(a,"callMethod"))return false;a._designPanel._doc.body.style.direction=!a.checkState()?"":"rtl";if(!Sys.Extended.UI.HTMLEditor.isIE){var b=a._designPanel._getSelection(),d=a._designPanel._createRange(b);a._designPanel._removeAllRanges(b);a._designPanel._selectRange(b,d);a._designPanel.focusEditor()}var c=a;setTimeout(function(){c._editPanel.updateToolbar()},0)},checkState:function(){return!Sys.Extended.UI.HTMLEditor.ToolbarButton.Ltr.callBaseMethod(this,"checkState")?false:!(this._designPanel._doc.body.style.direction&&this._designPanel._doc.body.style.direction=="rtl")?true:false}};Sys.Extended.UI.HTMLEditor.ToolbarButton.Ltr.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.Ltr",Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton);Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.HorizontalSeparator=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.HorizontalSeparator.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.HorizontalSeparator.prototype={isImage:function(){return false}};Sys.Extended.UI.HTMLEditor.ToolbarButton.HorizontalSeparator.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.HorizontalSeparator",Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeImageButton);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeSelectButton=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeSelectButton.initializeBase(this,[a]);this._designPanel=null};Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeSelectButton.prototype={onEditPanelActivity:function(){this._designPanel=this._editPanel.get_activePanel();this.checkState()},checkState:function(){return!this.checkRangeInDesign()?false:true},callMethod:function(){return!Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeSelectButton.callBaseMethod(this,"callMethod")?false:this._designPanel==null?false:this._designPanel.isPopup()?false:true}};Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeSelectButton.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeSelectButton",Sys.Extended.UI.HTMLEditor.ToolbarButton.SelectButton);Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeSelectButton = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeSelectButton.initializeBase(this, [element]);
    this._designPanel = null;
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeSelectButton.prototype = {
    onEditPanelActivity: function() {
        this._designPanel = this._editPanel.get_activePanel();
        this.checkState()
    },


    checkState: function() {
        if (!this.checkRangeInDesign()) return false;
        return true;
    },

    callMethod: function(select, e) {
        if (!Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeSelectButton.callBaseMethod(this, "callMethod")) return false;
        if (this._designPanel == null) return false;
        if (this._designPanel.isPopup()) return false;

        return true;
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeSelectButton.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeSelectButton", Sys.Extended.UI.HTMLEditor.ToolbarButton.SelectButton);

Q'Type.registerNamespace("Sys.Extended.UI.HTMLEditor.Popups");

Sys.Extended.UI.HTMLEditor.Popups.Popup = function(element) {
    Sys.Extended.UI.HTMLEditor.Popups.Popup.initializeBase(this, [element]);

    this._iframe = null;
    this._top = 0;
    this._left = 0;
    this._doc = null;
    this._initialContent = "";
    this._cssPath = "";
    this._autoDimensions = true;
    this._registeredFields = [];
    this._registeredHandlers = [];
    this._app_onload$delegate = Function.createDelegate(this, this._app_onload);
    this.isOpened = false;
    this.isLoaded = false;
    this.isLoading = false;
}

Sys.Extended.UI.HTMLEditor.Popups.Popup.prototype = {

    getDocument: function() {
        return this._doc;
    },

    getPopupMediator: function() {
        if (this._iframe.contentWindow && this._iframe.contentWindow.popupMediator) {
            return this._iframe.contentWindow.popupMediator;
        } else {
            return null;
        }
    },

    get_registeredFields: function() {
        return this._registeredFields;
    },
    set_registeredFields: function(value) {
        this._registeredFields = eval(value);
    },

    get_registeredHandlers: function() {
        return this._registeredHandlers;
    },
    set_registeredHandlers: function(value) {
        this._registeredHandlers = eval(value);
    },

    get_initialContent: function() {
        return this._initialContent;
    },
    set_initialContent: function(value) {
        this._initialContent = value;
    },

    get_cssPath: function() {
        return this._cssPath;
    },
    set_cssPath: function(value) {
        this._cssPath = value;
    },

    get_autoDimensions: function() {
        return this._autoDimensions;
    },
    set_autoDimensions: function(value) {
        this._autoDimensions = value;
    },

    get_iframe: function() {
        return this._iframe;
    },
    set_iframe: function(value) {
        this._iframe = value;
    },

    checkCorrectLoaded: function(func) {
        var popup = this;
        if (popup.isLoaded && (popup._iframe.style.height == "0px" || popup._iframe.style.width == "0px")) {
            this.isLoaded = false;
        }
        if (!this.isLoaded) {
            if (!this.isLoading) {
                this.reload();
            }
            if (typeof func != "undefined") {
                setTimeout(func, 10);
            }
            return false;
        }
        return true;
    },

    _baseOpen: function(callback, top, left) {
        var popup = this;
        
        if(!this.checkCorrectLoaded(function() { popup._baseOpen(callback, top, left); })) {
            return;
        }
        
        var element = this.get_element();
        if (typeof left != "undefined") this._left = parseInt(left);
        if (typeof top != "undefined") this._top = parseInt(top);

        element.style.top = this._top + "px";
        element.style.left = this._left + "px";

        setTimeout(function() {
            if (typeof callback == "function") {
                popup._onDocumentLoaded(callback);
            }
            popup.isOpened = true;
        }, 0);
    },

    open: function(callback, top, left) {
        this._baseOpen(callback, top, left);
    },

    close: function(callback) {
        var element = this.get_element();
        this.isOpened = false;

        element.style.top = "-2000px";
        element.style.left = "-2000px";

        if (typeof callback == "function") {
            callback();
        }
    },

    reload: function() {
        this.isLoading = true;
        var element = this.get_element();
        var _parentNode_ = element.parentNode;
        document.body.appendChild(element);
        _parentNode_.appendChild(this.get_element());
        this._doc = this._iframe.contentWindow.document;
        this._doc.open();
        var html = new Sys.StringBuilder();

        html.append("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\"><html><head>");
        if (this._cssPath.length > 0) {
            html.append("<link rel=\"stylesheet\" href=\"" + this._cssPath + "\" media=\"all\" />");
        }
        html.append("<script>var __loaded__ = false;</script></head><body style='margin:0px; padding:0px; border-width:0px;' onload='__loaded__ = true;'>");
        if (this._autoDimensions) {
            html.append("<table cellspacing='0' cellpadding='0' border='0'><tr><td>");
        }
        html.append(this._initialContent);
        if (this._autoDimensions) {
            html.append("</td></tr></table>");
        }
        html.append("</body></html>");

        this._doc.write(html.toString());
        this._doc.close();

        this.isLoaded = false;
        this._afterReload();
    },

    _afterReload: function() {
        var contentWindow = this._iframe.contentWindow;
        var popup = this;
        this.isLoaded = contentWindow.__loaded__;

        if (!(popup._doc.body && popup._doc.body.innerHTML)) {
            this.isLoaded = false;
        }

        if (!this.isLoaded) {
            setTimeout(function() { popup._afterReload() }, 10); // waiting for loading
            return;
        }

        this.isLoaded = false;
        contentWindow.popupMediator = {};
        contentWindow.popupMediator.registeredFields = this._registeredFields;
        contentWindow.popupMediator.registeredHandlers = this._registeredHandlers;

        contentWindow.popupMediator.get_callMethodByName = function(name) {
            var handlers = contentWindow.popupMediator.registeredHandlers;
            for (var i = 0; i < handlers.length; i++) {
                var handler = handlers[i];
                if (handler.name == name) {
                    return handler.callMethod;
                }
            }
            return null;
        };

        contentWindow.popupMediator.set_callMethodByName = function(name, value) {
            var handlers = contentWindow.popupMediator.registeredHandlers;
            for (var i = 0; i < handlers.length; i++) {
                var handler = handlers[i];
                if (handler.name == name) {
                    handler.callMethod = value;
                }
            }
        };

        contentWindow.popupMediator.getField = function(name) {
            var registeredFields = contentWindow.popupMediator.registeredFields;
            for (var i = 0; i < registeredFields.length; i++) {
                var registeredField = registeredFields[i];
                if (registeredField.name == name) {
                    return contentWindow.document.getElementById(registeredField.clientID);
                }
            }
            return null;
        };

        contentWindow.Sys = Sys;

        for (var i = 0; i < this._registeredHandlers.length; i++) {
            $find(this._registeredHandlers[i].clientID).activate(contentWindow.document.getElementById(this._registeredHandlers[i].clientID));
        }


        if (Sys.Extended.UI.HTMLEditor.isIE) {
            popup._doc.onselectstart = function() {
                var event = popup._iframe.contentWindow.event;
                var tagName = event.srcElement.tagName.toUpperCase();
                if (tagName == "INPUT" || tagName == "TEXTAREA") return true;
                return false;
            };
        } else {
            popup._doc.onmousedown = function disableselect(e) {
                var tagName = e.target.tagName.toUpperCase();
                if (tagName == "INPUT" || tagName == "TEXTAREA" || tagName == "SELECT") return true;
                if (Sys.Extended.UI.HTMLEditor.isSafari)
                    if (tagName == "TABLE" || tagName == "TR" || tagName == "TD" || tagName == "DIV") return true;
                return false;
            };

            var aInp = popup._doc.getElementsByTagName('input');
            for (var i = 0; i < aInp.length; i++) {
                aInp[i].setAttribute('autocomplete', 'off')
            }
        }

        if (this._autoDimensions) {
            popup._iframe.style.height = "1000px";
            popup._iframe.style.width = "1000px";
            setTimeout(function() {
                popup._iframe.style.height = popup._doc.body.firstChild.offsetHeight + "px";
                popup._iframe.style.width = popup._doc.body.firstChild.offsetWidth + "px";
                popup.isLoaded = true;
                popup.isLoading = false;
            }, 0);
        } else {
            popup.isLoaded = true;
            popup.isLoading = false;
        }
    },

    _onDocumentLoaded: function(callback) {
        var popup = this;
        if (!this.isLoaded) {
            setTimeout(function() { popup._onDocumentLoaded(callback) }, 10); // waiting for loading
            return;
        }
        this.isLoaded = true;
        callback(this._iframe.contentWindow);
    },

    initialize: function() {
        this.__appLoaded__ = false;
        Sys.Extended.UI.HTMLEditor.Popups.Popup.callBaseMethod(this, "initialize");
        Sys.Application.add_load(this._app_onload$delegate);
    },

    dispose: function() {
        Sys.Application.remove_load(this._app_onload$delegate);
        if (this.isOpened) {
            this.close();
        }
        Sys.Extended.UI.HTMLEditor.Popups.Popup.callBaseMethod(this, "dispose");
    },

    _app_onload: function(sender, e) {
        if (this.__appLoaded__) return;
        this.__appLoaded__ = true;
        var element = this.get_element();
        if (Sys.Extended.UI.HTMLEditor.isReallyVisible(element)) {
            this._parentNode_ = element.parentNode;
            this.reload();
        }
    }
}

Sys.Extended.UI.HTMLEditor.Popups.Popup.registerClass("Sys.Extended.UI.HTMLEditor.Popups.Popup", Sys.UI.Control);
�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.Popups");

Sys.Extended.UI.HTMLEditor.Popups.LinkProperties = function(element) {
    Sys.Extended.UI.HTMLEditor.Popups.LinkProperties.initializeBase(this, [element]);
    
    this._defaultTarget = "_self";
    this._targetTextHolder = null;
    this._urlTextHolder = null;
}

Sys.Extended.UI.HTMLEditor.Popups.LinkProperties.prototype = {
    get_defaultTarget : function() {
        return this._defaultTarget;
    },
    set_defaultTarget : function(value) {
        this._defaultTarget = value;
    }
}

Sys.Extended.UI.HTMLEditor.Popups.LinkProperties.registerClass("Sys.Extended.UI.HTMLEditor.Popups.LinkProperties", Sys.Extended.UI.HTMLEditor.Popups.OkCancelAttachedTemplatePopup);
�rSys.Extended.UI.HTMLEditor.MSIE_list=function(r){var f="LI",h=false,a=null,m=this,k=m.get_paragraphs(),j=m.getSelectionAfterOperation(k),e=a,c=[],g=m,b=a,d=[],n=r.toUpperCase(),q=h;function i(){if(b!=a){var e;e=b.cloneNode(h);b.parentNode.insertBefore(e,b);while(b.firstChild!=d[0])e.appendChild(b.firstChild);e.firstChild==a&&e.parentNode.removeChild(e);if(b.tagName.toUpperCase()==n)for(var k=0;k<d.length;k++){var c=d[k];if(c.nodeType==1&&c.tagName&&c.tagName.toUpperCase()==f){var p=h;b.parentNode.insertBefore(c,b);if(c.style.textAlign=="")c.style.textAlign=b.style.textAlign;if(b.childNodes.length==0&&k==d.length-1){b.parentNode.removeChild(b);b=a}if(c.style.textAlign==""||c.style.textAlign.toLowerCase()=="left"&&!g.rtlState()||c.style.textAlign.toLowerCase()=="right"&&g.rtlState()){p=g.tryUnWrap(c,j);if(p)q=true}if(!p){for(var l=g._doc.createElement(g.dfltBlockElement),o=c.attributes,m=0;m<o.length;++m){var i=o.item(m);if(!i.specified)continue;if(i.name.toLowerCase()=="style")continue;l.setAttribute(i.name,i.value)}l.style.cssText=c.style.cssText;if(l.tagName.toUpperCase()=="P")l.style.margin="0px";while(c.firstChild)l.appendChild(c.firstChild);c.parentNode.insertBefore(l,c);c.parentNode.removeChild(c)}}else b.parentNode.insertBefore(c,b)}else{for(var e=g._doc.createElement(n),o=b.attributes,m=0;m<o.length;++m){var i=o.item(m);if(!i.specified)continue;if(i.name.toLowerCase()=="style")continue;e.setAttribute(i.name,i.value)}e.style.cssText=b.style.cssText;b.parentNode.insertBefore(e,b);for(var k=0;k<d.length;k++){var c=d[k];e.appendChild(c)}}if(b!=a){e=b.cloneNode(h);b.parentNode.insertBefore(e,b);while(b.firstChild)e.appendChild(b.firstChild);e.firstChild==a&&e.parentNode.removeChild(e);b.parentNode.removeChild(b)}}b=a;d=[]}function p(){var t="BR",E=e.firstChild,F=e.lastChild,q=e.tagName.toUpperCase();if(!Sys.Extended.UI.HTMLEditor.isInlineElement(e)&&c[0][0]==E&&c[c.length-1][c[c.length-1].length-1]==F&&(q=="OL"||q=="UL"||q=="DL"||q==f||(q=="P"||q=="DIV"||Sys.Extended.UI.HTMLEditor.isHeader(e))&&q==f)){i();d=[];if(q==f){b=e.parentNode;d.push(e)}else if(q=="P"||q=="DIV"||Sys.Extended.UI.HTMLEditor.isHeader(e)){b=e.parentNode.parentNode;d.push(e.parentNode)}else{b=e;for(var s=0;s<c.length;s++)for(var r=c[s],m=0;m<r.length;m++)d.push(r[m])}i()}else if(q==f&&c.length<k.length){if(b!=e.parentNode){i();b=e.parentNode;d=[]}d.push(e)}else if(q=="OL"||q=="UL"||q=="DL"){i();b=e;d=[];for(var s=0;s<c.length;s++)for(var r=c[s],m=0;m<r.length;m++)d.push(r[m]);i()}else{var l=a,o=a;function v(){if(l!=a)if(l.childNodes==1&&(l.firstChild==j[0]||l.firstChild==j[1])){l.parentNode.insertBefore(l.firstChild,l);l.parentNode.removeChild(l)}l=a}b!=a&&i();var y="";if(c.length==1&&c[0].length==1&&c[0][0].nodeType==1&&c[0][0].tagName)y=c[0][0].tagName.toUpperCase();if(y=="OL"||y=="UL"||y=="DL"){var p=c[0][0];b=p;d=[];for(var s=0;s<p.childNodes.length;s++){var H=p.childNodes.item(s);d.push(H)}i()}else for(var s=0;s<c.length;s++){for(var r=c[s],m=0;m<r.length;m++){var p=r[m],z=p.tagName?p.tagName.toUpperCase():"";if(o==a){o=g._doc.createElement(n);p.parentNode.insertBefore(o,p)}if(!Sys.Extended.UI.HTMLEditor.isInlineElement(p)&&z!=t){l&&l.firstChild&&v();if(l==a){l=g._doc.createElement(f);o.appendChild(l)}l.appendChild(p);v()}else{if(l==a){l=g._doc.createElement(f);o.appendChild(l)}var C=r[r.length-1]==j[1]?r.length-1:r.length,D=r[0]==j[0]?1:0;if(z==t&&m==C-1&&m==D)if(Sys.Extended.UI.HTMLEditor.isIE){l.appendChild(g._doc.createTextNode(String.fromCharCode(160)));p.parentNode.removeChild(p)}else l.appendChild(p);else if(z==t&&m==C-1&&m>D)p.parentNode.removeChild(p);else l.appendChild(p);if(z==t&&m==r.length-1){v();l=a}if(p==j[1]&&m==r.length-1){v();l=a}}}l&&l.firstChild&&v()}if(o!=a){for(var u=[],m=0;m<o.childNodes.length;m++)u.push(o.childNodes.item(m).style.textAlign);for(var w=1;w<u.length;w++)if(u[w-1]!=u[w])break;if(w==u.length){for(var G=u[0]=="left"&&!g.rtlState()||u[0]=="right"&&g.rtlState()?"":u[0],m=0;m<o.childNodes.length;m++)o.childNodes.item(m).style.textAlign="";o.style.textAlign=G}}if(o!=a)if(o.parentNode.tagName.toUpperCase()=="P"&&o.parentNode.childNodes.length==1){var x=o.parentNode,A=x.cloneNode(h);x.parentNode.insertBefore(o,x);x.parentNode.removeChild(x);if(o.childNodes.length==1){var B=o.firstChild;while(B.firstChild)A.appendChild(B.firstChild);B.appendChild(A)}else delete A}}}for(var o=0;o<k.length;o++){var l=k[o];if(l.length>0){if(l[0].parentNode!=e){c.length>0&&p();c=[];e=l[0].parentNode}c.push(l)}}c.length>0&&p();b!=a&&i();m.setSelectionAfterOperation(j,q)};Sys.Extended.UI.HTMLEditor.MSIE_justify=function(e,u,p){var a="",k=false,g=true,c=null,o=this,r=o.get_paragraphs(),h=o.getSelectionAfterOperation(r),b=c,f=[],j=o,d=typeof u!="undefined"&&u?g:k,i=typeof p=="string"?g:k,l=typeof p=="string"?p:a,m=k;function q(a){if(a!=c)if(a.childNodes==1&&(a.firstChild==h[0]||a.firstChild==h[1])){a.parentNode.insertBefore(a.firstChild,a);a.parentNode.removeChild(a)}}function t(){var H="TABLE",u="0px",D="LI",C="remain",s="left",o="P",z="DIV",y="align",U=b.firstChild,V=b.lastChild,T=k,x;if(b.tagName&&!Sys.Extended.UI.HTMLEditor.isInlineElement(b)&&f[0][0]==U&&f[f.length-1][f[f.length-1].length-1]==V){x=b.tagName.toUpperCase();if(x!="TD"&&x!="TH"&&x!="FIELDSET"&&x!="LEGEND")T=g}if(T){var L=a;if(b.getAttribute(y)&&b.getAttribute(y).length>0)L=b.getAttribute(y);if(b.align&&b.align.length>0)L=b.align;if(b.style.textAlign&&b.style.textAlign.length>0)L=b.style.textAlign;b.align=a;b.setAttribute(y,a);b.removeAttribute(y);if((x==z||x==o||Sys.Extended.UI.HTMLEditor.isHeader(b))&&e==s&&d){if(j.tryUnWrap(b,h,d))m=g}else{if(e!=C)if(!(e==s&&d)||x==D&&b.parentNode.style.textAlign.length>0)b.style.textAlign=e;else b.style.textAlign=a;if(d)b.style.margin=x==o?u:a;if(x==D){for(var t=b.parentNode,w=[],F=0;F<t.childNodes.length;F++)t.childNodes.item(F).nodeType==1&&w.push(t.childNodes.item(F).style.textAlign);for(var A=1;A<w.length;A++)if(w[A-1]!=w[A])break;if(A==w.length){for(var L=w[0]==s&&d?a:w[0],r=0;r<t.childNodes.length;r++)if(t.childNodes.item(r).nodeType==1){t.childNodes.item(r).style.textAlign=a;if(d)t.childNodes.item(r).style.margin=t.childNodes.item(r).tagName.toUpperCase()==o?u:a}t.style.textAlign=L}}if((x==z||x==o||Sys.Extended.UI.HTMLEditor.isHeader(b))&&i&&l.toUpperCase()!=x){for(var E=j._doc.createElement(l),M=b.attributes,K=0;K<M.length;++K){var G=M.item(K);if(!G.specified)continue;if(G.name.toLowerCase()=="style")continue;E.setAttribute(G.name,G.value)}E.style.cssText=b.style.cssText;while(b.firstChild)E.appendChild(b.firstChild);b.parentNode.insertBefore(E,b);b.parentNode.removeChild(b)}}}else for(var v=c,Q=0;Q<f.length;Q++){if(!i)v=c;for(var B=f[Q],r=0;r<B.length;r++){var n=B[r],p=n.nodeType==1&&n.tagName?n.tagName.toUpperCase():c;if(p!=c&&(p=="UL"||p=="OL"||p=="DL"||p==z||Sys.Extended.UI.HTMLEditor.isHeader(n)||p==o||p==D||p==H)){q(v);v=c;if(e!=C)if(p!=H&&!d)n.style.textAlign=e;if(d)n.style.margin=p==o?u:a;if(p=="UL"||p=="OL"||p=="DL"){for(var O=0;O<n.childNodes.length;O++){var J=n.childNodes.item(O);if(J.nodeType==1){J.style.textAlign=a;if(d)J.style.margin=J.tagName.toUpperCase()==o?u:a;for(var P=0;P<J.childNodes.length;P++){var I=J.childNodes.item(P);if(I.nodeType==1&&I.tagName){var N=I.tagName.toUpperCase();if(d)I.style.margin=N==o?u:a;if(N==z||N==o||Sys.Extended.UI.HTMLEditor.isHeader(I))if(j.tryUnWrap(I,h,d))m=g}}}}if(e==s&&d)n.style.textAlign=a;continue}else if(p==D){if(e!=C)if(!(e==s&&d)||n.parentNode.style.textAlign.length>0)n.style.textAlign=e;else n.style.textAlign=a;if(d)n.style.margin=p==o?u:a;for(var t=n.parentNode,w=[],F=0;F<t.childNodes.length;F++)t.childNodes.item(F).nodeType==1&&w.push(t.childNodes.item(F).style.textAlign);for(var A=1;A<w.length;A++)if(w[A-1]!=w[A])break;if(A==w.length){for(var L=w[0]==s&&d?a:w[0],r=0;r<t.childNodes.length;r++)if(t.childNodes.item(r).nodeType==1){t.childNodes.item(r).style.textAlign=a;if(d)t.childNodes.item(r).style.margin=t.childNodes.item(r).tagName.toUpperCase()==o?u:a}t.style.textAlign=L}continue}else if(p==H)if(e!=C)if(!(e==s&&d))n.align=e;else{n.align=a;n.removeAttribute(y)}if((p==z||p==o||Sys.Extended.UI.HTMLEditor.isHeader(n))&&e==s&&d)if(j.tryUnWrap(n,h,d))m=g;if((p==z||p==o||Sys.Extended.UI.HTMLEditor.isHeader(n))&&i&&l.toUpperCase()!=p){for(var E=j._doc.createElement(l),M=n.attributes,K=0;K<M.length;++K){var G=M.item(K);if(!G.specified)continue;if(G.name.toLowerCase()=="style")continue;E.setAttribute(G.name,G.value)}E.style.cssText=n.style.cssText;while(n.firstChild)E.appendChild(n.firstChild);n.parentNode.insertBefore(E,n);n.parentNode.removeChild(n)}}else if(!(e==s&&d)||i){if(v==c){v=j._doc.createElement(i?l:j.dfltBlockElement);if(j.dfltBlockElement.toUpperCase()==o&&!i)v.style.margin=u;if(!i)v.style.textAlign=e;n.parentNode.insertBefore(v,n)}var R=B[B.length-1]==h[1]?B.length-1:B.length,S=B[0]==h[0]?1:0;if(p=="BR"&&r==R-1&&r==S)if(Sys.Extended.UI.HTMLEditor.isIE){v.appendChild(j._doc.createTextNode(String.fromCharCode(160)));n.parentNode.removeChild(n)}else v.appendChild(n);else if(p=="BR"&&r==R-1&&r>S&&(!i||n.nextSibling!=c&&n.nextSibling==h[1]))n.parentNode.removeChild(n);else v.appendChild(n);if(p=="BR"&&r==B.length-1&&!i){q(v);v=c}if(n==h[1]&&r==B.length-1){q(v);v=c}}}}}for(var s=0;s<r.length;s++){var n=r[s];if(n.length>0){if(n[0].parentNode!=b){f.length>0&&t();f=[];b=n[0].parentNode}f.push(n)}}f.length>0&&t();o.setSelectionAfterOperation(h,m)};Sys.Extended.UI.HTMLEditor.MSIE_indent=function(s){var h="px",a="",e="P",c=null,m=this,p=m.get_paragraphs(),i=m.getSelectionAfterOperation(p),b=c,f=[],d=m,k=false;function j(a){if(a.nodeType==1){var b=!d.rtlState()?a.style.marginLeft:a.style.marginRight;if(b.length>0)return parseInt(b)}return 0}function g(c,b){if(c.nodeType==1){if(c.tagName.toUpperCase()==e&&b==a)b="0px";if(!d.rtlState())c.style.marginLeft=b;else c.style.marginRight=b}}function n(b){if(s)g(b,j(b)+40+h);else if(b.tagName.toUpperCase()==e)if(j(b)>=40)g(b,j(b)-40+h);else g(b,"0px");else if(j(b)>40)g(b,j(b)-40+h);else g(b,a)}function o(a){if(a!=c)if(a.childNodes==1&&(a.firstChild==i[0]||a.firstChild==i[1])){a.parentNode.insertBefore(a.firstChild,a);a.parentNode.removeChild(a)}}function r(){var z="LI",y="DIV",B="right",A="left",u="align",N=b.firstChild,O=b.lastChild;if(b.tagName&&!Sys.Extended.UI.HTMLEditor.isInlineElement(b)&&f[0][0]==N&&f[f.length-1][f[f.length-1].length-1]==O){var m=a;if(b.getAttribute(u)&&b.getAttribute(u).length>0)m=b.getAttribute(u);if(b.align&&b.align.length>0)m=b.align;if(b.style.textAlign&&b.style.textAlign.length>0)m=b.style.textAlign;if(m.toLowerCase()==A&&!d.rtlState()||m.toLowerCase()==B&&d.rtlState())m=a;b.align=a;b.setAttribute(u,a);b.removeAttribute(u);n(b);var E=b.tagName.toUpperCase();if((E==y||E==e||Sys.Extended.UI.HTMLEditor.isHeader(b))&&m==a){if(d.tryUnWrap(b,i))k=true}else{if(m!=a||E==z&&b.parentNode.style.textAlign.length>0)b.style.textAlign=m;else b.style.textAlign=a;if(E==z){for(var v=b.parentNode,r=[],D=0;D<v.childNodes.length;D++)r.push(j(v.childNodes.item(D)));for(var w=1;w<r.length;w++)if(r[w-1]!=r[w])break;if(w==r.length){for(var M=r[0]==0?a:r[0]+h,q=0;q<v.childNodes.length;q++)g(v.childNodes.item(q),a);g(v,M)}}}}else for(var I=0;I<f.length;I++)for(var t=c,x=f[I],q=0;q<x.length;q++){var l=x[q],p=l.nodeType==1&&l.tagName?l.tagName.toUpperCase():c;if(p!=c&&(p=="UL"||p=="OL"||p=="DL"||p==y||Sys.Extended.UI.HTMLEditor.isHeader(l)||p==e||p==z)){o(t);t=c;n(l);if(p=="UL"||p=="OL"||p=="DL"){for(var G=0;G<l.childNodes.length;G++){var F=l.childNodes.item(G);if(F.nodeType==1){g(F,a);for(var H=0;H<F.childNodes.length;H++){var C=F.childNodes.item(H),m=C.nodeType==1?l.style.textAlign:a;if(m.toLowerCase()==A&&!d.rtlState()||m.toLowerCase()==B&&d.rtlState())m=a;if(C.nodeType==1){g(C,a);if(m==a&&C.tagName){var K=C.tagName.toUpperCase();if(K==y||K==e)if(d.tryUnWrap(C,i))k=true}}}}}continue}else if(p==z){for(var v=l.parentNode,r=[],D=0;D<v.childNodes.length;D++)r.push(j(v.childNodes.item(D)));for(var w=1;w<r.length;w++)if(r[w-1]!=r[w])break;if(w==r.length){for(var M=r[0]==0?a:r[0]+h,q=0;q<v.childNodes.length;q++)g(v.childNodes.item(q),a);g(v,M)}continue}var m=l.style.textAlign;if(m.toLowerCase()==A&&!d.rtlState()||m.toLowerCase()==B&&d.rtlState())m=a;if((p==y||p==e||Sys.Extended.UI.HTMLEditor.isHeader(l))&&m==a)if(d.tryUnWrap(l,i))k=true}else if(s){if(t==c){t=d._doc.createElement(d.dfltBlockElement);if(d.dfltBlockElement.toUpperCase()==e)t.style.margin="0px";n(t);l.parentNode.insertBefore(t,l)}var J=x[x.length-1]==i[1]?x.length-1:x.length,L=x[0]==i[0]?1:0;if(p=="BR"&&q==J-1&&q==L)if(Sys.Extended.UI.HTMLEditor.isIE){t.appendChild(d._doc.createTextNode(String.fromCharCode(160)));l.parentNode.removeChild(l)}else t.appendChild(l);else if(p=="BR"&&q==J-1&&q>L)l.parentNode.removeChild(l);else t.appendChild(l);if(p=="BR"&&q==x.length-1){o(t);t=c}if(l==i[1]&&q==x.length-1){o(t);t=c}}}}for(var q=0;q<p.length;q++){var l=p[q];if(l.length>0){if(l[0].parentNode!=b){f.length>0&&r();f=[];b=l[0].parentNode}f.push(l)}}f.length>0&&r();m.setSelectionAfterOperation(i,k)};Sys.Extended.UI.HTMLEditor.getSelectionAfterOperation=function(a){if(a.length==0)return[];var e=this._doc.createElement("SPAN"),d=this._doc.createElement("SPAN"),f=a[0][0],b=a[a.length-1][a[a.length-1].length-1];if(f==b&&b.nodeType==1&&b.childNodes.length==0&&Sys.Extended.UI.HTMLEditor.canHaveChildren(b)){b.appendChild(e);b.appendChild(d)}else{var g=Sys.Extended.UI.HTMLEditor._getReallyFirst(f);g.parentNode.insertBefore(e,g);if(g==f){var h=[];h.push(e);for(var i=0;i<a[0].length;i++)h.push(a[0][i]);a[0]=h}var c=Sys.Extended.UI.HTMLEditor._getReallyLast(b);if(c.nextSibling)c.parentNode.insertBefore(d,c.nextSibling);else c.parentNode.appendChild(d);c==b&&a[a.length-1].push(d)}return[e,d]};Sys.Extended.UI.HTMLEditor.setSelectionAfterOperation=function(m,p){var a=null,c=this;if(m.length==0)return;var d=m[0],b=m[1],g=c._getSelection(),f=a,j=a;if(Sys.Extended.UI.HTMLEditor.isIE){g.empty();g=c._getSelection();var h=c._createRange(g),l=c._createRange(g);try{if(d!=a&&b!=a&&d.nextSibling==b){f=c._doc.createTextNode(" ");b.parentNode.insertBefore(f,b)}c._TcurrentFormat=a;d!=a&&h.moveToElementText(d);b!=a&&l.moveToElementText(b);if(d!=a&&b!=a){h.setEndPoint("EndToStart",l);h.select();if(f!=a){h.collapse(false);h.select();f.parentNode.removeChild(f)}}else if(d!=a)h.select();else b!=a&&l.select()}catch(r){}}else try{var e,i=d.nextSibling,q=b.previousSibling;c._TcurrentFormat=a;if(i==q&&i.nodeType==1&&i.tagName.toUpperCase()=="BR"){var o=Sys.Extended.UI.HTMLEditor.__getIndex(i);e=c._doc.createRange();e.setStart(i.parentNode,o);e.setEnd(i.parentNode,o)}else{f=c._doc.createTextNode("");j=c._doc.createTextNode("");d.parentNode.insertBefore(f,d);b.parentNode.insertBefore(j,b);e=c._doc.createRange();e.setStart(f,0);e.setEnd(j,0)}c._removeAllRanges(g);c._selectRange(g,e)}catch(r){}var n=Sys.Extended.UI.HTMLEditor._commonTotalParent(d==a?b:d,b==a?d:b),k=a;if(n!=a)k=n.parent;d!=a&&d.parentNode.removeChild(d);b!=a&&b.parentNode.removeChild(b);if(p&&k!=a){Sys.Extended.UI.HTMLEditor.spanJoiner(k,c._doc);if(!Sys.Extended.UI.HTMLEditor.isIE&&f!=a&&j!=a){var e=c._doc.createRange();e.setStart(f,0);e.setEnd(j,0);c._removeAllRanges(g);c._selectRange(g,e)}}};Sys.Extended.UI.HTMLEditor.get_paragraphs=function(){var a=this;a._TcurrentFormat=null;var b=a.getPseudoP();if(b.length==0)try{var e="<span id='"+Sys.Extended.UI.HTMLEditor.smartClassName+"_ll'></span><span id='"+Sys.Extended.UI.HTMLEditor.smartClassName+"_rr'></span><br>";a.insertHTML(e);var c=a._doc.getElementById(Sys.Extended.UI.HTMLEditor.smartClassName+"_ll"),d=a._doc.getElementById(Sys.Extended.UI.HTMLEditor.smartClassName+"_rr"),f=a._TcurrentFormat;a._TcurrentFormat=null;a.setSelectionAfterOperation([c,d],false);a._TcurrentFormat=f;b=a.getPseudoP()}catch(g){}return b};Sys.Extended.UI.HTMLEditor.getPseudoP=function(){var y="<span id='",n="SPAN",c=null,d=this,s=[];try{var l=d._getSelection(),j=d._createRange(l),q=Sys.Extended.UI.HTMLEditor.smartClassName+"_right",v=Sys.Extended.UI.HTMLEditor.smartClassName+"_left",h=c,g=c;if(Sys.Extended.UI.HTMLEditor.isIE){if(l.type.toLowerCase()!="control"){h=j.duplicate();g=j.duplicate();h.setEndPoint("EndToStart",j);g.setEndPoint("StartToEnd",j)}}else{h=j.cloneRange();g=j.cloneRange();h.setEnd(h.startContainer,h.startOffset);g.setStart(g.endContainer,g.endOffset)}var a=c,b=c;if(Sys.Extended.UI.HTMLEditor.isIE&&l.type.toLowerCase()=="control"){var o=j.item(0),i;i=d._doc.createElement(n);i.id=v;o.parentNode.insertBefore(i,o);i=d._doc.createElement(n);i.id=q;if(o.nextSibling==c)o.parentNode.appendChild(i);else o.parentNode.insertBefore(i,o.nextSibling)}else{if(!d.insertHTML(y+q+"'/>",g))return[];if(!d.insertHTML(y+v+"'/>",h)){var x=d._doc.getElementById(q);if(x!=c){p=x.parentNode;p.removeChild(x)}return[]}}a=d._doc.getElementById(v);b=d._doc.getElementById(q);if(a!=c&&b!=c)while(a.nextSibling==c)if(a.parentNode.nextSibling)a.parentNode.parentNode.insertBefore(a,a.parentNode.nextSibling);else a.parentNode.parentNode.appendChild(a);if(a!=c&&b!=c){while(b.previousSibling==c)b.parentNode.parentNode.insertBefore(b,b.parentNode);if(b.previousSibling.nodeType==1){var A=b.previousSibling.tagName.toUpperCase();if(A!="BR"&&A!="IMG"){var t=Sys.Extended.UI.HTMLEditor._getReallyLast(b.previousSibling);if(t.nodeType==1&&Sys.Extended.UI.HTMLEditor.canHaveChildren(t))t.appendChild(b);else t.parentNode.appendChild(b)}}b.previousSibling&&b.previousSibling.nodeType==1&&b.previousSibling.tagName.toUpperCase()=="BR"&&b.parentNode.insertBefore(b,b.previousSibling)}if(a==c){var f=d._doc.createElement(n);f.id=v;b.parentNode.insertBefore(f,b);a=f}if(b==c){var f=d._doc.createElement(n);f.id=q;if(a.nextSibling)a.parentNode.insertBefore(f,a.nextSibling);else a.parentNode.appendChild(f);b=f}if(a!=c&&b!=c)if(a.parentNode==b)b.parentNode.insertBefore(a,b);else if(b.parentNode==a)if(a.nextSibling!=c)a.parentNode.insertBefore(b,a.nextSibling);else a.parentNode.appendChild(b);while(a.nextSibling!=c&&a.nextSibling.nodeType==3&&(""+a.nextSibling.data+"").length==0)a.parentNode.removeChild(a.nextSibling);if(d._TcurrentFormat==c&&a!=c&&b!=c&&a.nextSibling==b){var k=b.parentNode;d._TcurrentFormat=c;while(k&&k.tagName.toUpperCase()!="BODY"&&Sys.Extended.UI.HTMLEditor.isStyleTag(k.tagName)){if(k.tagName.toUpperCase()!="A"){var p=k.cloneNode(false);if(d._TcurrentFormat==c)d._TcurrentFormat=p;else{p.appendChild(d._TcurrentFormat);d._TcurrentFormat=p}}k=k.parentNode}if(d._TcurrentFormat){var C=d._doc.createElement("span");C.appendChild(d._TcurrentFormat);d._TcurrentFormat=C.innerHTML}}var e=a;while(e&&e.tagName&&Sys.Extended.UI.HTMLEditor.isStyleTag(e.tagName)&&e.tagName.toUpperCase()!="A")e=e.parentNode;if(e!=c&&e.tagName.toUpperCase()=="P")if(e.firstChild!=c)e.insertBefore(a,e.firstChild);else e.appendChild(a);else Sys.Extended.UI.HTMLEditor.positionInParagraph(a,a.previousSibling,true,a.parentNode);e=b;while(e&&e.tagName&&Sys.Extended.UI.HTMLEditor.isStyleTag(e.tagName)&&e.tagName.toUpperCase()!="A")e=e.parentNode;if(e!=c&&e.tagName.toUpperCase()=="P")e.appendChild(b);else Sys.Extended.UI.HTMLEditor.positionInParagraph(b,b.nextSibling,false,b.parentNode);s=d.getPseudoP_Recur(a,b,0);var z=a.parentNode.tagName.toUpperCase();if(s.length==0&&a.previousSibling==c&&b.nextSibling==c&&a.nextSibling==b&&(z=="P"||llpTagName=="DIV"||z=="LI"))s=[[a.parentNode]];if(Sys.Extended.UI.HTMLEditor.isIE){l.empty();l=d._getSelection();var r=d._createRange(l),w=d._createRange(l);try{a!=c&&r.moveToElementText(a);b!=c&&w.moveToElementText(b);if(a!=c&&b!=c){r.setEndPoint("EndToEnd",w);r.select()}else if(a!=c)r.select();else b!=c&&w.select()}catch(E){}}a!=c&&a.parentNode.removeChild(a);b!=c&&b.parentNode.removeChild(b)}catch(E){for(var B=d._doc.getElementsByTagName(n),u=[],m=0;m<B.length;m++){var f=B[m];if(f.id&&f.id.length>0){var D=new RegExp(Sys.Extended.UI.HTMLEditor.smartClassName,"ig");D.test(f.id)&&u.push(f)}}for(var m=0;m<u.length;m++)u[m].parentNode.removeChild(u[m])}return s};Sys.Extended.UI.HTMLEditor.getPseudoP_Recur=function(u,p,t){var A="span",K="_left_",J="_right_",I="TABLE",z=true,k=null,r=this,n=[],b=u,h=p.nextSibling!=k&&p.nextSibling.tagName&&p.nextSibling.tagName.toUpperCase()=="BR"?p.nextSibling:p,j=k;if(b==k||h==k){if(b!=k)j=Sys.Extended.UI.HTMLEditor._commonTotalParent(b,b);if(h!=k)j=Sys.Extended.UI.HTMLEditor._commonTotalParent(h,h)}else j=Sys.Extended.UI.HTMLEditor._commonTotalParent(b,h);if(j!=k){b=Sys.Extended.UI.HTMLEditor.getContainer(j.parent.childNodes.item(j.indexFirst),b);h=Sys.Extended.UI.HTMLEditor.getContainer(j.parent.childNodes.item(j.indexLast),h);Sys.Extended.UI.HTMLEditor.unStyle(b);Sys.Extended.UI.HTMLEditor.unStyle(h);while(b.parentNode!=j.parent)b=b.parentNode;while(h.parentNode!=j.parent)h=h.parentNode;Sys.Extended.UI.HTMLEditor._moveTagsUp(b.nextSibling,h);j=k;if(u==k||p==k){if(u!=k)j=Sys.Extended.UI.HTMLEditor._commonTotalParent(u,u);if(p!=k)j=Sys.Extended.UI.HTMLEditor._commonTotalParent(p,p)}else j=Sys.Extended.UI.HTMLEditor._commonTotalParent(u,p);j!=k&&Sys.Extended.UI.HTMLEditor.spanJoiner(j.parent,r._doc,j.indexFirst,j.indexLast+1,z);function V(a){if(!Sys.Extended.UI.HTMLEditor.isInlineElement(a))return z;else if(a.tagName&&Sys.Extended.UI.HTMLEditor.isStyleTag(a.tagName)&&a.tagName.toUpperCase()!="A"&&!Sys.Extended.UI.HTMLEditor.isTempElement(a)){var b=a.firstChild;while(b!=k){nnnNext=b.nextSibling;var c=V(b);if(c)return z;b=nnnNext}}return false}var d=0,c=[],f=0;if(b.tagName&&h.tagName){var x=b.tagName.toUpperCase(),F=h.tagName.toUpperCase();if((x=="TD"||x=="TR")&&(F=="TD"||F=="TR")){while(b.tagName.toUpperCase()!=I)b=b.parentNode;h=b}else if((x=="DD"||x=="DT")&&(F=="DD"||F=="DT")){while(b.tagName&&b.tagName.toUpperCase()!="DL")b=b.parentNode;h=b}else if(x=="LI"&&F=="LI"){while(x!="UL"&&x!="OL"){b=b.parentNode;x=b.tagName?b.tagName.toUpperCase():k}h=b}}var l=u?u:p,m=p?p:u,a=b;while(z){if(!Sys.Extended.UI.HTMLEditor.isTempElement(a)){var Z=V(a);if(!Z){if(a.nodeType&&a.nodeType==3){var X=""+a.data+"";if(X.length==0||/^[\n\r]+$/.test(X)){var Y=a.nextSibling;a.parentNode.removeChild(a);if(a==h)break;a=Y;continue}}c[f]=a;f++}else if(a.tagName&&a.tagName.toUpperCase()=="BR"){c[f]=a;n[d]=c;d++;c=[];f=0}else if((a==h||a==b)&&!(a==h&&a==b?Sys.Extended.UI.HTMLEditor._reallyFirst(a,l)&&Sys.Extended.UI.HTMLEditor._reallyLast(a,m):Sys.Extended.UI.HTMLEditor._reallyFirst(a,l)||Sys.Extended.UI.HTMLEditor._reallyLast(a,m))){var G=a.tagName?a.tagName.toUpperCase():k;if(G==I||G=="TBODY"){var s=a;while(s.tagName.toUpperCase()!=I)s=s.parentNode;for(var R=0,L=0,S=s.rows.item(s.rows.length-1).cells.length-1,M=s.rows.length-1,i=0;i<s.rows.length;i++)for(var W=s.rows.item(i),y=0;y<W.cells.length;y++){var q=W.cells.item(y);if(Sys.Extended.UI.HTMLEditor._lookChild(q,l)>=0){R=y;L=i}if(Sys.Extended.UI.HTMLEditor._lookChild(q,m)>=0){S=y;M=i}}for(var i=L;i<=M;i++)for(var y=i==L?R:0;y<=(i==M?S:s.rows.item(i).cells.length-1);y++){var q=s.rows.item(i).cells.item(y);if(f>0){n[d]=c;d++;c=[];f=0}var B=Sys.Extended.UI.HTMLEditor._lookChild(q,l)>=0,C=Sys.Extended.UI.HTMLEditor._lookChild(q,m)>=0;if(B||C){var e=l,g=m,Q=Sys.Extended.UI.HTMLEditor.smartClassName+J+t,P=Sys.Extended.UI.HTMLEditor.smartClassName+K+t;if(B){g=r._doc.createElement(A);g.id=Q;q.appendChild(g)}if(C){e=r._doc.createElement(A);e.id=P;if(q.firstChild)q.insertBefore(e,q.firstChild);else q.appendChild(e)}for(var D=r.getPseudoP_Recur(e,g,t+1),v=0;v<D.length;v++){n[d]=D[v];d++}e!=l&&e.parentNode.removeChild(e);g!=m&&g.parentNode.removeChild(g)}else{for(var N=0,O=q.childNodes.length,w=N;w<O;w++){var E=q.childNodes.item(w);if(!Sys.Extended.UI.HTMLEditor.isTempElement(E)){c[f]=E;f++}}if(c.length>0){n[d]=c;d++;c=[];f=0}}}}else if(G=="UL"||G=="OL"||G=="DL"){for(var H=a,T=0,U=H.childNodes.length-1,i=0;i<H.childNodes.length;i++){var o=H.childNodes.item(i);if(o.nodeType==1){if(o==l||Sys.Extended.UI.HTMLEditor._lookChild(o,l)>=0)T=i;if(o==m||Sys.Extended.UI.HTMLEditor._lookChild(o,m)>=0)U=i}}for(var i=T;i<=U;i++){var o=H.childNodes.item(i);if(f>0){n[d]=c;d++;c=[];f=0}var B=Sys.Extended.UI.HTMLEditor._lookChild(o,l)>=0,C=Sys.Extended.UI.HTMLEditor._lookChild(o,m)>=0;if(B||C){var e=l,g=m,Q=Sys.Extended.UI.HTMLEditor.smartClassName+J+t,P=Sys.Extended.UI.HTMLEditor.smartClassName+K+t;if(B){g=r._doc.createElement(A);g.id=Q;o.appendChild(g)}if(C){e=r._doc.createElement(A);e.id=P;if(o.firstChild)o.insertBefore(e,o.firstChild);else o.appendChild(e)}for(var D=r.getPseudoP_Recur(e,g,t+1),v=0;v<D.length;v++){n[d]=D[v];d++}e!=l&&e.parentNode.removeChild(e);g!=m&&g.parentNode.removeChild(g)}else{for(var N=0,O=o.childNodes.length,w=N;w<O;w++){var E=o.childNodes.item(w);if(!Sys.Extended.UI.HTMLEditor.isTempElement(E)){c[f]=E;f++}}if(c.length>0){n[d]=c;d++;c=[];f=0}}}}else{var B=Sys.Extended.UI.HTMLEditor._lookChild(a,l)>=0,C=Sys.Extended.UI.HTMLEditor._lookChild(a,m)>=0;if(f>0){n[d]=c;d++;c=[];f=0}if(B||C){var e=l,g=m,Q=Sys.Extended.UI.HTMLEditor.smartClassName+J+t,P=Sys.Extended.UI.HTMLEditor.smartClassName+K+t;if(B){g=r._doc.createElement(A);g.id=Q;a.appendChild(g)}if(C){e=r._doc.createElement(A);e.id=P;if(a.firstChild)a.insertBefore(e,a.firstChild);else a.appendChild(e)}for(var D=r.getPseudoP_Recur(e,g,t+1),v=0;v<D.length;v++){n[d]=D[v];d++}e!=l&&e.parentNode.removeChild(e);g!=m&&g.parentNode.removeChild(g)}else{for(var N=0,O=a.childNodes.length,w=N;w<O;w++){var E=a.childNodes.item(w);if(!Sys.Extended.UI.HTMLEditor.isTempElement(E)){c[f]=E;f++}}if(c.length>0){n[d]=c;d++;c=[];f=0}}}}else{if(f>0){n[d]=c;d++;c=[];f=0}c[f]=a;n[d]=c;d++;c=[];f=0}}if(a==h)break;a=a.nextSibling}if(f>0)n[d]=c}return n};Sys.Extended.UI.HTMLEditor.unWrap=function(a,f){var d="BR",e=this;if(a.firstChild){while(a.firstChild&&a.firstChild.nodeType==3&&""+a.firstChild.data+""=="")a.removeChild(a.firstChild);var b=[];while(a.firstChild){a.firstChild!=f[0]&&a.firstChild!=f[1]&&b.push(a.firstChild);a.parentNode.insertBefore(a.firstChild,a)}if(b.length==0){var g=e._doc.createElement(d);a.parentNode.insertBefore(g,a)}if(Sys.Extended.UI.HTMLEditor.isIE&&b.length==1&&b[0].nodeType==3){var h=""+b[0].data+"";if(h.length==1&&h.charCodeAt(0)==160){var g=e._doc.createElement(d);b[0].parentNode.insertBefore(g,b[0]);b[0].parentNode.removeChild(b[0])}}while(a.nextSibling&&a.nextSibling.nodeType==3&&""+a.nextSibling.data+""=="")a.parentNode.removeChild(a.nextSibling);var c=a.previousSibling&&f[1]==a.previousSibling?f[1].previousSibling:a.previousSibling;if(c&&Sys.Extended.UI.HTMLEditor.isInlineElement(c))if(c.nodeType==1&&c.childNodes.length>0)c=Sys.Extended.UI.HTMLEditor._getReallyLast(c);if(Sys.Extended.UI.HTMLEditor.isInlineElement(c)&&a.nextSibling!=null){var g=e._doc.createElement(d);a.parentNode.insertBefore(g,a)}}else{var g=e._doc.createElement(d);a.parentNode.insertBefore(g,a)}a.parentNode.removeChild(a)};Sys.Extended.UI.HTMLEditor.tryUnWrap=function(b,m,e){var g="undefined",l=this;b.style.textAlign="";for(var h=0,i=b.attributes,f=0;f<i.length;++f){var j=i.item(f);if(!j.specified)continue;if(j.name.toLowerCase()=="style")continue;h++}var k=b.style.cssText,d=0,a,c=b.tagName.toUpperCase();if(!(typeof e!=g&&e))if(c!="LI")try{a=parseInt(Sys.Extended.UI.HTMLEditor.getStyle(b,"margin-top"));if(isNaN(a))a=c=="P"?1:0;d+=a;a=parseInt(Sys.Extended.UI.HTMLEditor.getStyle(b,"margin-bottom"));if(isNaN(a))a=c=="P"?1:0;d+=a;a=parseInt(Sys.Extended.UI.HTMLEditor.getStyle(b,"margin-right"));if(isNaN(a))a=c=="P"?1:0;d+=a;a=parseInt(Sys.Extended.UI.HTMLEditor.getStyle(b,"margin-left"));if(isNaN(a))a=c=="P"?1:0;d+=a}catch(n){d=1}b.style.margin="";if(h==0&&b.style.cssText.length==0&&d==0||typeof e!=g&&e&&c!="LI"){l.unWrap(b,m);return true}else{b.style.cssText=k;return false}};Sys.Extended.UI.HTMLEditor._queryCommandValue=function(n,o){var e="font-size",l="font-family",g=null,d=this,f=d._rangeStartEnd();if(f==g)return"";try{if(n.toLowerCase()=="backcolor"){var i=f.start;while(i){var j=Sys.Extended.UI.HTMLEditor.getStyle(i,"background-color").toLowerCase();if(j.length>0&&j!="transparent")return j;i=i.parentNode}return"#FFFFFF"}var c="none";switch(n.toLowerCase()){case"forecolor":c="color";break;case"fontname":c=l;break;case"fontsize":c=e}var b;if((c==e||c==l)&&d._FontNotSet){b="";var a=f.start;while(a!=g){if(c==e){if(a.style&&a.style.fontSize&&a.style.fontSize.length>0){b=a.style.fontSize;break}else if(a.tagName&&a.tagName.toUpperCase()=="FONT"&&a.size&&a.size.length>0){b=Sys.Extended.UI.HTMLEditor.fontSizeSeek(a.size);break}}else if(a.style&&a.style.fontFamily&&a.style.fontFamily.length>0){b=a.style.fontFamily;break}else if(a.tagName&&a.tagName.toUpperCase()=="FONT"&&a.face&&a.face.length>0){b=a.face;break}if(a.className&&a.className.length>0){b=Sys.Extended.UI.HTMLEditor.getStyle(a,c).toLowerCase();if(c==e)if(!Sys.Extended.UI.HTMLEditor.isIE)b=Sys.Extended.UI.HTMLEditor._TryTransformFromPxToPt(b,d,o);break}var h=a.tagName.toUpperCase();if(h=="BODY"||h=="TD")break;a=a.parentNode}}else{b=Sys.Extended.UI.HTMLEditor.getStyle(f.start,c).toLowerCase();if(c==e)if(!Sys.Extended.UI.HTMLEditor.isIE){b=Sys.Extended.UI.HTMLEditor._TryTransformFromPxToPt(b,d,o);var a=f.start;while(a!=g){if(a.style&&a.style.fontSize&&a.style.fontSize.length>0){b=a.style.fontSize;break}if(a.className&&a.className.length>0)break;var h=a.tagName.toUpperCase();if(h=="BODY"||h=="TD")break;a=a.parentNode}}}if(d._StyleForTyping!=g&&d._StyleForTyping.length>0)for(var k=0;k<d._StyleForTyping.length;k++){var m=d._StyleForTyping[k];if(m.name==c){b=m.value;break}}return b}catch(p){return""}};�Type.registerNamespace("Sys.Extended.UI.HTMLEditor");

Sys.Extended.UI.HTMLEditor.ActiveModeChangedArgs = function(oldMode, newMode, editPanel)     
{     
  if (arguments.length != 3) throw Error.parameterCount();     
  
  Sys.Extended.UI.HTMLEditor.ActiveModeChangedArgs.initializeBase(this);     
  this._oldMode = oldMode;     
  this._newMode = newMode;     
  this._editPanel = editPanel;     
}     
  
Sys.Extended.UI.HTMLEditor.ActiveModeChangedArgs.prototype =     
{     
  get_oldMode : function()     
  {     
    return this._oldMode;     
  },       
  get_newMode : function()     
  {     
    return this._newMode;     
  },
  get_editPanel : function()     
  {     
    return this._editPanel;     
  }     
}     
  
Sys.Extended.UI.HTMLEditor.ActiveModeChangedArgs.registerClass('Sys.Extended.UI.HTMLEditor.ActiveModeChangedArgs', Sys.EventArgs);
�Type.registerNamespace("Sys.Extended.UI.HTMLEditor");Sys.Extended.UI.HTMLEditor.ActiveModeType=function(){};Sys.Extended.UI.HTMLEditor.ActiveModeType.prototype={Design:0,Html:1,Preview:2};Sys.Extended.UI.HTMLEditor.ActiveModeType_checkValue=function(a){return a>=0&&a<=2?true:false};Sys.Extended.UI.HTMLEditor.ActiveModeType.registerEnum("Sys.Extended.UI.HTMLEditor.ActiveModeType",true);�F// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />

(function() {
var scriptName = "ExtendedFilteredTextBox";

function execute() {

Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.FilteredTextBoxBehavior = function(element) {
    /// <summary>
    /// The FilteredTextBoxBehavior is used to prevent invalid characters from being entered into a textbox
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement">
    /// The textbox element this behavior is associated with
    /// </param>
    Sys.Extended.UI.FilteredTextBoxBehavior.initializeBase(this, [element]);
    
    this._keypressHandler = null;
    this._changeHandler = null;
    
    this._intervalID = null;
    
    this._filterType =  Sys.Extended.UI.FilterTypes.Custom;
    this._filterMode =  Sys.Extended.UI.FilterModes.ValidChars;
    this._validChars = null;
    this._invalidChars = null;
    this._filterInterval = 250;
    
    this.charTypes = { };
    this.charTypes.LowercaseLetters = "abcdefghijklmnopqrstuvwxyz";
    this.charTypes.UppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    this.charTypes.Numbers = "0123456789";
}
Sys.Extended.UI.FilteredTextBoxBehavior.prototype = {
    initialize : function() {
        /// <summary>
        /// Initialize the behavior
        /// </summary>
        Sys.Extended.UI.FilteredTextBoxBehavior.callBaseMethod(this, 'initialize');
        
        var element = this.get_element();

        this._keypressHandler = Function.createDelegate(this, this._onkeypress);
        $addHandler(element, 'keypress', this._keypressHandler);
        
        this._changeHandler = Function.createDelegate(this, this._onchange);
        $addHandler(element, 'change', this._changeHandler);

        var callback = Function.createDelegate(this, this._intervalCallback);
        this._intervalID = window.setInterval(callback, this._filterInterval);
    },
    
    dispose : function() {
        /// <summary>
        /// Dispose the behavior
        /// </summary>
        var element = this.get_element();
        
        $removeHandler(element, 'keypress', this._keypressHandler);
        this._keypressHandler = null;
        
        $removeHandler(element, 'change', this._changeHandler);
        this._changeHandler = null;

        window.clearInterval(this._intervalID);
        
        Sys.Extended.UI.FilteredTextBoxBehavior.callBaseMethod(this, 'dispose');
    },
    
    _getValidChars : function() {
        /// <summary>
        /// Get all the valid characters
        /// </summary>
        /// <returns type="String">
        /// All valid characters
        /// </returns>

        if (this._validChars) return this._validChars;
        this._validChars = "";
        
        for (type in this.charTypes) {
            var filterType = Sys.Extended.UI.FilterTypes.toString(this._filterType);
            if (filterType.indexOf(type) != -1) {
                this._validChars += this.charTypes[type];
            }
        }

        return this._validChars;    
    },
    
    _getInvalidChars : function() {
        /// <summary>
        /// Get all the invalid characters (in case of custom filtering and InvalidChars mode)
        /// </summary>
        /// <returns type="String">
        /// All invalid characters
        /// </returns>

        if (!this._invalidChars) {
            this._invalidChars = this.charTypes.Custom;
        }
        return this._invalidChars;
    },

    _onkeypress : function(evt) {
        /// <summary>
        /// Handler for the target textbox's key press event
        /// </summary>
        /// <param name="evt" type="Sys.UI.DomEvent">
        /// Event info
        /// </param>

        
        var scanCode;

        if ( (((/* ff */ evt.rawEvent.charCode == 0) || 
             (/* opera */ evt.rawEvent.keyCode == evt.rawEvent.which && evt.rawEvent.charCode == undefined)) &&
              ((evt.rawEvent.keyCode == Sys.UI.Key.pageUp) ||
               (evt.rawEvent.keyCode == Sys.UI.Key.pageDown) ||
               (evt.rawEvent.keyCode == Sys.UI.Key.up) ||
               (evt.rawEvent.keyCode == Sys.UI.Key.down) ||
               (evt.rawEvent.keyCode == Sys.UI.Key.left) ||
               (evt.rawEvent.keyCode == Sys.UI.Key.right) ||
               (evt.rawEvent.keyCode == Sys.UI.Key.home) ||
               (evt.rawEvent.keyCode == Sys.UI.Key.end) ||
               (evt.rawEvent.keyCode == 46 /* Delete */))) ||
               (evt.ctrlKey /* Control keys */)) {
            return;
        }        
       
        if (evt.rawEvent.keyIdentifier) {
            if (evt.rawEvent.ctrlKey || evt.rawEvent.altKey || evt.rawEvent.metaKey) {
                return;
            }
            
            if (evt.rawEvent.keyIdentifier.substring(0,2) != "U+") {
                return;
            }
            
            scanCode = evt.rawEvent.charCode; 
            if (scanCode == 63272 /* Delete */) {
                return;
            }
        } else {
            scanCode = evt.charCode;
        }  
            
        if (scanCode && scanCode >= 0x20 /* space */) {
            var c = String.fromCharCode(scanCode);
            if(!this._processKey(c)) {
                evt.preventDefault();
            }
        }
    },
    
    _processKey : function(key) {
        /// <summary>
        /// Determine whether the key is valid or whether it should be filtered out
        /// </summary>
        /// <param name="key" type="String">
        /// Character to be validated
        /// </param>
        /// <returns type="Boolean">
        /// True if the character should be accepted, false if it should be filtered
        /// </returns>

        
        var filter = "";
        var shouldFilter = false;
        
        if (this._filterMode == Sys.Extended.UI.FilterModes.ValidChars) {
            filter = this._getValidChars();
  
            shouldFilter = filter && (filter.length > 0) && (filter.indexOf(key) == -1);
        } else {
            filter = this._getInvalidChars();
  
            shouldFilter = filter && (filter.length > 0) && (filter.indexOf(key) > -1);        
        }
        
        var eventArgs = new Sys.Extended.UI.FilteredTextBoxProcessKeyEventArgs(key, Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element()).get_Value(), shouldFilter);
        this.raiseProcessKey(eventArgs);
        
        if (eventArgs.get_allowKey()) {
            return true;
        }
        
        this.raiseFiltered(new Sys.Extended.UI.FilteredTextBoxEventArgs(key));
        return false;
    },
    
    _onchange : function() {
        /// <summary>
        /// Handler for the target textbox's key change event which will filter
        /// the text again (to make sure no text was inserted without keypresses, etc.)
        /// </summary>
        
        var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element());
        var text = wrapper.get_Value() || '';
        var result = new Sys.StringBuilder();
        for (var i = 0; i < text.length; i++) {
            var ch = text.substring(i, i+1);
            if (this._processKey(ch)) {
                result.append(ch);
            }
        }
        if (wrapper.get_Value() != result.toString()) {
            wrapper.set_Value(result.toString());
        }
    },
    
    _intervalCallback : function() {
    /// <summary>
    /// Method that is repeatedly called to purge invalid characters from the textbox
    /// </summary>
        
        this._changeHandler();
    },
    
    get_ValidChars : function() {
        /// <value type="String">
        /// A string consisting of all characters considered valid for the textbox, if
        /// "Custom" is specified as the field type. Otherwise this parameter is ignored.
        /// </value>
        return this.charTypes.Custom;
    },
    set_ValidChars : function(value) {
        if (this._validChars != null || this.charTypes.Custom != value) {
            this.charTypes.Custom = value;
            this._validChars = null;
            this.raisePropertyChanged('ValidChars');
        }
    },

    get_InvalidChars : function() {
        /// <value type="String">
        /// A string consisting of all characters considered invalid for the textbox, if "Custom" is specified as the field type. Otherwise this parameter is ignored.
        /// </value>
        return this.charTypes.Custom;
    },
    set_InvalidChars : function(value) {
        if (this._invalidChars != null || this.charTypes.Custom != value) {
            this.charTypes.Custom = value;
            this._invalidChars = null;
            this.raisePropertyChanged('InvalidChars');
        }
    },
    
    get_FilterType : function() {
        /// <value type="Sys.Extended.UI.FilterTypes">
        /// FilterType - A the type of filter to apply, as a comma-separated combination of
        /// Numbers, LowercaseLetters, UppercaseLetters, and Custom. If Custom is specified,
        /// the ValidChars field will be used in addition to other settings such as Numbers.
        /// </value>
        return this._filterType;
    },        
    set_FilterType : function(value) {
        if (this._validChars != null || this._filterType != value) {
            this._filterType = value;
            this._validChars = null;
            this.raisePropertyChanged('FilterType');
        }
    },
    
    get_FilterMode : function() {
        /// <value type="Sys.Extended.UI.FilterModes">
        /// FilterMode - The filter mode to apply when custom filtering is activated; supported values are ValidChars and InvalidChars.
        /// </value>
        return this._filterMode;
    },        
    set_FilterMode : function(value) {
        if (this._validChars != null || this._invalidChars != null || this._filterMode != value) {
            this._filterMode = value;
            this._validChars = null;
            this._invalidChars = null;
            this.raisePropertyChanged('FilterMode');
        }
    },

    get_FilterInterval : function() {
        /// <value type="int">
        /// An integer containing the interval (in milliseconds) in which 
        /// the field's contents are filtered
        /// </value>
        return this._filterInterval;
    },
    set_FilterInterval : function(value) {
        if (this._filterInterval != value) {
            this._filterInterval = value;
            this.raisePropertyChanged('FilterInterval');
        }
    },
    
    add_processKey : function(handler) {
        /// <summary>
        /// Add an event handler for the processKey event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('processKey', handler);
    },
    remove_processKey : function(handler) {
        /// <summary>
        /// Remove an event handler from the processKey event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('processKey', handler);
    },
    raiseProcessKey : function(eventArgs) {
        /// <summary>
        /// Raise the processKey event
        /// </summary>
        /// <param name="eventArgs" type="Sys.Extended.UI.FilteredTextBoxProcessKeyEventArgs" mayBeNull="false">
        /// Event arguments for the processKey event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('processKey');
        if (handler) {
            handler(this, eventArgs);
        }
    },

    add_filtered : function(handler) {
        /// <summary>
        /// Add an event handler for the filtered event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('filtered', handler);
    },
    remove_filtered : function(handler) {
        /// <summary>
        /// Remove an event handler from the filtered event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('filtered', handler);
    },
    raiseFiltered : function(eventArgs) {
        /// <summary>
        /// Raise the filtered event
        /// </summary>
        /// <param name="eventArgs" type="Sys.Extended.UI.FilteredTextBoxEventArgs" mayBeNull="false">
        /// Event arguments for the filtered event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('filtered');
        if (handler) {
            handler(this, eventArgs);
        }
    }
}
Sys.Extended.UI.FilteredTextBoxBehavior.registerClass('Sys.Extended.UI.FilteredTextBoxBehavior', Sys.Extended.UI.BehaviorBase);
Sys.registerComponent(Sys.Extended.UI.FilteredTextBoxBehavior, { name: "filteredTextBox" });

Sys.Extended.UI.FilterTypes = function() {
    /// <summary>
    /// Character filter to be applied to a textbox
    /// </summary>
    /// <field name="Custom" type="Number" integer="true">
    /// Custom Characters
    /// </field>
    /// <field name="Numbers" type="Number" integer="true">
    /// Numbers (0123456789)
    /// </field>
    /// <field name="UppercaseLetters" type="Number" integer="true">
    /// Uppercase Letters (ABCDEFGHIJKLMNOPQRSTUVWXYZ)
    /// </field>
    /// <field name="LowercaseLetters" type="Number" integer="true">
    /// Lowercase Letters (abcdefghijklmnopqrstuvwxyz)
    /// </field>
    throw Error.invalidOperation();
}
Sys.Extended.UI.FilterTypes.prototype = {
    Custom           :  0x1,
    Numbers          :  0x2,
    UppercaseLetters :  0x4,
    LowercaseLetters :  0x8
}
Sys.Extended.UI.FilterTypes.registerEnum('Sys.Extended.UI.FilterTypes', true);

Sys.Extended.UI.FilterModes = function() {
    /// <summary>
    /// Filter mode to be applied to a textbox
    /// </summary>
    /// <field name="ValidChars" type="Number" integer="true">
    /// Provide a list of valid characters
    /// </field>
    /// <field name="InvalidChars" type="Number" integer="true">
    /// Provide a list of invalid characters
    /// </field>
    throw Error.invalidOperation();
}
Sys.Extended.UI.FilterModes.prototype = {
    ValidChars   :  0x1,
    InvalidChars :  0x2
}
Sys.Extended.UI.FilterModes.registerEnum('Sys.Extended.UI.FilterModes', true);

Sys.Extended.UI.FilteredTextBoxProcessKeyEventArgs = function(key, text, shouldFilter) {
    /// <summary>
    /// Event arguments used when the processKey event is raised
    /// </summary>
    /// <param name="key" type="String" mayBeNull="False">
    /// Key to be processed
    /// </param>
    /// <param name="text" type="String" mayBeNull="True">
    /// Current text in the textbox
    /// </param>
    /// <param name="shouldFilter" type="Boolean" mayBeNull="False">
    /// Whether the character should be filtered given the current
    /// FilteredTextBox settings
    /// </param>
    Sys.Extended.UI.FilteredTextBoxProcessKeyEventArgs.initializeBase(this);
    
    this._key = key;
    this._text = text;
    this._shouldFilter = shouldFilter;
    this._allowKey = !shouldFilter;
}
Sys.Extended.UI.FilteredTextBoxProcessKeyEventArgs.prototype = {
    get_key : function() {
        /// <value type="String" mayBeNull="False">
        /// Key to be processed
        /// </value>
        return this._key;
    },
    
    get_text : function() {
        /// <value type="String" mayBeNull="True">
        /// Current text in the textbox
        /// </value>
        return this._text;
    },
    
    get_shouldFilter : function() {
        /// <value type="Boolean" mayBeNull="False">
        /// Whether the character should be filtered given the current
        /// FilteredTextBox settings
        /// </value>
        return this._shouldFilter;
    },
    
    get_allowKey : function() {
        /// <value type="Boolean" mayBeNull="False">
        /// Whether or not the key will be filtered.  It defaults to the opposite of
        /// shouldFilter and should be set by handlers of the processKey event.
        /// </value>
        return this._allowKey;
    },
    set_allowKey : function(value) {
        this._allowKey = value;
    }
}
Sys.Extended.UI.FilteredTextBoxProcessKeyEventArgs.registerClass('Sys.Extended.UI.FilteredTextBoxProcessKeyEventArgs', Sys.EventArgs);

Sys.Extended.UI.FilteredTextBoxEventArgs = function(key) {
    /// <summary>
    /// Event arguments used when the filtered event is raised
    /// </summary>
    /// <param name="key" type="String" mayBeNull="False">
    /// Key that was filtered
    /// </param>
    Sys.Extended.UI.FilteredTextBoxEventArgs.initializeBase(this);

    this._key = key;
}
Sys.Extended.UI.FilteredTextBoxEventArgs.prototype = {
    get_key : function() {
        /// <value type="String" mayBeNull="False">
        /// Key that was filtered
        /// </value>
        return this._key;
    }
}
Sys.Extended.UI.FilteredTextBoxEventArgs.registerClass('Sys.Extended.UI.FilteredTextBoxEventArgs', Sys.EventArgs);

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedBase", "ExtendedCommon"], execute);
}
else {
    execute();
}

})();
1// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />

(function() {
var scriptName = "ExtendedConfirmButton";

function execute() {

Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.ConfirmButtonHiddenEventArgs = function(confirmed) {
    /// <summary>
    /// Event arguments used when the hidden event is raised
    /// </summary>
    /// <param name="confirmed" type="Boolean" mayBeNull="false">
    /// Whether or not the user confirmed the prompt
    /// </param>
    Sys.Extended.UI.ConfirmButtonHiddenEventArgs.initializeBase(this);
    
    this._confirmed = confirmed;
}
Sys.Extended.UI.ConfirmButtonHiddenEventArgs.prototype = {
    get_confirmed : function()  {
        /// <value type="Boolean" mayBeNull="false">
        /// Whether or not the user confirmed the prompt
        /// </value>
        return this._confirmed;
    }
}
Sys.Extended.UI.ConfirmButtonHiddenEventArgs.registerClass('Sys.Extended.UI.ConfirmButtonHiddenEventArgs', Sys.EventArgs);


Sys.Extended.UI.ConfirmButtonBehavior = function(element) {
    /// <summary>
    /// The ConfirmButtonBehavior extends buttons by providing a confirmation dialog when clicked
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// Button the behavior is associated with
    /// </param>
    Sys.Extended.UI.ConfirmButtonBehavior.initializeBase(this, [element]);

    this._ConfirmTextValue = null;

    this._OnClientCancelValue = null;

    this._ConfirmOnFormSubmit = false;

    this._displayModalPopupID = null;

    this._postBackScript = null;

    this._clickHandler = null;
    
    this._oldScript = null;
}
Sys.Extended.UI.ConfirmButtonBehavior.prototype = {
    initialize : function() {
        /// <summary>
        /// Initialize the behavior
        /// </summary>
        Sys.Extended.UI.ConfirmButtonBehavior.callBaseMethod(this, 'initialize');
        var element = this.get_element();

        this._clickHandler = Function.createDelegate(this, this._onClick);
        $addHandler(element, "click", this._clickHandler);
        
        this._oldScript = element.getAttribute("onclick");
        if (this._oldScript) {            
            element.setAttribute("onclick", null);            
        }

        if (this._ConfirmOnFormSubmit && (typeof(WebForm_OnSubmit) == 'function') && !Sys.Extended.UI.ConfirmButtonBehavior._originalWebForm_OnSubmit) {
            if (Sys.Extended.UI.TextBoxWatermarkBehavior && Sys.Extended.UI.TextBoxWatermarkBehavior._originalWebForm_OnSubmit) {
                Sys.Extended.UI.ConfirmButtonBehavior._originalWebForm_OnSubmit = Sys.Extended.UI.TextBoxWatermarkBehavior._originalWebForm_OnSubmit;
                Sys.Extended.UI.TextBoxWatermarkBehavior._originalWebForm_OnSubmit = Sys.Extended.UI.ConfirmButtonBehavior.WebForm_OnSubmit;
            } else {
                Sys.Extended.UI.ConfirmButtonBehavior._originalWebForm_OnSubmit = WebForm_OnSubmit;
                WebForm_OnSubmit = Sys.Extended.UI.ConfirmButtonBehavior.WebForm_OnSubmit;
            }
        }
    },

    dispose : function() {
        /// <summary>
        /// Dispose the behavior
        /// </summary>

        if (this._clickHandler) {
            $removeHandler(this.get_element(), "click", this._clickHandler);
            this._clickHandler = null;
        }
        
        if (this._oldScript) {
            this.get_element().setAttribute("onclick", this._oldScript);
            this._oldScript = null;
        }

        Sys.Extended.UI.ConfirmButtonBehavior.callBaseMethod(this, 'dispose');
    },

    _onClick : function(e) {
        /// <summary>
        /// Button's click handler to display the confirmation dialog
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">
        /// Event info
        /// </param>

        if (this.get_element() && !this.get_element().disabled) {
            if (this._ConfirmOnFormSubmit) {
                Sys.Extended.UI.ConfirmButtonBehavior._clickedBehavior = this;
            } else {
                if (!this._displayConfirmDialog()) {
                    e.preventDefault();
                    return false;
                }
                else if (this._oldScript) {
                    
                    if (String.isInstanceOfType(this._oldScript)) {
                        eval(this._oldScript);
                    }
                    else if (typeof(this._oldScript) == 'function'){
                        this._oldScript();                        
                    }   
                }
            }
        }
    },

    _displayConfirmDialog : function() {
        /// <summary>
        /// Handle the completion of a confirm dialog (whether by window.confirm or ModalPopupBehavior)
        /// </summary>
        /// <value type="Boolean">
        /// Result of the confirm dialog or false to cancel
        /// </value>

        var eventArgs = new Sys.CancelEventArgs();
        this.raiseShowing(eventArgs);
        if (eventArgs.get_cancel()) {
            return;
        }

        if(this._displayModalPopupID) {
            var mpe = $find(this._displayModalPopupID);
            if (!mpe) {
                throw Error.argument('displayModalPopupID', String.format(Sys.Extended.UI.Resources.CollapsiblePanel_NoControlID, this._displayModalPopupID));
            }
            mpe.set_OnOkScript("$find('"+this.get_id()+"')._handleConfirmDialogCompletion(true);");
            mpe.set_OnCancelScript("$find('"+this.get_id()+"')._handleConfirmDialogCompletion(false);");
            mpe.show();
            return false;
        } else {
            var result = window.confirm(this._ConfirmTextValue);
            this._handleConfirmDialogCompletion(result);
            return result;
        }
    },

    _handleConfirmDialogCompletion : function(result) {
        /// <summary>
        /// Handle the completion of a confirm dialog (whether by window.confirm or ModalPopupBehavior)
        /// </summary>
        /// <param name="result" type="Boolean">
        /// Result of the confirm dialog
        /// </param>
        this.raiseHidden(new Sys.Extended.UI.ConfirmButtonHiddenEventArgs(result));
        if (result) {
            if (this._postBackScript ) {
                eval(this._postBackScript);
            }
        } else {
            if (this._OnClientCancelValue) {
                window[this._OnClientCancelValue]();
            }
        }
    },

    get_OnClientCancel : function (){
        /// <value type="String">
        /// The client-side script that executes when the cancel button is clicked on the confirm dialog.
        /// </value>
      return this._OnClientCancelValue;
    },
    set_OnClientCancel : function (value) {
        if (this._OnClientCancelValue != value) {
            this._OnClientCancelValue = value;
            this.raisePropertyChanged('OnClientCancel'); 
        }
    },

    get_ConfirmText : function() {
        /// <value type="String">
        /// The text to show when you want to confirm the click. (Note: HTML entities can be used here (ex: "&#10;" for new-line))
        /// </value>
        return this._ConfirmTextValue;
    },
    set_ConfirmText : function(value) {
        if (this._ConfirmTextValue != value) {
            this._ConfirmTextValue = value;
            this.raisePropertyChanged('ConfirmText');
        }
    },

    get_ConfirmOnFormSubmit : function() {
        /// <value type="Boolean">
        /// True iff the confirm dialog should run for form submission (i.e., after validators are all satisfied)
        /// </value>
        return this._ConfirmOnFormSubmit;
    },
    set_ConfirmOnFormSubmit : function(value) {
        if (this._ConfirmOnFormSubmit != value) {
            this._ConfirmOnFormSubmit = value;
            this.raisePropertyChanged('ConfirmOnFormSubmit');
        }
    },

    get_displayModalPopupID : function() {
        /// <value type="String">
        /// ID of a ModalPopupBehavior to be used instead of the default window.confirm dialog
        /// </value>
        return this._displayModalPopupID;
    },
    set_displayModalPopupID : function(value) {
        if (this._displayModalPopupID != value) {
            this._displayModalPopupID = value;
            this.raisePropertyChanged('displayModalPopupID');
        }
    },

    get_postBackScript : function() {
        /// <value type="String">
        /// Script to run to initiate a postback
        /// </value>
        return this._postBackScript;
    },
    set_postBackScript : function(value) {
        if (this._postBackScript != value) {
            this._postBackScript = value;
            this.raisePropertyChanged('postBackScript');
        }
    },

    add_showing : function(handler) {
        /// <summary>
        /// Add an event handler for the showing event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('showing', handler);
    },
    remove_showing : function(handler) {
        /// <summary>
        /// Remove an event handler from the showing event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('showing', handler);
    },
    raiseShowing : function(eventArgs) {
        /// <summary>
        /// Raise the showing event
        /// </summary>
        /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
        /// Event arguments for the showing event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('showing');
        if (handler) {
            handler(this, eventArgs);
        }
    },
    
    add_hidden : function(handler) {
        /// <summary>
        /// Add an event handler for the hidden event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('hidden', handler);
    },
    remove_hidden : function(handler) {
        /// <summary>
        /// Remove an event handler from the hidden event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('hidden', handler);
    },
    raiseHidden : function(eventArgs) {
        /// <summary>
        /// Raise the hidden event
        /// </summary>
        /// <param name="eventArgs" type="Sys.Extended.UI.ConfirmButtonHiddenEventArgs" mayBeNull="false">
        /// Event arguments for the hidden event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('hidden');
        if (handler) {
            handler(this, eventArgs);
        }
    }
}
Sys.Extended.UI.ConfirmButtonBehavior.registerClass('Sys.Extended.UI.ConfirmButtonBehavior', Sys.Extended.UI.BehaviorBase);
Sys.registerComponent(Sys.Extended.UI.ConfirmButtonBehavior, { name: "confirmButton", parameters: [{name: "ConfirmText", type: "String"}] });

Sys.Extended.UI.ConfirmButtonBehavior.WebForm_OnSubmit = function() {
    /// <summary>
    /// Wraps ASP.NET's WebForm_OnSubmit in order to display the confirm dialog prior to submission
    /// </summary>
    /// <returns type="Boolean">
    /// Result of original WebForm_OnSubmit
    /// </returns>
    var result = Sys.Extended.UI.ConfirmButtonBehavior._originalWebForm_OnSubmit();
    if (result && Sys.Extended.UI.ConfirmButtonBehavior._clickedBehavior) {
        result = Sys.Extended.UI.ConfirmButtonBehavior._clickedBehavior._displayConfirmDialog();
    }
    Sys.Extended.UI.ConfirmButtonBehavior._clickedBehavior = null;
    return result;
}

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedBase"], execute);
}
else {
    execute();
}

})();
6   �& h�( @ �������{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�~eQ�~eQ�~eQ�~eQ�}dP���|�������eͽ�Rͽ���������������������������������������������������Ǿ������q_��r`�y�ò��ͽ�&��������������������������������������������������������������;����v��q_�����ͽ� ��������������������������������������������������������������̼�������uc�ij�iͽ������������������������������������������������������������������������Ļ��xg����ͽ��������������������������������������������������������������������������������}����������������������������������������������������������������������������ͽ��fS�����������������������������������������������������������������������������~eQ����������������������������������������������������������������������������˹��~eQ���������������������������������������������������������������������������������~eQ�����������������������������������������������������������������������������������~eQ����������������������������������������������������������������������������������{bN��������������������������������������������������������������������������������������{bN����������������������������������������������������������������������������������������{bN���������������������������������������������������������������������������������������{bN������������������������������������������������������������������������������������������{bN�������������������������������������������������������������������������������������������{bN��������������������������������������������������������������������������������������������{bN������������������������������������������������������������������������������������������������������?�����������������������������������������(  ��}�{bN�{bN�{bN�{bN�{bN�{bN�|cPѧ���������fͽ�����������������������Թ������堌}��������ͽ�������������������������������������ꪘ������˿�Lͽ���������������������������������������¹蚆w󼷵�ͽ����������������������������������������������}dQ�}dQ�����������������������������������������������|cO�}dQ�����������������������������������������������|cO�}dQ������������������������������������������������lX��������������������������������������������������lX����
���������������������������������������������������������������������������������������6   �& h�( @ ���pF�R����u���pF�R�X�c�I�R����u�uc��sa��p]��lY��hU�|cP�x_L�t[G�pVC�lS?�jO<�gM9����pF�R�o�|�i�v�Y�d�C�M����u���pg�r��ٕ��ڗ�q�~�d�p�V�a�@�J����u�И��͕��Ì��Ф�xŏ�l�x�C�N�Q�[�Z�d�w����Ф�xŏ�M�k�1rD��Š��Ф�xŏ�M�k�1rD��uc��s`��p]��lZ��hU�|dQ�x_K�sZG�pWB�lS>�iP;�gM9�k����Ф�xŏ�M�k�1rD�k����Ф�xŏ�M�k�1rD�k����Ф�xŏ�M�k�1rD�k����ϡ�xŏ�M�k�1rD�k����ϡ�xŏ�M�k�1rD��uc��sa��p^��lZ��gU�}cP�x_K�tZG�pVC�lR>�jO;�gM9�k����̜�rÊ�M�k�1rD�k����ɖ�h���M�k�3wG�k���g���k���}Ǔ�h���M�k�6~K�2tF�0oC����mk����ϡ��ɖ�^�y�H�d�A�[�2tF��ʳ�����������IJ�ɽ��k����ϡ�o���C�^�4yI������IJ�©�����������������������������������������������������������������������k����ϡ�6}K���������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ�����������������������������k���������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ�ġ���ǰ��ǰ��ǰ��ǰ��ǰ����������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ�ġ���ġ���ǰ��ǰ��ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ��ǰ�ġ����ǰ��ġ���ǰ��ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ�ġ����ǰ��ǰ��ǰ��ġ���ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ���ǰ��ǰ��ǰ��ǰ��ǰ���ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ����������������������������������������������������������������������������������������������������?����������������������������������������������������������������(  F�R$F�R�<~E3J�U'F�R�X�c�C�M�<~E3u�$g�r��ٕ�i�v�V�a�@�J�<~E3�uc��sa��p]��lY��hU�|cP��И��͕��Ì�q�~�C�N�Q�[�Z�d�w���yц�S�]��uc��s`��p]��lZ��hU�|dQ�{�����Y�b�{���r�~�@�J��uc��sa��p^��lZ��gU�}cP�w���~͋�@�J�g�r��͕��Ì��ؗ�X�c�@�J�Z�d����Ǽ��t�~��ٕ���r�~�@�J�����Ů������������������������������g�r��ٕ�C�M���������ǰ��ǰ��ǰ�ġ���ǰ��ǰ������������������g�r�������������ǰ��ǰ�ġ���ġ���ǰ������������������������������������ǰ��ǰ���ǰ���ǰ������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ����������������������������������������������������������お�������k�D�6   �& h�( @ G��G��G��S��*R��hO��mN��:L��G��	G��F��9F��^F��mF��mF��mF��vF��mF��!����������������������������V��}W��U��R���O��aH��G�ӄF���F��D��D��B��B��B��F��hY�׆]��^��Y��Q���P�ֆM��J��lI���F��D��D��D��D��C���D���F��O[��g^��c��a��Z��R���O��HK���J��G��F��D��D��D��E�ШG��������������������������������������^��P`��g��d��`��Y��R��P�԰O���O���K��G��F��F��F���F�ѨF��<`��%]�վa���c���b��a���Y���V���U��Q��I��F��F��G��G���b��`��4^�؜]���]���a���b���_��[��P��F��F��F��I��I�������������������������������������������a�� _��y]�ئ]���c��d��`��W��H��F��F��K��J���I��yI��zH��iG��c��a��_��k]���e���i��f��`��V��J��H��O��O��L��J��H���H��mG��
a�٢c���m��o��q��q��e��[��T��V��U��Q��N��K��H���H�������������������������������k��h��f��Cb���t��{���������w��e��_��]��W��R��R��P��L��H���l���l�ۙj��3g���t����������������m��c��^��V���Q�ӼR���P��L���J�Ѳg��j���m��Pj�ۮt�����������������r���e���_��Z���g�����j���u��������ۂ��݇���������w���h���d��^���l���x������������v���h��k��g������y���m���g��_���p��&o�۪}������|��n��e�ׁq��p������|��t��j��`���q��:l���i���i���h���d�ֆe��n���f��}������~��p��_���d��h��r������������j��c���p��.l���|����������p��d���d�آq��dj��h��f��e��d��c��f���i��>d�����������������������������������0��0 ��?��?���������?��?��?��?��?���?��?��?��������������������(  ������������������[��&������^q��&���&���&���������&���h���E���D��&����������������������X���o��_���\���&���D��&���������iV�ɩX��d��+��5�׵&������������������m��q\��q��D��E��^��&���&������X��d�������n��[��U��[��}��&��������������[��]���p�������R���h���]��$[�����g��g�����g��k��tX��0�Ҭh������g��g�����g��j��c��h���g������g�����g�����g��������������	���þ������������}����������a�	h& h�( ������������������������������'��'��-��6��9�����������
�����"�)�-�2�9�<�H��@�F�J�L�T�f��x��`��u��~�U�Z�\�b�f�j�m�p�u�y���	./-

(  
1$$#" 0***''$# 264443+'%#888863+%$ <<<<<64+'$!<=<<864*6�������?�������������(  @��H����f�������	����������B���������ۙ��W����c�������������������ۇ��	�����������������������������~�������������������������߷�������������������������������B�c����
��������������������������.�u.��-��(��"������������������������A�TF��G��E��@��8��.��#������������������O�X��\�]�Z�T�K��@��2��#��������������'c�]k�n�m�i�a�V�I��:��*����������q�lw�y�v�p�f�Z�L��<��+������w�-z�y�u�m�c�V�G��7��(�Ev�s�Km�fd�fX�TK��������������hGIF89a� �1�<��8��9��<ݡS��������Ǝ������������������������������������!� ,EA(�@
Pą
^�xa""V����&D� !b�!@���A�
"2`Q���A�;bGIF89a� �.�1��8��8��<ݡS����������Ǝ���������������������������������!� ,?A(�
 p�����P�
&L8 A@�p�h��(S ��;fGIF89a� �����������ض�����������������������������������������������!� ,C0`@�0�H� @�8��AD�`„,�TI���@`���8A;iGIF89a� �1�<��8��9��<ݡS��������Ǝ������������������������������������!� ,F
4�@�d��`�88�J�pp„�(�P�/\H��ʃ1n��y3 ;0GIF89a��,��<��<���!�,
H��;�GIF89a����������Ny�������������������������333���!�,���I��E��{��'��hn�F��j�6t]�.'oA�� �bs��Q �-���t HmX�����o�uijz]v-�|N_�x"~���	2	X6� ���c?� �1���� �=���� �����;�GIF89a�����������������������������������������������������������������������������������������������������������������������������������h��}��v�ׇ�とה������:l�K{�Jx�Ly�\��d��g��v�Ì�Ϙ�ޤ�뗵ב�ϒ�ϝ�پ���٣��������)^�3f�4g�?o�V��V��W��b����Ѕ�ʎ�ϩ�������������������������!�r,��r������������!$%������"(+.������'-2������256������.9�M[[^QK\[H���27;�;e[doZf[qo�Ђ:
<�<R�m<VIq���=�=S�=Wap��08���/l*D ��&T��Z?��� AB5x0��
�l�%h0\�@a�A$��T�Ė.c����
d
���g�OC�la��
"@|0*(�O]��A�Ț8i��X��D�#M}(!�E������
*�Xc@�7�(^����2bR��:|8�L��8n�(P@Ћ9L������ɞ;�GIF89a����:�M�M�&X������������������������������������������������������������������������������������������������������������������������������������������������������a��u��~�Æ�ʝ�蘴Ҷ��������!W�-a�.a�5h�7i�7j�:k�@q�Ar�Gu�Gv�O}�T��V��`��l��t������������������!�o,��o������ "$%������'*-.������+258������17<������
<@A������8E�����<CG����͂FH���H	��IIRdV�OO���:
�`cPYhU����(X��aC%X�\��Ƅ4hȀ��
6x1ℓ+g�8QB� ntA�IK�p�2E�*N�0yRІ�\���eM�0Ll(��bE
:�H!�F�-j��b��5f�p��� .��уJ!CJ��I���7j(�!�E��4B���"E�	���<v��Ha#�<�e�� 
��ȃzR����סװ;�GIF89a���������������������������������������������������������������������������������������������������������������������������������������)^��������!�D,��D������������ #&'������$),.������(-2������245@����5��.8C����BA�26
::;��;�т9<=??��=<��
>��@>�0

A������ݢ@a�	�D��AC��Y�P���
ԥACA6L:�dmqBŧ�*P�(QBP�^Ę1�d�,�d�E�4ظ�#7lԠQ`�1��A�i�e	,;��i�zAG�y�ʝ7/��Cx�;�// (c) 2010 CodePlex Foundation
Type.registerNamespace("Sys.Extended.UI.Seadragon");Sys.Extended.UI.Seadragon.Viewport=function(c,b,d){var a=this;a.zoomPoint=null;a.config=d;a._containerSize=c;a._contentSize=b;a._contentAspect=b.x/b.y;a._contentHeight=b.y/b.x;a._centerSpringX=new Seadragon.Spring(0,a.config);a._centerSpringY=new Seadragon.Spring(0,a.config);a._zoomSpring=new Seadragon.Spring(1,a.config);a._homeBounds=new Sys.Extended.UI.Seadragon.Rect(0,0,1,a._contentHeight);a.goHome(true);a.update()};Sys.Extended.UI.Seadragon.Viewport.prototype={_getHomeZoom:function(){var a=this._contentAspect/this.getAspectRatio();return a>=1?1:a},_getMinZoom:function(){var a=this,b=a._getHomeZoom();if(a.config.minZoomDimension)var c=a._contentSize.x<=a._contentSize.y?a.config.minZoomDimension/a._containerSize.x:a.config.minZoomDimension/(a._containerSize.x*a._contentHeight);else var c=a.config.minZoomImageRatio*b;return Math.min(c,b)},_getMaxZoom:function(){var a=this,b=a._contentSize.x*a.config.maxZoomPixelRatio/a._containerSize.x;return Math.max(b,a._getHomeZoom())},getAspectRatio:function(){return this._containerSize.x/this._containerSize.y},getContainerSize:function(){return new Sys.Extended.UI.Seadragon.Point(this._containerSize.x,this._containerSize.y)},getBounds:function(b){var c=this.getCenter(b),a=1/this.getZoom(b),d=a/this.getAspectRatio();return new Sys.Extended.UI.Seadragon.Rect(c.x-a/2,c.y-d/2,a,d)},getCenter:function(l){var a=this,b=new Sys.Extended.UI.Seadragon.Point(a._centerSpringX.getCurrent(),a._centerSpringY.getCurrent()),d=new Sys.Extended.UI.Seadragon.Point(a._centerSpringX.getTarget(),a._centerSpringY.getTarget());if(l)return b;else if(!a.zoomPoint)return d;var k=a.pixelFromPoint(a.zoomPoint,true),g=a.getZoom(),c=1/g,f=c/a.getAspectRatio(),e=new Sys.Extended.UI.Seadragon.Rect(b.x-c/2,b.y-f/2,c,f),j=a.zoomPoint.minus(e.getTopLeft()).times(a._containerSize.x/e.width),h=j.minus(k),i=h.divide(a._containerSize.x*g);return d.plus(i)},getZoom:function(a){return a?this._zoomSpring.getCurrent():this._zoomSpring.getTarget()},applyConstraints:function(i){var b=this,j=b.getZoom(),g=Math.max(Math.min(j,b._getMaxZoom()),b._getMinZoom());j!=g&&b.zoomTo(g,b.zoomPoint,i);var a=b.getBounds(),h=b.config.visibilityRatio,c=h*a.width,d=h*a.height,m=a.x+a.width,l=1-a.x,n=a.y+a.height,k=b._contentHeight-a.y,e=0;if(!b.config.wrapHorizontal)if(m<c)e=c-m;else if(l<c)e=l-c;var f=0;if(!b.config.wrapVertical)if(n<d)f=d-n;else if(k<d)f=k-d;if(e||f){a.x+=e;a.y+=f;b.fitBounds(a,i)}},ensureVisible:function(a){this.applyConstraints(a)},fitBounds:function(c,h){var d=true,a=this,f=a.getAspectRatio(),g=c.getCenter(),b=new Sys.Extended.UI.Seadragon.Rect(c.x,c.y,c.width,c.height);if(b.getAspectRatio()>=f){b.height=c.width/f;b.y=g.y-b.height/2}else{b.width=c.height*f;b.x=g.x-b.width/2}a.panTo(a.getCenter(d),d);a.zoomTo(a.getZoom(d),null,d);var e=a.getBounds(),k=a.getZoom(),i=1/b.width;if(i==k||b.width==e.width){a.panTo(g,h);return}var j=e.getTopLeft().times(a._containerSize.x/e.width).minus(b.getTopLeft().times(a._containerSize.x/b.width)).divide(a._containerSize.x/e.width-a._containerSize.x/b.width);a.zoomTo(i,j,h)},goHome:function(c){var a=this,b=a.getCenter();if(a.config.wrapHorizontal){b.x=(1+b.x%1)%1;a._centerSpringX.resetTo(b.x);a._centerSpringX.update()}if(a.config.wrapVertical){b.y=(a._contentHeight+b.y%a._contentHeight)%a._contentHeight;a._centerSpringY.resetTo(b.y);a._centerSpringY.update()}a.fitBounds(a._homeBounds,c)},panBy:function(c,a){var b=new Sys.Extended.UI.Seadragon.Point(this._centerSpringX.getTarget(),this._centerSpringY.getTarget());this.panTo(b.plus(c),a)},panTo:function(a,c){var b=this;if(c){b._centerSpringX.resetTo(a.x);b._centerSpringY.resetTo(a.y)}else{b._centerSpringX.springTo(a.x);b._centerSpringY.springTo(a.y)}},zoomBy:function(c,b,a){this.zoomTo(this._zoomSpring.getTarget()*c,b,a)},zoomTo:function(b,a,c){if(c)this._zoomSpring.resetTo(b);else this._zoomSpring.springTo(b);this.zoomPoint=a instanceof Sys.Extended.UI.Seadragon.Point?a:null},resize:function(c,f){var a=this,d=a.getBounds(),b=d,e=c.x/a._containerSize.x;a._containerSize=new Sys.Extended.UI.Seadragon.Point(c.x,c.y);if(f){b.width=d.width*e;b.height=b.width/a.getAspectRatio()}a.fitBounds(b,true)},update:function(){var a=this,g=a._centerSpringX.getCurrent(),h=a._centerSpringY.getCurrent(),c=a._zoomSpring.getCurrent();if(a.zoomPoint)var f=a.pixelFromPoint(a.zoomPoint,true);a._zoomSpring.update();if(a.zoomPoint&&a._zoomSpring.getCurrent()!=c){var e=a.pixelFromPoint(a.zoomPoint,true),d=e.minus(f),b=a.deltaPointsFromPixels(d,true);a._centerSpringX.shiftBy(b.x);a._centerSpringY.shiftBy(b.y)}else a.zoomPoint=null;a._centerSpringX.update();a._centerSpringY.update();return a._centerSpringX.getCurrent()!=g||a._centerSpringY.getCurrent()!=h||a._zoomSpring.getCurrent()!=c},deltaPixelsFromPoints:function(a,b){return a.times(this._containerSize.x*this.getZoom(b))},deltaPointsFromPixels:function(a,b){return a.divide(this._containerSize.x*this.getZoom(b))},pixelFromPoint:function(c,b){var a=this.getBounds(b);return c.minus(a.getTopLeft()).times(this._containerSize.x/a.width)},pointFromPixel:function(c,b){var a=this.getBounds(b);return c.divide(this._containerSize.x/a.width).plus(a.getTopLeft())}};Sys.Extended.UI.Seadragon.Viewport.registerClass("Sys.Extended.UI.Seadragon.Viewport",null,Sys.IDisposable);2
// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedMutuallyExclusiveCheckBox";function a(){var a="checked";Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.MutuallyExclusiveCheckBoxBehavior=function(b){var a=this;Sys.Extended.UI.MutuallyExclusiveCheckBoxBehavior.initializeBase(a,[b]);a._key="";a._clickHandler=Function.createDelegate(a,a._onclick)};Sys.Extended.UI.MutuallyExclusiveCheckBoxBehavior.prototype={initialize:function(){Sys.Extended.UI.MutuallyExclusiveCheckBoxBehavior.callBaseMethod(this,"initialize");$addHandler(this.get_element(),"click",this._clickHandler)},dispose:function(){var a=this;if(a._key){var b=Sys.Extended.UI.MutuallyExclusiveCheckBoxBehavior.Keys,c=b[a._key];Array.remove(c,a);a._key=null}if(a._clickHandler){$removeHandler(a.get_element(),"click",a._clickHandler);a._clickHandler=null}Sys.Extended.UI.MutuallyExclusiveCheckBoxBehavior.callBaseMethod(a,"dispose")},get_Key:function(){return this._key},set_Key:function(c){var a=this,d=Sys.Extended.UI.MutuallyExclusiveCheckBoxBehavior.Keys;if(c!=a._key){if(a._key){var b=d[a._key];Array.remove(b,a._key)}a._key=c;if(c){var b=d[a._key];if(b==null)b=d[a._key]=[];Array.add(b,a)}}},_onclick:function(){var a=this,b=a.get_element(),c=Sys.Extended.UI.MutuallyExclusiveCheckBoxBehavior.Keys;if(a._key&&b.checked){var d=c[a._key],e=a;Array.forEach(d,function(a){if(a!=e){a.get_element().checked=false;$common.tryFireEvent(a.get_element(),"change")}})}a.raiseChecked(new Sys.Extended.UI.MutuallyExclusiveCheckBoxEventArgs(b,a._key))},add_checked:function(b){this.get_events().addHandler(a,b)},remove_checked:function(b){this.get_events().removeHandler(a,b)},raiseChecked:function(c){var b=this.get_events().getHandler(a);b&&b(this,c)}};Sys.Extended.UI.MutuallyExclusiveCheckBoxBehavior.registerClass("Sys.Extended.UI.MutuallyExclusiveCheckBoxBehavior",Sys.Extended.UI.BehaviorBase);Sys.Extended.UI.MutuallyExclusiveCheckBoxBehavior.Keys={};Sys.registerComponent(Sys.Extended.UI.MutuallyExclusiveCheckBoxBehavior,{name:"mutuallyExclusiveCheckBox",parameters:["Key"]});Sys.Extended.UI.MutuallyExclusiveCheckBoxEventArgs=function(a,b){Sys.Extended.UI.MutuallyExclusiveCheckBoxEventArgs.initializeBase(this);this._key=b;this._checkbox=a};Sys.Extended.UI.MutuallyExclusiveCheckBoxEventArgs.prototype={get_checkbox:function(){return this._checkbox},get_key:function(){return this._key}};Sys.Extended.UI.MutuallyExclusiveCheckBoxEventArgs.registerClass("Sys.Extended.UI.MutuallyExclusiveCheckBoxEventArgs",Sys.EventArgs)}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedBase","ExtendedCommon"],a);else a()})();�// (c) 2010 CodePlex Foundation
(function(){var a=null;function b(){var p="isFetching",L="itemTemplate",y="itemPlaceholder",K="fetchSucceeded",J="fetchFailed",W="itemRendering",V="itemRendered",I="rendered",H="rendering",O="binding",U="initialize",T="propertyChanged",q="optionsChanged",G="get_",x="command",S="selectedIndex",R="selectedindex",k="function",ab="selected",cb="readonly",z="checked",o="disabled",A="sys-template",w="select",Z="className",Y="style.cssText",Q="sys:attach",v="name",u="type",j="input",F="button",N="innerText",n="value",E="textarea",P="InternetExplorer",D="class:",c=-1,h="string",C="null",d=false,f="",t=", ",s="  ",r=");\n",l="innerHTML",i=";\n",m="));\n",B="document.createTextNode(",b=true,g="undefined";Type._registerScript("MicrosoftAjaxTemplates.js",["MicrosoftAjaxComponentModel.js","MicrosoftAjaxSerialization.js"]);var e,X,bb=Sys._merge,db=Sys._foreach,fb=Sys._forIn,eb=Sys._isBrowser;function M(a){return Sys.Serialization.JavaScriptSerializer.serialize(a)}Type.registerNamespace("Sys.Net");e=Sys.Net.WebRequestEventArgs=function(d,e,c){var b=this;b._executor=d;b._error=e||a;b._result=typeof c===g?a:c;Sys.Net.WebRequestEventArgs.initializeBase(b)};e.prototype={get_error:function(){return this._error||a},get_executor:function(){return this._executor},get_result:function(){return this._result}};e.registerClass("Sys.Net.WebRequestEventArgs",Sys.EventArgs);Type.registerNamespace("Sys.Data");if(!Sys.Data.IDataProvider){e=Sys.Data.IDataProvider=function(){};e.registerInterface("Sys.Data.IDataProvider")}if(!Sys.Data.MergeOption){e=Sys.Data.MergeOption=function(){};e.prototype={appendOnly:0,overwriteChanges:1};e.registerEnum("Sys.Data.MergeOption")}Type.registerNamespace("Sys.UI");e=Sys.Application;e.registerMarkupExtension=function(c,d,a){if(!this._extensions)this._extensions={};a=typeof a===g||a===b;this._extensions[c]={expression:a,extension:d}};e._getMarkupExtension=function(c){var b=this._extensions?this._extensions[c]:a;if(!b)throw Error.invalidOperation(String.format(Sys.UI.TemplatesRes.cannotFindMarkupExtension,c));return b};e=Sys.UI.Template=function(b){this._element=b;this._instantiateIn=a;this._instanceId=0};e.prototype={get_element:function(){return this._element},dispose:function(){this._element=a;this._instantiateIn=a},_appendTextNode:function(b,a,c){b.push(a,B,M(c),m)},_appendAttributeSetter:function(c,w,j,a,n,q){var h="  $component.",g="  $component = $element;\n  ",p=j.ns,e=j.name,v=!p&&Sys.UI.Template._isRestricted(e);if(v)a="Sys.UI.Template._checkAttribute('"+e+"', "+a+")";switch(j.type){case 1:c.push(g);if(n)if(j.textNode)c.push("$element.appendChild(document.createTextNode(",a,m);else c.push("$element.",e," = ",a,i);else c.push(a,i);if(j.textNode||e===l)return b;break;case 2:if(n){e=M(e);c.push("  $component = $element;\n    (",a,") ? Sys.UI.DomElement.addCssClass($element, ",e,") : Sys.UI.DomElement.removeCssClass($element, ",e,r)}else c.push(g,a,i);break;case 3:var o=w[p];if(o.isClass){c.push("  $component = __componentIndex['",p,"'];\n");if(n){var k=j.map;if(k.type===1)c.push(h,k.setterName,"(",a,r);else if(k.type===2)c.push("  __f = ",a,i,h,k.setterName,'(typeof(__f) === "function" ? __f : new Function("sender", "args", __f));\n');else c.push(h,k.name," = ",a,i)}else c.push(s,a,i)}else{var u=M(j.name)+": "+a;if(!o.props)o.props=u;else o.props+=t+u}break;case 4:this["_"+e]=a;break;default:if(n)if(/^on/i.test(e))c.push("  $component = $element;\n  $element."+e+" = new Function("+(document.attachEvent?f:"'event', ")+a+r);else if(q)c.push("  $component = $element;\n  if ("+a+") {\n    __e = document.createAttribute('"+e+"');\n    __e.nodeValue = \""+q+'";\n    $element.setAttributeNode(__e);\n  }\n');else c.push("  $component = $element;\n  __e = document.createAttribute('"+e+"');\n  __e.nodeValue = "+a+";\n  $element.setAttributeNode(__e);\n");else c.push(g+a+i)}return d},_processAttribute:function(f,e,b,a,c){a=this._getAttributeExpression(b,a);return a?this._appendAttributeSetter(f,e,b,a.code,a.isExpression,c):d},_getAttributeExpression:function(e,d,l){var p=typeof d;if(p===g)return a;if(d===a)return{isExpression:b,code:C};if(!e.isNative&&p===h)if(d.startsWith("{{")&&d.endsWith("}}"))return{isExpression:b,code:d.slice(2,-2).trim()};else if(d.startsWith("{")&&d.endsWith("}")){var k=Sys.Application._getExtensionCode(d.slice(1,c)),m=k.properties,i=f;for(var n in m){var j=this._getAttributeExpression(e,m[n]);if(j&&j.isExpression){var o=M(n)+":"+j.code;if(i)i+=","+o;else i=o}}return{isExpression:k.instance.expression,code:"Sys.Application._getMarkupExtension("+M(k.name)+").extension($component, "+M((e.type===2?D:f)+e.name)+", $context, {"+i+"})"}}if(e.isId){l=b;d="$id("+M(d)+")"}return{isExpression:b,code:l?d:M(d)}},_processBooleanAttribute:function(e,h,g,c){var a,f,d=e.getAttributeNode("sys:"+c);if(!d){f=b;d=e.getAttributeNode(c);if(d&&(d.specified||d.nodeValue===b))a=b;else if(e.getAttribute(c)===c)a=b;else return}else{a=d.nodeValue;if(a==="true")a=b;else if(a==="false")return}this._processAttribute(h,g,{name:c,isNative:f},a,c)},_processBooleanAttributes:function(d,e,c,b){for(var h,i,g,a=0,f=b.length;a<f;a++)this._processBooleanAttribute(d,e,c,b[a])},_processCodeBlock:function(d,e,f){var c=this._getExplicitAttribute(a,a,e,d);if(c){c=this._getAttributeExpression({name:d},c,b).code;f.push(d==="sys:if"?"  if ("+c+") {\n":s+c+"\n")}return!!c},_getExplicitAttribute:function(i,f,c,e,d,g,h){var j,b,a;if(e==="style"&&c.style)a=c.style.cssText;else try{b=c.getAttributeNode(e);if(b&&b.specified)a=b.nodeValue}catch(j){}a&&d&&this._processAttribute(i,f,bb({name:d,type:1,isNative:g},h),a);return a},_buildTemplateCode:function(cb,gb,c,jb){var l="id",A="$component=$element;\n",e=this,bb,o,xb,J,p,O,fb,ob=Sys.UI.Template._expressionRegExp,z=s+(jb?"__p[__d-1].appendChild(":"__topElements.push("),Cb=eb(P);c.push("  __d++;\n");for(bb=0,xb=gb.childNodes.length;bb<xb;bb++){var g=gb.childNodes[bb],q=g.nodeValue;if(g.nodeType===8)c.push(z+"document.createComment("+M(q)+m);else if(g.nodeType===3){var L=q.trim();if(L.startsWith("{")&&L.endsWith("}")&&(!L.startsWith("{{")||!L.endsWith("}}"))){var db,zb;zb=A;if(gb.tagName.toLowerCase()===E)db=n;else db=N;var lb=e._getAttributeExpression({name:db},L);if(lb.isExpression)c.push(z,B,lb.code,m);else c.push(A,s,lb.code,i)}else{var H=ob.exec(q),W=0;while(H){var qb=q.substring(W,H.index);qb&&e._appendTextNode(c,z,qb);c.push(z,B,H[1],m);W=H.index+H[0].length;H=ob.exec(q)}W<q.length&&e._appendTextNode(c,z,q.substr(W))}}else{var rb=g.attributes,G=a,Eb=a,k={},R=g.tagName.toLowerCase(),K,Db=jb+1;if(R==="script")continue;var yb=e._processCodeBlock("sys:if",g,c);e._processCodeBlock("sys:codebefore",g,c);fb=R===F;O=fb||R===j;if(O){var U=g.getAttribute("sys:type");U=U?e._getAttributeExpression({name:u},U):e._getAttributeExpression({name:u,isNative:b},g.getAttribute(u));var T=g.getAttribute("sys:name");T=T?e._getAttributeExpression({name:v},T):e._getAttributeExpression({name:v,isNative:b},g.getAttribute(v));c.push("  $element=__p[__d]=Sys.UI.Template._createInput("+U.code+t+T.code+t+fb+r);K=Sys.UI.Template._inputBooleanAttributes;e._processBooleanAttributes(g,c,k,K[" list"])}else c.push("  $element=__p[__d]=document.createElement('"+g.nodeName+"');\n");!jb&&c.push(" $element.__mstcindex = $context._tcindex;\n");e._getExplicitAttribute(c,k,g,"sys:id",l,d,{isId:b})||e._getExplicitAttribute(c,k,g,l,l,b,{isId:b});G=e._getExplicitAttribute(c,k,g,Q);if(G){G=G.split(",");c.push("  __componentIndex = {}\n");for(o=0,J=G.length;o<J;o++){p=G[o].trim();if(k[p])continue;var x=Sys.Application._findType(g,p,Cb),V,nb,sb,hb=typeof x!==h;if(hb){V=x.inheritsFrom(Sys.Component);nb=V&&(x.inheritsFrom(Sys.UI.Behavior)||x.inheritsFrom(Sys.UI.Control));sb=x.implementsInterface(Sys.UI.ITemplateContextConsumer)}k[p]={type:x,isClass:hb,isComponent:V};if(hb){c.push("  __componentIndex['"+p+"'] = $component = new "+x.getName());if(nb)c.push("($element);\n");else c.push("();\n  Sys.Application._registerComponent($element, $component);\n");V&&c.push("  $component.beginUpdate();\n");sb&&c.push("  $component.set_templateContext($context);\n");var vb=p+":id",ub=Sys.Application._splitAttribute(vb,d,k);ub.isId=b;e._getExplicitAttribute(c,k,g,vb,l,d,ub)}}}e._getExplicitAttribute(c,k,g,"style",Y,b);e._getExplicitAttribute(c,k,g,"class",Z,b);if(!O){K=Sys.UI.Template._booleanAttributes[R]||Sys.UI.Template._commonBooleanAttributes;e._processBooleanAttributes(g,c,k,K[" list"])}var tb=R===w,y=a,Bb=Sys.Application._splitAttribute,pb=d,mb={id:1,"class":1,style:1,"sys:attach":1,"sys:id":1,"sys:disabled":1,"sys:checked":1,"sys:readonly":1,"sys:ismap":1,"sys:multiple":1,"sys:selected":1,"sys:if":1,"sys:codebefore":1,"sys:codeafter":1};for(o=0,J=rb.length;o<J;o++){var D=rb[o],I=D.nodeName,X=I.toLowerCase();if(!D.specified&&(!O||X!==n))continue;if(mb[X]||K[X])continue;if(O&&Sys.UI.Template._inputRequiredAttributes[X])continue;var S=Bb(I,tb,k),ab=S.ns,wb=D.nodeValue,ib=S.type;I=S.name;if(ib===1){if(tb&&(!ab||ab==="sys")){y=y||[];y.push([S,wb]);continue}mb[I.toLowerCase()]=b}else if(ib===0)mb[I.toLowerCase()]=b;else if(ib===3&&I===l&&k[ab]&&k[ab].isClass)continue;if(e._processAttribute(c,k,S,wb))pb=b}if(e._command){c.push(" Sys.query($element).setCommand("+e._command+t+(e._commandargument||C)+", Sys.UI.DomElement._ensureGet("+(e._commandtarget||C)+", $context, 'sys:commandtarget'));\n");e._command=a}e._commandargument=a;e._commandtarget=a;c.push(z+"$element);\n");for(p in k){var kb=k[p];if(kb.isClass)c.push("  $context._registerComponent(__componentIndex['"+p+"']);\n");else{c.push("  $context._registerIf(");c.push(kb.type);c.push("($element, ");c.push("{"+(kb.props||f)+"}, $context));\n")}}if(Sys.UI.Template._isTemplate(g)){var Ab=new Sys.UI.Template(g);Ab.recompile();cb.push(g._msajaxtemplate);c.push("  $element._msajaxtemplate = this.get_element()._msajaxtemplate[1]["+(cb.length-1)+"];\n")}else if(!pb){e._buildTemplateCode(cb,g,c,Db);c.push("  $element=__p[__d];\n")}if(y)for(o=0,J=y.length;o<J;o++){D=y[o];e._processAttribute(c,k,D[0],D[1])}e._processCodeBlock("sys:codeafter",g,c);yb&&c.push("  }\n")}}c.push("  --__d;\n")},_ensureCompiled:function(){var a=this;if(!a._instantiateIn){var b=a.get_element();if(b._msajaxtemplate)a._instantiateIn=b._msajaxtemplate[0];else a.recompile()}},recompile:function(){var c=this.get_element(),a=[" $index = (typeof($index) === 'number' ? $index : __instanceId);\n var $component, __componentIndex, __e, __f, __topElements = [], __d = 0, __p = [__containerElement], $element = __containerElement, $context = new Sys.UI.TemplateContext(), $id = function(prefix) { return $context.getInstanceId(prefix); };\n $context.data = (typeof(__data) === 'undefined' ? null : __data);\n $context.components = [];\n $context.nodes = __topElements;\n $context.dataItem = $dataItem;\n $context.index = $index;\n $context.parentContext = __parentContext;\n $context.containerElement = __containerElement;\n $context.insertBeforeNode = __referenceNode;\n $context.template = this;\n with($dataItem || {}) {\n"],b=[];this._buildTemplateCode(b,c,a,0);a.push("}\n $context._onInstantiated(__referenceNode);\n return $context;");a=a.join(f);c._msajaxtemplate=[this._instantiateIn=new Function("__containerElement","__data","$dataItem","$index","__referenceNode","__parentContext","__instanceId",a),b]},instantiateIn:function(c,g,f,e,b,d){c=Sys.UI.DomElement._ensureGet(c,a,"containerElement");b=Sys.UI.DomElement._ensureGet(b,a,"nodeToInsertTemplateBefore");this._ensureCompiled();return this._instantiateIn(c,g,f,e,b,d,this._instanceId++)}};e._isRestricted=function(b){var a=Sys.UI.Template._getRestrictedIndex();return a.attributes[b.toLowerCase()]};e._checkAttribute=function(e,a){if(!a)return a;var c=a,b=Sys.UI.Template._getRestrictedIndex();if(b.attributes[e.toLowerCase()]){if(typeof a!==h)a=a.toString();var d=Sys.UI.Template._protocolRegExp.exec(a.toLowerCase());if(d)if(!b.protocols[d[1]])c=f}return c};e._getIdFunction=function(a){return function(b){return b+a}};e._createInput=function(f,e,d){var k,a,i=arguments.callee,c=i._dynamic;if(c===b){a=document.createElement(d?F:j);f&&a.setAttribute(u,f);e&&a.setAttribute(v,e)}else{var h=d?"<button ":"<input ";if(f)h+="type='"+f+"' ";if(e)h+="name='"+e+"' ";h+=d?"></button>":"/>";try{a=document.createElement(h)}catch(k){c=b}if(typeof c===g)c=a.tagName.toLowerCase()!==(d?F:j);i._dynamic=c;if(c)a=i(f,e,d)}return a};e._isTemplate=function(b){var a=b.className;return a&&(a===A||/(^| )sys\-template($| )/.test(a))};e._inputRequiredAttributes={type:1,name:1,"sys:type":1,"sys:name":1};e._commonBooleanAttributes={disabled:b," list":[o]};e._inputBooleanAttributes={disabled:b,checked:b,readonly:b," list":[o,z,cb]};e._booleanAttributes={input:Sys.UI.Template._inputBooleanAttributes,select:{disabled:b,multiple:b," list":[o,"multiple"]},option:{disabled:b,selected:b," list":[o,ab]},img:{disabled:b,ismap:b," list":[o,"ismap"]},textarea:{disabled:b,readonly:b," list":[o,cb]}};e._expressionRegExp=/\{\{\s*([\w\W]*?)\s*\}\}/g;e.allowedProtocols=["http","https"];e.restrictedAttributes=["src","href","codebase","cite","background","action","longdesc","profile","usemap","classid","data"];e._getRestrictedIndex=function(){var c,f,h,g,e=Sys.UI.Template.allowedProtocols||[],d=Sys.UI.Template.restrictedAttributes||[],a=Sys.UI.Template._restrictedIndex;if(!a||a.allowedProtocols!==e||a.restrictedAttributes!==d){a={allowedProtocols:e,restrictedAttributes:d};a.protocols=h={};for(c=0,f=e.length;c<f;c++)h[e[c]]=b;a.attributes=g={};for(c=0,f=d.length;c<f;c++)g[d[c]]=b;Sys.UI.Template._restrictedIndex=a}return a};e.registerClass("Sys.UI.Template",a,Sys.IDisposable);e._protocolRegExp=/^\s*([a-zA-Z0-9\+\-\.]+)\:/;e.findContext=function(a){for(var b=Sys.UI.TemplateContext._contexts[a.__mstcindex];!b&&a;a=a.parentNode);return b||Sys.Application.get_templateContext()};X=Sys._Application.prototype;X.get_templateContext=function(){return this._context||a};X._baseDispose=X.dispose;X.dispose=function(){var b=this._context;b&&b.dispose();this._context=a;this._baseDispose()};X.removeComponent=function(c){var d=c.get_id();if(d)delete this._components[d];var a=this._context;if(a){var b=c.__tc;if(b&&b[0]===a._tcindex)delete a.components[b[1]]}};e=Sys.UI.TemplateContext=function(){var a=this,b=a._tcindex=Sys.UI.TemplateContext._tcindex++;Sys.UI.TemplateContext._contexts[b]=a;a._completed=[];a.nodes=[];Sys.UI.TemplateContext.initializeBase(a)};e.prototype={data:a,dataItem:a,index:0,parentContext:a,containerElement:a,insertBeforeNode:a,components:a,nodes:a,isDisposed:d,_lastIndex:c,dispose:function(){var c=this;if(!c._global){var e=c.nodes;if(e)for(var f=0,h=e.length;f<h;f++){var g=e[f];g.nodeType===1&&Sys.Application.disposeElement(g,d)}}delete Sys.UI.TemplateContext._contexts[c._tcindex];c.nodes=c.dataItem=c.components=c.getInstanceId=c.containerElement=c.insertBeforeNode=c.parentContext=c.data=a;c.isDisposed=b},query:function(a){return new Sys.ElementSet(this._find(a))},"get":function(a){return this._find(a,b)},_find:function(f,d){var c=[],e;if(typeof f===h)e=[f];else e=f;var i=/^[#\$](\w|[$:\.\-])+$/,g=this;db(e,function(a){var e=i.test(a)?g._findById(a.substr(0,1),a.substr(1),d):Sys._find(a,g.nodes,d);if(e)if(d){c.push(e);return b}else c.push.apply(c,e)});return d?c[0]||a:c},_findById:function(f,g,h){for(var b=a,c=this;!b&&c;c=c.parentContext){var e=c.nodes,d=f+c.getInstanceId(g);if(c._global)b=Sys.get(d)||Sys.get(d,e);else b=Sys.get(d,e)}b=b||Sys.get(f+g);return h?b:b?[b]:[]},getInstanceId:function(c){var b;if(this._global)b=f;else{b=this.index;var a=this.parentContext;while(a&&!a._global){b=a.index+"_"+b;a=a.parentContext}}return c+b},initializeComponents:function(){var c=this.components;if(c){var b=c.length-1,d=this._lastIndex;this._lastIndex=b;for(;b>d;b--){var a=c[b];if(a&&Sys.Component.isInstanceOfType(a))if(a.get_isUpdating())a.endUpdate();else!a.get_isInitialized()&&a.initialize()}}},_onInstantiated:function(c,e){var b=this;db(b._completed,function(a){a()});b._completed=[];if(!e){var d=b.containerElement;db(b.nodes,function(b){d.insertBefore(b,c||a)})}},_registerComponent:function(c){var d=this.components;c.__tc=[this._tcindex,d.length];d.push(c);Sys.Component._register(c,a,b)},_registerIf:function(a){if(a instanceof Array)for(var b=0,c=a.length;b<c;b++)this._registerComponent(a[b]);else a&&typeof a==="object"&&this._registerComponent(a)}};e.registerClass("Sys.UI.TemplateContext",a,Sys.IDisposable);e._tcindex=0;e._contexts=[];e=Sys.UI.ITemplateContextConsumer=function(){};e.registerInterface("Sys.UI.ITemplateContextConsumer");e=Sys.Application;e._caseIndex={};e._prototypeIndex={};e._context=new Sys.UI.TemplateContext;e._context._global=b;Sys.registerPlugin({name:"activateElements",dom:b,plugin:function(h,e){var f=this.get(),i=Sys.Application,c=i._context,j=eb(P);f=f||document.documentElement;c.dataItem=typeof h===g?a:h;c.components=c.components||[];c.nodes=[];e=e!==d;Sys.query(f).each(function(){c.nodes.push(this);i._activateElement(this,c,j,e)});c.initializeComponents();c._onInstantiated(a,b);return c}});e._findType=function(c,h,g){var i,d,b,f="xmlns:"+h;function e(){var d;try{d=g?c[f]:c.getAttribute(f)}catch(e){}if(d&&d.substr(0,11)==="javascript:"){d=d.substr(11);b=a;b=Type.parse(d);if(b&&b.__class)return;else b=d}}for(;c;c=c.parentNode){e();if(d)throw Error.invalidOperation(d);if(b)return b}c=document.body;e();if(d)throw Error.invalidOperation(d);return b};e._activateElement=function(E,s,C,G){var x="sys:commandtarget";if(G)G=!Sys.UI.Template._isTemplate(E);var P=c,T=G?C?E.all:E.getElementsByTagName("*"):[],gb=/(^| )sys\-template($| )/,S=C&&Sys.Browser.version<=7,e=E;do{if(e.nodeType!==1)continue;var kb,r,db,I=a,m=a,v=a,B=a,U=d,H=a,M=e.attributes,N=M.length-1,y=a;if(N>=0&&(!S||M[N].expando)&&!e.__msajaxactivated){for(r=N;r>=0;r--){var u=M[r];if(S&&!u.expando)break;if(!u.specified||u.nodeName.indexOf(":")<0)continue;U=b;H=u.nodeName;var i=u.nodeValue;switch(H){case Q:I=i.split(",");break;case"sys:command":var hb=Sys.Application._getPropertyValue(a,a,a,i,s,a,b),fb=Sys.Application._getCommandAttr(e,"sys:commandargument",C,s),eb=Sys.Application._getCommandAttr(e,x,C,s);Sys.query(e).setCommand(hb||f,fb||a,Sys.UI.DomElement._ensureGet(eb,s,x));break;default:y=y||[];y.push(u)}}if(U){e.__msajaxactivated=b;if(I){v={};for(var R=0,jb=I.length;R<jb;R++){var D=I[R].trim();if(v[D])continue;var t=Sys.Application._findType(e,D,C),bb=a,L=0,K=0,V=0,ib=typeof t!==h,w=a;if(ib){L=t.inheritsFrom(Sys.Component);K=L&&(t.inheritsFrom(Sys.UI.Behavior)||t.inheritsFrom(Sys.UI.Control));V=t.implementsInterface(Sys.UI.ITemplateContextConsumer);w=K?new t(e):new t;L&&w.beginUpdate();!K&&Sys.Application._registerComponent(e,w);V&&w.set_templateContext(s);m={instance:w,isClass:b,typeName:D,type:t}}else{bb={};w=Type.parse(t);m={instance:w,props:bb,typeName:D,type:t};B=B||[];B.push(m)}v[D]=m}}if(y)for(r=y.length-1;r>=0;r--){u=y[r];H=u.nodeName;i=u.nodeValue;var X=/^select$/i.test(e.tagName),q=Sys.Application._splitAttribute(H,X,v),O=q.type,lb=q.ns,j=q.name;if(O<0)continue;if(O===3){m=q.index;var J=m.instance;i=Sys.Application._getPropertyValue(q,J,j,i,s);if(typeof i===g)continue;if(m.isClass)switch(q.map.type){case 1:q.map.setter.call(J,i);break;case 2:q.map.setter.call(J,typeof i===k?i:new Function("sender","args",i));break;default:J[j]=i}else m.props[j]=i}else if(O<=2){(q.textNode||j===l)&&Sys.Application._clearContent(e);i=Sys.Application._getPropertyValue(q,e,j,i,s);if(typeof i===g)continue;switch(q.type){case 0:if(/^on/i.test(j)){e[j]=document.attachEvent?new Function(i):new Function("event",i);break}if(X&&j===n){e.value=i;break}var W=Sys.UI.Template._booleanAttributes,Y=e.tagName.toLowerCase(),Z=j===o||W[Y]&&W[Y][j];if(Z){if(j===ab)e.selected=i;if(!i){e.removeAttribute(j);break}else if(j===z){e.setAttribute(j,j);break}}var cb=document.createAttribute(j);cb.nodeValue=Z?j:i;e.setAttributeNode(cb);break;case 1:if(q.textNode){Sys.Application._clearContent(e);e.appendChild(document.createTextNode(i))}else Sys.Observer.setValue(e,j,i);break;case 2:i?Sys.UI.DomElement.addCssClass(e,j):Sys.UI.DomElement.removeCssClass(e,j)}}}if(B)for(r=0,db=B.length;r<db;r++){m=B[r];s._registerIf(m.instance(e,m.props,s))}if(v)for(m in v)if(v.hasOwnProperty(m)){m=v[m];m&&m.isClass&&s._registerComponent(m.instance)}}}if(G){var F=e.className;if(F&&F.length>=12&&(F===A||gb.test(F))){var p=e.nextSibling;while(p&&p.nodeType!==1)p=p.nextSibling;while(!p){e=e.parentNode;if(e===E)break;p=e.nextSibling;while(p&&p.nodeType!==1)p=p.nextSibling}if(!p||p.nodeType!==1)break;do{e=T[P+1];if(e===p)break;P++}while(e)}}}while(!!(e=T[++P]))};e._clearContent=function(a){var c;Sys.Application.disposeElement(a,b);try{a.innerHTML=f}catch(c){while(a.firstChild)a.removeChild(a.firstChild)}};e._getCommandAttr=function(d,e,g,f){var h,c=a;try{c=g?d[e]:d.getAttribute(e);c=c?Sys.Application._getPropertyValue(a,a,a,c,f,a,b):a}catch(h){}return c};e._directAttributes={style:Y,"class":Z,cellpadding:"cellPadding",cellspacing:"cellSpacing",colspan:"colSpan",rowspan:"rowSpan",contenteditable:"contentEditable",valign:"vAlign",innertext:N,innerhtml:l};e._splitAttribute=function(p,r,l){var h=p.split(":"),f=h.length>1?h[0]:a,d=h[f?1:0],e=c,m,j,g,i=f==="sys",k=d.toLowerCase(),q=!f;if(!f||i){var o=Sys.Application._directAttributes[k];if(o){e=1;if(d==="innertext")m=b;d=o}else if(r){if(k===R){d=S;e=1}else if(d===n)e=1;else if(i){e=0;f=a}}else if(i)if(d===x||d==="commandargument"||d==="commandtarget")e=4;else if(d.indexOf("style-")===0){d="style."+Sys.Application._translateStyleName(d.substr(6));e=1}else if(d.indexOf("class-")===0){d=d.substr(6);e=2}else{f=a;e=0}}else if(l){g=l[f];if(g){e=3;if(g.isClass){j=Sys.Application._translateName(d,g.type);d=j.name}}else{d=f+":"+d;f=a;e=c}}else{d=f+":"+d;f=a;e=c}return{ns:f,name:d,type:e,map:j,index:g,textNode:m,isNative:q}};e._translateStyleName=function(b){if(b.indexOf("-")===c)return b;for(var a=b.toLowerCase().split("-"),e=a[0],d=1,g=a.length;d<g;d++){var f=a[d];e+=f.substr(0,1).toUpperCase()+f.substr(1)}return e};e._getExtensionCode=function(e,o,n){e=e.trim();var h,d,m={},j=e.indexOf(" ");if(j!==c){h=e.substr(0,j);d=e.substr(j+1);if(d){d=d.replace(/\\,/g,"\0").split(",");for(var l=0,p=d.length;l<p;l++){var g=d[l].replace(/\u0000/g,","),i=g.indexOf("="),f,k;if(i!==c){k=g.substr(0,i).trim();f=g.substr(i+1).trim();if(o)f=this._getPropertyValue(a,a,a,f,n,b)}else{k="$default";f=g.trim()}m[k]=f}}}else h=e;return{instance:Sys.Application._getMarkupExtension(h),name:h,properties:m}};e._getPropertyValue=function(j,k,l,a,d,i,h){var e=a;if(a.startsWith("{{")&&a.endsWith("}}"))e=this._evaluateExpression(a.slice(2,-2),d);else if(!h&&!i&&a.startsWith("{")&&a.endsWith("}")){var g=this._getExtensionCode(a.slice(1,c),b,d);e=g.instance.extension(k,(j.type===2?D:f)+l,d,g.properties)}return e};e._tryName=function(b,h){var d=h.prototype,c="set_"+b,e=d[c];if(e)return{name:b,setterName:c,setter:e,type:1};if(b.startsWith("on")){c="add_"+b.substr(2);var f=d[c];if(f)return{name:b,setterName:c,setter:f,type:2}}return typeof d[b]!==g?{name:b}:a};e._translateName=function(b,c){var a,d=Sys.Application._prototypeIndex[c.__typeName];if(d){a=d[b];if(a)return a}else d={};c.resolveInheritance();a=Sys.Application._tryName(b,c);if(!a){var e=Sys.Application._mapToPrototype(b,c);if(e&&e!==b)a=Sys.Application._tryName(e,c);if(!a)a={name:b}}d[b]=a;return a};e._mapToPrototype=function(d,e){var c,b=Sys.Application._caseIndex[e.__typeName];if(!b){b={};e.resolveInheritance();for(var a in e.prototype){if(a.startsWith(G)||a.startsWith("set_")||a.startsWith("add_"))a=a.substr(4);else if(a.startsWith("remove_"))a=a.substr(7);b[a.toLowerCase()]=a}Sys.Application._caseIndex[e.__typeName]=b}d=d.toLowerCase();if(d.startsWith("on")){c=b[d.substr(2)];if(c)c="on"+c;else c=b[d]}else c=b[d];return c};e._doEval=function(__expression,$context){with({$context:$context})with($context.dataItem||{})return eval("("+__expression+")")};e._evaluateExpression=function(b,a){return Sys.Application._doEval.call(a.dataItem,b,a)};e._registerComponent=function(b,c){var a=b._components;if(!a)b._components=a=[];a.push(c)};e._activateOnPartial=function(a,b){this._doUpdatePanel(a,b);Sys.activateDom&&Sys.query(a).activateElements()};e._raiseInit=function(){this.beginCreateComponents();Sys.Observer.raiseEvent(this,"init");Sys.activateDom&&Sys.query(document.documentElement).activateElements();if(Sys.WebForms&&Sys.WebForms.PageRequestManager){var a=Sys.WebForms.PageRequestManager.getInstance();a._doUpdatePanel=a._updatePanel;a._updatePanel=Sys.Application._activateOnPartial}this.endCreateComponents()};e=Sys.BindingMode=function(){};e.prototype={auto:0,oneTime:1,oneWay:2,twoWay:3,oneWayToSource:4};e.registerEnum("Sys.BindingMode");e=Sys.Binding=function(){var a=this;Sys.Binding.initializeBase(a);a._sourceHandlers=[];a._targetHandlers=[];a._onSourceChanged=Function.createDelegate(a,a._sourceChanged);a._onTargetChanged=Function.createDelegate(a,a._targetChanged);a._onOptionsUpdated=Function.createDelegate(a,a._optionsUpdated);a._onDispose=Function.createDelegate(a,a.dispose)};e.prototype={_defaultValue:a,get_convert:function(){return this._convert||a},set_convert:function(a){this._convert=a;this._convertFn=this._resolveFunction(a)},get_convertBack:function(){return this._convertBack||a},set_convertBack:function(a){this._convertBack=a;this._convertBackFn=this._resolveFunction(a)},get_ignoreErrors:function(){return!!this._ignoreErrors},set_ignoreErrors:function(a){this._ignoreErrors=a},get_mode:function(){return this._mode||Sys.BindingMode.auto},set_mode:function(a){this._mode=a},get_defaultValue:function(){return this._defaultValue},set_defaultValue:function(a){this._defaultValue=a},get_source:function(){return this._source||a},set_source:function(a){if(a instanceof Sys.ComponentSet||a instanceof Sys.ElementSet)a=a.get(0);this._source=a},get_templateContext:function(){return this._templateContext||a},set_templateContext:function(a){this._templateContext=a},get_path:function(){return this._path||f},set_path:function(b){this._path=b;this._pathArray=b?b.split("."):a},get_target:function(){return this._target||a},set_target:function(a){if(a instanceof Sys.ComponentSet||a instanceof Sys.ElementSet)a=a.get(0);this._target=a},get_targetProperty:function(){return this._targetProperty||f},set_targetProperty:function(b){this._targetProperty=b;this._targetPropertyArray=b?b.split("."):a},_addBinding:function(a){if(a.nodeType===3){a=a.parentNode;if(!a)return}var b=a.__msajaxbindings=a.__msajaxbindings||[];b.push(this);Sys.UI.DomElement._onDispose(a,Sys.Binding._disposeBindings)},dispose:function(){var c=this;if(!c._disposed){c._disposed=b;c._watchObject(a);c._watchObject(a,b);c._targetHandlers=a;c._sourceHandlers=a;var d=c._source,e=c._target;if(d){c._sourceOption&&Sys.Observer.removeEventHandler(d,q,c._onOptionsUpdated);Sys.INotifyDisposing.isImplementedBy(d)&&d.remove_disposing(c._onDispose)}if(e){c._targetOption&&Sys.Observer.removeEventHandler(e,q,c._onOptionsUpdated);Sys.INotifyDisposing.isImplementedBy(e)&&e.remove_disposing(c._onDispose)}c._convert=a;c._convertBack=a;c._convertFn=a;c._convertBackFn=a;c._lastSource=a;c._lastTarget=a;c._source=a;c._target=a;c._pathArray=a;c._defaultValue=a;c._targetPropertyArray=a;c._templateContext=a}Sys.Binding.callBaseMethod(c,"dispose")},_getPropertyFromIndex:function(b,f,d,e){for(var c=d;c<=e;c++){if(b===a||typeof b===g)return a;b=this._getPropertyData(b,f[c])}return b},_getPropertyData:function(b,a){return typeof b[G+a]===k?b[G+a]():b[a]},_watchObject:function(b,h){var c=this,i=h?c._pathArray:c._targetPropertyArray,g=h?c._sourceHandlers:c._targetHandlers,f=!!b;if(i)for(var d=0,k=i.length;d<k;d++){var j=i[d],e=g[d];if(!e||e.object!==b){if(e){c._forget(e);g[d]=a}if(f)g[d]=c._listen(b,j,h)}if(f){b=c._getPropertyData(b,j);f=b&&(typeof b==="object"||b instanceof Array||Sys._isDomElement(b))}else b=a}},_isInput:function(c,b){var d,a=Sys.UI.DomElement.isDomElement(c)&&c.nodeType===1&&c.tagName?c.tagName.toLowerCase():f;if(a===w||a===j||a===E){b=(b||f).toLowerCase();if(b===n||b===R||b===z)if(a!==j||a===j&&!/button|image|hidden|submit|reset/i.test(c.type))d=a}return d},_listen:function(b,h,i){var e=this,j=e,d=i?e._onSourceChanged:e._onTargetChanged,c={listener:d,object:b,pc:function(c,b){var a=b.get_propertyName();(!a||a===h)&&d()},dom:[]};Sys.Observer._addEventHandler(b,T,c.pc);var f=e._isInput(b,h),g=Sys.UI.DomEvent.addHandler;if(f){c.dom.push("change");g(b,"change",d);if(f!==E){c.dom.push("click");g(b,"click",d);if(f===w){c.dom.push("keyup");g(b,"keyup",d)}}}b=a;return c},_forget:function(a){var c=a.object,d=a.dom;Sys.Observer._removeEventHandler(c,T,a.pc);for(var b=0,e=d.length;b<e;b++)Sys.UI.DomEvent.removeHandler(c,d[b],a.listener)},_resolveFunction:function(a){var c,b;if(typeof a===k)b=a;else{b=Sys.converters[a];if(!b)try{b=Type.parse(a)}catch(c){throw Error.invalidOperation(String.format(Sys.UI.TemplatesRes.functionNotFound,a));}}return b},update:function(a){a=a||this.get_mode();if(a===Sys.BindingMode.oneWayToSource)this._targetChanged(b);else this._sourceChanged(b)},initialize:function(){var a=this;if(!a.get_isInitialized()){var b=a.get_templateContext();if(!b)a._doInitialize();else b._completed.push(Function.createDelegate(a,a._doInitialize))}},_doInitialize:function(){var c=this,i=c.get_source(),e=c.get_target();typeof i===h&&c.set_source(i=c._resolveReference(i)||a);typeof e===h&&c.set_target(e=c._resolveReference(e)||a);var g=c.get_mode();if(e&&g===Sys.BindingMode.auto){g="oneWay";if(c._isInput(e,c._targetPropertyArray?c._targetPropertyArray[0]:f)||Sys.INotifyPropertyChange.isImplementedBy(e))g="twoWay";g=Sys.BindingMode[g];c.set_mode(g)}Sys.Binding.callBaseMethod(c,U);c.update(g);if(g!==Sys.BindingMode.oneTime){if(i){if(g!==Sys.BindingMode.oneWayToSource){c._watchObject(i,b);Sys.INotifyDisposing.isImplementedBy(i)&&i.add_disposing(c._onDispose)}Sys.UI.DomElement.isDomElement(i)&&c._addBinding(i)}if(e){if(g!==Sys.BindingMode.oneWay){c._watchObject(e);Sys.INotifyDisposing.isImplementedBy(e)&&e.add_disposing(c._onDispose)}Sys.UI.DomElement.isDomElement(e)&&c._addBinding(e)}}function j(a,c){if(Sys.UI.DomElement.isDomElement(a)&&/^select$/i.test(a.tagName)&&/^(selectedIndex|value)$/i.test(c)){Sys.Observer.addEventHandler(a,q,this._onOptionsUpdated);return b}return d}if(i&&g>=3)c._sourceOption=j.call(c,i,c.get_path());if(e&&g<=3)c._targetOption=j.call(c,e,c.get_targetProperty())},_isChecked:function(a,b){return b===z&&a.tagName.toLowerCase()===j},_optionsUpdated:function(a){!this._disposed&&this.update(a===this.get_source()?4:2)},_sourceChanged:function(j){var c=this;if(c._disposed)return;j=j===b;var p,h=c.get_target(),e=c.get_source();if(!h)return;e=e&&c._pathArray?c._getPropertyFromIndex(e,c._pathArray,0,c._pathArray.length-1):e;if(!c._updateSource&&(j||e!==c._lastSource))try{c._updateTarget=b;c._lastSource=c._lastTarget=e;if(c._convertFn)if(c._ignoreErrors)try{e=c._convertFn(e,c)}catch(p){}else e=c._convertFn(e,c);if(e===a||typeof e===g)e=c.get_defaultValue();if(c._targetProperty&&c._targetProperty.startsWith(D)){var n=c._targetProperty.substr(6).trim();e?Sys.UI.DomElement.addCssClass(h,n):Sys.UI.DomElement.removeCssClass(h,n)}else{var m=c._targetPropertyArray.length;h=c._getPropertyFromIndex(h,c._targetPropertyArray,0,m-2);if(h!==a&&typeof h!==g){var i=c._targetPropertyArray[m-1],k=Sys.UI.DomElement.isDomElement(h);if(k)e=Sys.UI.Template._checkAttribute(i,e)||f;if(k&&(i===l||i===N)){Sys.Application._clearContent(h);if(i===l)h.innerHTML=e;else h.appendChild(document.createTextNode(e));Sys.Observer.raisePropertyChanged(h,i)}else Sys.Observer._setValue(h,i,e);if(e&&k&&c._isChecked(h,i)){var o=document.createAttribute(i);o.nodeValue=i;h.setAttributeNode(o)}}}}finally{c._updateTarget=d}!j&&c._watchObject(c.get_source(),b)},_targetChanged:function(i){var c=this;if(c._disposed)return;i=i===b;var e=c.get_target(),f=c.get_source();if(!f)return;e=!e?a:c._getPropertyFromIndex(e,c._targetPropertyArray,0,c._targetPropertyArray.length-1);if(!c._updateTarget&&(i||e!==c._lastTarget))try{c._updateSource=b;c._lastTarget=c._lastSource=e;if(c._convertBackFn)if(c._ignoreErrors)try{e=c._convertBackFn(e,c)}catch(n){}else e=c._convertBackFn(e,c);if(c._pathArray){var j=c._pathArray.length;f=c._getPropertyFromIndex(f,c._pathArray,0,j-2);if(f!==a&&typeof f!==g){var h=c._pathArray[j-1],k=Sys.UI.DomElement.isDomElement(f);if(k){e=Sys.UI.Template._checkAttribute(h,e);h===l&&Sys.Application._clearContent(f)}Sys.Observer._setValue(f,h,e);if(e&&k&&c._isChecked(f,h)){var m=document.createAttribute(h);m.nodeValue=h;f.setAttributeNode(m)}}}}finally{c._updateSource=d}!i&&c._watchObject(c.get_target())},_resolveReference:function(c){var b=Sys.get(c,this.get_templateContext());return b||a}};e._disposeBindings=function(){var b=this.__msajaxbindings;if(b)for(var c=0,d=b.length;c<d;c++)b[c].dispose();this.__msajaxbindings=a};e.registerClass("Sys.Binding",Sys.Component,Sys.UI.ITemplateContextConsumer);Sys.converters=Sys.converters||{};e._bindThis=function(b,c,d,a){if(arguments.length>1)a=bb({targetProperty:b,source:c,path:d},a);else a=b;this.each(function(){a.target=this;Sys.binding(a)});return this};Sys.registerPlugin({name:O,global:b,plugin:function(e,f,i,j,b){if(arguments.length>1)b=bb({target:e,targetProperty:f,source:i,path:j,templateContext:Sys._isInstanceOfType(Sys.UI.TemplateContext,this)?this:a},b);else b=e;var c=b.mode;if(typeof c===h)b.mode=Sys.BindingMode.parse(c);c=b.ignoreErrors;if(typeof c===h)b.ignoreErrors=Boolean.parse(c);var d=new Sys.Binding;fb(b,function(a,b){typeof a!==g&&Sys.Observer.setValue(d,b,a)});d.initialize();return d}});Sys.registerPlugin({name:"domBinding",functionName:O,dom:b,plugin:Sys.Binding._bindThis});Sys.registerPlugin({name:"componentBinding",functionName:O,components:b,plugin:Sys.Binding._bindThis});Sys.Application.registerMarkupExtension(O,function(e,c,b,d){var a=bb({source:b.dataItem,templateContext:b,target:e,targetProperty:c},d);a.path=a.path||a.$default;delete a.$default;var f=Sys.binding(a);b.components.push(f)},d);e=Sys.UI.DataView=function(a){Sys.UI.DataView.initializeBase(this,[a])};e.prototype={_autoFetch:d,_fetching:d,_changed:d,_data:a,_dataProvider:a,_wsp:a,_wspClass:a,_dirty:d,_stale:b,_dvTemplate:a,_eventType:0,_httpVerb:a,_initialSelectedIndex:c,_fetchParameters:a,_parentContext:a,_placeholder:a,_query:a,_contexts:a,_selectedIndex:c,_selectedItemClass:a,_template:a,_timeout:0,_request:a,add_command:function(a){this._addHandler(x,a)},remove_command:function(a){this._removeHandler(x,a)},add_rendering:function(a){this._addHandler(H,a)},remove_rendering:function(a){this._removeHandler(H,a)},add_rendered:function(a){this._addHandler(I,a)},remove_rendered:function(a){this._removeHandler(I,a)},add_itemRendered:function(a){this._addHandler(V,a)},remove_itemRendered:function(a){this._removeHandler(V,a)},add_itemRendering:function(a){this._addHandler(W,a)},remove_itemRendering:function(a){this._removeHandler(W,a)},add_fetchFailed:function(a){this._addHandler(J,a)},remove_fetchFailed:function(a){this._removeHandler(J,a)},add_fetchSucceeded:function(a){this._addHandler(K,a)},remove_fetchSucceeded:function(a){this._removeHandler(K,a)},get_viewData:function(){return this._viewData||a},get_data:function(){return this._data},set_data:function(a){(!this._setData||this._data!==a)&&this._loadData(a)},get_dataProvider:function(){return this._provider||a},set_dataProvider:function(c){var d=this;d._dataProvider=d._wsp=d._wspClass=a;if(c instanceof Sys.ComponentSet)c=c.get(0);if(Sys.Data.IDataProvider.isImplementedBy(c))d._dataProvider=c;else if(Sys.Net.WebServiceProxy.isInstanceOfType(c))d._wsp=c;else if(Type.isClass(c)&&c.inheritsFrom(Sys.Net.WebServiceProxy)&&typeof c.get_path===k)d._wspClass=c;d._provider=c;if(d.get_autoFetch()&&d._isActive())c&&d._doAutoFetch();else d._stale=b},get_autoFetch:function(){return this._autoFetch},set_autoFetch:function(b){var a=this,c=a._autoFetch;if(typeof b===h)b=Boolean.parse(b);a._autoFetch=b;a._isActive()&&a._stale&&!c&&b&&a._doAutoFetch()},get_isFetching:function(){return this._fetching},get_httpVerb:function(){return this._httpVerb||"POST"},set_httpVerb:function(a){this._httpVerb=a},get_contexts:function(){return this._contexts},get_fetchParameters:function(){return this._fetchParameters},set_fetchParameters:function(c){var a=this;if(a._fetchParameters!==c){a._fetchParameters=c;if(a.get_autoFetch()&&a._isActive())a._doAutoFetch();else a._stale=b}},get_selectedData:function(){var e=a,d=this.get_selectedIndex();if(d>c){var b=this.get_viewData();if(b instanceof Array){if(d<b.length)e=b[d]}else e=b}return e},get_selectedIndex:function(){return this._selectedIndex},set_selectedIndex:function(b){var a=this;b=a._validateIndexInput(b);if(!a.get_isInitialized()||!a._setData)a._selectedIndex=b;else a._applySelectedIndex(b)},get_initialSelectedIndex:function(){return this._initialSelectedIndex},set_initialSelectedIndex:function(b){var a=this;b=a._validateIndexInput(b);if(b!==a.get_initialSelectedIndex()){a._initialSelectedIndex=b;a._raiseChanged("initialSelectedIndex")}},get_selectedItemClass:function(){return this._selectedItemClass||f},set_selectedItemClass:function(b){var a=this,d=a.get_selectedItemClass();if(b!==d){var c=a.get_selectedIndex();a._addRemoveCssClass(c,d,Sys.UI.DomElement.removeCssClass);a._addRemoveCssClass(c,b,Sys.UI.DomElement.addCssClass);a._selectedItemClass=b}},get_timeout:function(){return this._timeout},set_timeout:function(a){this._timeout=a},get_fetchOperation:function(){return this._query||f},set_fetchOperation:function(c){var a=this;if(a._query!==c){a._query=c;if(a.get_autoFetch()&&a._isActive())c&&a._doAutoFetch();else a._stale=b}},get_itemPlaceholder:function(){return this._placeholder||a},set_itemPlaceholder:function(c){var a=this;if(a._placeholder!==c){a._placeholder=c;a._dirty=b;a._raiseChanged(y)}},get_templateContext:function(){return this._parentContext||Sys.UI.Template.findContext(this.get_element())},set_templateContext:function(c){var a=this;if(a._parentContext!==c){a._parentContext=c;a._dirty=b;a._raiseChanged("templateContext")}},get_itemTemplate:function(){return this._template||a},set_itemTemplate:function(d){var c=this;if(c._template!==d){c._template=d;c._dirty=b;if(c._dvTemplate){c._dvTemplate.dispose();c._dvTemplate=a}if(c._isActive()){c.raisePropertyChanged(L);c.refresh()}else c._changed=b}},_applySelectedIndex:function(e,j){var d=this,g=d.get_selectedIndex();if(j||e!==g){var f=d.get_viewData();if(!(f instanceof Array))f=[f];var i=e<c||e>=f.length;d._selectedIndex=e;d._currentData=e===c||i?a:f[e];var h=d.get_selectedItemClass();d._addRemoveCssClass(g,h,Sys.UI.DomElement.removeCssClass);d._addRemoveCssClass(e,h,Sys.UI.DomElement.addCssClass);if(!d.get_isUpdating())e!==g&&d.raisePropertyChanged(S);else d._changed=b}if(!d.get_isUpdating())d._raiseSelectedData();else d._changed=b},_addRemoveCssClass:function(b,f,i){if(f&&b>c){var d=this.get_contexts(),h=d?d.length:c;if(h&&b<h){var a=d[b].nodes;if(a)for(var e=0,j=a.length;e<j;e++){var g=a[e];g.nodeType===1&&i(g,f)}}}},_collectionChanged:function(p,n){var d=this,k=d._currentData,g=n.get_changes(),a=d.get_selectedIndex(),m=a;if(d._isActive()){d._changing=b;d.refresh()}else{d._dirty=b;return}var i=d.get_viewData();if(a!==c&&a<i.length&&i[a]===k)return;for(var f=0,o=g.length;f<o;f++){var e=g[f];if(e.action===Sys.NotifyCollectionChangedAction.add){if(a>=e.newStartingIndex)a+=e.newItems.length}else{var h=e.oldStartingIndex,j=e.oldItems.length,l=h+j-1;if(a>l)a-=j;else if(a>=h){a=c;break}}}a!==m&&d.set_selectedIndex(a)},_elementContains:function(c,a,e){if(c===a)return!e;do{a=a.parentNode;if(a===c)return b}while(a);return d},_raiseChanged:function(a){if(this._isActive())this.raisePropertyChanged(a);else this._changed=b},_raiseFailed:function(b,d){var c=new Sys.Net.WebRequestEventArgs(b?b.get_executor():a,d);this.onFetchFailed(c);Sys.Observer.raiseEvent(this,J,c)},_raiseSelectedData:function(){var a=this;if(a._lastData!==a._currentData){a._lastData=a._currentData;a.raisePropertyChanged("selectedData")}},_raiseSucceeded:function(b,d){var c=new Sys.Net.WebRequestEventArgs(b?b.get_executor():a,a,d);this.onFetchSucceeded(c);Sys.Observer.raiseEvent(this,K,c)},_ensureTemplate:function(a){if(!Sys.UI.Template.isInstanceOfType(a)){a=Sys.UI.DomElement._ensureGet(a,this.get_templateContext(),L);if(a)a=new Sys.UI.Template(a)}return a},_getTemplate:function(){var b=this;if(b._dvTemplate)return b._dvTemplate;var a=b.get_itemTemplate();if(!a){var c=b.get_element();if(Sys.UI.Template._isTemplate(c))b._dvTemplate=a=new Sys.UI.Template(c)}else if(!Sys.UI.Template.isInstanceOfType(a)){a=Sys.UI.DomElement._ensureGet(a,b.get_templateContext(),L);b._dvTemplate=a=new Sys.UI.Template(a)}return a},_loadData:function(c){var a=this;a._swapData(a._data,c);a._data=c;a._setData=b;a._stale=d;a._dirty=b;if(a._isActive()){a.refresh();a.raisePropertyChanged("data")}else a._changed=b},_resetSelectedIndex:function(){var a=this,e=a.get_viewData(),b=a.get_initialSelectedIndex(),d=a.get_selectedIndex();if(!(e instanceof Array)||b>=e.length){if(d!==c){a.set_selectedIndex(c);return}}else if(d!==b){a.set_selectedIndex(b);return}a._currentData=a.get_selectedData();a._raiseSelectedData()},_initializeResults:function(){for(var a=0,c=this._contexts.length;a<c;a++){var b=this._contexts[a];b&&b.initializeComponents()}},_isActive:function(){return this.get_isInitialized()&&!this.get_isUpdating()},_raiseCommand:function(a){this.onCommand(a);Sys.Observer.raiseEvent(this,x,a)},_raiseItem:function(b,a){this["onItem"+b](a);Sys.Observer.raiseEvent(this,"item"+b,a)},abortFetch:function(){var b=this;if(b._request){b._request.get_executor().abort();b._request=a}if(b._fetching){b._fetching=d;b._raiseChanged(p)}},onBubbleEvent:function(j,f){var g=this;if(Sys.CommandEventArgs.isInstanceOfType(f)){g._raiseCommand(f);if(f.get_cancel())return b;else{var i=f.get_commandName();if(i&&i.toLowerCase()===w){var e=f.get_commandArgument();if(typeof e===h)e=parseInt(e);if(isNaN(e)||e===a){e=g._findContextIndex(j);if(e===c){e=g._findContextIndex(f.get_commandSource());if(e===c)e=a}}if(typeof e==="number"){g.set_selectedIndex(e);return b}}}}return d},onRendering:function(){},onRendered:function(){},onFetchFailed:function(){},onFetchSucceeded:function(){},_doAutoFetch:function(){var b=this,c;try{if(b._dataProvider||b._provider){b.fetchData();b._stale=d}}catch(c){b._raiseFailed(a,a)}},_findContextIndex:function(j){var d=this,f=d._containers;if(j&&f){var g=d.get_contexts();if(g){var b=Sys.UI.DomElement._ensureGet(j,d.get_templateContext(),"source");if(b){var a=b.parentNode,l=d.get_element(),h=c;while(a&&(h=Sys._indexOf(f,a))<0&&a!==l){b=a;a=a.parentNode}if(h>c)for(var k=f[h],e=0,m=g.length;e<m;e++){var i=g[e];if(i.containerElement===k&&Sys._indexOf(i.nodes,b)>c)return e}}}}return c},findContext:function(d){var b=this._findContextIndex(d);return b!==c?this.get_contexts()[b]:a},_clearContainer:function(e,a){var h=a?a.__msajaxphcount:c;if(h>c&&a)a.__msajaxphcount=0;if(h<0){a&&e.removeChild(a);Sys.Application.disposeElement(e,b);try{e.innerHTML=f}catch(n){var k;while(k=e.firstChild)e.removeChild(k)}a&&e.appendChild(a)}else if(h>0){var g,m,l,i=e.childNodes;for(g=0,m=i.length;g<m;g++)if(i[g]===a)break;l=g-h;for(g=0;g<h;g++){var j=i[l];Sys.Application.disposeElement(j,d);e.removeChild(j)}}},_clearContainers:function(f){var c=this,b,d;for(b=0,d=f.length;b<d;b++){var e=f[b],h=e?e.parentNode:c.get_element();c._clearContainer(h,e)}for(b=0,d=c._contexts.length;b<d;b++){var g=c._contexts[b];g.nodes=a;g.dispose()}},_isAlone:function(c,h){var g=c.childNodes;if(g.length===1)return b;var a=c.firstChild,f=/\S/;while(a){if(a!==h){var e=a.nodeType;if(e===3){if(f.test(a.nodeValue))return d}else if(e!==8)return d}a=a.nextSibling}return b},refresh:function(){var e=this;if(!e._setData)return;var J=e._changing;e._changing=d;var j=e.get_data(),r=e.get_templateContext(),h=new Sys.UI.DataViewEventArgs(j);h.itemTemplate=e._getTemplate();h.itemPlaceholder=Sys.UI.DomElement._ensureGet(e.get_itemPlaceholder(),r,y);e.onRendering(h);Sys.Observer.raiseEvent(e,H,h);if(h.get_cancel())return;e._viewData=j=h.data;var w=e._ensureTemplate(h.itemTemplate);e._dirty=d;var z=Sys.UI.DomElement._ensureGet(h.itemPlaceholder,r,y),l=e.get_element(),o,s,m;e._placeholders&&e._clearContainers(e._placeholders);var G=j,p;if(j===a||typeof j===g)p=0;else if(!(j instanceof Array)){G=[j];p=1}else p=j.length;function D(){if(!this._cleared){if(Sys.UI.Template._isTemplate(l)){var d=new Sys.UI.Template(l);d._ensureCompiled();d.dispose();Sys.UI.DomElement.removeCssClass(l,A)}this._clearContainer(l,a);l.__msajaxphcount=c;this._cleared=b}}!p&&w&&w.get_element()===l&&D.call(e);var f,E,u,i,v,n;e._placeholders=u=[];e._containers=v=[];e._contexts=new Array(p);if(z)z.style.display="none";for(var k=0;k<p;k++){var x=G[k];m=new Sys.UI.DataViewEventArgs(x);m.itemTemplate=w;m.itemPlaceholder=z;e._raiseItem("Rendering",m);s=e._ensureTemplate(m.itemTemplate);f=Sys.UI.DomElement._ensureGet(m.itemPlaceholder,r,y);f=f?f.__msajaxphoption||f:a;if(f!==E){i=f?f.parentNode:l;if(Sys._indexOf(u,f)<0){if(f){if(/^option$/i.test(f.tagName)&&/select/i.test(i.tagName)){var t=document.createElement("_hiddenPlaceholder");i.replaceChild(t,f);f.__msajaxphoption=t;t.appendChild(f);f=t}f.style.display="none";var K=f.__msajaxphcount;if(typeof K===g&&e._isAlone(i,f)){f.__msajaxphcount=c;e._clearContainer(i,f)}}else D.call(e);u.push(f);if(Sys._indexOf(v,i)<0){v.push(i);if(/^select$/i.test(i.tagName)){n=n||[];n.push(i)}}}}E=f;if(s)o=s.instantiateIn(i,j,x,k,f,r);else o=bb(new Sys.UI.TemplateContext,{nodes:[],dataItem:x,data:j,index:k,parentContext:r});m.context=o;e._contexts[k]=o;e._raiseItem("Rendered",o);if(s&&f){var F=f.__msajaxphcount||0;if(F>c)f.__msajaxphcount=F+o.nodes.length}}if(n)for(k=0;k<n.length;k++)Sys.Observer.raiseEvent(n[k],q,Sys.EventArgs.Empty);if(!J)if(!e._rendered&&e.get_selectedIndex()>c)e._applySelectedIndex(e.get_selectedIndex(),b);else e._resetSelectedIndex();e._rendered=b;var B=e.get_selectedItemClass();if(B){var C=e.get_selectedIndex();C!==c&&e._addRemoveCssClass(C,B,Sys.UI.DomElement.addCssClass)}e.raisePropertyChanged("viewData");e.onRendered(h);Sys.Observer.raiseEvent(e,I,h);e._initializeResults()},_swapData:function(c,b){var a=this;if(c)switch(a._eventType){case 1:c.remove_collectionChanged(a._changedHandler);break;case 2:Sys.Observer.removeCollectionChanged(c,a._changedHandler)}a._eventType=0;if(b){if(!a._changedHandler)a._changedHandler=Function.createDelegate(a,a._collectionChanged);if(typeof b.add_collectionChanged===k){b.add_collectionChanged(a._changedHandler);a._eventType=1}else if(b instanceof Array){Sys.Observer.addCollectionChanged(b,a._changedHandler);a._eventType=2}}},_validateIndexInput:function(a){var b=typeof a;if(b===h)a=parseInt(a);return a},dispose:function(){var b=this;b._placeholders&&!Sys.Application.get_isDisposing()&&b._clearContainers(b._placeholders);b._dvTemplate&&b._dvTemplate.dispose();if(b.get_isFetching()){b.abortFetch();b._fetching=d}b._swapData(b._data,a);b._currentData=b._lastData=b._placeholders=b._containers=b._placeholder=b._contexts=b._parentContext=b._dvTemplate=b._request=b._dataProvider=b._wsp=b._wspClass=b._provider=b._data=b._fetchParameters=b._query=a;Sys.UI.DataView.callBaseMethod(b,"dispose")},initialize:function(){Sys.UI.DataView.callBaseMethod(this,U);this.refresh();this.updated()},fetchData:function(w,x,r,s){var f="fetchData",c=this;c._stale=d;var h,e=c;function j(b){e._loadData(b);e._fetching=d;e._request=a;e._raiseChanged(p);e._raiseSucceeded(h,b);w&&w(b,s,f)}function n(b){e._fetching=d;e._request=a;e._raiseChanged(p);e._raiseFailed(h,b);x&&x(b,s,f)}c._fetching&&c.abortFetch();var y=c._dataProvider,q=c._wsp,v=c._wspClass,o=c.get_fetchOperation(),i=c.get_fetchParameters()||a,l=c.get_httpVerb()||"POST",m=c.get_timeout()||0;if(typeof r===g)r=a;if(y)h=y.fetchData(o,i,r,l,j,n,m,s);else if(q){var t=q.get_path();if(!t){var u=Object.getType(q);if(u&&typeof u.get_path===k)t=u.get_path()}h=Sys.UI.DataView._fetchWSP(a,t,o,i,l,j,n,m||q.get_timeout())}else if(v)h=Sys.UI.DataView._fetchWSP(a,v.get_path(),o,i,l,j,n,m||v.get_timeout());else h=Sys.UI.DataView._fetchWSP(a,c._provider,o,i,l,j,n,m);c._request=h;c._fetching=b;c._raiseChanged(p);return h},onCommand:function(){},onItemRendering:function(){},onItemRendered:function(){},updated:function(){var a=this;a._stale&&a.get_autoFetch()&&a._doAutoFetch();a._dirty&&a.refresh();if(a._changed){a.raisePropertyChanged(f);a._changed=d}}};e.registerClass("Sys.UI.DataView",Sys.UI.Control,Sys.UI.ITemplateContextConsumer);Sys.registerComponent(e);e._fetchWSP=function(i,h,d,c,e,a,b,g,f){return Sys.Net.WebServiceProxy.invoke(h,d,e==="GET",c,a,b,f,g)};e=Sys.UI.DataViewEventArgs=function(a){if(typeof a!==g)this.data=a;Sys.UI.DataViewEventArgs.initializeBase(this)};e.prototype={data:a,itemTemplate:a,itemPlaceholder:a};e.registerClass("Sys.UI.DataViewEventArgs",Sys.CancelEventArgs)}if(window.Sys&&Sys.loader)Sys.loader.registerScript("Templates",a,b);else b()})();�o// (c) 2010 CodePlex Foundation
//!/ <reference name="MicrosoftAjaxCore.js" />

(function() {

function execute() {

Type._registerScript("MicrosoftAjaxComponentModel.js", ["MicrosoftAjaxCore.js"]);

Type.registerNamespace('Sys.UI');

var $type, $prototype,
    isBrowser = Sys._isBrowser,
	foreach = Sys._foreach,
	forIn = Sys._forIn,
	callIf = Sys._callIf;

$type = Sys.CommandEventArgs = function CommandEventArgs(commandName, commandArgument, commandSource, commandEvent) {
    /// <summary locid="M:J#Sys.CommandEventArgs.#ctor"></summary>
    /// <param name="commandName" type="String">The command name.</param>
    /// <param name="commandArgument" mayBeNull="true">The command arguments.</param>
    /// <param name="commandSource" mayBeNull="true">The command source.</param>
    /// <param name="commandEvent" type="Sys.UI.DomEvent" mayBeNull="true" optional="true">The DOM event that caused the command, if any.</param>
    var e = Function._validateParams(arguments, [
        {name: "commandName", type: String},
        {name: "commandArgument", mayBeNull: true},
        {name: "commandSource", mayBeNull: true},
        {name: "commandEvent", type: Sys.UI.DomEvent, mayBeNull: true, optional: true }
    ]);
    if (e) throw e;
    Sys.CommandEventArgs.initializeBase(this);
    this._commandName = commandName;
    this._commandArgument = commandArgument;
    this._commandSource = commandSource;
    this._commandEvent = commandEvent;
}
$type.prototype = {
    get_commandName: function CommandEventArgs$get_commandName() {
        /// <value type="String" locid="P:J#Sys.CommandEventArgs.commandName">The command name.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._commandName || null;
    },
    get_commandArgument: function CommandEventArgs$get_commandArgument() {
        /// <value mayBeNull="true" locid="P:J#Sys.CommandEventArgs.commandArgument">The command arguments.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._commandArgument;
    },
    get_commandSource: function CommandEventArgs$get_commandSource() {
        /// <value mayBeNull="true" locid="P:J#Sys.CommandEventArgs.commandSource">The command source.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._commandSource || null;
    },
    get_commandEvent: function CommandEventArgs$get_commandEvent() {
        /// <value mayBeNull="true" type="Sys.UI.DomEvent" locid="P:J#Sys.CommandEventArgs.commandEvent">The DOM event that caused the command, if any.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._commandEvent || null;
    }
}
$type.registerClass("Sys.CommandEventArgs", Sys.CancelEventArgs);
$type = Sys.INotifyDisposing = function INotifyDisposing() {
    /// <summary locid="M:J#Sys.INotifyDisposing.#ctor">Implement this interface if the class exposes an event to notify when it's disposing.</summary>
    if (arguments.length !== 0) throw Error.parameterCount();
    throw Error.notImplemented();
}
$type.prototype = {
    add_disposing: function INotifyDisposing$add_disposing(handler) {
    /// <summary locid="E:J#Sys.INotifyDisposing.disposing"></summary>
    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
    if (e) throw e;
        throw Error.notImplemented();
    },
    remove_disposing: function INotifyDisposing$remove_disposing(handler) {
    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
    if (e) throw e;
        throw Error.notImplemented();
    }
}
$type.registerInterface("Sys.INotifyDisposing");
$type = Sys.Component = function Component() {
    /// <summary locid="M:J#Sys.Component.#ctor">Base class for Control, Behavior and any object that wants its lifetime to be managed.</summary>
    if (arguments.length !== 0) throw Error.parameterCount();
    if (Sys.Application) Sys.Application.registerDisposableObject(this);
}
$type.prototype = {
    _idSet: false,
    get_events: function Component$get_events() {
        /// <value type="Sys.EventHandlerList" locid="P:J#Sys.Component.events">The collection of event handlers for this behavior.  This property should only be used by derived behaviors  and should not be publicly called by other code.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return Sys.Observer._getContext(this, true).events;
    },
    get_id: function Component$get_id() {
        /// <value type="String" locid="P:J#Sys.Component.id"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._id || null;
    },
    set_id: function Component$set_id(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
        if (e) throw e;
        if (this._idSet) throw Error.invalidOperation(Sys.Res.componentCantSetIdTwice);
        this._idSet = true;
        var oldId = this.get_id();
        if (oldId && Sys.Application.findComponent(oldId)) throw Error.invalidOperation(Sys.Res.componentCantSetIdAfterAddedToApp);
        this._id = value;
    },
    get_isInitialized: function Component$get_isInitialized() {
        /// <value type="Boolean" locid="P:J#Sys.Component.isInitialized"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return !!this._initialized;
    },
    get_isUpdating: function Component$get_isUpdating() {
        /// <value type="Boolean" locid="P:J#Sys.Component.isUpdating"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return !!this._updating;
    },
    add_disposing: function Component$add_disposing(handler) {
        /// <summary locid="E:J#Sys.Component.disposing"></summary>
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        this._addHandler("disposing", handler);
    },
    remove_disposing: function Component$remove_disposing(handler) {
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        this._removeHandler("disposing", handler);
    },
    add_propertyChanged: function Component$add_propertyChanged(handler) {
        /// <summary locid="E:J#Sys.Component.propertyChanged"></summary>
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        this._addHandler("propertyChanged", handler);
    },
    remove_propertyChanged: function Component$remove_propertyChanged(handler) {
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        this._removeHandler("propertyChanged", handler);
    },
    _addHandler: function Component$_addHandler(eventName, handler) {
        Sys.Observer.addEventHandler(this, eventName, handler);
    },
    _removeHandler: function Component$_removeHandler(eventName, handler) {
        Sys.Observer.removeEventHandler(this, eventName, handler);
    },
    beginUpdate: function Component$beginUpdate() {
        this._updating = true;
    },
    dispose: function Component$dispose() {
        Sys.Observer.raiseEvent(this, "disposing")
        Sys.Observer.clearEventHandlers(this);
        Sys.Application.unregisterDisposableObject(this);
        Sys.Application.removeComponent(this);
    },
    endUpdate: function Component$endUpdate() {
        this._updating = false;
        if (!this._initialized) this.initialize();
        this.updated();
    },
    initialize: function Component$initialize() {
        this._initialized = true;
    },
    raisePropertyChanged: function Component$raisePropertyChanged(propertyName) {
        /// <summary locid="M:J#Sys.Component.raisePropertyChanged">Raises a change notification event.</summary>
        /// <param name="propertyName" type="String">The name of the property that changed.</param>
        var e = Function._validateParams(arguments, [
            {name: "propertyName", type: String}
        ]);
        if (e) throw e;
        Sys.Observer.raisePropertyChanged(this, propertyName);
    },
    updated: function Component$updated() {
    }
}
$type.registerClass('Sys.Component', null, Sys.IDisposable, Sys.INotifyPropertyChange, Sys.INotifyDisposing);

$type._setProperties = function Component$_setProperties(target, properties) {
    /// <summary locid="M:J#Sys.Component._setProperties">Recursively sets properties on an object.</summary>
    /// <param name="target">The object on which to set the property values.</param>
    /// <param name="properties">A JSON object containing the property values.</param>
    var e = Function._validateParams(arguments, [
        {name: "target"},
        {name: "properties"}
    ]);
    if (e) throw e;
    var current;
    var targetType = Object.getType(target);
    var isObject = (targetType === Object) || (targetType === Sys.UI.DomElement);
    var isComponent = Sys.Component.isInstanceOfType(target) && !target.get_isUpdating();
    if (isComponent) target.beginUpdate();
    for (var name in properties) {
        var val = properties[name];
        var getter = isObject ? null : target["get_" + name];
        if (isObject || typeof(getter) !== 'function') {
            var targetVal = target[name];
            if (!val || (typeof(val) !== 'object') || (isObject && !targetVal)) {
                target[name] = val;
            }
            else {
                this._setProperties(targetVal, val);
            }
        }
        else {
            var setter = target["set_" + name];
            if (typeof(setter) === 'function') {
                setter.apply(target, [val]);
            }
            else if (val instanceof Array) {
                current = getter.apply(target);
                if (!(current instanceof Array)) throw new Error.invalidOperation(String.format(Sys.Res.propertyNotAnArray, name));
                for (var i = 0, j = current.length, l= val.length; i < l; i++, j++) {
                    current[j] = val[i];
                }
            }
            else if ((typeof(val) === 'object') && (Object.getType(val) === Object)) {
                current = getter.apply(target);
                if ((typeof(current) === 'undefined') || (current === null)) throw new Error.invalidOperation(String.format(Sys.Res.propertyNullOrUndefined, name));
                this._setProperties(current, val);
            }
            else {
                throw new Error.invalidOperation(String.format(Sys.Res.propertyNotWritable, name));
            }
        }
    }
    if (isComponent) target.endUpdate();
}

$type._setReferences = function Component$_setReferences(component, references) {
    var reference, refs = {};
    forIn(references, function(id, name) {
        refs[name] = reference = $find(id);
        if (!reference) throw Error.invalidOperation(String.format(Sys.Res.referenceNotFound, id));
    });
    Sys._set(component, refs);
}

$create = $type.create = function Component$create(type, properties, events, references, element) {
    /// <summary locid="M:J#Sys.Component.create">Instantiates a component of the specified type, attaches it to the specified element if it's  a Control or Behavior, sets the properties as described by the specified JSON object,  then calls initialize.</summary>
    /// <param name="type" type="Type">The type of the component to create.</param>
    /// <param name="properties" optional="true" mayBeNull="true">A JSON object that describes the properties and their values.</param>
    /// <param name="events" optional="true" mayBeNull="true">A JSON object that describes the events and their handlers.</param>
    /// <param name="references" optional="true" mayBeNull="true">A JSON object that describes the properties that are references to other components.  The contents of this object consists of name/id pairs.  If in a two-pass creation, the setting of these properties will be delayed until the second pass.</param>
    /// <param name="element" domElement="true" optional="true" mayBeNull="true">The DOM element the component must be attached to.</param>
    /// <returns type="Object">The component instance.</returns>
    var e = Function._validateParams(arguments, [
        {name: "type", type: Type},
        {name: "properties", mayBeNull: true, optional: true},
        {name: "events", mayBeNull: true, optional: true},
        {name: "references", mayBeNull: true, optional: true},
        {name: "element", mayBeNull: true, domElement: true, optional: true}
    ]);
    if (e) throw e;
    if (type.inheritsFrom(Sys.UI.Behavior) || type.inheritsFrom(Sys.UI.Control)) {
        if (!element) throw Error.argument('element', Sys.Res.createNoDom);
    }
    else if (element) throw Error.argument('element', Sys.Res.createComponentOnDom);
    var component = (element ? new type(element): new type());
    callIf(component, "beginUpdate");
    if (properties) {
        Sys.Component._setProperties(component, properties);
    }
    if (events) {
        for (var name in events) {
            if (!(component["add_" + name] instanceof Function)) throw new Error.invalidOperation(String.format(Sys.Res.undefinedEvent, name));
            if (!(events[name] instanceof Function)) throw new Error.invalidOperation(Sys.Res.eventHandlerNotFunction);
            component["add_" + name](events[name]);
        }
    }
    Sys.Component._register(component, references);
    return component;
}
$type._register = function Component$_register(component, references, dontUpdate) {
    var ret;
    if (Sys.Component.isInstanceOfType(component)) {
        ret = true;
        var app = Sys.Application;
        if (component.get_id()) {
            app.addComponent(component);
        }
        if (app.get_isCreatingComponents()) {
            app._createdComponents.push(component);
            if (references) {
                app._addComponentToSecondPass(component, references);
            }
            else if (!dontUpdate) {
                component.endUpdate();
            }
        }
        else {
            if (references) {
                Sys.Component._setReferences(component, references);
            }
            if (!dontUpdate) {
                component.endUpdate();
            }
        }
    }
    return ret;
}

Sys._getComponent = function _getComponent(found, selector, context) {
    var component = Sys.Application.findComponent(selector);
    if (component) {
        found.push(component);
    }
}

Sys._2Pass = function _2Pass(callback) {
    var app = Sys.Application,
        useTwoPass = !app.get_isCreatingComponents();
    if (useTwoPass) app.beginCreateComponents();
    foreach(callback, function(c) { c() });
    if (useTwoPass) app.endCreateComponents();
}
$type = Sys.UI.MouseButton = function MouseButton() {
    /// <summary locid="M:J#Sys.UI.MouseButton.#ctor">Describes mouse buttons. The values are those from the DOM standard, which are different from the IE values.</summary>
    /// <field name="leftButton" type="Number" integer="true" static="true" locid="F:J#Sys.UI.MouseButton.leftButton"></field>
    /// <field name="middleButton" type="Number" integer="true" static="true" locid="F:J#Sys.UI.MouseButton.middleButton"></field>
    /// <field name="rightButton" type="Number" integer="true" static="true" locid="F:J#Sys.UI.MouseButton.rightButton"></field>
    if (arguments.length !== 0) throw Error.parameterCount();
    throw Error.notImplemented();
}
$type.prototype = {
    leftButton: 0,
    middleButton: 1,
    rightButton: 2
}
$type.registerEnum("Sys.UI.MouseButton");
$type = Sys.UI.Key = function Key() {
    /// <summary locid="M:J#Sys.UI.Key.#ctor">Describes key codes.</summary>
    /// <field name="backspace" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.backspace"></field>
    /// <field name="tab" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.tab"></field>
    /// <field name="enter" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.enter"></field>
    /// <field name="esc" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.esc"></field>
    /// <field name="space" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.space"></field>
    /// <field name="pageUp" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.pageUp"></field>
    /// <field name="pageDown" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.pageDown"></field>
    /// <field name="end" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.end"></field>
    /// <field name="home" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.home"></field>
    /// <field name="left" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.left"></field>
    /// <field name="up" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.up"></field>
    /// <field name="right" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.right"></field>
    /// <field name="down" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.down"></field>
    /// <field name="del" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.del"></field>
    if (arguments.length !== 0) throw Error.parameterCount();
    throw Error.notImplemented();
}
$type.prototype = {
    backspace: 8,
    tab: 9,
    enter: 13,
    esc: 27,
    space: 32,
    pageUp: 33,
    pageDown: 34,
    end: 35,
    home: 36,
    left: 37,
    up: 38,
    right: 39,
    down: 40,
    del: 127
}
$type.registerEnum("Sys.UI.Key");
$type = Sys.UI.Point = function Point(x, y) {
    /// <summary locid="M:J#Sys.UI.Point.#ctor"></summary>
    /// <param name="x" type="Number" integer="true"></param>
    /// <param name="y" type="Number" integer="true"></param>
    /// <field name="x" type="Number" integer="true" locid="F:J#Sys.UI.Point.x"></field>
    /// <field name="y" type="Number" integer="true" locid="F:J#Sys.UI.Point.y"></field>
    var e = Function._validateParams(arguments, [
        {name: "x", type: Number, integer: true},
        {name: "y", type: Number, integer: true}
    ]);
    if (e) throw e;
    this.x = x;
    this.y = y;
}
$type.registerClass('Sys.UI.Point');
$type = Sys.UI.Bounds = function Bounds(x, y, width, height) {
    /// <summary locid="M:J#Sys.UI.Bounds.#ctor"></summary>
    /// <param name="x" type="Number" integer="true"></param>
    /// <param name="y" type="Number" integer="true"></param>
    /// <param name="width" type="Number" integer="true"></param>
    /// <param name="height" type="Number" integer="true"></param>
    /// <field name="x" type="Number" integer="true" locid="F:J#Sys.UI.Bounds.x"></field>
    /// <field name="y" type="Number" integer="true" locid="F:J#Sys.UI.Bounds.y"></field>
    /// <field name="width" type="Number" integer="true" locid="F:J#Sys.UI.Bounds.width"></field>
    /// <field name="height" type="Number" integer="true" locid="F:J#Sys.UI.Bounds.height"></field>
    var e = Function._validateParams(arguments, [
        {name: "x", type: Number, integer: true},
        {name: "y", type: Number, integer: true},
        {name: "width", type: Number, integer: true},
        {name: "height", type: Number, integer: true}
    ]);
    if (e) throw e;
    this.x = x;
    this.y = y;
    this.height = height;
    this.width = width;
}
$type.registerClass('Sys.UI.Bounds');
$type = Sys.UI.DomEvent = function DomEvent(eventObject) {
    /// <summary locid="M:J#Sys.UI.DomEvent.#ctor">A cross-browser object that represents event properties.</summary>
    /// <param name="eventObject">The browser-specific event object (window.event for IE).</param>
    /// <field name="altKey" type="Boolean" locid="F:J#Sys.UI.DomEvent.altKey"></field>
    /// <field name="button" type="Sys.UI.MouseButton" locid="F:J#Sys.UI.DomEvent.button"></field>
    /// <field name="charCode" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.charCode">The character code for the pressed key.</field>
    /// <field name="clientX" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.clientX"></field>
    /// <field name="clientY" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.clientY"></field>
    /// <field name="ctrlKey" type="Boolean" locid="F:J#Sys.UI.DomEvent.ctrlKey"></field>
    /// <field name="keyCode" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.keyCode">The key code for the pressed key.</field>
    /// <field name="offsetX" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.offsetX"></field>
    /// <field name="offsetY" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.offsetY"></field>
    /// <field name="screenX" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.screenX"></field>
    /// <field name="screenY" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.screenY"></field>
    /// <field name="shiftKey" type="Boolean" locid="F:J#Sys.UI.DomEvent.shiftKey"></field>
    /// <field name="target" locid="F:J#Sys.UI.DomEvent.target"></field>
    /// <field name="type" type="String" locid="F:J#Sys.UI.DomEvent.type"></field>
    var e = Function._validateParams(arguments, [
        {name: "eventObject"}
    ]);
    if (e) throw e;
    var ev = eventObject;
    var etype = this.type = ev.type.toLowerCase();
    this.rawEvent = ev;
    this.altKey = ev.altKey;
    if (typeof(ev.button) !== 'undefined') {
        this.button = (typeof(ev.which) !== 'undefined') ? ev.button :
            (ev.button === 4) ? Sys.UI.MouseButton.middleButton :
            (ev.button === 2) ? Sys.UI.MouseButton.rightButton :
            Sys.UI.MouseButton.leftButton;
    }
    if (etype === 'keypress') {
        this.charCode = ev.charCode || ev.keyCode;
    }
    else if (ev.keyCode && (ev.keyCode === 46)) {
        this.keyCode = 127;
    }
    else {
        this.keyCode = ev.keyCode;
    }
    this.clientX = ev.clientX;
    this.clientY = ev.clientY;
    this.ctrlKey = ev.ctrlKey;
    this.target = ev.target || ev.srcElement;
    if (!etype.startsWith('key')) {
        if ((typeof(ev.offsetX) !== 'undefined') && (typeof(ev.offsetY) !== 'undefined')) {
            this.offsetX = ev.offsetX;
            this.offsetY = ev.offsetY;
        }
        else if (this.target && (this.target.nodeType !== 3) && (typeof(ev.clientX) === 'number')) {
            var loc = Sys.UI.DomElement.getLocation(this.target);
            var w = Sys.UI.DomElement._getWindow(this.target);
            this.offsetX = (w.pageXOffset || 0) + ev.clientX - loc.x;
            this.offsetY = (w.pageYOffset || 0) + ev.clientY - loc.y;
        }
    }
    this.screenX = ev.screenX;
    this.screenY = ev.screenY;
    this.shiftKey = ev.shiftKey;
}
$type.prototype = {
    preventDefault: function DomEvent$preventDefault() {
        /// <summary locid="M:J#Sys.UI.DomEvent.preventDefault">Prevents the default event action from happening. For example, a textbox keydown event,  if suppressed, will prevent the character from being appended to the textbox.</summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        var raw = this.rawEvent;
        if (raw.preventDefault) {
            raw.preventDefault();
        }
        else if (window.event) {
            raw.returnValue = false;
        }
    },
    stopPropagation: function DomEvent$stopPropagation() {
        /// <summary locid="M:J#Sys.UI.DomEvent.stopPropagation">Prevents the event from being propagated to parent elements.</summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        var raw = this.rawEvent;
        if (raw.stopPropagation) {
            raw.stopPropagation();
        }
        else if (window.event) {
            raw.cancelBubble = true;
        }
    }
}
$type.registerClass('Sys.UI.DomEvent');

$addHandler = $type.addHandler = function DomEvent$addHandler(elements, eventName, handler, autoRemove) {
    /// <summary locid="M:J#Sys.UI.DomEvent.addHandler">A cross-browser way to add a DOM event handler to an element.</summary>
    /// <param name="elements">The element or text node, or array of elements or text nodes, that exposes the event. You may also pass a DOM selector or array of DOM selectors.</param>
    /// <param name="eventName" type="String">The name of the event. Do not include the 'on' prefix, for example, 'click' instead of 'onclick'.</param>
    /// <param name="handler" type="Function">The event handler to add.</param>
    /// <param name="autoRemove" type="Boolean" optional="true" mayBeNull="true">Whether the handler should be removed automatically when the element is disposed of, such as when an UpdatePanel refreshes, or Sys.Application.disposeElement is called.</param>
    var e = Function._validateParams(arguments, [
        {name: "elements"},
        {name: "eventName", type: String},
        {name: "handler", type: Function},
        {name: "autoRemove", type: Boolean, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    if (eventName === "error") throw Error.invalidOperation(Sys.Res.addHandlerCantBeUsedForError);
    Sys.query(elements).each(function() {
        var nodeType = this.nodeType;
        if (nodeType === 3 || nodeType === 2 || nodeType === 8) return;
        Sys.UI.DomEvent._ensureDomNode(this);
        if (!this._events) {
            this._events = {};
        }
        var eventCache = this._events[eventName];
        if (!eventCache) {
            this._events[eventName] = eventCache = [];
        }
        var element = this, 
            browserHandler;
        if (this.addEventListener) {
            browserHandler = function(e) {
                return handler.call(element, new Sys.UI.DomEvent(e));
            }
            this.addEventListener(eventName, browserHandler, false);
        }
        else if (this.attachEvent) {
            browserHandler = function() {
                var ex, ev = {};
                try {ev = Sys.UI.DomElement._getWindow(element).event} catch(ex) {}
                return handler.call(element, new Sys.UI.DomEvent(ev));
            }
            this.attachEvent('on' + eventName, browserHandler);
        }
        eventCache.push({handler: handler, browserHandler: browserHandler, autoRemove: autoRemove });
        if (autoRemove) {
            Sys.UI.DomElement._onDispose(this, Sys.UI.DomEvent._disposeHandlers);
        }
    });
}

Sys.registerPlugin({
    name: "addHandler",
    dom: true,
    returnType: "Sys.ElementSet",
    description: "A cross-browser way to add a DOM event handler to an element.",
    parameters: [
        {name: "eventName", type: "String", description: "The name of the event. Do not include the 'on' prefix, for example, 'click' instead of 'onclick'."},
        {name: "handler", type: "Function", description: "The event handler to add."},
        {name: "autoRemove", type: "Boolean", description: "Whether the handler should be removed automatically when the element is disposed of, such as when an UpdatePanel refreshes, or Sys.Application.disposeElement is called."}
    ],
    plugin: function (eventName, handler, autoRemove) {
        Sys.UI.DomEvent.addHandler(this.get(), eventName, handler, autoRemove);
        return this;
    }
});

$addHandlers = $type.addHandlers = function DomEvent$addHandlers(elements, events, handlerOwner, autoRemove) {
    /// <summary locid="M:J#Sys.UI.DomEvent.addHandlers">Adds a list of event handlers to an element.  If a handlerOwner is specified, delegates are created with each of the handlers.</summary>
    /// <param name="elements">The element or text node, or array of element or text nodes, that exposes the event. You may also pass a DOM selector or array of DOM selectors.</param>
    /// <param name="events" type="Object">A dictionary of event handlers.</param>
    /// <param name="handlerOwner" optional="true" mayBeNull="true">The owner of the event handlers that will be the this pointer  for the delegates that will be created from the handlers.</param>
    /// <param name="autoRemove" type="Boolean" optional="true" mayBeNull="true">Whether the handler should be removed automatically when the element is disposed of, such as when an UpdatePanel refreshes, or when Sys.Application.disposeElement is called.</param>
    var e = Function._validateParams(arguments, [
        {name: "elements"},
        {name: "events", type: Object},
        {name: "handlerOwner", mayBeNull: true, optional: true},
        {name: "autoRemove", type: Boolean, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    Sys.query(elements).each(function() {
        var nodeType = this.nodeType;
        if (nodeType === 3 || nodeType === 2 || nodeType === 8) return;
        Sys.UI.DomEvent._ensureDomNode(this);
        for (var name in events) {
            var handler = events[name];
            if (typeof(handler) !== 'function') throw Error.invalidOperation(Sys.Res.cantAddNonFunctionhandler);
            if (handlerOwner) {
                handler = Function.createDelegate(handlerOwner, handler);
            }
            $addHandler(this, name, handler, autoRemove || false);
        }
    });
}

Sys.registerPlugin({
    name: "addHandlers",
    dom: true,
    returnType: "Sys.ElementSet",
    description: "Adds a list of event handlers to an element. If a handlerOwner is specified, delegates are created with each of the handlers.",
    parameters: [
        {name: "events", type: "Object", description: "A dictionary of event handlers."},
        {name: "handlerOwner", description: "The owner of the event handlers that will be the this pointer for the delegates that will be created from the handlers."},
        {name: "autoRemove", type: "Boolean", description: "Whether the handler should be removed automatically when the element is disposed of, such as when an UpdatePanel refreshes, or Sys.Application.disposeElement is called."}
    ],
    plugin: function (events, handlerOwner, autoRemove) {
        Sys.UI.DomEvent.addHandlers(this.get(), events, handlerOwner, autoRemove);
        return this;
    }
});

$clearHandlers = $type.clearHandlers = function DomEvent$clearHandlers(elements) {
    /// <summary locid="M:J#Sys.UI.DomEvent.clearHandlers">Clears all the event handlers that were added to the element or array of elements.</summary>
    /// <param name="elements">The element or text node, or an array of elements or text nodes. You may also pass a DOM selector or array of DOM selectors.</param>
    var e = Function._validateParams(arguments, [
        {name: "elements"}
    ]);
    if (e) throw e;
    Sys.query(elements).each(function() {
        var nodeType = this.nodeType;
        if (nodeType === 3 || nodeType === 2 || nodeType === 8) return;
        Sys.UI.DomEvent._ensureDomNode(this);
        Sys.UI.DomEvent._clearHandlers(this, false);
    });
}

Sys.registerPlugin({
    name: "clearHandlers",
    dom: true,
    returnType: "Sys.ElementSet",
    description: "Clears all the event handlers that were added to the element or array of elements.",
    plugin: function() {
        Sys.UI.DomEvent.clearHandlers(this.get());
        return this;
    }
});

$type._clearHandlers = function DomEvent$_clearHandlers(elements, autoRemoving) {
    Sys.query(elements).each(function() {
        var nodeType = this.nodeType;
        if (nodeType === 3 || nodeType === 2 || nodeType === 8) return;
        Sys.UI.DomEvent._ensureDomNode(this);
        var cache = this._events;
        if (cache) {
            for (var name in cache) {
                var handlers = cache[name];
                for (var i = handlers.length - 1; i >= 0; i--) {
                    var entry = handlers[i];
                    if (!autoRemoving || entry.autoRemove) {
                        $removeHandler(this, name, entry.handler);
                    }
                }
            }
        }
    });
}

$type._disposeHandlers = function DomEvent$_disposeHandlers() {
    Sys.UI.DomEvent._clearHandlers(this, true);
}

$removeHandler = $type.removeHandler = function DomEvent$removeHandler(elements, eventName, handler) {
    /// <summary locid="M:J#Sys.UI.DomEvent.removeHandler">A cross-browser way to remove a DOM event handler from an element.</summary>
    /// <param name="elements">The element or text node, or array of elements or text nodes, that exposes the event. You may also pass a DOM selector or array of DOM selectors.</param>
    /// <param name="eventName" type="String">The name of the event. Do not include the 'on' prefix, for example, 'click' instead of 'onclick'.</param>
    /// <param name="handler" type="Function">The event handler to remove.</param>
    var e = Function._validateParams(arguments, [
        {name: "elements"},
        {name: "eventName", type: String},
        {name: "handler", type: Function}
    ]);
    if (e) throw e;
    Sys.UI.DomEvent._removeHandler(elements, eventName, handler);
}
$type._removeHandler = function DomEvent$_removeHandler(elements, eventName, handler) {
    Sys.query(elements).each(function() {
        var nodeType = this.nodeType;
        if (nodeType === 3 || nodeType === 2 || nodeType === 8) return;
        Sys.UI.DomEvent._ensureDomNode(this);
        var browserHandler = null;
        if ((typeof(this._events) !== 'object') || !this._events) throw Error.invalidOperation(Sys.Res.eventHandlerInvalid);
        var cache = this._events[eventName];
        if (!(cache instanceof Array)) throw Error.invalidOperation(Sys.Res.eventHandlerInvalid);
        for (var i = 0, l = cache.length; i < l; i++) {
            if (cache[i].handler === handler) {
                browserHandler = cache[i].browserHandler;
                break;
            }
        }
        if (typeof(browserHandler) !== 'function') throw Error.invalidOperation(Sys.Res.eventHandlerInvalid);
        if (this.removeEventListener) {
            this.removeEventListener(eventName, browserHandler, false);
        }
        else if (this.detachEvent) {
            this.detachEvent('on' + eventName, browserHandler);
        }
        cache.splice(i, 1);
    });
}

Sys.registerPlugin({
    name: "removeHandler",
    dom: true,
    returnType: "Sys.ElementSet",
    description: "A cross-browser way to remove a DOM event handler from an element.",
    parameters: [
        {name: "eventName", type: "String", description: "The name of the event. Do not include the 'on' prefix, for example, 'click' instead of 'onclick'."},
        {name: "handler", type: "Function", description: "The event handler to remove."}
    ],
    plugin: function (eventName, handler) {
        Sys.UI.DomEvent.removeHandler(this.get(), eventName, handler);
        return this;
    }
});


$type._ensureDomNode = function DomEvent$_ensureDomNode(element) {
    if (element && element.tagName && (element.tagName.toUpperCase() === "SCRIPT")) return;
    
    var doc = element ? (element.ownerDocument || element.document || element) : null;
    if (!element ||
        ((typeof(element.document) !== 'object') && (element != doc) && (typeof(element.nodeType) !== 'number'))) {
        throw Error.argument("element", Sys.Res.argumentDomNode);
    }
}
$type = Sys.UI.DomElement = function DomElement() {
    /// <summary locid="M:J#Sys.UI.DomElement.#ctor">This static class provides helpers to work with DOM elements.</summary>
    if (arguments.length !== 0) throw Error.parameterCount();
    throw Error.notImplemented();
}
$type.registerClass('Sys.UI.DomElement');

$type.addCssClass = function DomElement$addCssClass(element, className) {
    /// <summary locid="M:J#Sys.UI.DomElement.addCssClass">Adds a CSS class to an element if it doesn't already have it.</summary>
    /// <param name="element" domElement="true"></param>
    /// <param name="className" type="String">The name of the CSS class to add.</param>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "className", type: String}
    ]);
    if (e) throw e;
    if (!Sys.UI.DomElement.containsCssClass(element, className)) {
        if (element.className === '') {
            element.className = className;
        }
        else {
            element.className += ' ' + className;
        }
    }
}

$type.containsCssClass = function DomElement$containsCssClass(element, className) {
    /// <summary locid="M:J#Sys.UI.DomElement.containsCssClass">Determines if an element has the specified CSS class.</summary>
    /// <param name="element" domElement="true"></param>
    /// <param name="className" type="String">The name of the CSS class to test.</param>
    /// <returns type="Boolean">True if the CSS class was found on the element.</returns>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "className", type: String}
    ]);
    if (e) throw e;
    return Array.contains(element.className.split(' '), className);
}

$type.getBounds = function DomElement$getBounds(element) {
    /// <summary locid="M:J#Sys.UI.DomElement.getBounds">Gets the coordinates, width and height of an element.</summary>
    /// <param name="element" domElement="true"></param>
    /// <returns type="Sys.UI.Bounds">A Bounds object with four fields, x, y, width and height, which contain the pixel coordinates,  width and height of the element.</returns>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true}
    ]);
    if (e) throw e;
    var offset = Sys.UI.DomElement.getLocation(element);

    return new Sys.UI.Bounds(offset.x, offset.y, element.offsetWidth || 0, element.offsetHeight || 0);
}

$get = $type.getElementById = function DomElement$getElementById(id, element) {
    /// <summary locid="M:J#Sys.UI.DomElement.getElementById">Finds an element by id.</summary>
    /// <param name="id" type="String">The id of the element to find.</param>
    /// <param name="element" domElement="true" optional="true" mayBeNull="true"></param>
    /// <returns domElement="true" mayBeNull="true">The element, or null if it was not found.</returns>
    var e = Function._validateParams(arguments, [
        {name: "id", type: String},
        {name: "element", mayBeNull: true, domElement: true, optional: true}
    ]);
    if (e) throw e;
    return Sys.get("#" + id, element || null);
}

if (document.documentElement.getBoundingClientRect) {
    $type.getLocation = function DomElement$getLocation(element) {
        /// <summary locid="M:J#Sys.UI.DomElement.getLocation">Gets the coordinates of a DOM element.</summary>
        /// <param name="element" domElement="true"></param>
        /// <returns type="Sys.UI.Point">A Point object with two fields, x and y, which contain the pixel coordinates of the element.</returns>
        var e = Function._validateParams(arguments, [
            {name: "element", domElement: true}
        ]);
        if (e) throw e;
        
        if (element.self || element.nodeType === 9 ||
            (element === document.documentElement) ||
            (element.parentNode === element.ownerDocument.documentElement)) {
            return new Sys.UI.Point(0, 0);
        }        
        
        var clientRect = element.getBoundingClientRect();
        if (!clientRect) {
            return new Sys.UI.Point(0,0);
        }
        var ex, ownerDoc = element.ownerDocument, documentElement = ownerDoc.documentElement,
            offsetX = Math.round(clientRect.left) + (documentElement.scrollLeft || (ownerDoc.body ? ownerDoc.body.scrollLeft : 0)),
            offsetY = Math.round(clientRect.top) + (documentElement.scrollTop || (ownerDoc.body ? ownerDoc.body.scrollTop : 0));
        if (isBrowser("InternetExplorer")) {
            try {
                var f = element.ownerDocument.parentWindow.frameElement || null;
                if (f) {
                    f = f.frameBorder;
                    var offset = (f === "0" || f === "no") ? 2 : 0;
                    offsetX += offset;
                    offsetY += offset;
                }
            }
            catch(ex) {
            }
            if (Sys.Browser.version === 7 && !document.documentMode) {
                var body = document.body,
                    rect = body.getBoundingClientRect(),
                    zoom = (rect.right-rect.left) / body.clientWidth;
                zoom = Math.round(zoom * 100);
                zoom = (zoom - zoom % 5) / 100;
                if (!isNaN(zoom) && (zoom !== 1)) {
                    offsetX = Math.round(offsetX / zoom);
                    offsetY = Math.round(offsetY / zoom);
                }
            }        
            if ((document.documentMode || 0) < 8) {
                offsetX -= documentElement.clientLeft;
                offsetY -= documentElement.clientTop;
            }
        }
        return new Sys.UI.Point(offsetX, offsetY);
    }
}
else if (isBrowser("Safari")) {
    $type.getLocation = function DomElement$getLocation_Safari(element) {
        /// <summary locid="M:J#Sys.UI.DomElement.getLocation">Gets the coordinates of a DOM element.</summary>
        /// <param name="element" domElement="true"></param>
        /// <returns type="Sys.UI.Point">A Point object with two fields, x and y, which contain the pixel coordinates of the element.</returns>
        var e = Function._validateParams(arguments, [
            {name: "element", domElement: true}
        ]);
        if (e) throw e;
        if ((element.window && (element.window === element)) || element.nodeType === 9) return new Sys.UI.Point(0,0);

        var offsetX = 0, offsetY = 0,
            parent,
            previous = null,
            previousStyle = null,
            currentStyle;
        for (parent = element; parent; previous = parent, previousStyle = currentStyle, parent = parent.offsetParent) {
            currentStyle = Sys.UI.DomElement._getCurrentStyle(parent);
            var tagName = parent.tagName ? parent.tagName.toUpperCase() : null;

            if ((parent.offsetLeft || parent.offsetTop) &&
                ((tagName !== "BODY") || (!previousStyle || previousStyle.position !== "absolute"))) {
                offsetX += parent.offsetLeft;
                offsetY += parent.offsetTop;
            }

            if (previous && Sys.Browser.version >= 3) {
                offsetX += parseInt(currentStyle.borderLeftWidth);
                offsetY += parseInt(currentStyle.borderTopWidth);
            }
        }

        currentStyle = Sys.UI.DomElement._getCurrentStyle(element);
        var elementPosition = currentStyle ? currentStyle.position : null;
        if (elementPosition !== "absolute") {
            for (parent = element.parentNode; parent; parent = parent.parentNode) {
                tagName = parent.tagName ? parent.tagName.toUpperCase() : null;

                if ((tagName !== "BODY") && (tagName !== "HTML") && (parent.scrollLeft || parent.scrollTop)) {
                    offsetX -= (parent.scrollLeft || 0);
                    offsetY -= (parent.scrollTop || 0);
                }
                currentStyle = Sys.UI.DomElement._getCurrentStyle(parent);
                var parentPosition = currentStyle ? currentStyle.position : null;

                if (parentPosition && (parentPosition === "absolute")) break;
            }
        }
        return new Sys.UI.Point(offsetX, offsetY);
    }
}
else {
    $type.getLocation = function DomElement$getLocation_Generic(element) {
        /// <summary locid="M:J#Sys.UI.DomElement.getLocation">Gets the coordinates of a DOM element.</summary>
        /// <param name="element" domElement="true"></param>
        /// <returns type="Sys.UI.Point">A Point object with two fields, x and y, which contain the pixel coordinates of the element.</returns>
        var e = Function._validateParams(arguments, [
            {name: "element", domElement: true}
        ]);
        if (e) throw e;
        if ((element.window && (element.window === element)) || element.nodeType === 9) return new Sys.UI.Point(0,0);

        var offsetX = 0, offsetY = 0,
            parent,
            previous = null,
            previousStyle = null,
            currentStyle = null;
        for (parent = element; parent; previous = parent, previousStyle = currentStyle, parent = parent.offsetParent) {
            var tagName = parent.tagName ? parent.tagName.toUpperCase() : null;
            currentStyle = Sys.UI.DomElement._getCurrentStyle(parent);

            if ((parent.offsetLeft || parent.offsetTop) &&
                !((tagName === "BODY") &&
                (!previousStyle || previousStyle.position !== "absolute"))) {

                offsetX += parent.offsetLeft;
                offsetY += parent.offsetTop;
            }

            if (previous !== null && currentStyle) {
                if ((tagName !== "TABLE") && (tagName !== "TD") && (tagName !== "HTML")) {
                    offsetX += parseInt(currentStyle.borderLeftWidth) || 0;
                    offsetY += parseInt(currentStyle.borderTopWidth) || 0;
                }
                if (tagName === "TABLE" &&
                    (currentStyle.position === "relative" || currentStyle.position === "absolute")) {
                    offsetX += parseInt(currentStyle.marginLeft) || 0;
                    offsetY += parseInt(currentStyle.marginTop) || 0;
                }
            }
        }

        currentStyle = Sys.UI.DomElement._getCurrentStyle(element);
        var elementPosition = currentStyle ? currentStyle.position : null;
        if (elementPosition !== "absolute") {
            for (parent = element.parentNode; parent; parent = parent.parentNode) {
                tagName = parent.tagName ? parent.tagName.toUpperCase() : null;

                if ((tagName !== "BODY") && (tagName !== "HTML") && (parent.scrollLeft || parent.scrollTop)) {

                    offsetX -= (parent.scrollLeft || 0);
                    offsetY -= (parent.scrollTop || 0);

                    currentStyle = Sys.UI.DomElement._getCurrentStyle(parent);
                    if (currentStyle) {
                        offsetX += parseInt(currentStyle.borderLeftWidth) || 0;
                        offsetY += parseInt(currentStyle.borderTopWidth) || 0;
                    }
                }
            }
        }
        return new Sys.UI.Point(offsetX, offsetY);
    }
}

$type.isDomElement = function DomElement$isDomElement(obj) {
    /// <summary locid="M:J#Sys.UI.DomElement.isDomElement">Determines if the given argument is a DOM element.</summary>
    /// <param name="obj"></param>
    /// <returns type="Boolean">True if the object is a DOM element, otherwise false.</returns>
    var e = Function._validateParams(arguments, [
        {name: "obj"}
    ]);
    if (e) throw e;
    return Sys._isDomElement(obj);
}

$type.removeCssClass = function DomElement$removeCssClass(element, className) {
    /// <summary locid="M:J#Sys.UI.DomElement.removeCssClass">Removes a CSS class from an element.</summary>
    /// <param name="element" domElement="true"></param>
    /// <param name="className" type="String">The name of the CSS class to remove.</param>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "className", type: String}
    ]);
    if (e) throw e;
    var currentClassName = ' ' + element.className + ' ';
    var index = currentClassName.indexOf(' ' + className + ' ');
    if (index >= 0) {
        element.className = (currentClassName.substr(0, index) + ' ' +
            currentClassName.substring(index + className.length + 1, currentClassName.length)).trim();
    }
}

$type.resolveElement = function DomElement$resolveElement(elementOrElementId, containerElement) {
    /// <summary locid="M:J#Sys.UI.DomElement.resolveElement">Returns the element with the specified Id in the specified container, or the element if it is already an element.</summary>
    /// <param name="elementOrElementId" mayBeNull="true"></param>
    /// <param name="containerElement" domElement="true" optional="true" mayBeNull="true"></param>
    /// <returns domElement="true"></returns>
    var e = Function._validateParams(arguments, [
        {name: "elementOrElementId", mayBeNull: true},
        {name: "containerElement", mayBeNull: true, domElement: true, optional: true}
    ]);
    if (e) throw e;
    var el = elementOrElementId;
    if (!el) return null;
    if (typeof(el) === "string") {
        el = Sys.get("#" + el, containerElement);
        if (!el) {
            throw Error.argument("elementOrElementId", String.format(Sys.Res.elementNotFound, elementOrElementId));
        }
    }
    else if(!Sys.UI.DomElement.isDomElement(el)) {
        throw Error.argument("elementOrElementId", Sys.Res.expectedElementOrId);
    }
    return el;
}

$type.raiseBubbleEvent = function DomElement$raiseBubbleEvent(source, args) {
    /// <summary locid="M:J#Sys.UI.DomElement.raiseBubbleEvent">Raises a bubble event.</summary>
    /// <param name="source" domElement="true">The DOM element that triggers the event.</param>
    /// <param name="args" type="Sys.EventArgs">The event arguments.</param>
    var e = Function._validateParams(arguments, [
        {name: "source", domElement: true},
        {name: "args", type: Sys.EventArgs}
    ]);
    if (e) throw e;
    var target = source;
    while (target) {
        var control = target.control;
        if (control && control.onBubbleEvent && control.raiseBubbleEvent) {
            if (!control.onBubbleEvent(source, args)) {
                control._raiseBubbleEvent(source, args);
            }
            return;
        }
        target = target.parentNode;
    }
}

$type._ensureGet = function DomElement$_ensureGet(selector, context, arg) {
    var ret = Sys.get(selector, context);
    if (!ret && typeof(selector) === "string") {
        throw Error.invalidOperation(String.format(Sys.Res.selectorNotFound, selector));
    }
    else if (ret && !this.isDomElement(ret)) {
        throw Error.invalidOperation(String.format(Sys.Res.expectedDomElementOrSelector, arg));
    }
    return ret;
}

$type.setLocation = function DomElement$setLocation(element, x, y) {
    /// <summary locid="M:J#Sys.UI.DomElement.setLocation">Sets the position of an element.</summary>
    /// <param name="element" domElement="true"></param>
    /// <param name="x" type="Number" integer="true"></param>
    /// <param name="y" type="Number" integer="true"></param>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "x", type: Number, integer: true},
        {name: "y", type: Number, integer: true}
    ]);
    if (e) throw e;
    var style = element.style;
    style.position = 'absolute';
    style.left = x + "px";
    style.top = y + "px";
}

$type.toggleCssClass = function DomElement$toggleCssClass(element, className) {
    /// <summary locid="M:J#Sys.UI.DomElement.toggleCssClass">Toggles a CSS class on and off o an element.</summary>
    /// <param name="element" domElement="true"></param>
    /// <param name="className" type="String">The name of the CSS class to toggle.</param>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "className", type: String}
    ]);
    if (e) throw e;
    if (Sys.UI.DomElement.containsCssClass(element, className)) {
        Sys.UI.DomElement.removeCssClass(element, className);
    }
    else {
        Sys.UI.DomElement.addCssClass(element, className);
    }
}

$type.getVisibilityMode = function DomElement$getVisibilityMode(element) {
    /// <summary locid="M:J#Sys.UI.DomElement.getVisibilityMode"></summary>
    /// <param name="element" domElement="true"></param>
    /// <returns type="Sys.UI.VisibilityMode"></returns>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true}
    ]);
    if (e) throw e;
    return (element._visibilityMode === Sys.UI.VisibilityMode.hide) ?
        Sys.UI.VisibilityMode.hide :
        Sys.UI.VisibilityMode.collapse;
}
$type.setVisibilityMode = function DomElement$setVisibilityMode(element, value) {
    /// <summary locid="M:J#Sys.UI.DomElement.setVisibilityMode"></summary>
    /// <param name="element" domElement="true"></param>
    /// <param name="value" type="Sys.UI.VisibilityMode"></param>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "value", type: Sys.UI.VisibilityMode}
    ]);
    if (e) throw e;
    Sys.UI.DomElement._ensureOldDisplayMode(element);
    if (element._visibilityMode !== value) {
        element._visibilityMode = value;
        if (Sys.UI.DomElement.getVisible(element) === false) {
            element.style.display = (value === Sys.UI.VisibilityMode.hide) ? element._oldDisplayMode : 'none';
        }
    }
}

$type.getVisible = function DomElement$getVisible(element) {
    /// <summary locid="M:J#Sys.UI.DomElement.getVisible"></summary>
    /// <param name="element" domElement="true"></param>
    /// <returns type="Boolean"></returns>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true}
    ]);
    if (e) throw e;
    var style = element.currentStyle || Sys.UI.DomElement._getCurrentStyle(element);
    return style ? (style.visibility !== 'hidden') && (style.display !== 'none') : true;
}
$type.setVisible = function DomElement$setVisible(element, value) {
    /// <summary locid="M:J#Sys.UI.DomElement.setVisible"></summary>
    /// <param name="element" domElement="true"></param>
    /// <param name="value" type="Boolean"></param>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "value", type: Boolean}
    ]);
    if (e) throw e;
    if (value !== Sys.UI.DomElement.getVisible(element)) {
        Sys.UI.DomElement._ensureOldDisplayMode(element);
        var style = element.style;
        style.visibility = value ? 'visible' : 'hidden';
        style.display = (value || (element._visibilityMode === Sys.UI.VisibilityMode.hide)) ? element._oldDisplayMode : 'none';
    }
}

$type.setCommand = function DomElement$setCommand(commandSource, commandName, commandArgument, commandTarget) {
    /// <summary locid="M:J#Sys.UI.DomElement.setCommand">Causes a DOM element to raise a bubble event when clicked.</summary>
    /// <param name="commandSource">The DOM element, array of DOM elements, or DOM element selectors that causes the event when clicked.</param>
    /// <param name="commandName" type="String" mayBeNull="true">The name of the command to raise.</param>
    /// <param name="commandArgument" mayBeNull="true" optional="true">Optional command argument.</param>
    /// <param name="commandTarget" optional="true" mayBeNull="true">DOM element from which the command should start bubbling up.</param>
    var e = Function._validateParams(arguments, [
        {name: "commandSource"},
        {name: "commandName", type: String, mayBeNull: true},
        {name: "commandArgument", mayBeNull: true, optional: true},
        {name: "commandTarget", mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    Sys.UI.DomEvent.addHandler(commandSource, 'click', function(ev) {
        var source = commandTarget || this;
        Sys.UI.DomElement.raiseBubbleEvent(source, new Sys.CommandEventArgs(commandName, commandArgument, this, ev)); 
    }, true /*autoRemove*/);
}

Sys.registerPlugin({
    name: "setCommand",
    dom: true,
    returnType: "Sys.ElementSet",
    description: "Causes a DOM element to raise a bubble event when clicked.",
    parameters: [
        {name: "commandName", type:"String", description: "The name of the command to raise."},
        {name: "commandArgument", description: "Optional command argument."},
        {name: "commandTarget", description: "DOM element from which the command should start bubbling up."}
    ],
    plugin: function(commandName, commandArgument, commandTarget) {
        var e = Function._validateParams(arguments, [
            {name: "commandName", type: String, mayBeNull: true},
            {name: "commandArgument", mayBeNull: true, optional: true},
            {name: "commandTarget", mayBeNull: true, optional: true}
        ]);
        if (e) throw e;
        return this.addHandler('click', function(ev) {
            var source = commandTarget || this;
            Sys.UI.DomElement.raiseBubbleEvent(source, new Sys.CommandEventArgs(commandName, commandArgument, this, ev)); 
        }, true /*autoRemove*/);
    }
});

$type._ensureOldDisplayMode = function DomElement$_ensureOldDisplayMode(element) {
    if (!element._oldDisplayMode) {
        var style = element.currentStyle || this._getCurrentStyle(element);
        element._oldDisplayMode = style ? style.display : null;
        if (!element._oldDisplayMode || element._oldDisplayMode === 'none') {
            var tagName = element.tagName,
                mode = 'inline';
            if (/^(DIV|P|ADDRESS|BLOCKQUOTE|BODY|COL|COLGROUP|DD|DL|DT|FIELDSET|FORM|H1|H2|H3|H4|H5|H6|HR|IFRAME|LEGEND|OL|PRE|TABLE|TD|TH|TR|UL)$/i.test(tagName)) {
                mode = 'block';
            }
            else if (tagName.toUpperCase() === "LI") {
                mode = 'list-item';
            }
            element._oldDisplayMode = mode;
        }
    }
}

$type._getWindow = function DomElement$_getWindow(element) {
    var doc = element.ownerDocument || element.document || element;
    return doc.defaultView || doc.parentWindow;
}

$type._getCurrentStyle = function DomElement$_getCurrentStyle(element) {
    if (element.nodeType === 3) return null;
    var w = this._getWindow(element);
    if (element.documentElement) element = element.documentElement;
    var computedStyle = (w && (element !== w) && w.getComputedStyle) ?
        w.getComputedStyle(element, null) :
        element.currentStyle || element.style;
    return computedStyle;
}

$type._onDispose = function DomElement$_onDispose(element, fn) {
    var queue, d = element.dispose;
    if (d !== Sys.UI.DomElement._dispose) {
        element.dispose = Sys.UI.DomElement._dispose;
        element.__msajaxdispose = queue = [];
        if (typeof(d) === "function") {
            queue.push(d);
        }
    }
    else {
        queue = element.__msajaxdispose;
    }
    queue.push(fn);
}

$type._dispose = function DomElement$_dispose() {
    var queue = this.__msajaxdispose;
    if (queue) {
        for (var i = 0, l = queue.length; i < l; i++) {
            queue[i].apply(this);
        }
    }
    if (this.control && typeof(this.control.dispose) === "function") {
        this.control.dispose();
    }
    this.__msajaxdispose = null;
    this.dispose = null;
}
$type = Sys.IContainer = function IContainer() {
    throw Error.notImplemented();
}
$type.prototype = {
    addComponent: function IContainer$addComponent(component) {
        /// <summary locid="M:J#Sys.IContainer.addComponent"></summary>
        /// <param name="component" type="Sys.Component"></param>
        var e = Function._validateParams(arguments, [
            {name: "component", type: Sys.Component}
        ]);
        if (e) throw e;
        throw Error.notImplemented();
    },
    removeComponent: function IContainer$removeComponent(component) {
        /// <summary locid="M:J#Sys.IContainer.removeComponent"></summary>
        /// <param name="component" type="Sys.Component"></param>
        var e = Function._validateParams(arguments, [
            {name: "component", type: Sys.Component}
        ]);
        if (e) throw e;
        throw Error.notImplemented();
    },
    findComponent: function IContainer$findComponent(id) {
        /// <summary locid="M:J#Sys.IContainer.findComponent"></summary>
        /// <param name="id" type="String"></param>
        /// <returns type="Sys.Component"></returns>
        var e = Function._validateParams(arguments, [
            {name: "id", type: String}
        ]);
        if (e) throw e;
        throw Error.notImplemented();
    },
    getComponents: function IContainer$getComponents() {
        /// <summary locid="M:J#Sys.IContainer.getComponents"></summary>
        /// <returns type="Array" elementType="Sys.Component"></returns>
        if (arguments.length !== 0) throw Error.parameterCount();
        throw Error.notImplemented();
    }
}
$type.registerInterface("Sys.IContainer");

$type = Sys.ApplicationLoadEventArgs = function ApplicationLoadEventArgs(components, isPartialLoad) {
    /// <summary locid="M:J#Sys.ApplicationLoadEventArgs.#ctor"></summary>
    /// <param name="components" type="Array" elementType="Sys.Component">The list of components that were created since the last time the load event was raised.</param>
    /// <param name="isPartialLoad" type="Boolean">True if the page is partially loading.</param>
    var e = Function._validateParams(arguments, [
        {name: "components", type: Array, elementType: Sys.Component},
        {name: "isPartialLoad", type: Boolean}
    ]);
    if (e) throw e;
    Sys.ApplicationLoadEventArgs.initializeBase(this);
    this._components = components;
    this._isPartialLoad = isPartialLoad;
}
$type.prototype = {
    get_components: function ApplicationLoadEventArgs$get_components() {
        /// <value type="Array" elementType="Sys.Component" locid="P:J#Sys.ApplicationLoadEventArgs.components">The list of components that were created since the last time the load event was raised.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._components;
    },
    get_isPartialLoad: function ApplicationLoadEventArgs$get_isPartialLoad() {
        /// <value type="Boolean" locid="P:J#Sys.ApplicationLoadEventArgs.isPartialLoad">True if the page is partially loading.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._isPartialLoad;
    }
}
$type.registerClass('Sys.ApplicationLoadEventArgs', Sys.EventArgs);
$type = Sys._Application = function _Application() {
    /// <summary locid="M:J#Sys.Application.#ctor"></summary>
    if (arguments.length !== 0) throw Error.parameterCount();
    Sys._Application.initializeBase(this);

    this._disposableObjects = [];
    this._components = {};
    this._createdComponents = [];
    this._secondPassComponents = [];

    this._unloadHandlerDelegate = Function.createDelegate(this, this._unloadHandler);
    Sys.UI.DomEvent.addHandler(window, "unload", this._unloadHandlerDelegate);
}
$type.prototype = {
    _deleteCount: 0,

    get_isCreatingComponents: function _Application$get_isCreatingComponents() {
        /// <value type="Boolean" locid="P:J#Sys.Application.isCreatingComponents"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return !!this._creatingComponents;
    },
    get_isDisposing: function _Application$get_isDisposing() {
        /// <value type="Boolean" locid="P:J#Sys.Application.isDisposing"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return !!this._disposing;
    },
    add_init: function _Application$add_init(handler) {
        /// <summary locid="E:J#Sys.Application.init"></summary>
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        if (this._initialized) {
            handler(this, Sys.EventArgs.Empty);
        }
        else {
            this._addHandler("init", handler);
        }
    },
    remove_init: function _Application$remove_init(handler) {
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        this._removeHandler("init", handler);
    },
    add_load: function _Application$add_load(handler) {
        /// <summary locid="E:J#Sys.Application.load"></summary>
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        this._addHandler("load", handler);
    },
    remove_load: function _Application$remove_load(handler) {
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        this._removeHandler("load", handler);
    },
    add_unload: function _Application$add_unload(handler) {
        /// <summary locid="E:J#Sys.Application.unload"></summary>
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        this._addHandler("unload", handler);
    },
    remove_unload: function _Application$remove_unload(handler) {
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        this._removeHandler("unload", handler);
    },
    addComponent: function _Application$addComponent(component) {
        /// <summary locid="M:J#Sys.Application.addComponent">Adds a top-level component to the application.</summary>
        /// <param name="component" type="Sys.Component">The component to add.</param>
        var e = Function._validateParams(arguments, [
            {name: "component", type: Sys.Component}
        ]);
        if (e) throw e;
        var id = component.get_id();
        if (!id) throw Error.invalidOperation(Sys.Res.cantAddWithoutId);
        if (typeof(this._components[id]) !== 'undefined') throw Error.invalidOperation(String.format(Sys.Res.appDuplicateComponent, id));
        this._components[id] = component;
    },
    beginCreateComponents: function _Application$beginCreateComponents() {
        /// <summary locid="M:J#Sys.Application.beginCreateComponents"></summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        this._creatingComponents = true;
    },
    dispose: function _Application$dispose() {
        /// <summary locid="M:J#Sys.Application.dispose"></summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        if (!this._disposing) {
            this._disposing = true;
            if (this._timerCookie) {
                window.clearTimeout(this._timerCookie);
                delete this._timerCookie;
            }
            var endHandler = this._endRequestHandler;
            var beginHandler = this._beginRequestHandler;
            if (endHandler || beginHandler) {
                var prm = Sys.WebForms.PageRequestManager.getInstance();
                if (endHandler) prm.remove_endRequest(endHandler);
                if (beginHandler) prm.remove_beginRequest(beginHandler);
                delete this._endRequestHandler;
                delete this._beginRequestHandler;
            }
            if (window.pageUnload) {
                window.pageUnload(this, Sys.EventArgs.Empty);
            }
            Sys.Observer.raiseEvent(this, "unload");
            var disposableObjects = Array.clone(this._disposableObjects);
            for (var i = 0, l = disposableObjects.length; i < l; i++) {
                var object = disposableObjects[i];
                if (typeof(object) !== "undefined") {
                    object.dispose();
                }
            }
            this._disposableObjects.length = 0;

            Sys.UI.DomEvent.removeHandler(window, "unload", this._unloadHandlerDelegate);

            if (Sys._ScriptLoader) {
                var sl = Sys._ScriptLoader.getInstance();
                if (sl) {
                    sl.dispose();
                }
            }

            Sys._Application.callBaseMethod(this, 'dispose');
        }
    },
    disposeElement: function _Application$disposeElement(element, childNodesOnly) {
        /// <summary locid="M:J#Sys._Application.disposeElement">Disposes of control and behavior resources associated with an element and its child nodes.</summary>
        /// <param name="element">The element to dispose.</param>
        /// <param name="childNodesOnly" type="Boolean">Whether to dispose of the element and its child nodes or only its child nodes.</param>
        var e = Function._validateParams(arguments, [
            {name: "element"},
            {name: "childNodesOnly", type: Boolean}
        ]);
        if (e) throw e;
        if (element.nodeType === 1) {
            var d, c, i, list,
                allElements = element.getElementsByTagName("*"),
                length = allElements.length,
                children = new Array(length);
            for (i = 0; i < length; i++) {
                children[i] = allElements[i];
            }
            for (i = length - 1; i >= 0; i--) {
                var child = children[i];
                d = child.dispose;
                if (d && typeof(d) === "function") {
                    child.dispose();
                }
                else {
                    c = child.control;
                    if (c && typeof(c.dispose) === "function") {
                        c.dispose();
                    }
                }
                list = child._behaviors;
                if (list) {
                    this._disposeComponents(list);
                }
                list = child._components;
                if (list) {
                    this._disposeComponents(list);
                    child._components = null;
                }
            }
            if (!childNodesOnly) {
                d = element.dispose;
                if (d && typeof(d) === "function") {
                    element.dispose();
                }
                else {
                    c = element.control;
                    if (c && typeof(c.dispose) === "function") {
                        c.dispose();
                    }
                }
                list = element._behaviors;
                if (list) {
                    this._disposeComponents(list);
                }
                list = element._components;
                if (list) {
                    this._disposeComponents(list);
                    element._components = null;
                }
            }
        }
    },    
    endCreateComponents: function _Application$endCreateComponents() {
        /// <summary locid="M:J#Sys.Application.endCreateComponents"></summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        var components = this._secondPassComponents;
        for (var i = 0, l = components.length; i < l; i++) {
            var entry = components[i],
                component = entry.component;
            Sys.Component._setReferences(component, entry.references);
            component.endUpdate();
        }
        this._secondPassComponents = [];
        this._creatingComponents = false;
    },
    findComponent: function _Application$findComponent(id, parent) {
        /// <summary locid="M:J#Sys.Application.findComponent">Finds top-level components that were added through addComponent if no parent is specified  or children of the specified parent. If parent is a component</summary>
        /// <param name="id" type="String">The id of the component to find.</param>
        /// <param name="parent" optional="true" mayBeNull="true">The component or element that contains the component to find.  If not specified or null, the search is made on Application.</param>
        /// <returns type="Sys.Component" mayBeNull="true">The component, or null if it wasn't found.</returns>
        var e = Function._validateParams(arguments, [
            {name: "id", type: String},
            {name: "parent", mayBeNull: true, optional: true}
        ]);
        if (e) throw e;
        return (parent ?
            ((Sys.IContainer.isInstanceOfType(parent)) ?
                parent.findComponent(id) :
                parent[id] || null) :
            Sys.Application._components[id] || null);
    },
    getComponents: function _Application$getComponents() {
        /// <summary locid="M:J#Sys.Application.getComponents"></summary>
        /// <returns type="Array" elementType="Sys.Component"></returns>
        if (arguments.length !== 0) throw Error.parameterCount();
        var res = [];
        var components = this._components;
        for (var name in components) {
            if (components.hasOwnProperty(name)) {
                res.push(components[name]);
            }
        }
        return res;
    },
    initialize: function _Application$initialize() {
        /// <summary locid="M:J#Sys.Application.initialize"></summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        window.setTimeout(Function.createDelegate(this, this._doInitialize), 0);
    },
    _doInitialize: function _Application$_doInitialize() {
        if(!this.get_isInitialized() && !this._disposing) {
            Sys._Application.callBaseMethod(this, 'initialize');
            this._raiseInit();
            if (this.get_stateString) {
                if (Sys.WebForms && Sys.WebForms.PageRequestManager) {
                    var prm = Sys.WebForms.PageRequestManager.getInstance();
                    this._beginRequestHandler = Function.createDelegate(this, this._onPageRequestManagerBeginRequest);
                    prm.add_beginRequest(this._beginRequestHandler);
                    this._endRequestHandler = Function.createDelegate(this, this._onPageRequestManagerEndRequest);
                    prm.add_endRequest(this._endRequestHandler);
                }
                var loadedEntry = this.get_stateString();
                if (loadedEntry !== this._currentEntry) {
                    this._navigate(loadedEntry);
                }
                else {
                    this._ensureHistory();
                }
            }
            this.raiseLoad();
        }
    },
    notifyScriptLoaded: function _Application$notifyScriptLoaded() {
        /// <summary locid="M:J#Sys.Application.notifyScriptLoaded">Called by referenced scripts to indicate that they have completed loading. [Obsolete]</summary>
        if (arguments.length !== 0) throw Error.parameterCount();
    },
    registerDisposableObject: function _Application$registerDisposableObject(object) {
        /// <summary locid="M:J#Sys.Application.registerDisposableObject">Registers a disposable object with the application.</summary>
        /// <param name="object" type="Sys.IDisposable">The object to register.</param>
        var e = Function._validateParams(arguments, [
            {name: "object", type: Sys.IDisposable}
        ]);
        if (e) throw e;
        if (!this._disposing) {
            var objects = this._disposableObjects,
                i = objects.length;
            objects[i] = object;
            object.__msdisposeindex = i;
        }
    },
    raiseLoad: function _Application$raiseLoad() {
        /// <summary locid="M:J#Sys.Application.raiseLoad"></summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        var args = new Sys.ApplicationLoadEventArgs(Array.clone(this._createdComponents), !!this._loaded);
        this._loaded = true;
        Sys.Observer.raiseEvent(this, "load", args);
        if (window.pageLoad) {
            window.pageLoad(this, args);
        }
        this._createdComponents = [];
    },
    removeComponent: function _Application$removeComponent(component) {
        /// <summary locid="M:J#Sys.Application.removeComponent">Removes a top-level component from the application.</summary>
        /// <param name="component" type="Sys.Component">The component to remove.</param>
        var e = Function._validateParams(arguments, [
            {name: "component", type: Sys.Component}
        ]);
        if (e) throw e;
        var id = component.get_id();
        if (id) delete this._components[id];
    },
    unregisterDisposableObject: function _Application$unregisterDisposableObject(object) {
        /// <summary locid="M:J#Sys.Application.unregisterDisposableObject">Unregisters a disposable object from the application.</summary>
        /// <param name="object" type="Sys.IDisposable">The object to unregister.</param>
        var e = Function._validateParams(arguments, [
            {name: "object", type: Sys.IDisposable}
        ]);
        if (e) throw e;
        if (!this._disposing) {
            var i = object.__msdisposeindex;
            if (typeof(i) === "number") {
                var disposableObjects = this._disposableObjects;
                delete disposableObjects[i];
                delete object.__msdisposeindex;
                if (++this._deleteCount > 1000) {
                    var newArray = [];
                    for (var j = 0, l = disposableObjects.length; j < l; j++) {
                        object = disposableObjects[j];
                        if (typeof(object) !== "undefined") {
                            object.__msdisposeindex = newArray.length;
                            newArray.push(object);
                        }
                    }
                    this._disposableObjects = newArray;
                    this._deleteCount = 0;
                }
            }
        }
    },
    _addComponentToSecondPass: function _Application$_addComponentToSecondPass(component, references) {
        this._secondPassComponents.push({component: component, references: references});
    },
    _disposeComponents: function _Application$_disposeComponents(list) {
        if (list) {
            for (var i = list.length - 1; i >= 0; i--) {
                var item = list[i];
                if (typeof(item.dispose) === "function") {
                    item.dispose();
                }
            }
        }
    },
    _raiseInit: function _Application$_raiseInit() {
        this.beginCreateComponents();
        Sys.Observer.raiseEvent(this, "init");
        this.endCreateComponents();
    },
    _unloadHandler: function _Application$_unloadHandler(event) {
        this.dispose();
    }
}
$type.registerClass('Sys._Application', Sys.Component, Sys.IContainer);

Sys.Application = new Sys._Application();
window.$find = Sys.Application.findComponent;

Sys.onReady(function() {
    Sys.Application._doInitialize();
});


$type = Sys.UI.Behavior = function Behavior(element) {
    /// <summary locid="M:J#Sys.UI.Behavior.#ctor"></summary>
    /// <param name="element" domElement="true">The DOM element the behavior is associated with.</param>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true}
    ]);
    if (e) throw e;
    Sys.UI.Behavior.initializeBase(this);
    this._element = element;
    var behaviors = (element._behaviors = element._behaviors || []);
    behaviors.push(this);
}
$type.prototype = {
    get_element: function Behavior$get_element() {
        /// <value domElement="true" locid="P:J#Sys.UI.Behavior.element">The DOM element this behavior is associated with</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._element;
    },
    get_id: function Behavior$get_id() {
        /// <value type="String" locid="P:J#Sys.UI.Behavior.id"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        var baseId = Sys.UI.Behavior.callBaseMethod(this, 'get_id');
        if (baseId) return baseId;
        var element = this._element;
        if (!element || !element.id) return '';
        return element.id + '$' + this.get_name();
    },
    get_name: function Behavior$get_name() {
        /// <value type="String" locid="P:J#Sys.UI.Behavior.name"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        if (this._name) return this._name;
        var name = Object.getTypeName(this);
        var i = name.lastIndexOf('.');
        if (i >= 0) name = name.substr(i + 1);
        if (!this._initialized) this._name = name;
        return name;
    },
    set_name: function Behavior$set_name(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
        if (e) throw e;
        if ((value === '') || (value.charAt(0) === ' ') || (value.charAt(value.length - 1) === ' '))
            throw Error.argument('value', Sys.Res.invalidId);
        if (typeof(this._element[value]) !== 'undefined')
            throw Error.invalidOperation(String.format(Sys.Res.behaviorDuplicateName, value));
        if (this.get_isInitialized()) throw Error.invalidOperation(Sys.Res.cantSetNameAfterInit);
        this._name = value;
    },
    initialize: function Behavior$initialize() {
        Sys.UI.Behavior.callBaseMethod(this, 'initialize');
        var name = this.get_name();
        if (name) this._element[name] = this;
    },
    dispose: function Behavior$dispose() {
        Sys.UI.Behavior.callBaseMethod(this, 'dispose');
        var e = this._element;
        if (e) {
            var name = this.get_name();
            if (name) {
                e[name] = null;
            }
            var behaviors = e._behaviors;
            Array.remove(behaviors, this);
            if (!behaviors.length) {
                e._behaviors = null;
            }
            delete this._element;
        }
    }
}
$type.registerClass('Sys.UI.Behavior', Sys.Component);

$type.getBehaviorByName = function Behavior$getBehaviorByName(element, name) {
    /// <summary locid="M:J#Sys.UI.Behavior.getBehaviorByName">Gets a behavior with the specified name from the dom element.</summary>
    /// <param name="element" domElement="true">The DOM element to inspect.</param>
    /// <param name="name" type="String">The name of the behavior to look for.</param>
    /// <returns type="Sys.UI.Behavior" mayBeNull="true">The behaviors or null if it was not found.</returns>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "name", type: String}
    ]);
    if (e) throw e;
    var b = element[name];
    return (b && Sys.UI.Behavior.isInstanceOfType(b)) ? b : null;
}

$type.getBehaviors = function Behavior$getBehaviors(element) {
    /// <summary locid="M:J#Sys.UI.Behavior.getBehaviors">Gets a collection containing the behaviors associated with an element.</summary>
    /// <param name="element" domElement="true">The DOM element.</param>
    /// <returns type="Array" elementType="Sys.UI.Behavior">An array containing the behaviors associated with the DOM element.</returns>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true}
    ]);
    if (e) throw e;
    var behaviors = element._behaviors;
    return behaviors ? Array.clone(behaviors) : [];
}

Sys.UI.Behavior.getBehaviorsByType = function Behavior$getBehaviorsByType(element, type) {
    /// <summary locid="M:J#Sys.UI.Behavior.getBehaviorsByType">Gets an array of behaviors with the specified type from the dom element.</summary>
    /// <param name="element" domElement="true">The DOM element to inspect.</param>
    /// <param name="type" type="Type">The type of behavior to look for.</param>
    /// <returns type="Array" elementType="Sys.UI.Behavior">An array containing the behaviors of the specified type found on the element.  The array is empty if no behavior of this type was found.</returns>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "type", type: Type}
    ]);
    if (e) throw e;
    var behaviors = element._behaviors;
    var results = [];
    if (behaviors) {
        for (var i = 0, l = behaviors.length; i < l; i++) {
            var behavior = behaviors[i];
            if (type.isInstanceOfType(behavior)) {
                results.push(behavior);
            }
        }
    }
    return results;
}
$type = Sys.UI.VisibilityMode = function VisibilityMode() {
    /// <summary locid="M:J#Sys.UI.VisibilityMode.#ctor">Describes how a DOM element should disappear when its visible property is set to false.</summary>
    /// <field name="hide" type="Number" integer="true" static="true" locid="F:J#Sys.UI.VisibilityMode.hide">The element disappears but its space remains</field>
    /// <field name="collapse" type="Number" integer="true" static="true" locid="F:J#Sys.UI.VisibilityMode.collapse">The element disappears and the space it occupied is collapsed.</field>
    if (arguments.length !== 0) throw Error.parameterCount();
    throw Error.notImplemented();
}
$type.prototype = {
    hide: 0,
    collapse: 1
}
$type.registerEnum("Sys.UI.VisibilityMode");

$type = Sys.UI.Control = function Control(element) {
    /// <summary locid="M:J#Sys.UI.Control.#ctor"></summary>
    /// <param name="element" domElement="true">The DOM element the behavior is associated with.</param>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true}
    ]);
    if (e) throw e;
    if (element.control) throw Error.invalidOperation(Sys.Res.controlAlreadyDefined);
    Sys.UI.Control.initializeBase(this);

    this._element = element;
    element.control = this;
    var role = this.get_role();
    if (role) {
        element.setAttribute("role", role);
    }
}
$type.prototype = {
    _parent: null,
    _visibilityMode: Sys.UI.VisibilityMode.hide,

    get_element: function Control$get_element() {
        /// <value domElement="true" locid="P:J#Sys.UI.Control.element">The DOM element this behavior is associated with</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._element;
    },
    get_id: function Control$get_id() {
        /// <value type="String" locid="P:J#Sys.UI.Control.id"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._id || (this._element ? this._element.id : "");
    },
    get_parent: function Control$get_parent() {
        /// <value type="Sys.UI.Control" locid="P:J#Sys.UI.Control.parent"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        if (this._parent) return this._parent;
        if (!this._element) return null;
        
        var parentElement = this._element.parentNode;
        while (parentElement) {
            if (parentElement.control) {
                return parentElement.control;
            }
            parentElement = parentElement.parentNode;
        }
        return null;
    },
    set_parent: function Control$set_parent(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Sys.UI.Control}]);
        if (e) throw e;
        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
        var parents = [this];
        var current = value;
        while (current) {
            if (Array.contains(parents, current)) throw Error.invalidOperation(Sys.Res.circularParentChain);
            parents.push(current);
            current = current.get_parent();
        }
        this._parent = value;
    },
    get_role: function Control$get_role() {
        /// <value type="String" locid="P:J#Sys.UI.Control.role"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return null;
    },
    get_visibilityMode: function Control$get_visibilityMode() {
        /// <value type="Sys.UI.VisibilityMode" locid="P:J#Sys.UI.Control.visibilityMode"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
        return Sys.UI.DomElement.getVisibilityMode(this._element);
    },
    set_visibilityMode: function Control$set_visibilityMode(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Sys.UI.VisibilityMode}]);
        if (e) throw e;
        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
        Sys.UI.DomElement.setVisibilityMode(this._element, value);
    },
    get_visible: function Control$get_visible() {
        /// <value type="Boolean" locid="P:J#Sys.UI.Control.visible"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
        return Sys.UI.DomElement.getVisible(this._element);
    },
    set_visible: function Control$set_visible(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
        if (e) throw e;
        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
        Sys.UI.DomElement.setVisible(this._element, value)
    },
    addCssClass: function Control$addCssClass(className) {
        /// <summary locid="M:J#Sys.UI.Control.addCssClass">Adds a CSS class to the control if it doesn't already have it.</summary>
        /// <param name="className" type="String">The name of the CSS class to add.</param>
        var e = Function._validateParams(arguments, [
            {name: "className", type: String}
        ]);
        if (e) throw e;
        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
        Sys.UI.DomElement.addCssClass(this._element, className);
    },
    dispose: function Control$dispose() {
        Sys.UI.Control.callBaseMethod(this, 'dispose');
        if (this._element) {
            this._element.control = null;
            delete this._element;
        }
        if (this._parent) delete this._parent;
    },
    onBubbleEvent: function Control$onBubbleEvent(source, args) {
        /// <summary locid="M:J#Sys.UI.Control.onBubbleEvent"></summary>
        /// <param name="source">The object that triggered the event.</param>
        /// <param name="args" type="Sys.EventArgs">The event arguments.</param>
        /// <returns type="Boolean">False, because the event was not handled and should bubble up further. Derived classes should override that and return true whenever they handle the event to prevent it from bubbling up.</returns>
        var e = Function._validateParams(arguments, [
            {name: "source"},
            {name: "args", type: Sys.EventArgs}
        ]);
        if (e) throw e;
        return false;
    },
    raiseBubbleEvent: function Control$raiseBubbleEvent(source, args) {
        /// <summary locid="M:J#Sys.UI.Control.raiseBubbleEvent"></summary>
        /// <param name="source">The object that triggered the event.</param>
        /// <param name="args" type="Sys.EventArgs">The event arguments.</param>
        var e = Function._validateParams(arguments, [
            {name: "source"},
            {name: "args", type: Sys.EventArgs}
        ]);
        if (e) throw e;
        this._raiseBubbleEvent(source, args);
    },
    _raiseBubbleEvent: function Control$_raiseBubbleEvent(source, args) {
        var currentTarget = this.get_parent();
        while (currentTarget) {
            if (currentTarget.onBubbleEvent(source, args)) {
                return;
            }
            currentTarget = currentTarget.get_parent();
        }
    },
    removeCssClass: function Control$removeCssClass(className) {
        /// <summary locid="M:J#Sys.UI.Control.removeCssClass">Removes a CSS class from the control.</summary>
        /// <param name="className" type="String">The name of the CSS class to remove.</param>
        var e = Function._validateParams(arguments, [
            {name: "className", type: String}
        ]);
        if (e) throw e;
        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
        Sys.UI.DomElement.removeCssClass(this._element, className);
    },
    toggleCssClass: function Control$toggleCssClass(className) {
        /// <summary locid="M:J#Sys.UI.Control.toggleCssClass">Toggles a CSS class on and off on the control.</summary>
        /// <param name="className" type="String">The name of the CSS class to toggle.</param>
        var e = Function._validateParams(arguments, [
            {name: "className", type: String}
        ]);
        if (e) throw e;
        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
        Sys.UI.DomElement.toggleCssClass(this._element, className);
    }
}
$type.registerClass('Sys.UI.Control', Sys.Component);

}

if (window.Sys && Sys.loader) {
	Sys.loader.registerScript("ComponentModel", null, execute);
}
else {
	execute();
}

})();
var $get, $create, $addHandler, $addHandlers, $clearHandlers;
aType.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.PasteText=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.PasteText.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.PasteText.prototype={callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.PasteText.callBaseMethod(this,"callMethod"))return false;var a=this._designPanel;if(Sys.Extended.UI.HTMLEditor.isIE){a._saveContent();a.openWait();setTimeout(function(){a._paste(false);a.closeWait()},0)}else{var b=a._getSelection(),d=a._createRange(b),c=String.format(Sys.Extended.UI.Resources.HTMLEditor_toolbar_button_Use_verb,Sys.Extended.UI.HTMLEditor.isSafari&&navigator.userAgent.indexOf("mac")!=-1?"Apple-V":"Ctrl-V"),e=String.format(Sys.Extended.UI.Resources.HTMLEditor_toolbar_button_OnPastePlainText,c);alert(e);setTimeout(function(){a._removeAllRanges(b);a._selectRange(b,d)},0);a.isPlainText=true}}};Sys.Extended.UI.HTMLEditor.ToolbarButton.PasteText.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.PasteText",Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);UType.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.OkCancelPopupButton=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.OkCancelPopupButton.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.OkCancelPopupButton.prototype={set_activeEditPanel:function(c){var a=this;if(a._editPanel!=c&&a._editPanel!=null){var b=a.get_relatedPopup();if(typeof b._forceImClose=="function"){var d=b._forceImClose;d(b._iframe.contentWindow)}}Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModePopupImageButton.callBaseMethod(a,"set_activeEditPanel",[c])},callMethod:function(){var a=this;if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.OkCancelPopupButton.callBaseMethod(a,"callMethod"))return false;a.openPopup(Function.createDelegate(a,a._onopened));return true},_onopened:function(b){var a=this;b.popupMediator.set_callMethodByName("OK",Function.createDelegate(a,a._onOK));b.popupMediator.set_callMethodByName("Cancel",Function.createDelegate(a,a._onCancel));var c=a.get_relatedPopup();c._popup=a._designPanel._popup;c._forceImClose=Function.createDelegate(a,a._onCancel);a._designPanel._popup=a.get_relatedPopup();a.opened(b)},opened:function(){},_onOK:function(b){var a=this;a.okCheck(b)&&a._exit(Function.createDelegate(a,a.ok),b)},_onCancel:function(b){var a=this;a.cancelCheck(b)&&a._exit(Function.createDelegate(a,a.cancel),b)},_exit:function(c,b){var a=this;a.closePopup();a._designPanel._popup=a.get_relatedPopup()._popup;a.get_relatedPopup()._popup=null;a.get_relatedPopup()._forceImClose=null;c(b)},ok:function(){},cancel:function(){},okCheck:function(){return true},cancelCheck:function(){return true}};Sys.Extended.UI.HTMLEditor.ToolbarButton.OkCancelPopupButton.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.OkCancelPopupButton",Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModePopupImageButton);&Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyRight=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyRight.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyRight.prototype={checkState:function(){return!Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyRight.callBaseMethod(this,"checkState")?false:this._designPanel._textAlignState("right")},callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyRight.callBaseMethod(this,"callMethod"))return false;this._designPanel._execCommand("JustifyRight")}};Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyRight.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyRight",Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.IncreaseIndent = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.IncreaseIndent.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.IncreaseIndent.prototype = {
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.IncreaseIndent.callBaseMethod(this, "callMethod")) return false;
        this._designPanel._execCommand("Indent");
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.IncreaseIndent.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.IncreaseIndent", Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);

�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.ImageButton=function(b){var a=this;Sys.Extended.UI.HTMLEditor.ToolbarButton.ImageButton.initializeBase(a,[b]);a._normalSrc="";a._hoverSrc="";a._downSrc="";a._activeSrc="";a._downTimer=null};Sys.Extended.UI.HTMLEditor.ToolbarButton.ImageButton.prototype={get_normalSrc:function(){return this._normalSrc},set_normalSrc:function(b){this._normalSrc=b;var a=this.get_element();if(/none$/.test(a.src))a.src=b},get_hoverSrc:function(){return this._hoverSrc},set_hoverSrc:function(a){this._hoverSrc=a},get_downSrc:function(){return this._downSrc},set_downSrc:function(a){this._downSrc=a},get_activeSrc:function(){return this._activeSrc},set_activeSrc:function(a){this._activeSrc=a},isImage:function(){return true},_onmouseover:function(){var a=this;if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.ImageButton.callBaseMethod(a,"_onmouseover"))return false;if(a._hoverSrc.length>0)a.get_element().src=a._hoverSrc;return true},_onmouseout:function(){var a=this,b=a.get_element();if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.ImageButton.callBaseMethod(a,"_onmouseout"))return false;if(a._hoverSrc.length>0)if(Sys.UI.DomElement.containsCssClass(b,a._cssClass+"_mousedown")&&a._downSrc.length>0)b.src=a._downSrc;else if(Sys.UI.DomElement.containsCssClass(b,a._cssClass+"_active")&&a._activeSrc.length>0)b.src=a._activeSrc;else b.src=a._normalSrc;return true},_onmousedown:function(){var a=this;if(Sys.Extended.UI.HTMLEditor.ToolbarButton.ImageButton.callBaseMethod(a,"_onmousedown")===null)return null;if(a._downSrc.length>0){a.get_element().src=a._downSrc;a._downTimer=setTimeout(Function.createDelegate(a,a._onmouseup),1e3)}return true},_onmouseup:function(){var a=this,b=a.get_element();if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.ImageButton.callBaseMethod(a,"_onmouseup"))return false;if(a._downSrc.length>0){if(Sys.UI.DomElement.containsCssClass(b,a._cssClass+"_hover")&&a._hoverSrc.length>0)b.src=a._hoverSrc;else if(Sys.UI.DomElement.containsCssClass(b,a._cssClass+"_active")&&a._activeSrc.length>0)b.src=a._activeSrc;else b.src=a._normalSrc;if(a._downTimer!=null){clearTimeout(a._downTimer);a._downTimer=null}}return true},setActivity:function(c){var a=this,b=a.get_element();if(a._activeSrc.length>0)if(c){if(!Sys.UI.DomElement.containsCssClass(b,a._cssClass+"_active"))b.src=a._activeSrc}else if(Sys.UI.DomElement.containsCssClass(b,a._cssClass+"_active"))if(Sys.UI.DomElement.containsCssClass(b,a._cssClass+"_mousedown")&&a._downSrc.length>0)b.src=a._downSrc;else if(Sys.UI.DomElement.containsCssClass(b,a._cssClass+"_hover")&&a._hoverSrc.length>0)b.src=a._hoverSrc;else b.src=a._normalSrc;Sys.Extended.UI.HTMLEditor.ToolbarButton.ImageButton.callBaseMethod(a,"setActivity",[c])}};Sys.Extended.UI.HTMLEditor.ToolbarButton.ImageButton.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.ImageButton",Sys.Extended.UI.HTMLEditor.ToolbarButton.CommonButton);Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColorSelector=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColorSelector.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColorSelector.prototype={callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColorSelector.callBaseMethod(this,"callMethod"))return false},setColor:function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColorSelector.callBaseMethod(this,"setColor",[a]);this._designPanel._execCommand("forecolor",false,a)}};Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColorSelector.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColorSelector",Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorSelector);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignMode = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignMode.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignMode.prototype = {
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignMode.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignMode", Sys.Extended.UI.HTMLEditor.ToolbarButton.ModeButton);

�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.DecreaseIndent = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.DecreaseIndent.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.DecreaseIndent.prototype = {
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.DecreaseIndent.callBaseMethod(this, "callMethod")) return false;
        this._designPanel._execCommand("Outdent");
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.DecreaseIndent.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.DecreaseIndent", Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);

�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.Popups");Sys.Extended.UI.HTMLEditor.Popups.PopupBoxButton=function(a){Sys.Extended.UI.HTMLEditor.Popups.PopupBoxButton.initializeBase(this,[a]);this._designPanel=null};Sys.Extended.UI.HTMLEditor.Popups.PopupBoxButton.prototype={};Sys.Extended.UI.HTMLEditor.Popups.PopupBoxButton.registerClass("Sys.Extended.UI.HTMLEditor.Popups.PopupBoxButton",Sys.Extended.UI.HTMLEditor.Popups.PopupCommonButton);Type.registerNamespace("Sys.Extended.UI.HTMLEditor.Popups");Sys.Extended.UI.HTMLEditor.Popups.Popup=function(b){var a=this;Sys.Extended.UI.HTMLEditor.Popups.Popup.initializeBase(a,[b]);a._iframe=null;a._top=0;a._left=0;a._doc=null;a._initialContent="";a._cssPath="";a._autoDimensions=true;a._registeredFields=[];a._registeredHandlers=[];a._app_onload$delegate=Function.createDelegate(a,a._app_onload);a.isOpened=false;a.isLoaded=false;a.isLoading=false};Sys.Extended.UI.HTMLEditor.Popups.Popup.prototype={getDocument:function(){return this._doc},getPopupMediator:function(){return this._iframe.contentWindow&&this._iframe.contentWindow.popupMediator?this._iframe.contentWindow.popupMediator:null},get_registeredFields:function(){return this._registeredFields},set_registeredFields:function(a){this._registeredFields=eval(a)},get_registeredHandlers:function(){return this._registeredHandlers},set_registeredHandlers:function(a){this._registeredHandlers=eval(a)},get_initialContent:function(){return this._initialContent},set_initialContent:function(a){this._initialContent=a},get_cssPath:function(){return this._cssPath},set_cssPath:function(a){this._cssPath=a},get_autoDimensions:function(){return this._autoDimensions},set_autoDimensions:function(a){this._autoDimensions=a},get_iframe:function(){return this._iframe},set_iframe:function(a){this._iframe=a},checkCorrectLoaded:function(c){var a=this,b=a;if(b.isLoaded&&(b._iframe.style.height=="0px"||b._iframe.style.width=="0px"))a.isLoaded=false;if(!a.isLoaded){!a.isLoading&&a.reload();typeof c!="undefined"&&setTimeout(c,10);return false}return true},_baseOpen:function(b,e,d){var f="undefined",a=this,c=a;if(!a.checkCorrectLoaded(function(){c._baseOpen(b,e,d)}))return;var g=a.get_element();if(typeof d!=f)a._left=parseInt(d);if(typeof e!=f)a._top=parseInt(e);g.style.top=a._top+"px";g.style.left=a._left+"px";setTimeout(function(){typeof b=="function"&&c._onDocumentLoaded(b);c.isOpened=true},0)},open:function(a,c,b){this._baseOpen(a,c,b)},close:function(a){var b=this.get_element();this.isOpened=false;b.style.top="-2000px";b.style.left="-2000px";typeof a=="function"&&a()},reload:function(){var a=this;a.isLoading=true;var c=a.get_element(),d=c.parentNode;document.body.appendChild(c);d.appendChild(a.get_element());a._doc=a._iframe.contentWindow.document;a._doc.open();var b=new Sys.StringBuilder;b.append('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html><head>');a._cssPath.length>0&&b.append('<link rel="stylesheet" href="'+a._cssPath+'" media="all" />');b.append("<script>var __loaded__ = false;<\/script></head><body style='margin:0px; padding:0px; border-width:0px;' onload='__loaded__ = true;'>");a._autoDimensions&&b.append("<table cellspacing='0' cellpadding='0' border='0'><tr><td>");b.append(a._initialContent);a._autoDimensions&&b.append("</td></tr></table>");b.append("</body></html>");a._doc.write(b.toString());a._doc.close();a.isLoaded=false;a._afterReload()},_afterReload:function(){var e=true,g="TEXTAREA",d=false,c=this,b=c._iframe.contentWindow,a=c;c.isLoaded=b.__loaded__;if(!(a._doc.body&&a._doc.body.innerHTML))c.isLoaded=d;if(!c.isLoaded){setTimeout(function(){a._afterReload()},10);return}c.isLoaded=d;b.popupMediator={};b.popupMediator.registeredFields=c._registeredFields;b.popupMediator.registeredHandlers=c._registeredHandlers;b.popupMediator.get_callMethodByName=function(e){for(var c=b.popupMediator.registeredHandlers,a=0;a<c.length;a++){var d=c[a];if(d.name==e)return d.callMethod}return null};b.popupMediator.set_callMethodByName=function(f,e){for(var c=b.popupMediator.registeredHandlers,a=0;a<c.length;a++){var d=c[a];if(d.name==f)d.callMethod=e}};b.popupMediator.getField=function(e){for(var c=b.popupMediator.registeredFields,a=0;a<c.length;a++){var d=c[a];if(d.name==e)return b.document.getElementById(d.clientID)}return null};b.Sys=Sys;for(var f=0;f<c._registeredHandlers.length;f++)$find(c._registeredHandlers[f].clientID).activate(b.document.getElementById(c._registeredHandlers[f].clientID));if(Sys.Extended.UI.HTMLEditor.isIE)a._doc.onselectstart=function(){var c=a._iframe.contentWindow.event,b=c.srcElement.tagName.toUpperCase();return b=="INPUT"||b==g?e:d};else{a._doc.onmousedown=function(b){var a=b.target.tagName.toUpperCase();if(a=="INPUT"||a==g||a=="SELECT")return e;if(Sys.Extended.UI.HTMLEditor.isSafari)if(a=="TABLE"||a=="TR"||a=="TD"||a=="DIV")return e;return d};for(var h=a._doc.getElementsByTagName("input"),f=0;f<h.length;f++)h[f].setAttribute("autocomplete","off")}if(c._autoDimensions){a._iframe.style.height="1000px";a._iframe.style.width="1000px";setTimeout(function(){a._iframe.style.height=a._doc.body.firstChild.offsetHeight+"px";a._iframe.style.width=a._doc.body.firstChild.offsetWidth+"px";a.isLoaded=e;a.isLoading=d},0)}else{a.isLoaded=e;a.isLoading=d}},_onDocumentLoaded:function(b){var a=this,c=a;if(!a.isLoaded){setTimeout(function(){c._onDocumentLoaded(b)},10);return}a.isLoaded=true;b(a._iframe.contentWindow)},initialize:function(){this.__appLoaded__=false;Sys.Extended.UI.HTMLEditor.Popups.Popup.callBaseMethod(this,"initialize");Sys.Application.add_load(this._app_onload$delegate)},dispose:function(){var a=this;Sys.Application.remove_load(a._app_onload$delegate);a.isOpened&&a.close();Sys.Extended.UI.HTMLEditor.Popups.Popup.callBaseMethod(a,"dispose")},_app_onload:function(){var a=this;if(a.__appLoaded__)return;a.__appLoaded__=true;var b=a.get_element();if(Sys.Extended.UI.HTMLEditor.isReallyVisible(b)){a._parentNode_=b.parentNode;a.reload()}}};Sys.Extended.UI.HTMLEditor.Popups.Popup.registerClass("Sys.Extended.UI.HTMLEditor.Popups.Popup",Sys.UI.Control);OType.registerNamespace("Sys.Extended.UI.HTMLEditor.Popups");

Sys.Extended.UI.HTMLEditor.Popups.OkCancelAttachedTemplatePopup = function(element) {
    Sys.Extended.UI.HTMLEditor.Popups.OkCancelAttachedTemplatePopup.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.Popups.OkCancelAttachedTemplatePopup.prototype = {
    
    initialize : function() {
        Sys.Extended.UI.HTMLEditor.Popups.OkCancelAttachedTemplatePopup.callBaseMethod(this, "initialize");
    },
    
    dispose : function() {
        Sys.Extended.UI.HTMLEditor.Popups.OkCancelAttachedTemplatePopup.callBaseMethod(this, "dispose");
    }
}

Sys.Extended.UI.HTMLEditor.Popups.OkCancelAttachedTemplatePopup.registerClass("Sys.Extended.UI.HTMLEditor.Popups.OkCancelAttachedTemplatePopup", Sys.Extended.UI.HTMLEditor.Popups.AttachedTemplatePopup);
�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.Popups");Sys.Extended.UI.HTMLEditor.Popups.BaseColorsPopup=function(a){Sys.Extended.UI.HTMLEditor.Popups.BaseColorsPopup.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.Popups.BaseColorsPopup.prototype={};Sys.Extended.UI.HTMLEditor.Popups.BaseColorsPopup.registerClass("Sys.Extended.UI.HTMLEditor.Popups.BaseColorsPopup",Sys.Extended.UI.HTMLEditor.Popups.AttachedTemplatePopup);hTType.registerNamespace("Sys.Extended.UI.HTMLEditor");Sys.Extended.UI.HTMLEditor.DesignPanelEventHandler=function(b){var Z="'></span>",R="<span id='",ib="StyleForTyping",Q="EMBED",P="BR",D="\n",O="text",N="span",k="",M="LI",x="P",H="undefined",w="BODY",C="control",hb="function",B="keypress",e=null,j="keydown",Y="mousedown",c=false,m=true,f=this;try{var a=f;if(a._editPanel!=Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel)return m;if(Sys.Extended.UI.HTMLEditor.isIE)try{var Db=f._doc.selection,Ib=f._createRange(Db)}catch(Mb){Sys.Extended.UI.HTMLEditor._stopEvent(b);return c}(b.type==Y||b.type=="dblclick")&&f._focus(m);if(!Sys.Extended.UI.HTMLEditor.isIE&&b.type==j&&b.keyCode==Sys.UI.Key.tab&&f._editPanel.get_suppressTabInDesignMode()){Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel=e;return m}if(f.isPopup()){Sys.Extended.UI.HTMLEditor._stopEvent(b);return c}var gb=c;if(a._contextElement&&a._contextElement!=e){Function.createDelegate(f,Sys.Extended.UI.HTMLEditor.RemoveContextMenu)();if(b.type==j||b.type==B){Sys.Extended.UI.HTMLEditor._stopEvent(b);return}gb=m}if(typeof a.captureInDesign==hb)if(a.captureInDesign(b)===c){Sys.Extended.UI.HTMLEditor._stopEvent(b);return}if(Sys.Extended.UI.HTMLEditor.isIE&&b.type==Y&&b.ctrlKey){var l=a._getSelection(),zb=b.clientX,Ab=b.clientY;setTimeout(function(){var c=a._getSelection();if(c.type.toLowerCase()!=C){var d=a._doc.body.createTextRange();d.moveToPoint(zb,Ab);d.select()}c=a._getSelection();var d=a._createRange(c),b=Sys.Extended.UI.HTMLEditor.getSelParent(a);while(b!=e&&b.tagName.toUpperCase()!=w){if(b.tagName.toUpperCase()=="A"&&b.href!=e&&typeof b.href!=H&&b.href.length>0){window.open(b.href,"LinkViewWindow");break}b=b.parentNode}},0);Sys.Extended.UI.HTMLEditor._stopEvent(b);return c}var h=!Sys.Extended.UI.HTMLEditor.isIE?b.target:b.srcElement;if(h.tagName!=e&&typeof h.tagName!=H&&(h.tagName.toUpperCase()=="HTML"||h.tagName.toUpperCase()==w)){if(a.__kkoka!=m){a.__kkoka=m;setTimeout(function(){if(a._editPanel==Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel)if(!a.toEndOfProtected())try{a.focusEditor()}catch(b){}a.__kkoka=c},0)}}else Sys.Extended.UI.HTMLEditor.contentEditable(h)!=e&&setTimeout(function(){a._editPanel==Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel&&a.toEndOfProtected()},0);if(gb&&Sys.Extended.UI.HTMLEditor.isIE){var ub=f._getSelection(),Ib;try{Ib=f._createRange(ub);if(ub.type.toLowerCase()==C){Sys.Extended.UI.HTMLEditor._stopEvent(b);return c}}catch(Lb){Sys.Extended.UI.HTMLEditor._stopEvent(b);return c}}var F=Sys.Extended.UI.HTMLEditor.isIE&&b.type==j||b.type==B,Kb=b.type+"--"+F;if(F&&!f._editPanel.get_keyboardEnabled()){Sys.Extended.UI.HTMLEditor._stopEvent(b);return c}var p=String.fromCharCode(Sys.Extended.UI.HTMLEditor.isIE?b.keyCode:b.charCode).toLowerCase();if(F&&a._editPanel.get_hotkeys()!=e)if(a._editPanel.get_hotkeys().length>0){var Cb=a._editPanel.get_hotkeys().length,ob=p;if(b.keyCode==18||b.keyCode==17||b.keyCode==16)ob=e;for(var eb=0;eb<Cb;eb++){var G=a._editPanel.get_hotkeys()[eb];if(G[1]==ob&&G[2]==b.altKey&&G[3]==b.shiftKey&&G[4]==b.ctrlKey){typeof G[0]==hb&&setTimeout(function(){G[0](a);a.onContentChanged();a.focusEditor()},0);Sys.Extended.UI.HTMLEditor._stopEvent(b);return c}}}if(F&&b.shiftKey&&b.keyCode==45)f._commonPaste(b);else if(F&&b.ctrlKey&&b.altKey&&b.keyCode==Sys.UI.Key.home){var V=e,h=Sys.Extended.UI.HTMLEditor.getSelParent(a);while(h&&(h.nodeType==3||h.tagName&&h.tagName.toUpperCase()!=w)){if(h.nodeType==3||!h.tagName){h=h.parentNode;continue}var t=h.tagName.toUpperCase();if(!Sys.Extended.UI.HTMLEditor.canBeInsideP(h)&&t!=x){if(t=="TD")while(t!="TABLE"){h=h.parentNode;t=h.tagName.toUpperCase()}else if(t==M)while(t!="OL"&&t!="UL"){h=h.parentNode;t=h.tagName.toUpperCase()}V=h;break}h=h.parentNode}if(V!=e){var l=a._getSelection(),d=a._createRange(l),s=a._doc.createTextNode(k);V.parentNode.insertBefore(s,V);if(Sys.Extended.UI.HTMLEditor.isIE){var ab=a._createRange(l),lb=a._createRange(l),bb=a._doc.createElement(N),U=a._doc.createElement(N);s.parentNode.insertBefore(bb,s);if(s.nextSibling)s.parentNode.insertBefore(U,s.nextSibling);else s.parentNode.appendChild(U);try{ab.moveToElementText(bb);lb.moveToElementText(U);ab.setEndPoint("EndToEnd",lb);ab.select()}catch(Mb){}s.parentNode.removeChild(bb);s.parentNode.removeChild(U)}else{a._removeAllRanges(l);d.setStart(s,0);d.setEnd(s,0);a._selectRange(l,d)}}}else if(Sys.Extended.UI.HTMLEditor.isIE&&b.keyCode>=33&&b.keyCode<=40&&!b.shiftKey){var yb=b.keyCode==Sys.UI.Key.pageDown||b.keyCode==Sys.UI.Key.end||b.keyCode==Sys.UI.Key.right||b.keyCode==Sys.UI.Key.down;setTimeout(function(){var f=a._getSelection(),d=a._createRange(f);if(f.type.toLowerCase()==C){var b=d.item(0);if(!b.contentEditable||b.contentEditable=="false"){d.remove(0);f.empty();d=a._createRange(f);var c=a._doc.createElement("SPAN");c.appendChild(a._doc.createTextNode(k));if(yb)if(b.nextSibling==e)b.parentNode.appendChild(c);else b.parentNode.insertBefore(c,b.nextSibling);else b.parentNode.insertBefore(c,b);d.moveToElementText(c);d.select();setTimeout(function(){a.focusEditor();c.parentNode.removeChild(c)},0)}}},0)}else if((F&&!Sys.Extended.UI.HTMLEditor.isSafari||Sys.Extended.UI.HTMLEditor.isSafari&&b.type==j)&&b.ctrlKey&&!b.altKey){a._a_prize=c;var l=e,d=e,p=String.fromCharCode(Sys.Extended.UI.HTMLEditor.isIE||Sys.Extended.UI.HTMLEditor.isOpera||Sys.Extended.UI.HTMLEditor.isSafari?b.keyCode:b.charCode).toLowerCase(),u=e,K=e;if((Sys.Extended.UI.HTMLEditor.isIE||Sys.Extended.UI.HTMLEditor.isSafari)&&b.keyCode==17)return c;else if(!Sys.Extended.UI.HTMLEditor.isIE&&b.keyCode==Sys.UI.Key.end&&!b.shiftKey)a._setToEnd();else if(b.keyCode==46&&f.isShadowed()){Sys.Extended.UI.HTMLEditor._stopEvent(b);return c}else if(b.keyCode==46||b.keyCode==Sys.UI.Key.backspace)(Sys.Extended.UI.HTMLEditor.isIE&&b.type==j||!Sys.Extended.UI.HTMLEditor.isIE&&b.type==B)&&f._saveContent();else switch(p){case"a":if(!Sys.Extended.UI.HTMLEditor.isIE){l=f._getSelection();f._removeAllRanges(l);d=f._createRange();d.selectNodeContents(f._doc.body);f._selectRange(l,d);Sys.Extended.UI.HTMLEditor._stopEvent(b);return c}else a._a_prize=m;break;case"z":f.undo();Sys.Extended.UI.HTMLEditor._stopEvent(b);return c;break;case"p":if(!Sys.Extended.UI.HTMLEditor.isIE){setTimeout(function(){a._contextMenuCallP()},0);Sys.Extended.UI.HTMLEditor._stopEvent(b);return c}break;case"y":f.redo();Sys.Extended.UI.HTMLEditor._stopEvent(b);return c;break;case"x":if(f.isShadowed()){Sys.Extended.UI.HTMLEditor._stopEvent(b);return c}f._saveContent();if(Sys.Extended.UI.HTMLEditor.isIE)if(b.type==j){a.openWait();setTimeout(function(){a._copyCut(p,c);a.closeWait()},0);Sys.Extended.UI.HTMLEditor._stopEvent(b);return c}break;case"c":if(f.isShadowed()){Sys.Extended.UI.HTMLEditor._stopEvent(b);return c}if(Sys.Extended.UI.HTMLEditor.isIE)if(b.type==j){a.openWait();setTimeout(function(){a._copyCut(p,c);a.closeWait();setTimeout(function(){a._ifShadow()},0)},0);Sys.Extended.UI.HTMLEditor._stopEvent(b);return c}break;case"v":if(f.isShadowed()){Sys.Extended.UI.HTMLEditor._stopEvent(b);return c}if(Sys.Extended.UI.HTMLEditor.isIE){f._saveContent();return m}f._commonPaste(b);break;case"b":f._execCommand("bold",c,K);Sys.Extended.UI.HTMLEditor._stopEvent(b);return c;case"i":f._execCommand("italic",c,K);Sys.Extended.UI.HTMLEditor._stopEvent(b);return c;case"u":f._execCommand("underline",c,K);Sys.Extended.UI.HTMLEditor._stopEvent(b);return c;case"s":f._execCommand("strikethrough",c,K);Sys.Extended.UI.HTMLEditor._stopEvent(b);return c;case"l":u="justifyleft";break;case"e":u="justifycenter";break;case"r":u="justifyright";break;case"j":u="justifyfull";break;case"q":alert(f._doc.body.innerHTML);Sys.Extended.UI.HTMLEditor._stopEvent(b);return c;break;case"0":var Gb="Your browser:\n\n"+navigator.userAgent;alert(Gb);Sys.Extended.UI.HTMLEditor._stopEvent(b);return c;break;case"9":if(!Sys.Extended.UI.HTMLEditor.isIE){var l=a._getSelection(),d=a._createRange(l),g=d.startContainer,A=d.endContainer,y=k;y+="startContainer: "+(g.nodeType==1?g.tagName:O)+D;y+="endContainer  : "+(A.nodeType==1?A.tagName:O)+D;if(g==A){y+="startOffset: "+d.startOffset+D;y+="endOffset  : "+d.endOffset+D;if(g.nodeType==1){g=g.childNodes.item(d.startOffset);if(g&&g.nodeType){y+="startOffset node: "+(g.nodeType==1?g.tagName:O)+D;if(d.startOffset!=d.endOffset){g=A.childNodes.item(d.endOffset);if(g&&g.nodeType)y+="endOffset node: "+(g.nodeType==1?g.tagName:O)+D}}else y+=g}}alert(y)}else{var l=a._getSelection(),d=a._createRange(l);alert("boundingLeft: "+d.boundingLeft+" boundingTop: "+d.boundingTop+D+"boundingWidth: "+d.boundingWidth+" boundingHeight: "+d.boundingHeight)}Sys.Extended.UI.HTMLEditor._stopEvent(b);return c}if(u){f._execCommand(u,c,K);if(u=="formatblock"&&!Sys.Extended.UI.HTMLEditor.isIE){f._saveContent();f._undo(c)}Sys.Extended.UI.HTMLEditor._stopEvent(b);(u=="delete"||u=="paste")&&f._clearP()}}else if(F||(Sys.Extended.UI.HTMLEditor.isSafari||Sys.Extended.UI.HTMLEditor.isOpera)&&b.type==j){if(Sys.Extended.UI.HTMLEditor.isIE&&f._tryForward){var d=f._createRange(f._getSelection());d.select();f._tryForward=c}var p=String.fromCharCode(Sys.Extended.UI.HTMLEditor.isIE?b.keyCode:b.charCode).toLowerCase();if(a._a_prize){a._a_prize=c;function Bb(){var c=a._createRange(a._getSelection()),b=c.parentElement();if(b&&b.nodeType==1&&b.tagName.toUpperCase()==x){while(b.firstChild)b.parentNode.insertBefore(b.firstChild,b);b.parentNode.removeChild(b)}}setTimeout(Bb,0)}if(f.isShadowed()){Sys.Extended.UI.HTMLEditor._stopEvent(b);return c}switch(b.keyCode){case Sys.UI.Key.tab:if((Sys.Extended.UI.HTMLEditor.isSafari||Sys.Extended.UI.HTMLEditor.isOpera)&&b.type!=j)break;if(!f._editPanel.get_suppressTabInDesignMode()){!f.isControl()&&f.insertHTML("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");Sys.Extended.UI.HTMLEditor._stopEvent(b)}else{Sys.Extended.UI.HTMLEditor.isSafari&&Sys.Extended.UI.HTMLEditor._stopEvent(b);Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel=e;return m}break;case 46:case Sys.UI.Key.backspace:if((Sys.Extended.UI.HTMLEditor.isSafari||Sys.Extended.UI.HTMLEditor.isOpera)&&b.type!=j)break;((Sys.Extended.UI.HTMLEditor.isIE||Sys.Extended.UI.HTMLEditor.isSafari)&&b.type==j||!Sys.Extended.UI.HTMLEditor.isIE&&b.type==B)&&f._saveContent();if(!Sys.Extended.UI.HTMLEditor.isIE){var d=f._createRange(f._getSelection()),g=d.startContainer,A=d.endContainer;if(b.type==B)if(Sys.Extended.UI.HTMLEditor.contentEditable(g)!=e||Sys.Extended.UI.HTMLEditor.contentEditable(A)!=e){Sys.Extended.UI.HTMLEditor._stopEvent(b);return c}if(g==A&&g.nodeType==1&&g.tagName.toUpperCase()=="TD"&&d.startOffset==d.startOffset&&g.childNodes.item(d.startOffset)&&g.childNodes.item(d.startOffset).tagName&&g.childNodes.item(d.startOffset).tagName.toUpperCase()==P){var tb=g.childNodes.item(d.startOffset),qb=0,nb=0,z;z=tb.previousSibling;while(z){qb++;z=z.previousSibling}z=tb.nextSibling;while(z){nb++;z=z.nextSibling}if(b.keyCode==46&&nb==0||b.keyCode==Sys.UI.Key.backspace&&qb==0){Sys.Extended.UI.HTMLEditor._stopEvent(b);return c}else if(b.keyCode==46&&g.firstChild==g.lastChild&&g.firstChild.nodeType==1){Sys.Extended.UI.HTMLEditor._stopEvent(b);return c}}if(g==A&&g.nodeType==3&&d.startOffset==d.endOffset&&!Sys.Extended.UI.HTMLEditor.isOpera){var Fb=g.data+k;if(b.keyCode==46)if(d.startOffset==Fb.length&&!(g.nextSibling&&g.nextSibling.nodeType==3)){if(g.nextSibling){g.parentNode.removeChild(g.nextSibling);a.onContentChanged()}Sys.Extended.UI.HTMLEditor._stopEvent(b);return c}if(b.keyCode==Sys.UI.Key.backspace)if(d.startOffset==0&&!(g.previousSibling&&g.previousSibling.nodeType==3)){if(g.previousSibling){g.parentNode.removeChild(g.previousSibling);a.onContentChanged()}Sys.Extended.UI.HTMLEditor._stopEvent(b);return c}}if(b.keyCode==Sys.UI.Key.backspace&&g.nodeType==1&&g==A&&d.startOffset==d.endOffset){var v=g.childNodes.item(d.startOffset);if(v!=e&&v.nodeType==1&&v.tagName.toUpperCase()==P){v=v.previousSibling;if(v!=e&&v.nodeType!=3){v.parentNode.removeChild(v);a.onContentChanged();Sys.Extended.UI.HTMLEditor._stopEvent(b);return c}}}setTimeout(function(){var j=a._getSelection(),b=a._createRange(j),h=b.startContainer,l=b.endContainer;if(Sys.Extended.UI.HTMLEditor.contentEditable(h)!=e||Sys.Extended.UI.HTMLEditor.contentEditable(l)!=e){a._undo(c);return}if(Sys.Extended.UI.HTMLEditor.isOpera&&h==l&&h.nodeType==3&&h.data.length==0)h.parentNode.removeChild(h);else if(h==l&&h.nodeType==1&&Sys.Extended.UI.HTMLEditor.isStyleTag(h.tagName)&&b.startOffset==b.endOffset&&h.childNodes.length==0){while(h.parentNode.nodeType==1&&Sys.Extended.UI.HTMLEditor.isStyleTag(h.parentNode.tagName)&&h.parentNode.childNodes.length==1)h=h.parentNode;var d=h.nextSibling,f=h.previousSibling,i=h.parentNode;i.removeChild(h);a.onContentChanged();if(d==e&&f==e){b.setStart(i,0);b.setEnd(i,0)}else if(d!=e&&f!=e)if(d.nodeType==3&&f.nodeType==3){var g=(k+f.data+k).length;f.appendData(d.data);i.removeChild(d);b.setStart(f,g);b.setEnd(f,g)}else if(f.nodeType==3){var g=(k+f.data+k).length;b.setStart(f,g);b.setEnd(f,g)}else if(d.nodeType==3){b.setStart(d,0);b.setEnd(d,0)}else if(d.childNodes.length>0){b.setStart(d,0);b.setEnd(d,0)}else{var g=Sys.Extended.UI.HTMLEditor.__getIndex(d);b.setStart(i,g);b.setEnd(i,g)}else if(f!=e)if(f.nodeType==3){var g=(k+f.data+k).length;b.setStart(f,g);b.setEnd(f,g)}else{var g=f.childNodes.length;if(g>0){b.setStart(f,g);b.setEnd(f,g)}else{g=Sys.Extended.UI.HTMLEditor.__getIndex(f);b.setStart(i,g);b.setEnd(i,g)}}else if(d!=e)if(d.nodeType==3){b.setStart(d,0);b.setEnd(d,0)}else{var g=d.childNodes.length;if(g>0){b.setStart(d,g);b.setEnd(d,g)}else{g=Sys.Extended.UI.HTMLEditor.__getIndex(d);b.setStart(i,g);b.setEnd(i,g)}}a._removeAllRanges(j);a._selectRange(j,b)}},0)}else{var l=a._getSelection();if(l.type.toLowerCase()==C){if(b.keyCode==8){setTimeout(function(){a._ifShadow();a.onContentChanged()},0);Sys.Extended.UI.HTMLEditor._stopEvent(b);return}var r=a._createRange(l),W=r.item(0);if(W.tagName.toUpperCase()==Q){W.src=k;W.parentNode.removeChild(W);while(r.length>0)r.remove(0);try{r.collapse(c)}catch(Mb){}Sys.Extended.UI.HTMLEditor._stopEvent(b);a._saveContent();setTimeout(function(){a._undo(c);a.onContentChanged()},0);return}}var fb=a._doc.body.getElementsByTagName(Q).length;if(fb>0){var mb=a._body.ownerDocument.createElement("div");a._body.appendChild(mb);var Jb=b.keyCode;setTimeout(function(){a._body.removeChild(mb);var b=a._doc.body.getElementsByTagName(Q);if(fb!=b.length){a._saveContent();setTimeout(function(){a._undo(c);a.onContentChanged()},0)}},0)}setTimeout(function(){a._clearP()},0)}break;case Sys.UI.Key.enter:if((Sys.Extended.UI.HTMLEditor.isSafari||Sys.Extended.UI.HTMLEditor.isOpera)&&b.type==j)break;(!Sys.Extended.UI.HTMLEditor.isIE&&b.type==B||Sys.Extended.UI.HTMLEditor.isIE&&b.type==j)&&f._saveContent();if(Sys.Extended.UI.HTMLEditor.isIE&&b.type==j){var l=a._getSelection();if(l.type.toLowerCase()==C)break;var r=a._createRange(l);if(!b.shiftKey){var i=r.parentElement();if(i.tagName.toUpperCase()=="TEXTAREA")break;while(i&&i.tagName&&i.tagName.toUpperCase()!=w&&Sys.Extended.UI.HTMLEditor.isStyleTag(i.tagName))i=i.parentNode;if(i&&i.tagName){var t=i.tagName.toUpperCase();if(t==x||t==M){if(t==M){function Hb(){r=a._createRange(a._getSelection());var b=r.parentElement();while(b&&b.tagName&&b.tagName.toUpperCase()!=w&&Sys.Extended.UI.HTMLEditor.isStyleTag(b.tagName))b=b.parentNode;if(b&&b.nodeType==1&&b.tagName.toUpperCase()==x){var d=a._doc.createElement(N),f=a._doc.createTextNode(" "),c=b;while(c.firstChild!=e&&c.firstChild.nodeType==1)c=c.firstChild;if(c.nodeType==1){c.appendChild(f);c.appendChild(d);while(b.firstChild)b.parentNode.insertBefore(b.firstChild,b)}else{b.parentNode.insertBefore(f,b);b.parentNode.insertBefore(d,b)}b.parentNode.removeChild(b);r.moveToElementText(d);r.select();d.parentNode.removeChild(d);a.onContentChanged()}}setTimeout(Hb,0)}break}}try{var db=Sys.Extended.UI.HTMLEditor.smartClassName+"_middle_add",n=e,I="<span id="+db+"></span>";function wb(){var c=a._getSelection(),b=a._createRange(c);if(n!=e){n.innerHTML="&nbsp;";b.moveToElementText(n);b.select();n.parentNode.insertBefore(n.firstChild,n);n.parentNode.removeChild(n);a.onContentChanged()}}r.pasteHTML(I);var S=c;n=a._doc.getElementById(db);if(n!=e){var E=n.nextSibling,J=n.parentNode;while(E==e&&J!=e&&Sys.Extended.UI.HTMLEditor.isStyleTag(J.tagName)){E=J.nextSibling;J=J.parentNode}if(E!=e&&!Sys.Extended.UI.HTMLEditor.isInlineElement(E)&&E.tagName!=e&&typeof E.tagName!=H){var X=E.tagName.toUpperCase();if(X!=P&&X!="UL"&&X!="OL"&&X!=x)S=m}n.parentNode.removeChild(n)}r.pasteHTML("<br/>"+(S?I:k));if(S)n=a._doc.getElementById(db);r.select();if(S){setTimeout(wb,0);Sys.Extended.UI.HTMLEditor._stopEvent(b);return c}}catch(Lb){}}else break;Sys.Extended.UI.HTMLEditor._stopEvent(b)}else if(!b.shiftKey&&(Sys.Extended.UI.HTMLEditor.isSafari||Sys.Extended.UI.HTMLEditor.isOpera)){var i=Sys.Extended.UI.HTMLEditor.getSelParent(f);if(i.nodeType==3)i=i.parentNode;while(i&&i.tagName&&i.tagName.toUpperCase()!=w&&Sys.Extended.UI.HTMLEditor.isStyleTag(i.tagName))i=i.parentNode;if(i&&i.tagName&&(i.tagName.toUpperCase()==x||i.tagName.toUpperCase()==M))break;var I="<br />";if(Sys.Extended.UI.HTMLEditor.isOpera){var l=a._getSelection(),d=a._createRange(l);if(d.startContainer==d.endContainer)if(d.startContainer.nodeType==1){var kb=d.startContainer.childNodes.item(d.startOffset);if(kb.nodeType==1&&kb.tagName.toUpperCase()==P)I+="<br />"}else if(d.startContainer.nodeType==3&&d.startOffset==d.endOffset&&d.startContainer.data.length==d.endOffset&&!(d.startContainer.nextSibling&&d.startContainer.nextSibling.nodeType==3))I+="&nbsp;"}f.insertHTML(I);Sys.Extended.UI.HTMLEditor._stopEvent(b);if(Sys.Extended.UI.HTMLEditor.isOpera){var l=a._getSelection(),d=a._createRange(l);if(d.startContainer==d.endContainer&&d.startContainer.nodeType==3&&d.startOffset==d.endOffset&&d.startContainer.data.length==0){var rb=d.startContainer.previousSibling;d.startContainer.parentNode.removeChild(d.startContainer);a._removeAllRanges(l);d=a._createRange();d.setStart(rb,0);d.setEnd(rb,1);a._selectRange(l,d)}}a.onContentChanged()}else if(Sys.Extended.UI.HTMLEditor.isSafari){f.insertHTML("<br/>");Sys.Extended.UI.HTMLEditor._stopEvent(b);a.onContentChanged()}}}else a._a_prize=c;if(Sys.Extended.UI.HTMLEditor.isIE&&b.type==B&&!b.ctrlKey){var p=b.keyCode,sb=a._getSelection(),T=a._createRange(sb);if(T.text.length>0){var L=String.fromCharCode(p),pb=Sys.Extended.UI.HTMLEditor.capLock(b),Eb=b.shiftKey&&!pb||pb;if(!Eb)L=L.toLowerCase();var q=Sys.Extended.UI.HTMLEditor.smartClassName+ib,o=a._doc.getElementById(q);if(o!=e){L=R+q+Z+L+R+q+q+Z;o.parentNode.removeChild(o)}T.pasteHTML(L);if(o!=e){a.trickWithStyles(q);o=a._doc.getElementById(q+q);o.parentNode.removeChild(o)}Sys.Extended.UI.HTMLEditor._stopEvent(b);a.onContentChanged();return c}}if(b.type=="mouseup"||b.type==Y||b.type==j){var xb=m;if(b.type==j&&!b.ctrlKey){var p=b.keyCode;if(p>=48&&p<=90||p==32||p==13||p>=186&&p<=222||p>=96&&p<=111)if(a._StyleForTyping!=e){a.n_arr=[];for(var cb=0;cb<a._StyleForTyping.length;cb++)a.n_arr.push(a._StyleForTyping[cb]);var q=Sys.Extended.UI.HTMLEditor.smartClassName+ib,jb=m;if(!Sys.Extended.UI.HTMLEditor.isIE)a.insertHTML(R+q+Z);else{a.insertHTML(R+q+"'>&nbsp;</span>");var o=a._doc.getElementById(q);if(o&&o.nextSibling&&o.nextSibling.nodeType==3){jb=c;var sb=a._getSelection(),T=a._createRange(sb);T.moveToElementText(a._doc.getElementById(q));T.select()}else o&&o.removeChild(o.firstChild)}jb&&setTimeout(function(){a.trickWithStyles(q);a.onContentChanged()},0)}}if(xb||!Sys.Extended.UI.HTMLEditor.isIE)if(!a._updated_now){if(a._updateTimer){clearTimeout(a._updateTimer);a._updateTimer=e}a._updateTimerLimit=3;function vb(){if(a._editPanel==Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel)try{if(Sys.Extended.UI.HTMLEditor.isIE){try{var b=a._doc.selection}catch(d){return c}if(a._getSelection().type=="None"&&a._doc.queryCommandValue("backcolor")==0&&a._doc.queryCommandValue("forecolor")==0){a._updateTimerLimit--;if(a._updateTimerLimit>0){a._updateTimer=setTimeout(vb,100);return}}}a._updated_now=m;a._editPanel.updateToolbar();a._updated_now=c;a._updateTimer=e;!Sys.Extended.UI.HTMLEditor.isIE&&a.focusEditor()}catch(d){}}a._updateTimer=setTimeout(vb,300)}}if(!(!Sys.Extended.UI.HTMLEditor.isIE&&(b.type==j||b.type=="keyup")||Sys.Extended.UI.HTMLEditor.isIE&&(b.type==j||b.type=="keyup")&&(b.keyCode==16||b.keyCode==20)))a._StyleForTyping=e;Sys.Extended.UI.HTMLEditor.isSafari&&setTimeout(function(){a._createRange(a._getSelection())},0);!Sys.Extended.UI.HTMLEditor.isIE&&setTimeout(function(){if(a._editPanel==Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel){var c=a._getSelection(),b=a._createRange(c);if(b.startContainer.nodeType!=3&&b.startContainer==b.endContainer)if(b.startOffset==b.endOffset)if(b.startContainer.childNodes.item(b.startOffset))if(b.startContainer.childNodes.item(b.startOffset).nodeType==3){var d=b.startContainer.childNodes.item(b.startOffset);c.collapseToEnd();a._removeAllRanges(c);c=a._getSelection();b=a._createRange(c);b.setStart(d,0);b.setEnd(d,0);a._selectRange(c,b)}}},0);if(!Sys.Extended.UI.HTMLEditor.isIE){var l=a._getSelection(),d=a._createRange(l);a._saved_startContainer=d.startContainer;a._saved_startOffset=d.startOffset}setTimeout(function(){try{a._editPanel==Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel&&a._ifShadow()}catch(b){}},0);if(b.type==j)if(a._AfterOnContentChanged==e||typeof a._AfterOnContentChanged==H||!a._AfterOnContentChanged){a._AfterOnContentChanged=m;setTimeout(function(){if(a._editPanel==Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel){a.onContentChanged();a._AfterOnContentChanged=c}},0)}return m}catch(Lb){Sys.Extended.UI.HTMLEditor._stopEvent(b);return c}};�p// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />
/// <reference path="../DynamicPopulate/DynamicPopulateBehavior.js" />
/// <reference path="../Animation/Animations.js" />
/// <reference path="../Animation/AnimationBehavior.js" />
/// <reference path="../PopupExtender/PopupBehavior.js" />
/// <reference path="../HoverExtender/HoverBehavior.js" />

(function() {
var scriptName = "ExtendedDropDown";

function execute() {

Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.DropDownBehavior = function(element) {
    Sys.Extended.UI.DropDownBehavior.initializeBase(this, [element]);
    this._dropDownControl = null;
    this._highlightBorderColor = "#2353B2";
    this._highlightBackgroundColor = "#FFF3DB";
    this._dropArrowBackgroundColor = "#C6E1FF";
    this._dropArrowImageUrl = null;
    if (Sys.loader) {
        var url = Sys.loader.basePath;
        if (url) {
            if (url.charAt(url.length-1) !== "/") {
                url += "/";
            }
            this._dropArrowImageUrl = url + "extended/dropdown/drop-arrow.gif";
        }
    }
    this._dropArrowWidth = "16px";
    this._oldBackgroundColor = null;
    this._dropFrame = null;
    this._dropArrow = null;
    this._dropArrowImage = null;
    this._dropWrapper = null;
    this._isOpen = false;
    this._isOver = false;
    this._wasClicked = null;
    this._dropWrapperHoverBehavior = null;
    this._dropPopupPopupBehavior = null;
    this._onShowJson = null;
    this._onHideJson = null;
    
    this._dropDownControl$delegates = {
        click : Function.createDelegate(this, this._dropDownControl_onclick),
        contextmenu : Function.createDelegate(this, this._dropDownControl_oncontextmenu)
    }
    this._dropFrame$delegates = {
        click : Function.createDelegate(this, this._dropFrame_onclick),
        contextmenu : Function.createDelegate(this, this._dropFrame_oncontextmenu)
    }
    this._dropWrapper$delegates = {
        click : Function.createDelegate(this, this._dropWrapper_onclick),
        contextmenu : Function.createDelegate(this, this._dropWrapper_oncontextmenu)
    }
    this._document$delegates = {
        click : Function.createDelegate(this, this._document_onclick),
        contextmenu : Function.createDelegate(this, this._document_oncontextmenu)
    }
    this._dropWrapperHoverBehavior$delegates = {
        hover : Function.createDelegate(this, this._dropWrapperHoverBehavior_onhover),
        unhover : Function.createDelegate(this, this._dropWrapperHoverBehavior_onunhover)
    }
}
Sys.Extended.UI.DropDownBehavior.prototype = {
    
    
    initialize : function() {
        Sys.Extended.UI.DropDownBehavior.callBaseMethod(this, 'initialize');
        var elt = this.get_element();        
        var parent = elt.parentNode;
        
        if (this._dropDownControl == null) {
            $common.createElementFromTemplate({
                parent : parent,
                nameTable : this,
                name : "_dropDownControl",
                nodeName : "div",
                visible : false,
                cssClasses : this._dropDownControl ? null : ["ajax__dropdown_panel"],
                properties : { 
                    __GENERATED : true 
                }
            });
        }
        $addHandlers(this._dropDownControl, this._dropDownControl$delegates);

        var dropArrowImageProperties = {};
        if (this._dropArrowImageUrl) {
            dropArrowImageProperties["src"] = this._dropArrowImageUrl;
        }
        $common.createElementFromTemplate({
            parent : parent,
            nameTable : this,
            name : "_dropFrame",
            nodeName : "span",
            visible : false,
            children : [{
                name : "_dropFrameTop",
                nodeName : "div",
                cssClasses : ["ajax__dropdown_frame_line"]
            }, {
                name : "_dropFrameRight",
                nodeName : "div",
                cssClasses : ["ajax__dropdown_frame_line"]
            }, {
                name : "_dropFrameBottom",
                nodeName : "div",
                cssClasses : ["ajax__dropdown_frame_line"]
            }, {
                name : "_dropFrameLeft",
                nodeName : "div",
                cssClasses : ["ajax__dropdown_frame_line"]
            }, {
                name : "_dropArrow",
                nodeName : "div",
                cssClasses : (!this._dropArrowImageUrl) ? ["ajax__dropdown_arrow", "ajax__dropdown_arrow_image"] : ["ajax__dropdown_arrow"],
                properties : {
                    style : {
                        width : this._dropArrowWidth,
                        backgroundColor : this._dropArrowBackgroundColor
                    }
                },
                events : this._dropFrame$delegates,
                children : [{
                    name : "_dropArrowWrapper",
                    nodeName : "div",
                    visible : !!this._dropArrowImageUrl,
                    cssClasses : ["ajax__dropdown_arrow_wrapper"],
                    children : [{
                        name : "_dropArrowImage",
                        nodeName : "img",
                        properties : dropArrowImageProperties
                    }]
                }]
            }]
        });

        $common.createElementFromTemplate({
            parent : null,
            nameTable : this,
            name : "_dropWrapper",
            nodeName : "span",
            properties : {
                id : elt.id + "_dropWrapper",
                style : {
                    cursor : "default"
                }
            },
            events : this._dropWrapper$delegates,
            content : elt
        });
        
        this._dropPopupPopupBehavior = $create(Sys.Extended.UI.PopupBehavior, { 
            positioningMode : Sys.Extended.UI.PositioningMode.BottomRight, 
            parentElement : elt, 
            y : -1 
        }, null, null, this._dropDownControl);
        
        if (this._onShowJson) {
            this._dropPopupPopupBehavior.set_onShow(this._onShowJson);
        }
        if (this._onHideJson) {
            this._dropPopupPopupBehavior.set_onHide(this._onHideJson);
        }
        
        
        this._dropWrapperHoverBehavior = $create(Sys.Extended.UI.HoverBehavior, { 
            hoverElement : this._dropFrame 
        }, this._dropWrapperHoverBehavior$delegates, null, this._dropWrapper);

        $addHandlers(document, this._document$delegates);
    },
    
    dispose : function() {
        var elt = this.get_element();
        if (this._isOpen) {
            this.hide();
            this.unhover();
            this._isOpen = false;
        }
        $common.removeHandlers(document, this._document$delegates);
        this._onShowJson = null;
        this._onHideJson = null;
        if (this._dropPopupPopupBehavior) {
            this._dropPopupPopupBehavior.dispose();
            this._dropPopupPopupBehavior = null;
        }
        if (this._dropWrapperHoverBehavior) {
            this._dropWrapperHoverBehavior.dispose();
            this._dropWrapperHoverBehavior = null;
        }
        if (this._dropFrame) {
            $common.removeElement(this._dropFrame);
            this._dropFrame = null;
            this._dropFrameTop = null;
            this._dropFrameRight = null;
            this._dropFrameBottom = null;
            this._dropFrameLeft = null;
            this._dropArrow = null;
            this._dropArrowWrapper = null;
            this._dropArrowImage = null;
        }
        if (this._dropWrapper) {
            $common.removeHandlers(this._dropWrapper, this._dropWrapper$delegates);
            $common.unwrapElement(elt, this._dropWrapper);
            this._dropWrapper = null;
        }
        if (this._dropDownControl) {
            $common.removeHandlers(this._dropDownControl, this._dropDownControl$delegates);
            if (this._dropDownControl.__GENERATED) {
                $common.removeElement(this._dropDownControl);
            }
            this._dropDownControl = null;
        }
        Sys.Extended.UI.DropDownBehavior.callBaseMethod(this, 'dispose');
    },    

    hover : function() {
        var elt = this.get_element();
        if (!this._isOver) {
            this._isOver = true;
            this.raiseHoverOver(Sys.EventArgs.Empty);
            
            var bounds = $common.getBounds(elt);
            
            $common.setLocation(this._dropFrame, {x:0, y:0});
            $common.setVisible(this._dropFrame, true);
            var offset = $common.getLocation(this._dropFrame);
            $common.setVisible(this._dropFrame, false);
            
            bounds.x -= offset.x;
            bounds.y -= offset.y; 
            
            $common.setBounds(this._dropFrameTop, { 
                x : bounds.x, 
                y : bounds.y,
                width : bounds.width,
                height : 1
            });
            $common.setBounds(this._dropFrameRight, {
                x : bounds.x + bounds.width - 1,
                y : bounds.y,
                width : 1,
                height : bounds.height
            });
            $common.setBounds(this._dropFrameBottom, {
                x : bounds.x,
                y : bounds.y + bounds.height - 1,
                width : bounds.width,
                height : 1
            });
            $common.setBounds(this._dropFrameLeft, {
                x : bounds.x,
                y : bounds.y,
                width : 1,
                height : bounds.height
            });
            $common.setBounds(this._dropArrow, {
                x : bounds.x + bounds.width - 17,
                y : bounds.y + 1,
                width : 16,
                height : bounds.height - 2
            });
            this._dropFrameTop.style.backgroundColor = this._highlightBorderColor;
            this._dropFrameRight.style.backgroundColor = this._highlightBorderColor;
            this._dropFrameBottom.style.backgroundColor = this._highlightBorderColor;
            this._dropFrameLeft.style.backgroundColor = this._highlightBorderColor;
            $common.setVisible(this._dropFrame, true);
            if (!this._oldBackgroundColor) {            
                this._oldBackgroundColor = $common.getCurrentStyle(elt, 'backgroundColor');
            }
            elt.style.backgroundColor = this._highlightBackgroundColor;
        }
    },
    
    unhover : function() {
        var elt = this.get_element();
        if (this._isOver || !this._isOpen) {
            this._isOver = false;
            if (!this._isOpen) {        
                $common.setVisible(this._dropFrame, false);
                if (this._oldBackgroundColor) {
                    elt.style.backgroundColor = this._oldBackgroundColor;
                    this._oldBackgroundColor = null;
                } else {
                    elt.style.backgroundColor = "transparent";
                }
            }
            this.raiseHoverOut(Sys.EventArgs.Empty);
        }
    },
    
    show : function() {
        if (!this._isOpen) {
            this.hover();

            var eventArgs = new Sys.CancelEventArgs();
            this.raiseShowing(eventArgs);
            this.raisePopup(eventArgs);
            if (eventArgs.get_cancel()) {
                return;
            }
            
            this._isOpen = true;
            this.populate();
            if (!this._dynamicPopulateBehavior || (this._dynamicPopulateBehavior._populated && this._cacheDynamicResults)) {
                this._showPopup();
            }
        }
    },
    
    _showPopup : function() {
        /// <summary>
        /// Show the drop down's popup
        /// </summary>
        /// <returns />
        
        this._dropPopupPopupBehavior.show();
        this.raiseShown(Sys.EventArgs.Empty);
    },
    
    hide : function() {
        if (this._isOpen) {
            var eventArgs = new Sys.CancelEventArgs();
            this.raiseHiding(eventArgs);
            if (eventArgs.get_cancel()) {
                return;
            }
        
            this._isOpen = false;
            this._dropPopupPopupBehavior.hide();
            
            this.raiseHidden(Sys.EventArgs.Empty);
        }
    },
    
    _dropWrapperHoverBehavior_onhover : function(sender, e) {
        this.hover();
    },
    _dropWrapperHoverBehavior_onunhover : function(sender, e) {
        this.unhover();
    },
    _dropWrapper_onclick : function(e) {
        if(e.target.tagName != "A") {
            if(!this._isOpen) {
                this.show();
            } else {
                this.hide();
            }
            this._wasClicked = true;
        }
    },
    _dropWrapper_oncontextmenu : function(e) {
        if(e.target.tagName != "A") {
            this._wasClicked = true;
            e.preventDefault();
            this.show();
        }
    },
    _dropFrame_onclick : function(e) {
        if(!this._isOpen) {
            this.show();
        } else {
            this.hide();
        }
        this._wasClicked = true;
    },
    _dropFrame_oncontextmenu : function(e) {
        this._wasClicked = true;
        e.preventDefault();
        this.show();
    },
    _dropDownControl_onclick : function(e) {
    },
    _dropDownControl_oncontextmenu : function(e) {
        this._wasClicked = true;
        e.preventDefault();
    },
    _document_onclick : function(e) {        
        if(this._wasClicked) {
            this._wasClicked = false;
        } else if(this._isOpen) {
            this.hide();
            this.unhover();
        }
    },
    _document_oncontextmenu : function(e) {
        if(this._wasClicked) {
            this._wasClicked = false;
        } else if(this._isOpen) {
            this.hide();
            this.unhover();
        }
    },
    
    _onPopulated : function(sender, eventArgs) {
        /// <summary>
        /// Handler for DynamicPopulate behavior's Populated event
        /// </summary>
        /// <param name="sender" type="Object">
        /// DynamicPopulate behavior
        /// </param>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="false">
        /// Event args
        /// </param>
        Sys.Extended.UI.DropDownBehavior.callBaseMethod(this, '_onPopulated', [sender, eventArgs]);
        
        if (this._isOpen) {
            this._showPopup();
        }
    },
    
    get_onShow : function() {
        /// <value type="String" mayBeNull="true">
        /// Generic OnShow Animation's JSON definition
        /// </value>
        return this._dropPopupPopupBehavior ? this._dropPopupPopupBehavior.get_onShow() : this._onShowJson;
    },
    set_onShow : function(value) {
        if (this._dropPopupPopupBehavior) {
            this._dropPopupPopupBehavior.set_onShow(value)
        } else {
            this._onShowJson = value;
        }
        this.raisePropertyChanged('onShow');
    },
    get_onShowBehavior : function() {
        /// <value type="Sys.Extended.UI.Animation.GenericAnimationBehavior">
        /// Generic OnShow Animation's behavior
        /// </value>
        return this._dropPopupPopupBehavior ? this._dropPopupPopupBehavior.get_onShowBehavior() : null;
    },
    onShow : function() {
        /// <summary>
        /// Play the OnShow animation
        /// </summary>
        /// <returns />
        if (this._dropPopupPopupBehavior) {
            this._dropPopupPopupBehavior.onShow();
        }
    },
        
    get_onHide : function() {
        /// <value type="String" mayBeNull="true">
        /// Generic OnHide Animation's JSON definition
        /// </value>
        return this._dropPopupPopupBehavior ? this._dropPopupPopupBehavior.get_onHide() : this._onHideJson;
    },
    set_onHide : function(value) {
        if (this._dropPopupPopupBehavior) {
            this._dropPopupPopupBehavior.set_onHide(value)
        } else {
            this._onHideJson = value;
        }
        this.raisePropertyChanged('onHide');
    },
    get_onHideBehavior : function() {
        /// <value type="Sys.Extended.UI.Animation.GenericAnimationBehavior">
        /// Generic OnHide Animation's behavior
        /// </value>
        return this._dropPopupPopupBehavior ? this._dropPopupPopupBehavior.get_onHideBehavior() : null;
    },
    onHide : function() {
        /// <summary>
        /// Play the OnHide animation
        /// </summary>
        /// <returns />
        if (this._dropPopupPopupBehavior) {
            this._dropPopupPopupBehavior.onHide();
        }
    },
    
    get_dropDownControl : function() {
        return this._dropDownControl;
    },
    set_dropDownControl : function(value) {        
        if (this._dropDownControl != value) {
            this._dropDownControl = value;
            this.raisePropertyChanged("dropDownControl");
        }
    },
    
    get_highlightBorderColor : function() {
        return this._highlightBorderColor;
    },
    set_highlightBorderColor : function(value) {

        if (this._highlightBorderColor != value) {
            this._highlightBorderColor = value;
            this.raisePropertyChanged("highlightBorderColor");
        }
    },
    
    get_highlightBackgroundColor : function() {
        return this._highlightBackgroundColor; 
    },
    set_highlightBackgroundColor : function(value) {

        if (this._highlightBackgroundColor != value) {
            this._highlightBackgroundColor = value;
            if(this.get_isInitialized() && this._isOpen) {
                this._dropWrapper.style.backgroundColor = value;
            }
            this.raisePropertyChanged("highlightBackgroundColor");
        }
    },
    
    get_dropArrowBackgroundColor : function() {
        return this._dropArrowBackgroundColor;
    },
    set_dropArrowBackgroundColor : function(value) {

        if (this._dropArrowBackgroundColor != value) {
            this._dropArrowBackgroundColor = value;
            if(this.get_isInitialized()) {
                this._dropArrow.style.backgroundColor = value;
            }
            this.raisePropertyChanged("dropArrowBackgroundColor");
        }
    },
    
    get_dropArrowImageUrl : function() {
        return this._dropArrowImageUrl;
    },
    set_dropArrowImageUrl : function(value) {
        if (this._dropArrowImageUrl != value) {
            this._dropArrowImageUrl = value;
            if(this.get_isInitialized()) {
                if (this._dropArrow.className) {
                    this._dropArrow.className = "";
                    this._dropArrowWrapper.style.display = 'block';
                }
                this._dropArrowImage.src = value;
            }
            this.raisePropertyChanged("dropArrowImageUrl");
        }
    },
    
    get_dropArrowWidth : function() {
        return this._dropArrowWidth;
    },
    set_dropArrowWidth : function(value) {
        if (this._dropArrowWidth != value) {
            this._dropArrowWidth = value;
            if(this.get_isInitialized()) {
                this._dropArrow.style.width = value;
            }
            this.raisePropertyChanged("dropArrowWidth");
        }
    },
    
    get_isOver : function() {
        return this._isOver;
    },
    
    get_isOpen : function() {
        return this._isOpen;
    },
    
    add_showing : function(handler) {
        /// <summary>
        /// Add an event handler for the showing event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('showing', handler);
    },
    remove_showing : function(handler) {
        /// <summary>
        /// Remove an event handler from the showing event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('showing', handler);
    },
    raiseShowing : function(eventArgs) {
        /// <summary>
        /// Raise the showing event
        /// </summary>
        /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
        /// Event arguments for the showing event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('showing');
        if (handler) {
            handler(this, eventArgs);
        }
    },

    add_shown : function(handler) {
        /// <summary>
        /// Add an event handler for the shown event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('shown', handler);
    },
    remove_shown : function(handler) {
        /// <summary>
        /// Remove an event handler from the shown event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('shown', handler);
    },
    raiseShown : function(eventArgs) {
        /// <summary>
        /// Raise the shown event
        /// </summary>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="false">
        /// Event arguments for the shown event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('shown');
        if (handler) {
            handler(this, eventArgs);
        }
    },
    
    add_popup : function(handler) {
        /// <summary>
        /// Add an event handler for the popup event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        /// <obsolete>Use the shown event instead</obsolete>
        this.get_events().addHandler('popup', handler);
    },
    remove_popup : function(handler) {
        /// <summary>
        /// Remove an event handler from the popup event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        /// <obsolete>Use the shown event instead</obsolete>
        this.get_events().removeHandler('popup', handler);
    },
    raisePopup : function(eventArgs) {
        /// <summary>
        /// Raise the popup event
        /// </summary>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="false">
        /// Event arguments for the popup event
        /// </param>
        /// <returns />
        /// <obsolete>Use the shown event instead</obsolete>
        
        var handler = this.get_events().getHandler('popup');
        if (handler) {
            handler(this, eventArgs);
        }
    },
    
    add_hiding : function(handler) {
        /// <summary>
        /// Add an event handler for the hiding event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('hiding', handler);
    },
    remove_hiding : function(handler) {
        /// <summary>
        /// Remove an event handler from the hiding event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('hiding', handler);
    },
    raiseHiding : function(eventArgs) {
        /// <summary>
        /// Raise the hiding event
        /// </summary>
        /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
        /// Event arguments for the hiding event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('hiding');
        if (handler) {
            handler(this, eventArgs);
        }
    },    
    
    add_hidden : function(handler) {
        /// <summary>
        /// Add an event handler for the hidden event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('hidden', handler);
    },
    remove_hidden : function(handler) {
        /// <summary>
        /// Remove an event handler from the hidden event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('hidden', handler);
    },
    raiseHidden : function(eventArgs) {
        /// <summary>
        /// Raise the hidden event
        /// </summary>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="false">
        /// Event arguments for the hidden event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('hidden');
        if (handler) {
            handler(this, eventArgs);
        }
    },

    add_hoverOver : function(handler) {
        /// <summary>
        /// Add an event handler for the hoverOver event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('hoverOver', handler);
    },
    remove_hoverOver : function(handler) {
        /// <summary>
        /// Remove an event handler from the hoverOver event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('hoverOver', handler);
    },
    raiseHoverOver : function(eventArgs) {
        /// <summary>
        /// Raise the hoverOver event
        /// </summary>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="false">
        /// Event arguments for the hoverOver event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('hoverOver');
        if (handler) {
            handler(this, eventArgs);
        }
    },
    
    add_hoverOut : function(handler) {
        /// <summary>
        /// Add an event handler for the hoverOut event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('hoverOut', handler);
    },
    remove_hoverOut : function(handler) {
        /// <summary>
        /// Remove an event handler from the hoverOut event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('hoverOut', handler);
    },
    raiseHoverOut : function(eventArgs) {
        /// <summary>
        /// Raise the hoverOut event
        /// </summary>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="false">
        /// Event arguments for the hoverOut event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('hoverOut');
        if (handler) {
            handler(this, eventArgs);
        }
    }
}
Sys.Extended.UI.DropDownBehavior.registerClass('Sys.Extended.UI.DropDownBehavior', Sys.Extended.UI.DynamicPopulateBehaviorBase);
Sys.registerComponent(Sys.Extended.UI.DropDownBehavior, { name: "dropDown" });

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedDynamicPopulate", "ExtendedAnimationBehavior", "ExtendedPopup", "ExtendedHover"], execute);
}
else {
    execute();
}

})();
w// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedDateTime";function a(){Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.TimeSpan=function(){var a=this;if(arguments.length==0)a._ctor$0.apply(a,arguments);else if(arguments.length==1)a._ctor$1.apply(a,arguments);else if(arguments.length==3)a._ctor$2.apply(a,arguments);else if(arguments.length==4)a._ctor$3.apply(a,arguments);else if(arguments.length==5)a._ctor$4.apply(a,arguments);else throw Error.parameterCount();};Sys.Extended.UI.TimeSpan.prototype={_ctor$0:function(){this._ticks=0},_ctor$1:function(a){this._ctor$0();this._ticks=a},_ctor$2:function(c,a,b){this._ctor$0();this._ticks=c*Sys.Extended.UI.TimeSpan.TicksPerHour+a*Sys.Extended.UI.TimeSpan.TicksPerMinute+b*Sys.Extended.UI.TimeSpan.TicksPerSecond},_ctor$3:function(d,c,a,b){this._ctor$0();this._ticks=d*Sys.Extended.UI.TimeSpan.TicksPerDay+c*Sys.Extended.UI.TimeSpan.TicksPerHour+a*Sys.Extended.UI.TimeSpan.TicksPerMinute+b*Sys.Extended.UI.TimeSpan.TicksPerSecond},_ctor$4:function(e,d,b,c,a){this._ctor$0();this._ticks=e*Sys.Extended.UI.TimeSpan.TicksPerDay+d*Sys.Extended.UI.TimeSpan.TicksPerHour+b*Sys.Extended.UI.TimeSpan.TicksPerMinute+c*Sys.Extended.UI.TimeSpan.TicksPerSecond+a*Sys.Extended.UI.TimeSpan.TicksPerMillisecond},getDays:function(){return Math.floor(this._ticks/Sys.Extended.UI.TimeSpan.TicksPerDay)},getHours:function(){return Math.floor(this._ticks/Sys.Extended.UI.TimeSpan.TicksPerHour)%24},getMinutes:function(){return Math.floor(this._ticks/Sys.Extended.UI.TimeSpan.TicksPerMinute)%60},getSeconds:function(){return Math.floor(this._ticks/Sys.Extended.UI.TimeSpan.TicksPerSecond)%60},getMilliseconds:function(){return Math.floor(this._ticks/Sys.Extended.UI.TimeSpan.TicksPerMillisecond)%1e3},getDuration:function(){return new Sys.Extended.UI.TimeSpan(Math.abs(this._ticks))},getTicks:function(){return this._ticks},getTotalDays:function(){Math.floor(this._ticks/Sys.Extended.UI.TimeSpan.TicksPerDay)},getTotalHours:function(){return Math.floor(this._ticks/Sys.Extended.UI.TimeSpan.TicksPerHour)},getTotalMinutes:function(){return Math.floor(this._ticks/Sys.Extended.UI.TimeSpan.TicksPerMinute)},getTotalSeconds:function(){return Math.floor(this._ticks/Sys.Extended.UI.TimeSpan.TicksPerSecond)},getTotalMilliseconds:function(){return Math.floor(this._ticks/Sys.Extended.UI.TimeSpan.TicksPerMillisecond)},add:function(a){return new Sys.Extended.UI.TimeSpan(this._ticks+a.getTicks())},subtract:function(a){return new Sys.Extended.UI.TimeSpan(this._ticks-a.getTicks())},negate:function(){return new Sys.Extended.UI.TimeSpan(-this._ticks)},equals:function(a){return this._ticks==a.getTicks()},compareTo:function(a){return this._ticks>a.getTicks()?1:this._ticks<a.getTicks()?-1:0},toString:function(){return this.format("F")},format:function(a){if(!a)a="F";if(a.length==1)switch(a){case"t":a=Sys.Extended.UI.TimeSpan.ShortTimeSpanPattern;break;case"T":a=Sys.Extended.UI.TimeSpan.LongTimeSpanPattern;break;case"F":a=Sys.Extended.UI.TimeSpan.FullTimeSpanPattern;break;default:throw Error.createError(String.format(Sys.Extended.UI.Resources.Common_DateTime_InvalidTimeSpan,a));}var e=/dd|d|hh|h|mm|m|ss|s|nnnn|nnn|nn|n/g,c=new Sys.StringBuilder,d=this._ticks;if(d<0){c.append("-");d=-d}for(;true;){var f=e.lastIndex,b=e.exec(a);c.append(a.slice(f,b?b.index:a.length));if(!b)break;switch(b[0]){case"dd":case"d":c.append($common.padLeft(Math.floor(d/Sys.Extended.UI.TimeSpan.TicksPerDay,b[0].length,"0")));break;case"hh":case"h":c.append($common.padLeft(Math.floor(d/Sys.Extended.UI.TimeSpan.TicksPerHour)%24,b[0].length,"0"));break;case"mm":case"m":c.append($common.padLeft(Math.floor(d/Sys.Extended.UI.TimeSpan.TicksPerMinute)%60,b[0].length,"0"));break;case"ss":case"s":c.append($common.padLeft(Math.floor(d/Sys.Extended.UI.TimeSpan.TicksPerSecond)%60,b[0].length,"0"));break;case"nnnn":case"nnn":case"nn":case"n":c.append($common.padRight(Math.floor(d/Sys.Extended.UI.TimeSpan.TicksPerMillisecond)%1e3,b[0].length,"0",true));break;default:Sys.Debug.assert(false)}}return c.toString()}};Sys.Extended.UI.TimeSpan.parse=function(j){var a=".",b=j.split(":"),i=0,f=0,g=0,d=0,h=0,e=0;switch(b.length){case 1:if(b[0].indexOf(a)!=-1){var c=b[0].split(a);d=parseInt(c[0]);h=parseInt(c[1])}else e=parseInt(b[0]);break;case 2:f=parseInt(b[0]);g=parseInt(b[1]);break;case 3:f=parseInt(b[0]);g=parseInt(b[1]);if(b[2].indexOf(a)!=-1){var c=b[2].split(a);d=parseInt(c[0]);h=parseInt(c[1])}else d=parseInt(b[2]);break;case 4:i=parseInt(b[0]);f=parseInt(b[1]);g=parseInt(b[2]);if(b[3].indexOf(a)!=-1){var c=b[3].split(a);d=parseInt(c[0]);h=parseInt(c[1])}else d=parseInt(b[3])}e+=i*Sys.Extended.UI.TimeSpan.TicksPerDay+f*Sys.Extended.UI.TimeSpan.TicksPerHour+g*Sys.Extended.UI.TimeSpan.TicksPerMinute+d*Sys.Extended.UI.TimeSpan.TicksPerSecond+h*Sys.Extended.UI.TimeSpan.TicksPerMillisecond;if(!isNaN(e))return new Sys.Extended.UI.TimeSpan(e);throw Error.create(Sys.Extended.UI.Resources.Common_DateTime_InvalidFormat);};Sys.Extended.UI.TimeSpan.fromTicks=function(a){return new Sys.Extended.UI.TimeSpan(a)};Sys.Extended.UI.TimeSpan.fromDays=function(a){return new Sys.Extended.UI.TimeSpan(a*Sys.Extended.UI.TimeSpan.TicksPerDay)};Sys.Extended.UI.TimeSpan.fromHours=function(a){return new Sys.Extended.UI.TimeSpan(a*Sys.Extended.UI.TimeSpan.TicksPerHour)};Sys.Extended.UI.TimeSpan.fromMinutes=function(a){return new Sys.Extended.UI.TimeSpan(a*Sys.Extended.UI.TimeSpan.TicksPerMinute)};Sys.Extended.UI.TimeSpan.fromSeconds=function(){return new Sys.Extended.UI.TimeSpan(minutes*Sys.Extended.UI.TimeSpan.TicksPerSecond)};Sys.Extended.UI.TimeSpan.fromMilliseconds=function(){return new Sys.Extended.UI.TimeSpan(minutes*Sys.Extended.UI.TimeSpan.TicksPerMillisecond)};Sys.Extended.UI.TimeSpan.TicksPerDay=8.64e11;Sys.Extended.UI.TimeSpan.TicksPerHour=3.6e10;Sys.Extended.UI.TimeSpan.TicksPerMinute=6e8;Sys.Extended.UI.TimeSpan.TicksPerSecond=1e7;Sys.Extended.UI.TimeSpan.TicksPerMillisecond=1e4;Sys.Extended.UI.TimeSpan.FullTimeSpanPattern="dd:hh:mm:ss.nnnn";Sys.Extended.UI.TimeSpan.ShortTimeSpanPattern="hh:mm";Sys.Extended.UI.TimeSpan.LongTimeSpanPattern="hh:mm:ss";Date.prototype.getTimeOfDay=function(){var a=this;return new Sys.Extended.UI.TimeSpan(0,a.getHours(),a.getMinutes(),a.getSeconds(),a.getMilliseconds())};Date.prototype.getDateOnly=function(){var a=this,b=new Date(a.getFullYear(),a.getMonth(),a.getDate());!(a.getMonth()===b.getMonth()&&a.getDate()===b.getDate())&&b.setMinutes(120);return b};Date.prototype.add=function(a){return new Date(this.getTime()+a.getTotalMilliseconds())};Date.prototype.subtract=function(a){return this.add(a.negate())};Date.prototype.getTicks=function(){return this.getTime()*Sys.Extended.UI.TimeSpan.TicksPerMillisecond};Sys.Extended.UI.FirstDayOfWeek=function(){};Sys.Extended.UI.FirstDayOfWeek.prototype={Sunday:0,Monday:1,Tuesday:2,Wednesday:3,Thursday:4,Friday:5,Saturday:6,Default:7};Sys.Extended.UI.FirstDayOfWeek.registerEnum("Sys.Extended.UI.FirstDayOfWeek")}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedCommon"],a);else a()})();L#// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedCascadingDropDown";function a(){var g="populated",f="populating",e="selectionChanged",b="",c=true,d="change",a=null;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.CascadingDropDownSelectionChangedEventArgs=function(b,a){Sys.Extended.UI.CascadingDropDownSelectionChangedEventArgs.initializeBase(this);this._oldValue=b;this._newValue=a};Sys.Extended.UI.CascadingDropDownSelectionChangedEventArgs.prototype={get_oldValue:function(){return this._oldValue},get_newValue:function(){return this._newValue}};Sys.Extended.UI.CascadingDropDownSelectionChangedEventArgs.registerClass("Sys.Extended.UI.CascadingDropDownSelectionChangedEventArgs",Sys.EventArgs);Sys.Extended.UI.CascadingDropDownBehavior=function(c){var b=this;Sys.Extended.UI.CascadingDropDownBehavior.initializeBase(b,[c]);b._parentControlID=a;b._category=a;b._promptText=a;b._loadingText=a;b._promptValue=a;b._emptyValue=a;b._emptyText=a;b._servicePath=location.pathname;b._serviceMethod=a;b._contextKey=a;b._useContextKey=false;b._parentElement=a;b._changeHandler=a;b._parentChangeHandler=a;b._lastParentValues=a;b._selectedValue=a};Sys.Extended.UI.CascadingDropDownBehavior.prototype={initialize:function(){var b=this;Sys.Extended.UI.CascadingDropDownBehavior.callBaseMethod(b,"initialize");$common.prepareHiddenElementForATDeviceUpdate();var e=b.get_element();b._clearItems();e.CascadingDropDownCategory=b._category;b._changeHandler=Function.createDelegate(b,b._onChange);$addHandler(e,d,b._changeHandler);if(b._parentControlID){b._parentElement=$get(b._parentControlID);!b._parentElement&&Sys.Debug.fail(String.format(Sys.Extended.UI.Resources.CascadingDropDown_NoParentElement,b._parentControlID));if(b._parentElement){e.CascadingDropDownParentControlID=b._parentControlID;b._parentChangeHandler=Function.createDelegate(b,b._onParentChange);$addHandler(b._parentElement,d,b._parentChangeHandler);if(!b._parentElement.childDropDown)b._parentElement.childDropDown=[];b._parentElement.childDropDown.push(b)}}b._onParentChange(a,c)},dispose:function(){var b=this,c=b.get_element();if(b._changeHandler){$removeHandler(c,d,b._changeHandler);b._changeHandler=a}if(b._parentChangeHandler){b._parentElement&&$removeHandler(b._parentElement,d,b._parentChangeHandler);b._parentChangeHandler=a}Sys.Extended.UI.CascadingDropDownBehavior.callBaseMethod(b,"dispose")},_clearItems:function(){var a=this.get_element();while(0<a.options.length)a.remove(0)},_isPopulated:function(){var a=this.get_element().options.length;return this._promptText?a>1:a>0},_setOptions:function(g,s,l){var e=this;if(!e.get_isInitialized())return;var f=e.get_element();e._clearItems();var m,n=b;if(l&&e._loadingText){m=e._loadingText;if(e._selectedValue)n=e._selectedValue}else if(!l&&g&&0==g.length&&a!=e._emptyText){m=e._emptyText;if(e._emptyValue)n=e._emptyValue}else if(e._promptText){m=e._promptText;if(e._promptValue)n=e._promptValue}var j;if(m){j=new Option(m,n);f.options[f.options.length]=j}var h=a,k=-1;if(g){for(i=0;i<g.length;i++){var o=g[i],t=o.name,q=o.value,p=o.optionTitle;if(o.isDefaultValue){k=i;if(e._promptText)k++}j=new Option(t,q);if(q==e._selectedValue)h=j;p&&j.setAttribute("title",p);f.options[f.options.length]=j}if(h)h.selected=c}if(h)e.set_SelectedValue(f.options[f.selectedIndex].value,f.options[f.selectedIndex].text);else if(!h&&k!=-1){f.options[k].selected=c;e.set_SelectedValue(f.options[k].value,f.options[k].text)}else if(!s&&!h&&!l&&!e._promptText&&f.options.length>0)e.set_SelectedValue(f.options[0].value,f.options[0].text);else!s&&!h&&!l&&e.set_SelectedValue(b,b);if(f.childDropDown&&!l)for(i=0;i<f.childDropDown.length;i++)f.childDropDown[i]._onParentChange();else if(g&&Sys.Browser.agent!==Sys.Browser.Safari&&Sys.Browser.agent!==Sys.Browser.Opera)if(document.createEvent){var r=document.createEvent("HTMLEvents");r.initEvent(d,c,false);e.get_element().dispatchEvent(r)}else document.createEventObject&&e.get_element().fireEvent("onchange");if(e._loadingText||e._promptText||e._emptyText)f.disabled=!g||0==g.length;e.raisePopulated(Sys.EventArgs.Empty)},_onChange:function(){var c=this;if(!c._isPopulated())return;var a=c.get_element();if(-1!=a.selectedIndex&&!(c._promptText&&0==a.selectedIndex))c.set_SelectedValue(a.options[a.selectedIndex].value,a.options[a.selectedIndex].text,a.options[a.selectedIndex].title);else c.set_SelectedValue(b,b)},_onParentChange:function(l,j){var d=this,m=d.get_element(),e=b,g=d._parentControlID;while(g){var f=$get(g);if(f&&-1!=f.selectedIndex){var h=f.options[f.selectedIndex].value;if(h&&h!=b){e=f.CascadingDropDownCategory+":"+h+";"+e;g=f.CascadingDropDownParentControlID;continue}}break}if(e!=b&&d._lastParentValues==e)return;d._lastParentValues=e;if(e==b&&d._parentControlID){d._setOptions(a,j);return}d._setOptions(a,j,c);if(d._servicePath&&d._serviceMethod){var i=new Sys.CancelEventArgs;d.raisePopulating(i);if(i.get_cancel())return;var k={knownCategoryValues:e,category:d._category};if(d._useContextKey)k.contextKey=d._contextKey;Sys.Net.WebServiceProxy.invoke(d._servicePath,d._serviceMethod,false,k,Function.createDelegate(d,d._onMethodComplete),Function.createDelegate(d,d._onMethodError));$common.updateFormToRefreshATDeviceBuffer()}},_onMethodComplete:function(a){this._setOptions(a)},_onMethodError:function(b){var a=this;if(b.get_timedOut())a._setOptions([a._makeNameValueObject(Sys.Extended.UI.Resources.CascadingDropDown_MethodTimeout)]);else a._setOptions([a._makeNameValueObject(String.format(Sys.Extended.UI.Resources.CascadingDropDown_MethodError,b.get_statusCode()))])},_makeNameValueObject:function(a){return{name:a,value:a}},get_ParentControlID:function(){return this._parentControlID},set_ParentControlID:function(a){if(this._parentControlID!=a){this._parentControlID=a;this.raisePropertyChanged("ParentControlID")}},get_Category:function(){return this._category},set_Category:function(a){if(this._category!=a){this._category=a;this.raisePropertyChanged("Category")}},get_PromptText:function(){return this._promptText},set_PromptText:function(a){if(this._promptText!=a){this._promptText=a;this.raisePropertyChanged("PromptText")}},get_PromptValue:function(){return this._promptValue},set_PromptValue:function(a){if(this._promptValue!=a){this._promptValue=a;this.raisePropertyChanged("PromptValue")}},get_EmptyText:function(){return this._emptyText},set_EmptyText:function(a){if(this._emptyText!=a){this._emptyText=a;this.raisePropertyChanged("EmptyText")}},get_EmptyValue:function(){return this._emptyValue},set_EmptyValue:function(a){if(this._emptyValue!=a){this._emptyValue=a;this.raisePropertyChanged("EmptyValue")}},get_LoadingText:function(){return this._loadingText},set_LoadingText:function(a){if(this._loadingText!=a){this._loadingText=a;this.raisePropertyChanged("LoadingText")}},get_SelectedValue:function(){return this._selectedValue},set_SelectedValue:function(d,e,g){var a=":::",c=this;if(c._selectedValue!=d){if(!e){var f=d.indexOf(a);if(-1!=f){e=d.slice(f+3);d=d.slice(0,f);f=e.indexOf(a);if(-1!=f){g=e.slice(f+3);e=e.slice(0,f)}}}var h=c._selectedValue;c._selectedValue=d;c.raisePropertyChanged("SelectedValue");c.raiseSelectionChanged(new Sys.Extended.UI.CascadingDropDownSelectionChangedEventArgs(h,d))}Sys.Extended.UI.CascadingDropDownBehavior.callBaseMethod(c,"set_ClientState",[c._selectedValue+a+e+a+(g?a+g:b)])},get_ServicePath:function(){return this._servicePath},set_ServicePath:function(a){if(this._servicePath!=a){this._servicePath=a;this.raisePropertyChanged("ServicePath")}},get_ServiceMethod:function(){return this._serviceMethod},set_ServiceMethod:function(a){if(this._serviceMethod!=a){this._serviceMethod=a;this.raisePropertyChanged("ServiceMethod")}},get_contextKey:function(){return this._contextKey},set_contextKey:function(b){var a=this;if(a._contextKey!=b){a._contextKey=b;a.set_useContextKey(c);a.raisePropertyChanged("contextKey")}},get_useContextKey:function(){return this._useContextKey},set_useContextKey:function(a){if(this._useContextKey!=a){this._useContextKey=a;this.raisePropertyChanged("useContextKey")}},add_selectionChanged:function(a){this.get_events().addHandler(e,a)},remove_selectionChanged:function(a){this.get_events().removeHandler(e,a)},raiseSelectionChanged:function(b){var a=this.get_events().getHandler(e);a&&a(this,b)},add_populating:function(a){this.get_events().addHandler(f,a)},remove_populating:function(a){this.get_events().removeHandler(f,a)},raisePopulating:function(b){var a=this.get_events().getHandler(f);a&&a(this,b)},add_populated:function(a){this.get_events().addHandler(g,a)},remove_populated:function(a){this.get_events().removeHandler(g,a)},raisePopulated:function(b){var a=this.get_events().getHandler(g);a&&a(this,b)}};Sys.Extended.UI.CascadingDropDownBehavior.registerClass("Sys.Extended.UI.CascadingDropDownBehavior",Sys.Extended.UI.BehaviorBase);Sys.registerComponent(Sys.Extended.UI.CascadingDropDownBehavior,{name:"cascadingDropDown"})}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedBase","ExtendedCommon","WebServices"],a);else a()})();�?// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedBalloonPopupBehavior";function a(){var e="undefined",c="click",d="mouseover",b=false,a=null;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.BalloonPopupControlBehavior=function(d){var c=this;Sys.Extended.UI.BalloonPopupControlBehavior.initializeBase(c,[d]);c._balloonPopupControlID=a;c._position=Sys.Extended.UI.BalloonPopupPosition.Auto;c._balloonStyle=Sys.Extended.UI.BalloonPopupStyle.Rectangle;c._offsetX=0;c._offsetY=0;c._extenderControlID=a;c._displayOnMouseOver=b;c._displayOnFocus=b;c._displayOnClick=true;c._balloonSize="small";c._shadow=true;c._scrollBars=Sys.Extended.UI.ScrollBars.Auto;c._popupElement=a;c._styleElement=a;c._sizeElement=a;c._shadowElement=a;c._directionElement=a;c._contentElement=a;c._popupBehavior=a;c._popupVisible=b;c._focusHandler=a;c._mouseOverHandler=a;c._clickHandler=a;c._popupClickHandler=a;c._bodyClickHandler=a;c._onShowJson=a;c._onHideJson=a;c._popupWidth=0;c._popupHeight=0;c._AutoPosition=a;c._directionClassName=a};Sys.Extended.UI.BalloonPopupControlBehavior.prototype={initialize:function(){var b=this;Sys.Extended.UI.BalloonPopupControlBehavior.callBaseMethod(b,"initialize");var e=b.get_element();b.createPopupElement();b._popupBehavior=$create(Sys.Extended.UI.PopupBehavior,{id:b.get_id()+"BalloonPopupBehavior",parentElement:e},a,a,b._popupElement);b._onShowJson&&b._popupBehavior.set_onShow(b._onShowJson);b._onHideJson&&b._popupBehavior.set_onHide(b._onHideJson);if(b._displayOnFocus)b._focusHandler=Function.createDelegate(b,b._onFocus);if(b._displayOnMouseOver)b._mouseOverHandler=Function.createDelegate(b,b._onMouseOver);if(b._displayOnClick)b._clickHandler=Function.createDelegate(b,b._onFocus);b._popupClickHandler=Function.createDelegate(b,b._onPopupClick);b._bodyClickHandler=Function.createDelegate(b,b._onBodyClick);b._displayOnFocus&&$addHandler(e,"focus",b._focusHandler);b._displayOnMouseOver&&$addHandler(e,d,b._mouseOverHandler);b._displayOnClick&&$addHandler(e,c,b._clickHandler);$addHandler(document,c,b._bodyClickHandler);$addHandler(b._popupElement,c,b._popupClickHandler)},dispose:function(){var b=this,e=b.get_element();b._onShowJson=a;b._onHideJson=a;if(b._popupBehavior){b._popupBehavior.dispose();b._popupBehavior=a}if(b._focusHandler){$removeHandler(e,"focus",b._focusHandler);b._focusHandler=a}if(b._mouseOverHandler){$removeHandler(e,d,b._mouseOverHandler);b._mouseOverHandler=a}if(b._clickHandler){$removeHandler(e,c,b._clickHandler);b._clickHandler=a}if(b._bodyClickHandler){$removeHandler(document,c,b._bodyClickHandler);b._bodyClickHandler=a}if(b._popupClickHandler){$removeHandler(b._popupElement,c,b._popupClickHandler);b._popupClickHandler=a}Sys.Extended.UI.BalloonPopupControlBehavior.callBaseMethod(b,"dispose")},createPopupElement:function(){var d="ajax__content",c="div",b=this,e=b.get_element();b._popupElement=$common.createElementFromTemplate({nodeName:c,properties:{id:b.get_id()+"_balloonPopup",style:{display:"block",position:"absolute"}},cssClasses:["ajax__balloon_popup"]},e.parentNode);b._styleElement=$common.createElementFromTemplate({nodeName:"span",Properties:{id:"ajax__style_wrapper"}},b._popupElement);b._sizeElement=$common.createElementFromTemplate({nodeName:"span",Properties:{id:"ajax__size_wrapper"}},b._styleElement);b._shadowElement=$common.createElementFromTemplate({nodeName:c,Properties:{id:"ajax__shadow_wrapper"}},b._sizeElement);b._directionElement=$common.createElementFromTemplate({nodeName:c,Properties:{id:"ajax__direction_wrapper"}},b._shadowElement);b._contentElement=$common.createElementFromTemplate({nodeName:c,Properties:{id:d},cssClasses:[d]},b._directionElement);if($get(b._balloonPopupControlID)==a)throw"Referred BalloonPopupControlId did not find.";$get(b._balloonPopupControlID).style.display="none";b.setStyle();b.setSize();b._directionElement.className=b._directionClassName;b._popupWidth=b._directionElement.offsetWidth;b._popupHeight=b._directionElement.offsetHeight;if(b.get_balloonPopupPosition()!=Sys.Extended.UI.BalloonPopupPosition.Auto){b.setPosition();b.setContentPadding();b.setScrollBar()}},setStyle:function(){var a="rect",b=this;switch(b.get_balloonPopupStyle()){case Sys.Extended.UI.BalloonPopupStyle.Rectangle:b._styleElement.className=a;b._directionClassName=a;break;case Sys.Extended.UI.BalloonPopupStyle.Cloud:b._styleElement.className="cloud";b._directionClassName="cloud";break;case Sys.Extended.UI.BalloonPopupStyle.Custom:b._styleElement.className=b.get_customClassName();b._directionClassName=b.get_customClassName();break;default:b._styleElement.className=a;b._directionClassName=a}},setSize:function(){var a=" small",b=this;switch(b.get_balloonSize()){case Sys.Extended.UI.BalloonPopupSize.Small:b._sizeElement.className+=a;b._directionClassName+=a;break;case Sys.Extended.UI.BalloonPopupSize.Medium:b._sizeElement.className+=" medium";b._directionClassName+=" medium";break;case Sys.Extended.UI.BalloonPopupSize.Large:b._sizeElement.className+=" large";b._directionClassName+=" large";break;default:b._sizeElement.className+=a;b._directionClassName+=a}},setPosition:function(){var d=" top_right_shadow",c=" top_right",b=this,e=a;if(b.get_balloonPopupPosition()==Sys.Extended.UI.BalloonPopupPosition.Auto)e=b._autoPosition;else e=b.get_balloonPopupPosition();switch(e){case Sys.Extended.UI.BalloonPopupPosition.TopLeft:b._directionElement.className=b._directionClassName+" top_left";b._shadowElement.className=b._directionClassName+" top_left_shadow";break;case Sys.Extended.UI.BalloonPopupPosition.TopRight:b._directionElement.className=b._directionClassName+c;b._shadowElement.className=b._directionClassName+d;break;case Sys.Extended.UI.BalloonPopupPosition.BottomLeft:b._directionElement.className=b._directionClassName+" bottom_left";b._shadowElement.className=b._directionClassName+" bottom_left_shadow";break;case Sys.Extended.UI.BalloonPopupPosition.BottomRight:b._directionElement.className=b._directionClassName+" bottom_right";b._shadowElement.className=b._directionClassName+" bottom_right_shadow";break;default:b._directionElement.className=b._directionClassName+c;b._shadowElement.className=b._directionClassName+d}},setContentPadding:function(){var b=this,a=$common.getPaddingBox(b._contentElement),c=$get(b._balloonPopupControlID);$common.setBounds(c,{x:b._offsetX+a.left,y:b._offsetY+a.top,width:b._popupWidth-a.left-a.right,height:b._popupHeight-a.top-a.bottom})},setScrollBar:function(){var b="hidden",a="scroll",c=$get(this._balloonPopupControlID);switch(this.get_scrollBars()){case Sys.Extended.UI.ScrollBars.Horizontal:$common.setStyle(c,{overflowX:a,overflowY:b});break;case Sys.Extended.UI.ScrollBars.Vertical:$common.setStyle(c,{overflowY:a,overflowX:b});break;case Sys.Extended.UI.ScrollBars.Both:$common.setStyle(c,{overflow:a});break;case Sys.Extended.UI.ScrollBars.None:$common.setStyle(c,{overflow:b});break;default:$common.setStyle(c,{overflow:"auto"})}},showPopup:function(){var a=this;a._contentElement.appendChild($get(a._balloonPopupControlID));$get(a._balloonPopupControlID).style.display="block";if(Sys.Extended.UI.BalloonPopupPosition.Auto==a._position){a._setAutoPosition();a.setPosition();a.setContentPadding();a.setScrollBar()}if(!a._shadow)a._shadowElement.className="";var b=Sys.Extended.UI.BalloonPopupControlBehavior.__VisiblePopup;b&&b._popupBehavior&&b.hidePopup();Sys.Extended.UI.BalloonPopupControlBehavior.callBaseMethod(a,"populate");a._popupBehavior.set_x(a._getLeftOffset());a._popupBehavior.set_y(a._getTopOffset());a._popupBehavior.show();a._popupVisible=true;Sys.Extended.UI.BalloonPopupControlBehavior.__VisiblePopup=a;var c=$common.getCurrentStyle(a._directionElement,"backgroundPositionX"),d=$common.getCurrentStyle(a._directionElement,"backgroundPositionY");$common.setStyle(a._styleElement,{backgroundPositionX:c,backgroundPositionY:d})},hidePopup:function(){this._popupBehavior.hide();this._popupVisible=b;Sys.Extended.UI.BalloonPopupControlBehavior.__VisiblePopup=a},_onFocus:function(a){!this._popupVisible&&this.showPopup();a&&a.stopPropagation()},_onMouseOver:function(a){!this._popupVisible&&this.showPopup();a&&a.stopPropagation()},_onPopupClick:function(a){a.stopPropagation()},_onBodyClick:function(){this._popupVisible&&this.hidePopup()},_onPopulated:function(b,a){Sys.Extended.UI.BalloonPopupControlBehavior.callBaseMethod(this,"_onPopulated",[b,a]);this._popupVisible&&this._popupBehavior.show()},_getLeftOffset:function(){var a=this,c=0,b=Sys.Extended.UI.BalloonPopupPosition.Auto==a._position?a._autoPosition:a._position;if(Sys.Extended.UI.BalloonPopupPosition.BottomLeft==b||Sys.Extended.UI.BalloonPopupPosition.TopLeft==b)c=-1*a._popupWidth+a._offsetX;else if(Sys.Extended.UI.BalloonPopupPosition.BottomRight==b||Sys.Extended.UI.BalloonPopupPosition.TopRight==b)c=a.get_element().offsetWidth+a._offsetX;else c=a._offsetX;return c},_getTopOffset:function(){var a=this,c=0,b=Sys.Extended.UI.BalloonPopupPosition.Auto==a._position?a._autoPosition:a._position;if(Sys.Extended.UI.BalloonPopupPosition.TopLeft==b||Sys.Extended.UI.BalloonPopupPosition.TopRight==b)c=-1*a._popupHeight+a._offsetY;else if(Sys.Extended.UI.BalloonPopupPosition.BottomLeft==b||Sys.Extended.UI.BalloonPopupPosition.BottomRight==b)c=a.get_element().offsetHeight+a._offsetY;else c=a._offsetY;return c},_setAutoPosition:function(){var a=this,d=0,c=0,b=a.get_element();if(b.offsetParent)do{c+=b.offsetLeft;d+=b.offsetTop}while(b=b.offsetParent);var e=a.posTop(),j=a.posLeft(),m=a.pageWidth(),l=a.pageHeight(),k=e+l,h=j+m,g=d-a._popupHeight,n=c-a._popupWidth,i=d+a.get_element().offsetHeight+a._popupHeight,f=c+a.get_element().offsetWidth+a._popupWidth;if(g-e>0&&g-e>k-i)if(h<f)a._autoPosition=Sys.Extended.UI.BalloonPopupPosition.TopLeft;else a._autoPosition=Sys.Extended.UI.BalloonPopupPosition.TopRight;else if(h<f)a._autoPosition=Sys.Extended.UI.BalloonPopupPosition.BottomLeft;else a._autoPosition=Sys.Extended.UI.BalloonPopupPosition.BottomRight},get_onShow:function(){return this._popupBehavior?this._popupBehavior.get_onShow():this._onShowJson},set_onShow:function(b){var a=this;if(a._popupBehavior)a._popupBehavior.set_onShow(b);else a._onShowJson=b;a.raisePropertyChanged("onShow")},get_onShowBehavior:function(){return this._popupBehavior?this._popupBehavior.get_onShowBehavior():a},onShow:function(){this._popupBehavior&&this._popupBehavior.onShow()},get_onHide:function(){return this._popupBehavior?this._popupBehavior.get_onHide():this._onHideJson},set_onHide:function(b){var a=this;if(a._popupBehavior)a._popupBehavior.set_onHide(b);else a._onHideJson=b;a.raisePropertyChanged("onHide")},get_onHideBehavior:function(){return this._popupBehavior?this._popupBehavior.get_onHideBehavior():a},onHide:function(){this._popupBehavior&&this._popupBehavior.onHide()},get_BalloonPopupControlID:function(){return this._balloonPopupControlID},set_BalloonPopupControlID:function(a){if(this._balloonPopupControlID!=a){this._balloonPopupControlID=a;this.raisePropertyChanged("BalloonPopupControlID")}},get_balloonPopupPosition:function(){return this._position},set_balloonPopupPosition:function(a){if(this._position!=a){this._position=a;this.raisePropertyChanged("Position")}},get_balloonPopupStyle:function(){return this._balloonStyle},set_balloonPopupStyle:function(a){if(this._balloonStyle!=a){this._balloonStyle=a;this.raisePropertyChanged("BalloonStyle")}},get_ExtenderControlID:function(){return this._extenderControlID},set_ExtenderControlID:function(a){if(this._extenderControlID!=a){this._extenderControlID=a;this.raisePropertyChanged("ExtenderControlID")}},get_OffsetX:function(){return this._offsetX},set_OffsetX:function(a){if(this._offsetX!=a){this._offsetX=a;this.raisePropertyChanged("OffsetX")}},get_OffsetY:function(){return this._offsetY},set_OffsetY:function(a){if(this._offsetY!=a){this._offsetY=a;this.raisePropertyChanged("OffsetY")}},get_displayOnMouseOver:function(){return this._displayOnMouseOver},set_displayOnMouseOver:function(a){if(this._displayOnMouseOver!=a){this._displayOnMouseOver=a;this.raisePropertyChanged("DisplayOnMouseOver")}},get_displayOnFocus:function(){return this._displayOnFocus},set_displayOnFocus:function(a){if(this._displayOnFocus!=a){this._displayOnFocus=a;this.raisePropertyChanged("DisplayOnFocus")}},get_displayOnClick:function(){return this._displayOnClick},set_displayOnClick:function(a){if(this.displayOnClick!=a){this.displayOnClick=a;this.raisePropertyChanged("DisplayOnClick")}},get_balloonSize:function(){return this._balloonSize},set_balloonSize:function(a){if(this._balloonSize!=a){this._balloonSize=a;this.raisePropertyChanged("BalloonSize")}},get_useShadow:function(){return this._shadow},set_useShadow:function(a){if(this._shadow!=a){this._shadow=a;this.raisePropertyChanged("UseShadow")}},get_scrollBars:function(){return this._scrollBars},set_scrollBars:function(a){if(this._scrollBars!=a){this._scrollBars=a;this.raisePropertyChanged("ScrollBars")}},get_PopupVisible:function(){return this._popupVisible},get_customClassName:function(){return this._customClassName},set_customClassName:function(a){if(this._customClassName!=a){this._customClassName=a;this.raisePropertyChanged("CustomClassName")}},add_showing:function(a){this._popupBehavior&&this._popupBehavior.add_showing(a)},remove_showing:function(a){this._popupBehavior&&this._popupBehavior.remove_showing(a)},raiseShowing:function(a){this._popupBehavior&&this._popupBehavior.raiseShowing(a)},add_shown:function(a){this._popupBehavior&&this._popupBehavior.add_shown(a)},remove_shown:function(a){this._popupBehavior&&this._popupBehavior.remove_shown(a)},raiseShown:function(a){this._popupBehavior&&this._popupBehavior.raiseShown(a)},add_hiding:function(a){this._popupBehavior&&this._popupBehavior.add_hiding(a)},remove_hiding:function(a){this._popupBehavior&&this._popupBehavior.remove_hiding(a)},raiseHiding:function(a){this._popupBehavior&&this._popupBehavior.raiseHiding(a)},add_hidden:function(a){this._popupBehavior&&this._popupBehavior.add_hidden(a)},remove_hidden:function(a){this._popupBehavior&&this._popupBehavior.remove_hidden(a)},raiseHidden:function(a){this._popupBehavior&&this._popupBehavior.raiseHidden(a)},posTop:function(){var a=0;if(typeof window.pageYOffset!=e)a=window.pageYOffset;else if(document.documentElement&&document.documentElement.scrollTop)a=document.documentElement.scrollTop;else if(document.body.scrollTop)a=document.body.scrollTop;return a},posLeft:function(){var a=0;if(typeof window.pageXOffset!=e)a=window.pageXOffset;else if(document.documentElement&&document.documentElement.scrollLeft)a=document.documentElement.scrollLeft;else if(document.body.scrollLeft)a=document.body.scrollLeft;return a},pageHeight:function(){var b=a;if(window.innerHeight!=a)b=window.innerHeight;else if(document.documentElement&&document.documentElement.clientHeight)b=document.documentElement.clientHeight;else if(document.body!=a)b=document.body.clientHeight;return b},pageWidth:function(){var b=a;if(window.innerWidth!=a)b=window.innerWidth;else if(document.documentElement&&document.documentElement.clientWidth)b=document.documentElement.clientWidth;else if(document.body!=a)b=document.body.clientWidth;return b}};Sys.Extended.UI.BalloonPopupControlBehavior.registerClass("Sys.Extended.UI.BalloonPopupControlBehavior",Sys.Extended.UI.DynamicPopulateBehaviorBase);Sys.registerComponent(Sys.Extended.UI.BalloonPopupControlBehavior,{name:"balloonPopupBehavior"});Sys.Extended.UI.BalloonPopupControlBehavior.__VisiblePopup=a;Sys.Extended.UI.BalloonPopupPosition=function(){throw Error.invalidOperation();};Sys.Extended.UI.BalloonPopupPosition.prototype={Auto:0,TopRight:1,TopLeft:2,BottomRight:3,BottomLeft:4};Sys.Extended.UI.BalloonPopupPosition.registerEnum("Sys.Extended.UI.BalloonPopupPosition",b);Sys.Extended.UI.BalloonPopupStyle=function(){throw Error.invalidOperation();};Sys.Extended.UI.BalloonPopupStyle.prototype={Rectangle:0,Cloud:1,Custom:2};Sys.Extended.UI.BalloonPopupStyle.registerEnum("Sys.Extended.UI.BalloonPopupStyle",b);Sys.Extended.UI.BalloonPopupSize=function(){throw Error.invalidOperation();};Sys.Extended.UI.BalloonPopupSize.prototype={Small:0,Medium:1,Large:2};Sys.Extended.UI.BalloonPopupSize.registerEnum("Sys.Extended.UI.BalloonPopupSize",b)}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedDynamicPopulate","ExtendedPopup","ExtendedAnimationBehavior"],a);else a()})();// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference name="MicrosoftAjaxTimer.debug.js" />
/// <reference name="MicrosoftAjaxWebForms.debug.js" />
/// <reference path="../Compat/Timer/Timer.js" />
/// <reference path="../Common/Common.js" />

(function() {
var scriptName = "ExtendedAnimations";

function execute() {

Type.registerNamespace('Sys.Extended.UI.Animation');

$AA = Sys.Extended.UI.Animation;

$AA.registerAnimation = function(name, type) {
    /// <summary>
    /// Register an animation with the AJAX Control Toolkit animation framework. This serves a dual purpose:
    /// 1) to add standard utility methods to the animation type (such as a <code>play</code> method that creates
    /// an animation, plays it, and disposes it when the animation is over), and 2) to associate a name with the
    /// type that will be used when creating animations from a JSON description.  This method can also be called
    /// by other animation libraries to seamlessly interoperate with the AJAX Control Toolkit's animation
    /// framework.
    /// </summary>
    /// <param name="name" type="String">
    /// Name of the animation that will be used as the XML tag name in the XML animation description.  It
    /// should be a valid XML tag (i.e. an alpha-numeric sequence with no spaces, special characters, etc.).
    /// </param>
    /// <param name="type" type="Type">
    /// The type of the new animation must inherit from <see cref="Sys.Extended.UI.Animation.Animation" />.
    /// </param>
    /// <returns />

    if (type && ((type === $AA.Animation) || (type.inheritsFrom && type.inheritsFrom($AA.Animation)))) {
        if (!$AA.__animations) {
            $AA.__animations = { };
        }
        
        $AA.__animations[name.toLowerCase()] = type;
        
        type.play = function() {
            /// <summary>
            /// Create an animation, play it immediately, and dispose it when finished.
            /// </summary>
            /// <param parameterArray="true" elementType="Object">
            /// The play function takes the same parameters as the type's constructor
            /// </param>
            /// <returns />
        
            var animation = new type();
            type.apply(animation, arguments);
            animation.initialize();
            
            var handler = Function.createDelegate(animation,
                function() {
                    /// <summary>
                    /// Dispose the animation after playing
                    /// </summary>
                    /// <returns />
                    animation.remove_ended(handler);
                    handler = null;
                    animation.dispose();
                });
            animation.add_ended(handler);
            
            animation.play();            
        }
    } else {
        throw Error.argumentType('type', type, $AA.Animation, Sys.Extended.UI.Resources.Animation_InvalidBaseType);
    }
}

$AA.buildAnimation = function(json, defaultTarget) {
    /// <summary>
    /// The <code>buildAnimation</code> function is used to turn a JSON animation description
    /// into an actual animation object that can be played.
    /// </summary>
    /// <param name="json" type="String" mayBeNull="true">
    /// JSON description of the animation in the format expected by createAnimation
    /// </param>
    /// <param name="defaultTarget" type="Sys.UI.DomElement" mayBeNull="true" domElement="true">
    /// Target of the animation if none is specified in the JSON description.  The semantics of
    /// target assignment are provided in more detail in createAnimation.
    /// </param>
    /// <returns type="Sys.Extended.UI.Animation.Animation" mayBeNull="true">
    /// Animation created from the JSON description
    /// </returns>
    
    if (!json || json === '') {
        return null;
    }

    var obj;
    json = '(' + json + ')';
    if (! Sys.Debug.isDebug) {
        try { obj = Sys.Serialization.JavaScriptSerializer.deserialize(json); } catch (ex) { } 
    } else {
        obj = Sys.Serialization.JavaScriptSerializer.deserialize(json);
    }
    
    return $AA.createAnimation(obj, defaultTarget);    
}

$AA.createAnimation = function(obj, defaultTarget) {
    /// <summary>
    /// The <code>createAnimation</code> function builds a new
    /// <see cref="Sys.Extended.UI.Animation.Animation" /> instance from an object
    /// that describes it.
    /// </summary>
    /// <param name="obj" type="Object">
    /// The object provides a description of the animation to be be generated in
    /// a very specific format. It has two special properties: <code>AnimationName</code>
    /// and <code>AnimationChildren</code>.  The <code>AnimationName</code> is required
    /// and used to find the type of animation to create (this name should map to
    /// one of the animation names supplied to <code>registerAnimation</code>).  The
    /// <code>AnimationChildren</code> property supplies an optional array for
    /// animations that use child animations (such as
    /// <see cref="Sys.Extended.UI.Animation.ParallelAnimation" /> and
    /// <see cref="Sys.Extended.UI.Animation.SequenceAnimation" />). The elements of
    /// the <code>AnimationChildren</code> array are valid
    /// <see cref="Sys.Extended.UI.Animation.Animation" /> objects that meet these same
    /// requirements.  In order for an animation to support child animations, it must
    /// derive from the <see cref="Sys.Extended.UI.Animation.ParentAnimation" /> class
    /// which provides common methods like <code>add</code>, <code>clear</code>, etc. The
    /// remaining properties of the object are used to set parameters specific to the type
    /// of animation being created (e.g. <code>duration</code>, <code>minimumOpacity</code>,
    /// <code>startValue</code>, etc.) and should have a corresponding property on the
    /// animation.  You can also assign an arbitrary JavaScript expression to any property
    /// by adding 'Script' to the end of its name (i.e., Height="70" can be replaced by
    /// HeightScript="$get('myElement').offsetHeight") and have the property set to the
    /// result of evaluating the expression before the animation is played each time.
    /// </param>
    /// <param name="defaultTarget" type="Sys.UI.DomElement" mayBeNull="true" domElement="true">
    /// The function also takes a <code>defaultTarget</code> parameter that is used as the
    /// target of the animation if the object does not specify one.  This parameter should be
    /// an instance of <see cref="Sys.UI.DomElement" /> and not just the name of an element.
    /// </param>
    /// <returns type="Sys.Extended.UI.Animation.Animation">
    /// <see cref="Sys.Extended.UI.Animation.Animation" /> created from the description
    /// </returns>
    /// <remarks>
    /// Exceptions are thrown when the <code>AnimationName</code> cannot be found.  Also,
    /// any exceptions raised by setting properties or providing properties with invalid
    /// names will only be raised when debugging.
    /// </remarks>

    if (!obj || !obj.AnimationName) {
        throw Error.argument('obj', Sys.Extended.UI.Resources.Animation_MissingAnimationName);
    }
    var type = $AA.__animations[obj.AnimationName.toLowerCase()];
    if (!type) {
        throw Error.argument('type', String.format(Sys.Extended.UI.Resources.Animation_UknownAnimationName, obj.AnimationName));
    }
    var animation = new type();
    
    if (defaultTarget) {
        animation.set_target(defaultTarget);
    }
    
    if (obj.AnimationChildren && obj.AnimationChildren.length) {
        if ($AA.ParentAnimation.isInstanceOfType(animation)) {
            for (var i = 0; i < obj.AnimationChildren.length; i++) {
                var child = $AA.createAnimation(obj.AnimationChildren[i]);
                if (child) {
                    animation.add(child);
                }
            }
        } else {
            throw Error.argument('obj', String.format(Sys.Extended.UI.Resources.Animation_ChildrenNotAllowed, type.getName()));
        }
    }
    
    var properties = type.__animationProperties;
    if (!properties) {
        type.__animationProperties = { };
        type.resolveInheritance();
        for (var name in type.prototype) {
            if (name.startsWith('set_')) {
                type.__animationProperties[name.substr(4).toLowerCase()] = name;
            }
        }
        
        delete type.__animationProperties['id'];
        properties = type.__animationProperties;
    }
    
    for (var property in obj) {
        var prop = property.toLowerCase();
        if (prop == 'animationname' || prop == 'animationchildren') {
            continue;
        }
        
        var value = obj[property];
        
        var setter = properties[prop];
        if (setter && String.isInstanceOfType(setter) && animation[setter]) {
            if (! Sys.Debug.isDebug) {
                try { animation[setter](value); } catch (ex) { }
            } else {
                animation[setter](value);
            }
        } else {
            if (prop.endsWith('script')) {
                setter = properties[prop.substr(0, property.length - 6)];
                if (setter && String.isInstanceOfType(setter) && animation[setter]) {
                    animation.DynamicProperties[setter] = value;
                } else if ( Sys.Debug.isDebug) {
                    throw Error.argument('obj', String.format(Sys.Extended.UI.Resources.Animation_NoDynamicPropertyFound, property, property.substr(0, property.length - 5)));
                }
            } else if ( Sys.Debug.isDebug) {
                throw Error.argument('obj', String.format(Sys.Extended.UI.Resources.Animation_NoPropertyFound, property));
            }
        }
    }
    
    return animation;
}




$AA.Animation = function(target, duration, fps) {
    /// <summary>
    /// <code>Animation</code> is an abstract base class used as a starting point for all the other animations.
    /// It provides the basic mechanics for the animation (playing, pausing, stopping, timing, etc.)
    /// and leaves the actual animation to be done in the abstract methods <code>getAnimatedValue</code>
    /// and <code>setValue</code>.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <field name="DynamicProperties" type="Object">
    /// The DynamicProperties collection is used to associate JavaScript expressions with
    /// properties.  The expressions are evaluated just before the animation is played
    /// everytime (in the base onStart method).  The object itself maps strings with the
    /// names of property setters (like "set_verticalOffset") to JavaScript expressions
    /// (like "$find('MyBehavior').get_element().offsetHeight").  Note specifically that
    /// the dynamic properties are JavaScript expressions and not abitrary statements (i.e.
    /// you can't include things like "return foo;"), although you can include anything
    /// inside an anonymous function definition that you immediately invoke (i.e.,
    /// "(function() { return foo; })()").  A dynamic property can be set in the generic
    /// XML animation description by appending Script onto any legitimate property name
    /// (for example, instead of Height="70" we could use
    /// HeightScript="$find('MyBehavior').get_element().offsetHeight").  Any exceptions
    /// raised when setting dynamic properties (including both JavaScript evaluation errors
    /// and other exceptions raised by property setters) will only be propogated when
    /// debugging.
    /// </field>
    /// <remarks>
    /// Animations need to be as fast as possible - even in debug mode.  Don't add validation code to
    /// methods involved in every step of the animation.
    /// </remarks>
    /// <animation>Animation</animation>
    $AA.Animation.initializeBase(this);
    
    this._duration = 1;
    
    this._fps = 25;
    
    this._target = null;
    
    this._tickHandler = null;
    
    this._timer = null;
    
    this._percentComplete = 0;
    
    this._percentDelta = null;
    
    this._owner = null;
    
    this._parentAnimation = null;
    
    this.DynamicProperties = { };
    
    if (target) {
        this.set_target(target);
    }
    if (duration) {
        this.set_duration(duration);
    }
    if (fps) { 
        this.set_fps(fps);
    }
}
$AA.Animation.prototype = {
    dispose: function() {
        /// <summary>
        /// Dispose the animation
        /// </summary>
        /// <returns />

        if (this._timer) {
            this._timer.dispose();
            this._timer = null;
        }

        this._tickHandler = null;
        this._target = null;

        $AA.Animation.callBaseMethod(this, 'dispose');
    },

    play: function() {
        /// <summary>
        /// Play the animation from the beginning or where it was left off when paused.
        /// </summary>
        /// <returns />
        /// <remarks>
        /// If this animation is the child of another, you must call <code>play</code> on its parent instead.
        /// </remarks>

        if (!this._owner) {
            var resume = true;
            if (!this._timer) {
                resume = false;

                if (!this._tickHandler) {
                    this._tickHandler = Function.createDelegate(this, this._onTimerTick);
                }

                this._timer = new Sys.Timer();
                this._timer.add_tick(this._tickHandler);

                this.onStart();

                this._timer.set_interval(1000 / this._fps);
                this._percentDelta = 100 / (this._duration * this._fps);
                this._updatePercentComplete(0, true);
            }

            this._timer.set_enabled(true);

            this.raisePropertyChanged('isPlaying');
            if (!resume) {
                this.raisePropertyChanged('isActive');
            }
        }
    },

    pause: function() {
        /// <summary>
        /// Pause the animation if it is playing.  Calling <code>play</code> will resume where
        /// the animation left off.
        /// </summary>
        /// <returns />
        /// <remarks>
        /// If this animation is the child of another, you must call <code>pause</code> on its parent instead.
        /// </remarks>

        if (!this._owner) {
            if (this._timer) {
                this._timer.set_enabled(false);

                this.raisePropertyChanged('isPlaying');
            }
        }
    },

    stop: function(finish) {
        /// <summary>
        /// Stop playing the animation.
        /// </summary>
        /// <param name="finish" type="Boolean" mayBeNull="true" optional="true">
        /// Whether or not stopping the animation should leave the target element in a state
        /// consistent with the animation playing completely by performing the last step.
        /// The default value is true.
        /// </param>
        /// <returns />
        /// <remarks>
        /// If this animation is the child of another, you must call <code>stop</code> on
        /// its parent instead.
        /// </remarks>

        if (!this._owner) {
            var t = this._timer;
            this._timer = null;
            if (t) {
                t.dispose();

                if (this._percentComplete !== 100) {
                    this._percentComplete = 100;
                    this.raisePropertyChanged('percentComplete');
                    if (finish || finish === undefined) {
                        this.onStep(100);
                    }
                }
                this.onEnd();

                this.raisePropertyChanged('isPlaying');
                this.raisePropertyChanged('isActive');
            }
        }
    },

    onStart: function() {
        /// <summary>
        /// The <code>onStart</code> method is called just before the animation is played each time.
        /// </summary>
        /// <returns />

        this.raiseStarted();

        for (var property in this.DynamicProperties) {
            try {
                this[property](eval(this.DynamicProperties[property]));
            } catch (ex) {
                if (Sys.Debug.isDebug) {
                    throw ex;
                }
            }
        }
    },

    onStep: function(percentage) {
        /// <summary>
        /// The <code>onStep</code> method is called repeatedly to progress the animation through each frame
        /// </summary>
        /// <param name="percentage" type="Number">Percentage of the animation already complete</param>
        /// <returns />

        this.setValue(this.getAnimatedValue(percentage));
        this.raiseStep();
    },

    onEnd: function() {
        /// <summary>
        /// The <code>onEnd</code> method is called just after the animation is played each time.
        /// </summary>
        /// <returns />

        this.raiseEnded();
    },

    getAnimatedValue: function(percentage) {
        /// <summary>
        /// Determine the state of the animation after the given percentage of its duration has elapsed
        /// </summary>
        /// <param name="percentage" type="Number">Percentage of the animation already complete</param>
        /// <returns type="Object">
        /// State of the animation after the given percentage of its duration has elapsed that will
        /// be passed to <code>setValue</code>
        /// </returns>
        throw Error.notImplemented();
    },

    setValue: function(value) {
        /// <summary>
        /// Set the current state of the animation
        /// </summary>
        /// <param name="value" type="Object">Current state of the animation (as retreived from <code>getAnimatedValue</code>)</param>
        /// <returns />
        throw Error.notImplemented();
    },

    interpolate: function(start, end, percentage) {
        /// <summary>
        /// The <code>interpolate</code> function is used to find the appropriate value between starting and
        /// ending values given the current percentage.
        /// </summary>
        /// <param name="start" type="Number">
        /// Start of the range to interpolate
        /// </param>
        /// <param name="end" type="Number">
        /// End of the range to interpolate
        /// </param>
        /// <param name="percentage" type="Number">
        /// Percentage completed in the range to interpolate
        /// </param>
        /// <returns type="Number">
        /// Value the desired percentage between the start and end values
        /// </returns>
        /// <remarks>
        /// In the future, we hope to make several implementations of this available so we can dynamically
        /// change the apparent speed of the animations, although it may make more sense to modify the
        /// <code>_updatePercentComplete</code> function instead.
        /// </remarks>
        return start + (end - start) * (percentage / 100);
    },

    _onTimerTick: function() {
        /// <summary>
        /// Handler for the tick event to move the animation along through its duration
        /// </summary>
        /// <returns />
        this._updatePercentComplete(this._percentComplete + this._percentDelta, true);
    },

    _updatePercentComplete: function(percentComplete, animate) {
        /// <summary>
        /// Update the animation and its target given the current percentage of its duration that
        /// has already elapsed
        /// </summary>
        /// <param name="percentComplete" type="Number">
        /// Percentage of the animation duration that has already elapsed
        /// </param>
        /// <param name="animate" type="Boolean" mayBeNull="true" optional="true">
        /// Whether or not updating the animation should visually modify the animation's target
        /// </param>
        /// <returns />

        if (percentComplete > 100) {
            percentComplete = 100;
        }

        this._percentComplete = percentComplete;
        this.raisePropertyChanged('percentComplete');

        if (animate) {
            this.onStep(percentComplete);
        }

        if (percentComplete === 100) {
            this.stop(false);
        }
    },

    setOwner: function(owner) {
        /// <summary>
        /// Make this animation the child of another animation
        /// </summary>
        /// <param name="owner" type="Sys.Extended.UI.Animation.Animation">
        /// Parent animation
        /// </param>
        /// <returns />
        this._owner = owner;
    },

    raiseStarted: function() {
        /// <summary>
        /// Raise the <code>started</code> event
        /// </summary>
        /// <returns />
        var handlers = this.get_events().getHandler('started');
        if (handlers) {
            handlers(this, Sys.EventArgs.Empty);
        }
    },

    add_started: function(handler) {
        /// <summary>
        /// Adds an event handler for the <code>started</code> event.
        /// </summary>
        /// <param name="handler" type="Function">
        /// The handler to add to the event.
        /// </param>
        /// <returns />
        this.get_events().addHandler("started", handler);
    },

    remove_started: function(handler) {
        /// <summary>
        /// Removes an event handler for the <code>started</code> event.
        /// </summary>
        /// <param name="handler" type="Function">
        /// The handler to remove from the event.
        /// </param>
        /// <returns />
        this.get_events().removeHandler("started", handler);
    },

    raiseEnded: function() {
        /// <summary>
        /// Raise the <code>ended</code> event
        /// </summary>
        /// <returns />
        var handlers = this.get_events().getHandler('ended');
        if (handlers) {
            handlers(this, Sys.EventArgs.Empty);
        }
    },

    add_ended: function(handler) {
        /// <summary>
        /// Adds an event handler for the <code>ended</code> event.
        /// </summary>
        /// <param name="handler" type="Function">
        /// The handler to add to the event.
        /// </param>
        /// <returns />
        this.get_events().addHandler("ended", handler);
    },

    remove_ended: function(handler) {
        /// <summary>
        /// Removes an event handler for the <code>ended</code> event.
        /// </summary>
        /// <param name="handler" type="Function">
        /// The handler to remove from the event.
        /// </param>
        /// <returns />
        this.get_events().removeHandler("ended", handler);
    },

    raiseStep: function() {
        /// <summary>
        /// Raise the <code>step</code> event
        /// </summary>
        /// <returns />
        var handlers = this.get_events().getHandler('step');
        if (handlers) {
            handlers(this, Sys.EventArgs.Empty);
        }
    },

    add_step: function(handler) {
        /// <summary>
        /// Adds an event handler for the <code>step</code> event.
        /// </summary>
        /// <param name="handler" type="Function">
        /// The handler to add to the event.
        /// </param>
        /// <returns />
        this.get_events().addHandler("step", handler);
    },

    remove_step: function(handler) {
        /// <summary>
        /// Removes an event handler for the <code>step</code> event.
        /// </summary>
        /// <param name="handler" type="Function">
        /// The handler to remove from the event.
        /// </param>
        /// <returns />
        this.get_events().removeHandler("step", handler);
    },

    get_target: function() {
        /// <value type="Sys.UI.DomElement" domElement="true" mayBeNull="true">
        /// Target of the animation.  If the target of this animation is null and
        /// the animation has a parent, then it will recursively use the target of
        /// the parent animation instead.
        /// </value>
        /// <remarks>
        /// Do not set this property in a generic Xml animation description. It should be set
        /// using either the extender's TargetControlID or the AnimationTarget property (the latter
        /// maps to Sys.Extended.UI.Animation.set_animationTarget).  The only valid way to
        /// set this property in the generic Xml animation description is to use the dynamic
        /// property TargetScript="$get('myElement')".
        /// <remarks>
        if (!this._target && this._parentAnimation) {
            return this._parentAnimation.get_target();
        }
        return this._target;
    },
    set_target: function(value) {
        if (this._target != value) {
            this._target = value;
            this.raisePropertyChanged('target');
        }
    },

    set_animationTarget: function(id) {
        /// <value type="string" mayBeNull="false">
        /// ID of a Sys.UI.DomElement or Sys.UI.Control to use as the target of the animation
        /// </value>
        /// <remarks>
        /// If no Sys.UI.DomElement or Sys.UI.Control can be found for the given ID, an
        /// argument exception will be thrown.
        /// <remarks>

        var target = null;
        var element = $get(id);
        if (element) {
            target = element;
        } else {
            var ctrl = $find(id);
            if (ctrl) {
                element = ctrl.get_element();
                if (element) {
                    target = element;
                }
            }
        }

        if (target) {
            this.set_target(target);
        } else {
            throw Error.argument('id', String.format(Sys.Extended.UI.Resources.Animation_TargetNotFound, id));
        }
    },

    get_duration: function() {
        /// <value type="Number">
        /// Length of the animation in seconds.  The default is 1.
        /// </value>
        return this._duration;
    },
    set_duration: function(value) {
        value = this._getFloat(value);
        if (this._duration != value) {
            this._duration = value;
            this.raisePropertyChanged('duration');
        }
    },

    get_fps: function() {
        /// <value type="Number" integer="true">
        /// Number of steps per second.  The default is 25.
        /// </value>
        return this._fps;
    },
    set_fps: function(value) {
        value = this._getInteger(value);
        if (this.fps != value) {
            this._fps = value;
            this.raisePropertyChanged('fps');
        }
    },

    get_isActive: function() {
        /// <value type="Boolean">
        /// <code>true</code> if animation is active, <code>false</code> if not.
        /// </value>
        return (this._timer !== null);
    },

    get_isPlaying: function() {
        /// <value type="Boolean">
        /// <code>true</code> if animation is playing, <code>false</code> if not.
        /// </value>
        return (this._timer !== null) && this._timer.get_enabled();
    },

    get_percentComplete: function() {
        /// <value type="Number">
        /// Percentage of the animation already played.
        /// </value>
        return this._percentComplete;
    },

    _getBoolean: function(value) {
        /// <summary>
        /// Helper to convert strings to booleans for property setters
        /// </summary>
        /// <param name="value" type="Object">
        /// Value to convert if it's a string
        /// </param>
        /// <returns type="Object">
        /// Value that has been converted if it was a string
        /// </returns>
        if (String.isInstanceOfType(value)) {
            return Boolean.parse(value);
        }
        return value;
    },

    _getInteger: function(value) {
        /// <summary>
        /// Helper to convert strings to integers for property setters
        /// </summary>
        /// <param name="value" type="Object">Value to convert if it's a string</param>
        /// <returns type="Object">Value that has been converted if it was a string</returns>
        if (String.isInstanceOfType(value)) {
            return parseInt(value);
        }
        return value;
    },

    _getFloat: function(value) {
        /// <summary>
        /// Helper to convert strings to floats for property setters
        /// </summary>
        /// <param name="value" type="Object">Value to convert if it's a string</param>
        /// <returns type="Object">Value that has been converted if it was a string</returns>
        if (String.isInstanceOfType(value)) {
            return parseFloat(value);
        }
        return value;
    },

    _getEnum: function(value, type) {
        /// <summary>
        /// Helper to convert strings to enum values for property setters
        /// </summary>
        /// <param name="value" type="Object">Value to convert if it's a string</param>
        /// <param name="type" type="Type">Type of the enum to convert to</param>
        /// <returns type="Object">Value that has been converted if it was a string</returns>
        if (String.isInstanceOfType(value) && type && type.parse) {
            return type.parse(value);
        }
        return value;
    }
}
$AA.Animation.registerClass('Sys.Extended.UI.Animation.Animation', Sys.Component);
$AA.registerAnimation('animation', $AA.Animation);


$AA.ParentAnimation = function(target, duration, fps, animations) {
    /// <summary>
    /// The <code>ParentAnimation</code> serves as a base class for all animations that contain children (such as
    /// <see cref="Sys.Extended.UI.Animation.ParallelAnimation" />, <see cref="Sys.Extended.UI.SequenceAnimation" />,
    /// etc.).  It does not actually play the animations, so any classes that inherit from it must do so.  Any animation
    /// that requires nested child animations must inherit from this class, although it will likely want to inherit off of
    /// <see cref="Sys.Extended.UI.Animation.ParallelAnimation" /> or <see cref="Sys.Extended.UI.SequenceAnimation" />
    /// which will actually play their child animations.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="animations" mayBeNull="true" optional="true" parameterArray="true" elementType="Sys.Extended.UI.Animation.Animation">
    /// Array of child animations to be played
    /// </param>
    /// <animation>Parent</animation>
    $AA.ParentAnimation.initializeBase(this, [target, duration, fps]);
    
    this._animations = [];
    
    if (animations && animations.length) {
        for (var i = 0; i < animations.length; i++) {
            this.add(animations[i]);
        }
    }
}
$AA.ParentAnimation.prototype = {
    initialize : function() {
    	/// <summary>
        /// Initialize the parent along with any child animations that have not yet been initialized themselves
    	/// </summary>
    	/// <returns />
        $AA.ParentAnimation.callBaseMethod(this, 'initialize');
        
        if (this._animations) {
            for (var i = 0; i < this._animations.length; i++) {
                var animation = this._animations[i];
                if (animation && !animation.get_isInitialized) {
                    animation.initialize();
                }
            }
        }
    },
    
    dispose : function() {
    	/// <summary>
        /// Dispose of the child animations
    	/// </summary>
    	/// <returns />

        this.clear();
        this._animations = null;
        $AA.ParentAnimation.callBaseMethod(this, 'dispose');
    },
    
    get_animations : function() {
    	/// <value elementType="Sys.Extended.UI.Animation.Animation">
        /// Array of child animations to be played (there are no assumptions placed on order because it will matter for some
        /// derived animations like <see cref="Sys.Extended.UI.Animation.SequenceAnimation" />, but not for
        /// others like <see cref="Sys.Extended.UI.Animation.ParallelAnimation" />).  To manipulate the child
        /// animations, use the functions <code>add</code>, <code>clear</code>, <code>remove</code>, and <code>removeAt</code>.
    	/// </value>
        return this._animations;
    },
    
    add : function(animation) {
    	/// <summary>
        /// Add an animation as a child of this animation.
    	/// </summary>
    	/// <param name="animation" type="Sys.Extended.UI.Animation.Animation">Child animation to add</param>
    	/// <returns />

        if (this._animations) {
            if (animation) {
                animation._parentAnimation = this;
            }
            Array.add(this._animations, animation);
            this.raisePropertyChanged('animations');
        }
    },
    
    remove : function(animation) {
        /// <summary>
        /// Remove the animation from the array of child animations.
        /// </summary>
        /// <param name="animation" type="Sys.Extended.UI.Animation.Animation">
        /// Child animation to remove
        /// </param>
        /// <returns />
        /// <remarks>
        /// This will dispose the removed animation.
        /// </remarks>

        if (this._animations) {
            if (animation) {
                animation.dispose();
            }
            Array.remove(this._animations, animation);
            this.raisePropertyChanged('animations');
        }
    },
    
    removeAt : function(index) {
        /// <summary>
        /// Remove the animation at a given index from the array of child animations.
        /// </summary>
        /// <param name="index" type="Number" integer="true">
        /// Index of the child animation to remove
        /// </param>
        /// <returns />
        
        if (this._animations) {
            var animation = this._animations[index];
            if (animation) {
                animation.dispose();
            }
            Array.removeAt(this._animations, index);
            this.raisePropertyChanged('animations');
        }
    },
    
    clear : function() {
    	/// <summary>
        /// Clear the array of child animations.
    	/// </summary>
    	/// <remarks>
    	/// This will dispose the cleared child animations.
    	/// </remarks>
    	/// <returns />

        if (this._animations) {
            for (var i = this._animations.length - 1; i >= 0; i--) {
                this._animations[i].dispose();
                this._animations[i] = null;
            }
            Array.clear(this._animations);
            this._animations = [];
            this.raisePropertyChanged('animations');
        }
    }
}
$AA.ParentAnimation.registerClass('Sys.Extended.UI.Animation.ParentAnimation', $AA.Animation);
$AA.registerAnimation('parent', $AA.ParentAnimation);


$AA.ParallelAnimation = function(target, duration, fps, animations) {
    /// <summary>
    /// The <code>ParallelAnimation</code> plays several animations simultaneously.  It inherits from
    /// <see cref="Sys.Extended.UI.Animation.ParentAnimation" />, but makes itself the owner of all
    /// its child animations to allow the use a single timer and syncrhonization mechanisms shared with
    /// all the children (in other words, the <code>duration</code> properties of any child animations
    /// are ignored in favor of the parent's <code>duration</code>).  It is very useful in creating
    /// sophisticated effects through combination of simpler animations.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="animations" mayBeNull="true" optional="true" parameterArray="true" elementType="Sys.Extended.UI.Animation.Animation">
    /// Array of child animations
    /// </param>
    /// <animation>Parallel</animation>
    $AA.ParallelAnimation.initializeBase(this, [target, duration, fps, animations]);
}
$AA.ParallelAnimation.prototype = {
    add : function(animation) {
    	/// <summary>
        /// Add an animation as a child of this animation and make ourselves its owner.
    	/// </summary>
    	/// <param name="animation" type="Sys.Extended.UI.Animation.Animation">Child animation to add</param>
    	/// <returns />
        $AA.ParallelAnimation.callBaseMethod(this, 'add', [animation]);
        animation.setOwner(this);
    },
    
    onStart : function() {
        /// <summary>
        /// Get the child animations ready to play
        /// </summary>
        /// <returns />

        $AA.ParallelAnimation.callBaseMethod(this, 'onStart');
        var animations = this.get_animations();
        for (var i = 0; i < animations.length; i++) {
            animations[i].onStart();
        }
    },
    
    onStep : function(percentage) {
        /// <summary>
        /// Progress the child animations through each frame
        /// </summary>
        /// <param name="percentage" type="Number">
        /// Percentage of the animation already complete
        /// </param>
        /// <returns />

        var animations = this.get_animations();
        for (var i = 0; i < animations.length; i++) {
            animations[i].onStep(percentage);
        }
    },
    
    onEnd : function() {
        /// <summary>
        /// Finish playing all of the child animations
        /// </summary>
        /// <returns />

        var animations = this.get_animations();
        for (var i = 0; i < animations.length; i++) {
            animations[i].onEnd();
        }
        $AA.ParallelAnimation.callBaseMethod(this, 'onEnd');
    }
}
$AA.ParallelAnimation.registerClass('Sys.Extended.UI.Animation.ParallelAnimation', $AA.ParentAnimation);
$AA.registerAnimation('parallel', $AA.ParallelAnimation);


$AA.SequenceAnimation = function(target, duration, fps, animations, iterations) {
    /// <summary>
    /// The <code>SequenceAnimation</code> runs several animations one after the other.  It can also
    /// repeat the sequence of animations for a specified number of iterations (which defaults to a
    /// single iteration, but will repeat forever if you specify zero or less iterations).  Also, the
    /// <code>SequenceAnimation</code> cannot be a child of a <see cref="Sys.Extended.UI.Animation.ParallelAnimation" />
    /// (or any animation inheriting from it).
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="animations" mayBeNull="true" optional="true" parameterArray="true" elementType="Sys.Extended.UI.Animation.Animation">
    /// Array of child animations
    /// </param>
    /// <param name="iterations" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of times to repeatedly play the sequence.  If zero or less iterations are specified, the sequence
    /// will repeat forever.  The default value is 1 iteration.
    /// </param>
    /// <remarks>
    /// The <code>SequenceAnimation</code> ignores the <code>duration</code> and <code>fps</code>
    /// properties, and will let each of its child animations use any settings they please.
    /// </remarks>
    /// <animation>Sequence</animation>
    $AA.SequenceAnimation.initializeBase(this, [target, duration, fps, animations]);

    this._handler = null;
    
    this._paused = false;
    this._playing = false;
    
    this._index = 0;
    
    this._remainingIterations = 0;
    
    this._iterations = (iterations !== undefined) ? iterations : 1;
}
$AA.SequenceAnimation.prototype = {
    dispose : function() {
    	/// <summary>
        /// Dispose the animation
        /// </summary>
        /// <returns />
        this._handler = null;
        $AA.SequenceAnimation.callBaseMethod(this, 'dispose');
    },
    
    stop : function() {
        /// <summary>
        /// Stop playing the entire sequence of animations
        /// </summary>
        /// <returns />
        /// <remarks>
        /// Stopping this animation will perform the last step of each child animation, thereby leaving their
        /// target elements in a state consistent with the animation playing completely. If this animation is
        /// the child of another, you must call <code>stop</code> on its parent instead.
        /// </remarks>

        if (this._playing) {
            var animations = this.get_animations();
            if (this._index < animations.length) {
                animations[this._index].remove_ended(this._handler);
                for (var i = this._index; i < animations.length; i++) {
                    animations[i].stop();
                }
            }
            this._playing = false;
            this._paused = false;
            this.raisePropertyChanged('isPlaying');
            this.onEnd();
        }
    },
    
    pause : function() {
        /// <summary>
        /// Pause the animation if it is playing.  Calling <code>play</code> will resume where
        /// the animation left off.
        /// </summary>
        /// <returns />
        /// <remarks>
        /// If this animation is the child of another, you must call <code>pause</code> on its parent instead.
        /// </remarks>

        if (this.get_isPlaying()) {
            var current = this.get_animations()[this._index];
            if (current != null) {
                current.pause();
            }
            this._paused = true;
            this.raisePropertyChanged('isPlaying');
        }
    },
    
    play : function() {
        /// <summary>
        /// Play the sequence of animations from the beginning or where it was left off when paused
        /// </summary>
        /// <returns />
        /// <remarks>
        /// If this animation is the child of another, you must call <code>play</code> on its parent instead
        /// </remarks>

        var animations = this.get_animations();
        if (!this._playing) {
            this._playing = true;
            if (this._paused) {
                this._paused = false;
                var current = animations[this._index];
                if (current != null) {
                    current.play();
                    this.raisePropertyChanged('isPlaying');
                }
            } else {
                this.onStart();
                this._index = 0;
                var first = animations[this._index];
                if (first) {
                    first.add_ended(this._handler);
                    first.play();
                    this.raisePropertyChanged('isPlaying');
                } else {
                    this.stop();
                }
            }
        }
    },
    
    onStart : function() {
        /// <summary>
        /// The <code>onStart</code> method is called just before the animation is played each time
        /// </summary>
        /// <returns />
        $AA.SequenceAnimation.callBaseMethod(this, 'onStart');
        this._remainingIterations = this._iterations - 1;
        
        if (!this._handler) {
            this._handler = Function.createDelegate(this, this._onEndAnimation);
        }
    },
    
    _onEndAnimation : function() {
    	/// <summary>
        /// Wait for the end of each animation, and then continue by playing the other animations remaining
        /// in the sequence.  Stop when it reaches the last animation and there are no remaining iterations.
    	/// </summary>
    	/// <returns />

        var animations = this.get_animations();
        var current = animations[this._index++];
        if (current) {
            current.remove_ended(this._handler);
        }
        
        if (this._index < animations.length) {
            var next = animations[this._index];
            next.add_ended(this._handler);
            next.play();
        } else if (this._remainingIterations >= 1 || this._iterations <= 0) {
            this._remainingIterations--;
            this._index = 0;
            var first = animations[0];
            first.add_ended(this._handler);
            first.play();
        } else {
            this.stop();
        }
    },
    
    onStep : function(percentage) {
        /// <summary>
        /// Raises an invalid operation exception because this will only be called if a <code>SequenceAnimation</code>
        /// has been nested inside an <see cref="Sys.Extended.UI.Animation.ParallelAnimation" /> (or a derived type).
        /// </summary>
        /// <param name="percentage" type="Number">Percentage of the animation already complete</param>
        /// <returns />
        throw Error.invalidOperation(Sys.Extended.UI.Resources.Animation_CannotNestSequence);
    },
    
    onEnd : function() {
        /// <summary>
        /// The <code>onEnd</code> method is called just after the animation is played each time.
        /// </summary>
        /// <returns />
        this._remainingIterations = 0;
        $AA.SequenceAnimation.callBaseMethod(this, 'onEnd');
    },
    
    get_isActive : function() {
    	/// <value type="Boolean">
        /// <code>true</code> if animation is active, <code>false</code> if not.
        /// </value>
        return true;
    },
    
    get_isPlaying : function() {
    	/// <value type="Boolean">
        /// <code>true</code> if animation is playing, <code>false</code> if not.
        /// </value>
        return this._playing && !this._paused;
    },
    
    get_iterations : function() {
        /// <value type="Number" integer="true">
        /// Number of times to repeatedly play the sequence.  If zero or less iterations are specified, the sequence
        /// will repeat forever.  The default value is 1 iteration.
        /// </value>
        return this._iterations;
    },
    set_iterations : function(value) {
        value = this._getInteger(value);
        if (this._iterations != value) {
            this._iterations = value;
            this.raisePropertyChanged('iterations');
        }
    },
    
    get_isInfinite : function() {
    	/// <value type="Boolean">
        /// <code>true</code> if this animation will repeat forever, <code>false</code> otherwise.
    	/// </value>
        return this._iterations <= 0;
    }
}
$AA.SequenceAnimation.registerClass('Sys.Extended.UI.Animation.SequenceAnimation', $AA.ParentAnimation);
$AA.registerAnimation('sequence', $AA.SequenceAnimation);


$AA.SelectionAnimation = function(target, duration, fps, animations) {
    /// <summary>
    /// The <code>SelectionAnimation</code> will run a single animation chosen from of its child animations. It is
    /// important to note that the <code>SelectionAnimation</code> ignores the <code>duration</code> and <code>fps</code>
    /// properties, and will let each of its child animations use any settings they please.  This is a base class with no
    /// functional implementation, so consider using <see cref="Sys.Extended.UI.Animation.ConditionAnimation" /> or
    /// <see cref="Sys.Extended.UI.Animation.CaseAnimation" /> instead.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="animations" mayBeNull="true" optional="true" parameterArray="true" elementType="Sys.Extended.UI.Animation.Animation">
    /// Array of child animations
    /// </param>
    /// <animation>Selection</animation>
    $AA.SelectionAnimation.initializeBase(this, [target, duration, fps, animations]);
    
    this._selectedIndex = -1;
    
    this._selected = null;
}
$AA.SelectionAnimation.prototype = {    
    getSelectedIndex : function() {
        /// <summary>
        /// Get the index of the animation that is selected to be played.  If this returns an index outside the bounds of
        /// the child animations array, then nothing is played.
        /// </summary>
        /// <returns type="Number" integer="true">
        /// Index of the selected child animation to play
        /// </returns>
        throw Error.notImplemented();
    },
    
    onStart : function() {
    	/// <summary>
        /// The <code>onStart</code> method is called just before the animation is played each time.
        /// </summary>
        /// <returns />
	    $AA.SelectionAnimation.callBaseMethod(this, 'onStart');
	    
	    var animations = this.get_animations();
	    this._selectedIndex = this.getSelectedIndex();
	    if (this._selectedIndex >= 0 && this._selectedIndex < animations.length) {
	        this._selected = animations[this._selectedIndex];
	        if (this._selected) {
	            this._selected.setOwner(this);
	            this._selected.onStart();
	        }
	    }
    },
    
    onStep : function(percentage) {
    	/// <summary>
        /// The <code>onStep</code> method is called repeatedly to progress the animation through each frame
        /// </summary>
        /// <param name="percentage" type="Number">Percentage of the animation already complete</param>
        /// <returns />

        if (this._selected) {
    	    this._selected.onStep(percentage);
    	}
    },
    
    onEnd : function() {
    	/// <summary>
        /// The <code>onEnd</code> method is called just after the animation is played each time.
        /// </summary>
        /// <returns />

        if (this._selected) {
    	    this._selected.onEnd();
    	    this._selected.setOwner(null);
    	}
    	this._selected = null;
    	this._selectedIndex = null;
	    $AA.SelectionAnimation.callBaseMethod(this, 'onEnd');
    }
}
$AA.SelectionAnimation.registerClass('Sys.Extended.UI.Animation.SelectionAnimation', $AA.ParentAnimation);
$AA.registerAnimation('selection', $AA.SelectionAnimation);


$AA.ConditionAnimation = function(target, duration, fps, animations, conditionScript) {
    /// <summary>
    /// The <code>ConditionAnimation</code> is used as a control structure to play a specific child animation
    /// depending on the result of executing the <code>conditionScript</code>.  If the <code>conditionScript</code>
    /// evaluates to <code>true</code>, the first child animation is played.  If it evaluates to <code>false</code>,
    /// the second child animation is played (although nothing is played if a second animation is not present).
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="animations" mayBeNull="true" optional="true" parameterArray="true" elementType="Sys.Extended.UI.Animation.Animation">
    /// Array of child animations
    /// </param>
    /// <param name="conditionScript" type="String" mayBeNull="true" optional="true">
    /// JavaScript that should evaluate to <code>true</code> or <code>false</code> to determine which child
    /// animation to play.
    /// </param>
    /// <animation>Condition</animation>
    $AA.ConditionAnimation.initializeBase(this, [target, duration, fps, animations]);
    
    this._conditionScript = conditionScript;   
}
$AA.ConditionAnimation.prototype = {    
   getSelectedIndex : function() {
       /// <summary>
       /// Get the index of the animation that is selected to be played.  If this returns an index outside the bounds of
       /// the child animations array, then nothing is played.
       /// </summary>
       /// <returns type="Number" integer="true">
       /// Index of the selected child animation to play
       /// </returns>

        var selected = -1;
        if (this._conditionScript && this._conditionScript.length > 0) {
            try {
                selected = eval(this._conditionScript) ? 0 : 1;
            } catch(ex) {
            }
        }
        return selected;
    },
    
    get_conditionScript : function() {
    	/// <value type="String">
        /// JavaScript that should evaluate to <code>true</code> or <code>false</code> to determine which
        /// child animation to play.
    	/// </value>
        return this._conditionScript;
    },
    set_conditionScript : function(value) {
        if (this._conditionScript != value) {
            this._conditionScript = value;
            this.raisePropertyChanged('conditionScript');
        }
    }
}
$AA.ConditionAnimation.registerClass('Sys.Extended.UI.Animation.ConditionAnimation', $AA.SelectionAnimation);
$AA.registerAnimation('condition', $AA.ConditionAnimation);


$AA.CaseAnimation = function(target, duration, fps, animations, selectScript) {
    /// <summary>
    /// The <code>CaseAnimation</code> is used as a control structure to play a specific child animation depending on
    /// the result of executing the <code>selectScript</code>, which should return the index of the child animation to
    /// play (this is similar to the <code>case</code> or <code>select</code> statements in C#/VB, etc.).  If the provided
    /// index is outside the bounds of the child animations array (or if nothing was returned) then we will not play anything.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="animations" mayBeNull="true" optional="true" parameterArray="true" elementType="Sys.Extended.UI.Animation.Animation">
    /// Array of child animations
    /// </param>
    /// <param name="selectScript" type="String" mayBeNull="true" optional="true">
    /// JavaScript that should evaluate to the index of the appropriate child animation to play.  If this returns an index outside the bounds of the child animations array, then nothing is played.
    /// </param>
    /// <animation>Case</animation>
    $AA.CaseAnimation.initializeBase(this, [target, duration, fps, animations]);

    this._selectScript = selectScript;
}
$AA.CaseAnimation.prototype = {
    getSelectedIndex : function() {
        /// <summary>
        /// Get the index of the animation that is selected to be played.  If this returns an index outside the bounds of
        /// the child animations array, then nothing is played.
        /// </summary>
        /// <returns type="Number" integer="true">
        /// Index of the selected child animation to play
        /// </returns>

        var selected = -1;
        if (this._selectScript && this._selectScript.length > 0) {
            try {
                var result = eval(this._selectScript)
                if (result !== undefined)
                    selected = result;
            } catch (ex) {
            }
        }
        return selected;
    },
    
    get_selectScript : function() {
        /// <value type="String">
        /// JavaScript that should evaluate to the index of the appropriate child animation to play.  If this returns an index outside the bounds of the child animations array, then nothing is played.
        /// </value>
        return this._selectScript;
    },
    set_selectScript : function(value) {
        if (this._selectScript != value) {
            this._selectScript = value;
            this.raisePropertyChanged('selectScript');
        }
    }
}
$AA.CaseAnimation.registerClass('Sys.Extended.UI.Animation.CaseAnimation', $AA.SelectionAnimation);
$AA.registerAnimation('case', $AA.CaseAnimation);


$AA.FadeEffect = function() {
    /// <summary>
    /// The FadeEffect enumeration determines whether a fade animation is used to fade in or fade out.
    /// </summary>
    /// <field name="FadeIn" type="Number" integer="true" />
    /// <field name="FadeOut" type="Number" integer="true" />
    throw Error.invalidOperation();
}
$AA.FadeEffect.prototype = {
    FadeIn : 0,
    FadeOut : 1
}
$AA.FadeEffect.registerEnum("Sys.Extended.UI.Animation.FadeEffect", false);


$AA.FadeAnimation = function(target, duration, fps, effect, minimumOpacity, maximumOpacity, forceLayoutInIE) {
    /// <summary>
    /// The <code>FadeAnimation</code> is used to fade an element in or out of view, depending on the
    /// provided <see cref="Sys.Extended.UI.Animation.FadeEffect" />, by settings its opacity.
    /// The minimum and maximum opacity values can be specified to precisely control the fade.
    /// You may also consider using <see cref="Sys.Extended.UI.Animation.FadeInAnimation" /> or
    /// <see cref="Sys.Extended.UI.Animation.FadeOutAnimation" /> if you know the only direction you
    /// are fading.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="effect" type="Sys.Extended.UI.Animation.FadeEffect" mayBeNull="true" optional="true">
    /// Determine whether to fade the element in or fade the element out.  The possible values are <code>FadeIn</code>
    /// and <code>FadeOut</code>.  The default value is <code>FadeOut</code>.
    /// </param>
    /// <param name="minimumOpacity" type="Number" mayBeNull="true" optional="true">
    /// Minimum opacity to use when fading in or out. Its value can range from between 0 to 1. The default value is 0.
    /// </param>
    /// <param name="maximumOpacity" type="Number" mayBeNull="true" optional="true">
    /// Maximum opacity to use when fading in or out. Its value can range from between 0 to 1. The default value is 1.
    /// </param>
    /// <param name="forceLayoutInIE" type="Boolean" mayBeNull="true" optional="true">
    /// Whether or not we should force a layout to be created for Internet Explorer by giving it a width and setting its
    /// background color (the latter is required in case the user has ClearType enabled). The default value is <code>true</code>.
    /// This is obviously ignored when working in other browsers.
    /// </param>
    /// <animation>Fade</animation>
    $AA.FadeAnimation.initializeBase(this, [target, duration, fps]);

    this._effect = (effect !== undefined) ? effect : $AA.FadeEffect.FadeIn;
    
    this._max = (maximumOpacity !== undefined) ? maximumOpacity : 1;
    this._min = (minimumOpacity !== undefined) ? minimumOpacity : 0;
    
    this._start = this._min;
    this._end = this._max;
    
    this._layoutCreated = false;

    this._forceLayoutInIE = (forceLayoutInIE === undefined || forceLayoutInIE === null) ? true : forceLayoutInIE;
    
    this._currentTarget = null;

    this._resetOpacities();  
}
$AA.FadeAnimation.prototype = {
    _resetOpacities : function() {
    	/// <summary>
        /// Set the starting and ending opacity values based on the effect (i.e. when we're fading
        /// in we go from <code>_min</code> to <code>_max</code>, but we go <code>_max</code> to
        /// <code>_min</code> when fading out)
    	/// </summary>
    	/// <returns />

        if (this._effect == $AA.FadeEffect.FadeIn) {
            this._start = this._min;
            this._end = this._max;
        } else {
            this._start = this._max;
            this._end = this._min;
        }
    },
    
    _createLayout : function() {
    	/// <summary>
        /// Create a layout when using Internet Explorer (which entails setting a width and also
        /// a background color if it currently has neither)
    	/// </summary>
    	/// <returns />

        var element = this._currentTarget;
        if (element) {
            this._originalWidth = $common.getCurrentStyle(element, 'width');
            var originalHeight = $common.getCurrentStyle(element, 'height');
            this._originalBackColor = $common.getCurrentStyle(element, 'backgroundColor');

            if ((!this._originalWidth || this._originalWidth == '' || this._originalWidth == 'auto') &&
                (!originalHeight || originalHeight == '' || originalHeight == 'auto')) {
                element.style.width = element.offsetWidth + 'px';
            }
            
            if (!this._originalBackColor || this._originalBackColor == '' || this._originalBackColor == 'transparent' || this._originalBackColor == 'rgba(0, 0, 0, 0)') {
                element.style.backgroundColor = $common.getInheritedBackgroundColor(element);
            }
            
            this._layoutCreated = true;
        }
    },
    
    onStart : function() {
    	/// <summary>
        /// The <code>onStart</code> method is called just before the animation is played each time.
        /// </summary>
        /// <returns />       
        $AA.FadeAnimation.callBaseMethod(this, 'onStart');
        
        this._currentTarget = this.get_target();
        this.setValue(this._start);
        
        if (this._forceLayoutInIE && !this._layoutCreated && Sys.Browser.agent == Sys.Browser.InternetExplorer) {
            this._createLayout();
        }
    },
    
    getAnimatedValue : function(percentage) {
    	/// <summary>
        /// Determine the current opacity after the given percentage of its duration has elapsed
        /// </summary>
        /// <param name="percentage" type="Number">Percentage of the animation already complete</param>
        /// <returns type="Number">
        /// Current opacity after the given percentage of its duration has elapsed that will
        /// be passed to <code>setValue</code>
        /// </returns>
        return this.interpolate(this._start, this._end, percentage);
    },
    
    setValue : function(value) {
        /// <summary>
        /// Set the current opacity of the element.
        /// </summary>
        /// <param name="value" type="Number">
        /// Current opacity (as retreived from <code>getAnimatedValue</code>)
        /// </param>
        /// <returns />
        /// <remarks>
        /// This method will be replaced by a dynamically generated function that requires no logic
        /// to determine whether it should use filters or the style's opacity.
        /// </remarks>
        if (this._currentTarget) {
            $common.setElementOpacity(this._currentTarget, value);
        }
    },
    
    
    get_effect : function() {
    	/// <value type="Sys.Extended.UI.Animation.FadeEffect">
        /// Determine whether to fade the element in or fade the element out.  The possible values are
        /// <code>FadeIn</code> and <code>FadeOut</code>.  The default value is <code>FadeOut</code>.
    	/// </value>
        return this._effect;
    },
    set_effect : function(value) {
        value = this._getEnum(value, $AA.FadeEffect);
        if (this._effect != value) {
            this._effect = value;
            this._resetOpacities();
            this.raisePropertyChanged('effect');
        }
    },
    
    get_minimumOpacity : function() {
        /// <value type="Number">
        /// Minimum opacity to use when fading in or out. Its value can range from between 0 to 1.
        /// The default value is 0.
        /// </value>
	    return this._min;
    },
    set_minimumOpacity : function(value) {
        value = this._getFloat(value);
        if (this._min != value) {
            this._min = value;
            this._resetOpacities();
            this.raisePropertyChanged('minimumOpacity');
        }
    },
    
    get_maximumOpacity : function() {
        /// <value type="Number">
        /// Maximum opacity to use when fading in or out. Its value can range from between 0 to 1.
        /// The default value is 1.
        /// </value>
        return this._max;
    },
    set_maximumOpacity : function(value) {
        value = this._getFloat(value);
        if (this._max != value) {
            this._max = value;
            this._resetOpacities();
            this.raisePropertyChanged('maximumOpacity');
        }
    },
    
    get_forceLayoutInIE : function() {
        /// <value type="Boolean">
        /// Whether or not we should force a layout to be created for Internet Explorer by giving it a width and setting its
        /// background color (the latter is required in case the user has ClearType enabled). The default value is <code>true</code>.
        /// This is obviously ignored when working in other browsers.
        /// </value>
        return this._forceLayoutInIE;
    },
    set_forceLayoutInIE : function(value) {
        value = this._getBoolean(value);
        if (this._forceLayoutInIE != value) {
            this._forceLayoutInIE = value;
            this.raisePropertyChanged('forceLayoutInIE');
        }
    },
    
    set_startValue : function(value) {
        /// <value type="Number">
        /// Set the start value (so that child animations can set the current opacity as the start value when fading in or out)
        /// </value>
        value = this._getFloat(value);
        this._start = value;
    }
}
$AA.FadeAnimation.registerClass('Sys.Extended.UI.Animation.FadeAnimation', $AA.Animation);
$AA.registerAnimation('fade', $AA.FadeAnimation);


$AA.FadeInAnimation = function(target, duration, fps, minimumOpacity, maximumOpacity, forceLayoutInIE) {
    /// <summary>
    /// The <code>FadeInAnimation</code> will fade the target in by moving from hidden to visible.
    /// It starts the animation the target's current opacity.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="minimumOpacity" type="Number" mayBeNull="true" optional="true">
    /// Minimum opacity to use when fading in or out. Its value can range from between 0 to 1. The default value is 0.
    /// </param>
    /// <param name="maximumOpacity" type="Number" mayBeNull="true" optional="true">
    /// Maximum opacity to use when fading in or out. Its value can range from between 0 to 1. The default value is 1.
    /// </param>
    /// <param name="forceLayoutInIE" type="Boolean" mayBeNull="true" optional="true">
    /// Whether or not we should force a layout to be created for Internet Explorer by giving it a width and setting its
    /// background color (the latter is required in case the user has ClearType enabled). The default value is <code>true</code>.
    /// This is obviously ignored when working in other browsers.
    /// </param>
    /// <animation>FadeIn</animation>
    $AA.FadeInAnimation.initializeBase(this, [target, duration, fps, $AA.FadeEffect.FadeIn, minimumOpacity, maximumOpacity, forceLayoutInIE]);
}
$AA.FadeInAnimation.prototype = {
    onStart : function() {
    	/// <summary>
        /// The <code>onStart</code> method is called just before the animation is played each time.
        /// </summary>
        /// <returns />
        $AA.FadeInAnimation.callBaseMethod(this, 'onStart');
        
        if (this._currentTarget) {
            this.set_startValue($common.getElementOpacity(this._currentTarget));
        }
    }
}
$AA.FadeInAnimation.registerClass('Sys.Extended.UI.Animation.FadeInAnimation', $AA.FadeAnimation);
$AA.registerAnimation('fadeIn', $AA.FadeInAnimation);


$AA.FadeOutAnimation = function(target, duration, fps, minimumOpacity, maximumOpacity, forceLayoutInIE) {
    /// <summary>
    /// The FadeInAnimation will fade the element out by moving from visible to hidden. It starts the animation
    /// at the element's current opacity.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="minimumOpacity" type="Number" mayBeNull="true" optional="true">
    /// Minimum opacity to use when fading in or out. Its value can range from between 0 to 1. The default value is 0.
    /// </param>
    /// <param name="maximumOpacity" type="Number" mayBeNull="true" optional="true">
    /// Maximum opacity to use when fading in or out. Its value can range from between 0 to 1. The default value is 1.
    /// </param>
    /// <param name="forceLayoutInIE" type="Boolean" mayBeNull="true" optional="true">
    /// Whether or not we should force a layout to be created for Internet Explorer by giving it a width and setting its
    /// background color (the latter is required in case the user has ClearType enabled). The default value is <code>true</code>.
    /// This is obviously ignored when working in other browsers.
    /// </param>
    /// <animation>FadeOut</animation>
    $AA.FadeOutAnimation.initializeBase(this, [target, duration, fps, $AA.FadeEffect.FadeOut, minimumOpacity, maximumOpacity, forceLayoutInIE]);
}
$AA.FadeOutAnimation.prototype = {
    onStart : function() {
    	/// <summary>
        /// The <code>onStart</code> method is called just before the animation is played each time.
        /// </summary>
        /// <returns />
        $AA.FadeOutAnimation.callBaseMethod(this, 'onStart');

        if (this._currentTarget) {
            this.set_startValue($common.getElementOpacity(this._currentTarget));
        }
    }
}
$AA.FadeOutAnimation.registerClass('Sys.Extended.UI.Animation.FadeOutAnimation', $AA.FadeAnimation);
$AA.registerAnimation('fadeOut', $AA.FadeOutAnimation);


$AA.PulseAnimation = function(target, duration, fps, iterations, minimumOpacity, maximumOpacity, forceLayoutInIE) {
    /// <summary>
    /// The PulseAnimation fades an element in and our repeatedly to create a pulsating
    /// effect.  The iterations determines how many pulses there will be (which defaults
    /// to three, but it will repeat infinitely if given zero or less).  The duration
    /// property defines the duration of each fade in or fade out, not the duration of
    /// the animation as a whole.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="iterations" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of times to repeatedly play the sequence.  If zero or less iterations are specified, the sequence
    /// will repeat forever.  The default value is 1 iteration.
    /// </param>
    /// <param name="minimumOpacity" type="Number" mayBeNull="true" optional="true">
    /// Minimum opacity to use when fading in or out. Its value can range from between 0 to 1. The default value is 0.
    /// </param>
    /// <param name="maximumOpacity" type="Number" mayBeNull="true" optional="true">
    /// Maximum opacity to use when fading in or out. Its value can range from between 0 to 1. The default value is 1.
    /// </param>
    /// <param name="forceLayoutInIE" type="Boolean" mayBeNull="true" optional="true">
    /// Whether or not we should force a layout to be created for Internet Explorer by giving it a width and setting its
    /// background color (the latter is required in case the user has ClearType enabled). The default value is <code>true</code>.
    /// This is obviously ignored when working in other browsers.
    /// </param>
    /// <animation>Pulse</animation>
    $AA.PulseAnimation.initializeBase(this, [target, duration, fps, null, ((iterations !== undefined) ? iterations : 3)]);

    this._out = new $AA.FadeOutAnimation(target, duration, fps, minimumOpacity, maximumOpacity, forceLayoutInIE);
    this.add(this._out);
    
    this._in = new $AA.FadeInAnimation(target, duration, fps, minimumOpacity, maximumOpacity, forceLayoutInIE);
    this.add(this._in);
}
$AA.PulseAnimation.prototype = {
   
    get_minimumOpacity : function() {
        /// <value type="Number">
        /// Minimum opacity to use when fading in or out. Its value can range from between 0 to 1. The default value is 0.
        /// </value>
        return this._out.get_minimumOpacity();
    },
    set_minimumOpacity : function(value) {
        value = this._getFloat(value);
        this._out.set_minimumOpacity(value);
        this._in.set_minimumOpacity(value);
        this.raisePropertyChanged('minimumOpacity');
    },
    
    get_maximumOpacity : function() {
        /// <value type="Number">
        /// Maximum opacity to use when fading in or out. Its value can range from between 0 to 1. The default value is 1.
        /// </value>
        return this._out.get_maximumOpacity();
    },
    set_maximumOpacity : function(value) {
        value = this._getFloat(value);
        this._out.set_maximumOpacity(value);
        this._in.set_maximumOpacity(value);
        this.raisePropertyChanged('maximumOpacity');
    },
    
    get_forceLayoutInIE : function() {
        /// <value type="Boolean">
        /// Whether or not we should force a layout to be created for Internet Explorer by giving it a width and setting its
        /// background color (the latter is required in case the user has ClearType enabled). The default value is <code>true</code>.
        /// This is obviously ignored when working in other browsers.
        /// </value>
        return this._out.get_forceLayoutInIE();
    },
    set_forceLayoutInIE : function(value) {
        value = this._getBoolean(value);
        this._out.set_forceLayoutInIE(value);
        this._in.set_forceLayoutInIE(value);
        this.raisePropertyChanged('forceLayoutInIE');
    },
    
    set_duration : function(value) {
        /// <value type="Number">
        /// Override the <code>duration</code> property
        /// </value>
        value = this._getFloat(value);
        $AA.PulseAnimation.callBaseMethod(this, 'set_duration', [value]);
        this._in.set_duration(value);
        this._out.set_duration(value);
    },
    
    set_fps : function(value) {
        /// <value type="Number" integer="true">
        /// Override the <code>fps</code> property
        /// </value>
        value = this._getInteger(value);
        $AA.PulseAnimation.callBaseMethod(this, 'set_fps', [value]);
        this._in.set_fps(value);
        this._out.set_fps(value);
    }
    
}
$AA.PulseAnimation.registerClass('Sys.Extended.UI.Animation.PulseAnimation', $AA.SequenceAnimation);
$AA.registerAnimation('pulse', $AA.PulseAnimation);


$AA.PropertyAnimation = function(target, duration, fps, property, propertyKey) {
    /// <summary>
    /// The <code>PropertyAnimation</code> is a useful base animation that will assign the value from
    /// <code>getAnimatedValue</code> to a specified <code>property</code>. You can provide the name of
    /// a <code>property</code> alongside an optional <code>propertyKey</code> (which indicates the value
    /// <code>property[propertyKey]</code>, like <code>style['backgroundColor']</code>).
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="property" type="String" mayBeNull="true" optional="true">
    /// Property of the <code>target</code> element to set when animating
    /// </param>
    /// <param name="propertyKey" type="String" mayBeNull="true" optional="true">
    /// Optional key of the property to be set (which indicates the value property[propertyKey], like style['backgroundColor']). Note that for the style property, the key must be in a JavaScript friendly format (i.e. backgroundColor instead of background-color).
    /// </param>
    /// <animation>Property</animation>
    $AA.PropertyAnimation.initializeBase(this, [target, duration, fps]);

    this._property = property;
    
    this._propertyKey = propertyKey;
    
    this._currentTarget = null;
}
$AA.PropertyAnimation.prototype = {
    onStart : function() {
    	/// <summary>
        /// The <code>onStart</code> method is called just before the animation is played each time.
        /// </summary>
        /// <returns />
        $AA.PropertyAnimation.callBaseMethod(this, 'onStart');

        this._currentTarget = this.get_target();
    },

    setValue : function(value) {
        /// <summary>
        /// Set the current value of the property
        /// </summary>
        /// <param name="value" type="Object" mayBeNull="true">
        /// Value to assign
        /// </param>
        /// <returns />

        var element = this._currentTarget;
        if (element && this._property && this._property.length > 0) { 
            if (this._propertyKey && this._propertyKey.length > 0 && element[this._property]) {
                element[this._property][this._propertyKey] = value;
            } else {
                element[this._property] = value;
            }
        }
    },
    
    getValue : function() {
        /// <summary>
        /// Get the current value from the property
        /// </summary>
        /// <returns type="Object" mayBeNull="true">
        /// Current value of the property
        /// </returns>

        var element = this.get_target();
        if (element && this._property && this._property.length > 0) { 
            var property = element[this._property];
            if (property) {
                if (this._propertyKey && this._propertyKey.length > 0) {
                    return property[this._propertyKey];
                }
                return property;
            }
        }
        return null;
    },
    
    get_property : function() {
        /// <value type="String">
        /// Property of the <code>target</code> element to set when animating
        /// </value>
        return this._property;
    },
    set_property : function(value) {
        if (this._property != value) {
            this._property = value;
            this.raisePropertyChanged('property');
        }
    },
    
    get_propertyKey : function() {
        /// <value type="String" mayBeNull="true" optional="true">
        /// Optional key of the property to be set (which indicates the value property[propertyKey], like style['backgroundColor']). Note that for the style property, the key must be in a JavaScript friendly format (i.e. backgroundColor instead of background-color).
        /// </value>
        return this._propertyKey;
    },
    set_propertyKey : function(value) {
        if (this._propertyKey != value) {
            this._propertyKey = value;
            this.raisePropertyChanged('propertyKey');
        }
    }
}
$AA.PropertyAnimation.registerClass('Sys.Extended.UI.Animation.PropertyAnimation', $AA.Animation);
$AA.registerAnimation('property', $AA.PropertyAnimation);


$AA.DiscreteAnimation = function(target, duration, fps, property, propertyKey, values) {
    /// <summary>
    /// The <code>DiscreteAnimation</code> inherits from <see cref="Sys.Extended.UI.Animation.PropertyAnimation" />
    /// and sets the value of the <code>property</code> to the elements in a provided array of <code>values</code>.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="property" type="String" mayBeNull="true" optional="true">
    /// Property of the <code>target</code> element to set when animating
    /// </param>
    /// <param name="propertyKey" type="String" mayBeNull="true" optional="true">
    /// Optional key of the property to be set (which indicates the value property[propertyKey], like style['backgroundColor']). Note that for the style property, the key must be in a JavaScript friendly format (i.e. backgroundColor instead of background-color).
    /// </param>
    /// <param name="values" mayBeNull="true" optional="true" parameterArray="true" elementType="Object">
    /// Array of possible values of the property that will be iterated over as the animation is played
    /// </param>
    /// <animation>Discrete</animation>
    $AA.DiscreteAnimation.initializeBase(this, [target, duration, fps, property, propertyKey]);

    this._values = (values && values.length) ? values : [];
}
$AA.DiscreteAnimation.prototype = {
    getAnimatedValue : function(percentage) {
        /// <summary>
        /// Assign the value whose index corresponds to the current percentage
        /// </summary>
        /// <param name="percentage" type="Number">
        /// Percentage of the animation already complete
        /// </param>
        /// <returns type="Object">
        /// State of the animation after the given percentage of its duration has elapsed that will
        /// be passed to <code>setValue</code>
        /// </returns>
        var index = Math.floor(this.interpolate(0, this._values.length - 1, percentage));
        return this._values[index];
    },
    
    get_values : function() {
        /// <value parameterArray="true" elementType="Object">
        /// Array of possible values of the property that will be iterated over as the animation is played
        /// </value>
        return this._values;
    },
    set_values : function(value) {
        if (this._values != value) {
            this._values = value;
            this.raisePropertyChanged('values');
        }
    }
}
$AA.DiscreteAnimation.registerClass('Sys.Extended.UI.Animation.DiscreteAnimation', $AA.PropertyAnimation);
$AA.registerAnimation('discrete', $AA.DiscreteAnimation);


$AA.InterpolatedAnimation = function(target, duration, fps, property, propertyKey, startValue, endValue) {
    /// <summary>
    /// The <code>InterpolatedAnimation</code> assigns a range of values between <code>startValue</code>
    /// and <code>endValue</code> to the designated property.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="property" type="String" mayBeNull="true" optional="true">
    /// Property of the <code>target</code> element to set when animating.  The default value is 'style'.
    /// </param>
    /// <param name="propertyKey" type="String" mayBeNull="true" optional="true">
    /// Optional key of the property to be set (which indicates the value property[propertyKey], like style['backgroundColor']). Note that for the style property, the key must be in a JavaScript friendly format (i.e. backgroundColor instead of background-color).
    /// </param>
    /// <param name="startValue" type="Number" mayBeNull="true" optional="true">
    /// Start of the range of values
    /// </param>
    /// <param name="endValue" type="Number" mayBeNull="true" optional="true">
    /// End of the range of values
    /// </param>
    /// <animation>Interpolated</animation>
    $AA.InterpolatedAnimation.initializeBase(this, [target, duration, fps, ((property !== undefined) ? property : 'style'), propertyKey]);

    this._startValue = startValue;
    this._endValue = endValue;
}
$AA.InterpolatedAnimation.prototype = {
    get_startValue : function() {
        /// <value type="Number">
        /// Start of the range of values
        /// </value>
        return this._startValue;
    },
    set_startValue : function(value) {
        value = this._getFloat(value);
        if (this._startValue != value) {
            this._startValue = value;
            this.raisePropertyChanged('startValue');
        }
    },
    
    get_endValue : function() {
        /// <value type="Number">
        /// End of the range of values
        /// </value>
        return this._endValue;
    },
    set_endValue : function(value) {
        value = this._getFloat(value);
        if (this._endValue != value) {
            this._endValue = value;
            this.raisePropertyChanged('endValue');
        }
    }   
}
$AA.InterpolatedAnimation.registerClass('Sys.Extended.UI.Animation.InterpolatedAnimation', $AA.PropertyAnimation);
$AA.registerAnimation('interpolated', $AA.InterpolatedAnimation);


$AA.ColorAnimation = function(target, duration, fps, property, propertyKey, startValue, endValue) {
    /// <summary>
    /// The <code>ColorAnimation</code> transitions the value of the <code>property</code> between
    /// two colors (although it does ignore the alpha channel). The colors must be 7-character hex strings
    /// (like <code>#246ACF</code>).
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="property" type="String" mayBeNull="true" optional="true">
    /// Property of the <code>target</code> element to set when animating.  The default value is 'style'.
    /// </param>
    /// <param name="propertyKey" type="String" mayBeNull="true" optional="true">
    /// Optional key of the property to be set (which indicates the value property[propertyKey], like style['backgroundColor']). Note that for the style property, the key must be in a JavaScript friendly format (i.e. backgroundColor instead of background-color).
    /// </param>
    /// <param name="startValue" type="String" mayBeNull="true" optional="true">
    /// Start of the range of colors
    /// </param>
    /// <param name="endValue" type="String" mayBeNull="true" optional="true">
    /// End of the range of colors
    /// </param>
    /// <animation>Color</animation>
    $AA.ColorAnimation.initializeBase(this, [target, duration, fps, property, propertyKey, startValue, endValue]);
    
    this._start = null;
    this._end = null;
    
    this._interpolateRed = false;
    this._interpolateGreen = false;
    this._interpolateBlue = false;
}
$AA.ColorAnimation.prototype = {
    onStart : function() {
        /// <summary>
        /// Determine which dimensions of color will be animated
        /// </summary>
        /// <returns />
        $AA.ColorAnimation.callBaseMethod(this, 'onStart');
       
        this._start = $AA.ColorAnimation.getRGB(this.get_startValue());
        this._end = $AA.ColorAnimation.getRGB(this.get_endValue());
        
        this._interpolateRed = (this._start.Red != this._end.Red);
        this._interpolateGreen = (this._start.Green != this._end.Green);
        this._interpolateBlue = (this._start.Blue != this._end.Blue);
    },
    
    getAnimatedValue : function(percentage) {
        /// <summary>
        /// Get the interpolated color values
        /// </summary>
        /// <param name="percentage" type="Number">
        /// Percentage of the animation already complete
        /// </param>
        /// <returns type="String">
        /// Current color formatted as a 7-character hex string (like <code>#246ACF</code>).
        /// </returns>

        var r = this._start.Red;
        var g = this._start.Green;
        var b = this._start.Blue;
        
        if (this._interpolateRed)
            r = Math.round(this.interpolate(r, this._end.Red, percentage));
        
        if (this._interpolateGreen)
            g = Math.round(this.interpolate(g, this._end.Green, percentage));
        
        if (this._interpolateBlue)
            b = Math.round(this.interpolate(b, this._end.Blue, percentage));
        
        return $AA.ColorAnimation.toColor(r, g, b);
    },
    
    set_startValue : function(value) {
        /// <value type="String">
        /// Starting color of the transition formatted as a 7-character hex string (like <code>#246ACF</code>).
        /// </value>

        if (this._startValue != value) {
            this._startValue = value;
            this.raisePropertyChanged('startValue');
        }
    },
    
    set_endValue : function(value) {
        /// <value type="String">
        /// Ending color of the transition formatted as a 7-character hex string (like <code>#246ACF</code>).
        /// </value>

        if (this._endValue != value) {
            this._endValue = value;
            this.raisePropertyChanged('endValue');
        }
    }   
}
$AA.ColorAnimation.getRGB = function(color) {
    /// <summary>
    /// Convert the color to an RGB triplet
    /// </summary>
    /// <param name="color" type="String">
    /// Color formatted as a 7-character hex string (like <code>#246ACF</code>)
    /// </param>
    /// <returns type="Object">
    /// Object representing the color with <code>Red</code>, <code>Green</code>, and <code>Blue</code> properties.
    /// </returns>

    if (!color || color.length != 7) {
        throw String.format(Sys.Extended.UI.Resources.Animation_InvalidColor, color);
    }
    return { 'Red': parseInt(color.substr(1,2), 16),
             'Green': parseInt(color.substr(3,2), 16),
             'Blue': parseInt(color.substr(5,2), 16) };
}
$AA.ColorAnimation.toColor = function(red, green, blue) {
    /// <summary>
    /// Convert an RBG triplet into a 7-character hex string (like <code>#246ACF</code>)
    /// </summary>
    /// <param name="red" type="Number" integer="true">
    /// Value of the color's red dimension
    /// </param>
    /// <param name="green" type="Number" integer="true">
    /// Value of the color's green dimension
    /// </param>
    /// <param name="blue" type="Number" integer="true">
    /// Value of the color's blue dimension
    /// </param>
    /// <returns type="String">
    /// Color as a 7-character hex string (like <code>#246ACF</code>)
    /// </returns>

    var r = red.toString(16);
    var g = green.toString(16);
    var b = blue.toString(16);
    if (r.length == 1) r = '0' + r;
    if (g.length == 1) g = '0' + g;
    if (b.length == 1) b = '0' + b;
    return '#' + r + g + b;
}
$AA.ColorAnimation.registerClass('Sys.Extended.UI.Animation.ColorAnimation', $AA.InterpolatedAnimation);
$AA.registerAnimation('color', $AA.ColorAnimation);


$AA.LengthAnimation = function(target, duration, fps, property, propertyKey, startValue, endValue, unit) {
    /// <summary>
    /// The <code>LengthAnimation</code> is identical to <see cref="Sys.Extended.UI.Animation.InterpolatedAnimation" />
    /// except it adds a <code>unit</code> to the value before assigning it to the <code>property</code>.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="property" type="String" mayBeNull="true" optional="true">
    /// Property of the <code>target</code> element to set when animating.  The default value is 'style'.
    /// </param>
    /// <param name="propertyKey" type="String" mayBeNull="true" optional="true">
    /// Optional key of the property to be set (which indicates the value property[propertyKey], like style['backgroundColor']). Note that for the style property, the key must be in a JavaScript friendly format (i.e. backgroundColor instead of background-color).
    /// </param>
    /// <param name="startValue" type="Number" mayBeNull="true" optional="true">
    /// Start of the range of values
    /// </param>
    /// <param name="endValue" type="Number" mayBeNull="true" optional="true">
    /// End of the range of values
    /// </param>
    /// <param name="unit" type="String" mayBeNull="true" optional="true">
    /// Unit of the interpolated values.  The default value is <code>'px'</code>.
    /// </param>
    /// <animation>Length</animation>
    $AA.LengthAnimation.initializeBase(this, [target, duration, fps, property, propertyKey, startValue, endValue]);
    
    this._unit = (unit != null) ? unit : 'px';
}
$AA.LengthAnimation.prototype = {

    getAnimatedValue : function(percentage) {
        /// <summary>
        /// Get the interpolated length value
        /// </summary>
        /// <param name="percentage" type="Number">
        /// Percentage of the animation already complete
        /// </param>
        /// <returns type="String">
        /// Interpolated length
        /// </returns>

        var value = this.interpolate(this.get_startValue(), this.get_endValue(), percentage);
        return Math.round(value) + this._unit;
    },
    
    get_unit : function() {
        /// <value type="String">
        /// Unit of the interpolated values.  The default value is <code>'px'</code>.
        /// </value>
        return this._unit;
    },
    set_unit : function(value) {
        if (this._unit != value) {
            this._unit = value;
            this.raisePropertyChanged('unit');
        }
    }
}
$AA.LengthAnimation.registerClass('Sys.Extended.UI.Animation.LengthAnimation', $AA.InterpolatedAnimation);
$AA.registerAnimation('length', $AA.LengthAnimation);


$AA.MoveAnimation = function(target, duration, fps, horizontal, vertical, relative, unit) {
    /// <summary>
    /// The <code>MoveAnimation</code> is used to move the <code>target</code> element. If the
    /// <code>relative</code> flag is set to <code>true</code>, then it treats the <code>horizontal</code>
    /// and <code>vertical</code> properties as offsets to move the element. If the <code>relative</code>
    /// flag is <code>false</code>, then it will treat the <code>horizontal</code> and <code>vertical</code>
    /// properties as coordinates on the page where the <code>target</code> element should be moved. It is
    /// important to note that the <code>target</code> must be positioned (i.e. <code>absolutely</code>) so
    /// that settings its <code>top</code>/<code>left<code> style attributes will change its location.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="horizontal" type="Number" mayBeNull="true" optional="true">
    /// If <code>relative</code>  is <code>true</code>, this is the offset to move horizontally. Otherwise this is the x
    /// coordinate on the page where the <code>target</code> should be moved.
    /// </param>
    /// <param name="vertical" type="Number" mayBeNull="true" optional="true">
    /// If <code>relative</code> is <code>true</code>, this is the offset to move vertically. Otherwise this is the y
    /// coordinate on the page where the <code>target</code> should be moved.
    /// </param>
    /// <param name="relative" type="Boolean" mayBeNull="true" optional="true">
    /// <code>true</code> if we are moving relative to the current position, <code>false</code> if we are moving absolutely
    /// </param>
    /// <param name="unit" type="String" mayBeNull="true" optional="true">
    /// Length unit for the size of the <code>target</code>. The default value is <code>'px'</code>.
    /// </param>
    /// <animation>Move</animation>
    $AA.MoveAnimation.initializeBase(this, [target, duration, fps, null]);

    this._horizontal = horizontal ? horizontal : 0;
    this._vertical = vertical ? vertical : 0;
    this._relative = (relative === undefined) ? true : relative;
    
    this._horizontalAnimation = new $AA.LengthAnimation(target, duration, fps, 'style', 'left', null, null, unit);
    this._verticalAnimation = new $AA.LengthAnimation(target, duration, fps, 'style', 'top', null, null, unit);
    this.add(this._verticalAnimation);
    this.add(this._horizontalAnimation);
}
$AA.MoveAnimation.prototype = {
    
    onStart : function() {
        /// <summary>
        /// Use the <code>target</code>'s current position as the starting point for the animation
        /// </summary>
        /// <returns />
        $AA.MoveAnimation.callBaseMethod(this, 'onStart');
        
        var element = this.get_target();
        this._horizontalAnimation.set_startValue(element.offsetLeft);
        this._horizontalAnimation.set_endValue(this._relative ? element.offsetLeft + this._horizontal : this._horizontal);
        this._verticalAnimation.set_startValue(element.offsetTop); 
        this._verticalAnimation.set_endValue(this._relative ? element.offsetTop + this._vertical : this._vertical);
    },
    
    get_horizontal : function() {
        /// <value type="Number">
        /// If <code>relative</code>  is <code>true</code>, this is the offset to move horizontally. Otherwise this is the x
        /// coordinate on the page where the <code>target</code> should be moved.
        /// </value>
        return this._horizontal;
    },
    set_horizontal : function(value) {
        value = this._getFloat(value);
        if (this._horizontal != value) {
            this._horizontal = value;
            this.raisePropertyChanged('horizontal');
        }
    },
    
    get_vertical : function() {
        /// <value type="Number">
        /// If <code>relative</code> is <code>true</code>, this is the offset to move vertically. Otherwise this is the y
        /// coordinate on the page where the <code>target</code> should be moved.
        /// </value>
        return this._vertical;
    },
    set_vertical : function(value) {
        value = this._getFloat(value);
        if (this._vertical != value) {
            this._vertical = value;
            this.raisePropertyChanged('vertical');
        }
    },
    
    get_relative : function() {
        /// <value type="Boolean">
        /// <code>true</code> if we are moving relative to the current position, <code>false</code> if we are moving absolutely
        /// </value>
        return this._relative;
    },
    set_relative : function(value) {
        value = this._getBoolean(value);
        if (this._relative != value) {
            this._relative = value;
            this.raisePropertyChanged('relative');
        }
    },
    
    get_unit : function() {
        /// <value type="String" mayBeNull="true">
        /// Length unit for the size of the <code>target</code>. The default value is <code>'px'</code>.
        /// </value>
        this._horizontalAnimation.get_unit();
    },
    set_unit : function(value) {
        var unit = this._horizontalAnimation.get_unit();
        if (unit != value) {
            this._horizontalAnimation.set_unit(value);
            this._verticalAnimation.set_unit(value);
            this.raisePropertyChanged('unit');
        }
    }
}
$AA.MoveAnimation.registerClass('Sys.Extended.UI.Animation.MoveAnimation', $AA.ParallelAnimation);
$AA.registerAnimation('move', $AA.MoveAnimation);


$AA.ResizeAnimation = function(target, duration, fps, width, height, unit) {
    /// <summary>
    /// The <code>ResizeAnimation</code> changes the size of the <code>target</code> from its
    /// current value to the specified <code>width</code> and <code>height</code>.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="width" type="Number" mayBeNull="true" optional="true">
    /// New width of the <code>target</code>
    /// </param>
    /// <param name="height" type="Number" mayBeNull="true" optional="true">
    /// New height of the <code>target</code>
    /// </param>
    /// <param name="unit" type="String" mayBeNull="true" optional="true">
    /// Length unit for the size of the <code>target</code>. The default value is <code>'px'</code>.
    /// </param>
    /// <animation>Resize</animation>
    $AA.ResizeAnimation.initializeBase(this, [target, duration, fps, null]);

    this._width = width;
    this._height = height;
    
    this._horizontalAnimation = new $AA.LengthAnimation(target, duration, fps, 'style', 'width', null, null, unit);
    this._verticalAnimation = new $AA.LengthAnimation(target, duration, fps, 'style', 'height', null, null, unit);
    this.add(this._horizontalAnimation);
    this.add(this._verticalAnimation);
}
$AA.ResizeAnimation.prototype = {
    
    onStart : function() {
        /// <summary>
        /// Use the <code>target</code>'s current size as the starting point for the animation
        /// </summary>
        /// <returns />

        $AA.ResizeAnimation.callBaseMethod(this, 'onStart');
        
        var element = this.get_target();
        this._horizontalAnimation.set_startValue(element.offsetWidth);
        this._verticalAnimation.set_startValue(element.offsetHeight);
        this._horizontalAnimation.set_endValue((this._width !== null && this._width !== undefined) ?
            this._width : element.offsetWidth);
        this._verticalAnimation.set_endValue((this._height !== null && this._height !== undefined) ?
            this._height : element.offsetHeight);
    },
    
    get_width : function() {
        /// <value type="Number">
        /// New width of the <code>target</code>
        /// </value>

        return this._width;
    },
    set_width : function(value) {
        value = this._getFloat(value);
        if (this._width != value) {
            this._width = value;
            this.raisePropertyChanged('width');
        }
    },
    
    get_height : function() {
        /// <value type="Number">
        /// New height of the <code>target</code>
        /// </value>

        return this._height;
    },
    set_height : function(value) {
        value = this._getFloat(value);
        if (this._height != value) {
            this._height = value;   
            this.raisePropertyChanged('height');
        }
    },
    
    get_unit : function() {
        /// <value type="String">
        /// Length unit for the size of the <code>target</code>. The default value is <code>'px'</code>.
        /// </value>

        this._horizontalAnimation.get_unit();
    },
    set_unit : function(value) {
        var unit = this._horizontalAnimation.get_unit();
        if (unit != value) {
            this._horizontalAnimation.set_unit(value);
            this._verticalAnimation.set_unit(value);
            this.raisePropertyChanged('unit');
        }
    }
}
$AA.ResizeAnimation.registerClass('Sys.Extended.UI.Animation.ResizeAnimation', $AA.ParallelAnimation);
$AA.registerAnimation('resize', $AA.ResizeAnimation);









$AA.ScaleAnimation = function(target, duration, fps, scaleFactor, unit, center, scaleFont, fontUnit) {
    /// <summary>
    /// The <code>ScaleAnimation</code> scales the size of the <code>target</code> element by the given <code>scaleFactor</code>
    /// (i.e. a <code>scaleFactor</code> of <code>.5</code> will shrink it in half and a <code>scaleFactor</code> of <code>2.0</code>
    /// will double it).  If <code>scaleFont</code> is <code>true</code>, the size of the font will also scale with the element.  If
    /// <code>center</code> is <code>true</code>, then the element's center will not move as it is scaled.  It is important to note that
    /// the target must be positioned (i.e. absolutely) so that setting its <code>top</code>/<code>left</code> properties will change
    /// its location in order for <code>center</code> to have an effect.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="scaleFactor" type="Number" mayBeNull="true" optional="true">
    /// The amount to scale the <code>target</code> (a <code>scaleFactor</code> of <code>.5</code> will
    /// shrink it in half and a <code>scaleFactor</code> of <code>2.0</code> will double it). The default value is
    /// <code>1</code>, which does no scaling.
    /// </param>
    /// <param name="unit" type="String" mayBeNull="true" optional="true">
    /// Length unit for the size of the <code>target</code>.  The default value is <code>'px'</code>.
    /// </param>
    /// <param name="center" type="Boolean" mayBeNull="true" optional="true">
    /// Whether the <code>target</code> should stay centered while scaling
    /// </param>
    /// <param name="scaleFont" type="Boolean" mayBeNull="true" optional="true">
    /// Whether the font should be scaled along with the size
    /// </param>
    /// <param name="fontUnit" type="String" mayBeNull="true" optional="true">
    /// Unit of the font, which is only used if <code>scaleFont</code> is <code>true</code>.
    /// The default value is <code>'pt'</code>.
    /// </param>
    /// <animation>Scale</animation>
    $AA.ScaleAnimation.initializeBase(this, [target, duration, fps]);

    this._scaleFactor = (scaleFactor !== undefined) ? scaleFactor : 1;
    this._unit = (unit !== undefined) ? unit : 'px';
    
    this._center = center;
    
    this._scaleFont = scaleFont;
    this._fontUnit = (fontUnit !== undefined) ? fontUnit : 'pt';
    
    this._element = null;
    this._initialHeight = null;
    this._initialWidth = null;
    this._initialTop = null;
    this._initialLeft = null;
    this._initialFontSize = null;
}
$AA.ScaleAnimation.prototype = {    
    getAnimatedValue : function(percentage) {
        /// <summary>
        /// Get the amount to scale the <code>target</code>
        /// </summary>
        /// <param name="percentage" type="Number">
        /// Percentage of the animation already complete
        /// </param>
        /// <returns type="Number">
        /// Percentage to scale the <code>target</code>
        /// </returns>
        return this.interpolate(1.0, this._scaleFactor, percentage);
    },
    
    onStart : function() {
        /// <summary>
        /// Cache the initial size because it will be used to determine how much to scale the element at each step of the animation
        /// </summary>
        /// <returns />
        $AA.ScaleAnimation.callBaseMethod(this, 'onStart');
        
        this._element = this.get_target();
        if (this._element) {
            this._initialHeight = this._element.offsetHeight;
            this._initialWidth = this._element.offsetWidth;
            if (this._center) {
                this._initialTop = this._element.offsetTop;
                this._initialLeft = this._element.offsetLeft;
            }
            if (this._scaleFont) {
                this._initialFontSize = parseFloat(
                    $common.getCurrentStyle(this._element, 'fontSize'));
            }
        }
    },
    
    setValue : function(scale) {
        /// <summary>
        /// Scale the <code>target</code> by the given percentage
        /// </summary>
        /// <param name="scale" type="Number">
        /// Percentage to scale the <code>target</code>
        /// </param>
        /// <returns />

        if (this._element) {
            var width = Math.round(this._initialWidth * scale);
            var height = Math.round(this._initialHeight * scale);
            this._element.style.width = width + this._unit; 
            this._element.style.height = height + this._unit;
            
            if (this._center) {
                this._element.style.top = (this._initialTop +
                    Math.round((this._initialHeight - height) / 2)) + this._unit;
                this._element.style.left = (this._initialLeft +
                    Math.round((this._initialWidth - width) / 2)) + this._unit;
            }
            
            if (this._scaleFont) {
                var size = this._initialFontSize * scale;
                if (this._fontUnit == 'px' || this._fontUnit == 'pt') {
                    size = Math.round(size);
                }
                this._element.style.fontSize = size + this._fontUnit;
            }
        }
    },
    
    onEnd : function() {
        /// <summary>
        /// Wipe the cached values after the animation completes
        /// </summary>
        /// <returns />

        this._element = null;
        this._initialHeight = null;
        this._initialWidth = null;
        this._initialTop = null;
        this._initialLeft = null;
        this._initialFontSize = null;
        $AA.ScaleAnimation.callBaseMethod(this, 'onEnd');
    },
    
    get_scaleFactor : function() {
        /// <value type="Number">
        /// The amount to scale the <code>target</code> (a <code>scaleFactor</code> of <code>.5</code> will
        /// shrink it in half and a <code>scaleFactor</code> of <code>2.0</code> will double it). The default value is
        /// <code>1</code>, which does no scaling.
        /// </value>

        return this._scaleFactor;
    },
    set_scaleFactor : function(value) {
        value = this._getFloat(value);
        if (this._scaleFactor != value) {
            this._scaleFactor = value;
            this.raisePropertyChanged('scaleFactor');
        }
    },
    
    get_unit : function() {
        /// <value type="String">
        /// Length unit for the size of the <code>target</code>.  The default value is <code>'px'</code>.
        /// </value>
        return this._unit;
    },
    set_unit : function(value) {
        if (this._unit != value) {
            this._unit = value;
            this.raisePropertyChanged('unit');
        }
    },
    
    get_center : function() {
        /// <value type="Boolean">
        /// Whether the <code>target</code> should stay centered while scaling
        /// </value>
        return this._center;
    },
    set_center : function(value) {
        value = this._getBoolean(value);
        if (this._center != value) {
            this._center = value;
            this.raisePropertyChanged('center');
        }
    },
    
    get_scaleFont : function() {
        /// <value type="Boolean">
        /// Whether the font should be scaled along with the size
        /// </value>
        return this._scaleFont;
    },
    set_scaleFont : function(value) {
        value = this._getBoolean(value);
        if (this._scaleFont != value) {
            this._scaleFont = value;
            this.raisePropertyChanged('scaleFont');
        }
    },
    
    get_fontUnit : function() {
        /// <value type="String">
        /// Unit of the font, which is only used if <code>scaleFont</code> is <code>true</code>.
        /// The default value is <code>'pt'</code>.
        /// </value>
        return this._fontUnit;
    },
    set_fontUnit : function(value) {
        if (this._fontUnit != value) { 
            this._fontUnit = value; 
            this.raisePropertyChanged('fontUnit');
        }
    }
}
$AA.ScaleAnimation.registerClass('Sys.Extended.UI.Animation.ScaleAnimation', $AA.Animation);
$AA.registerAnimation('scale', $AA.ScaleAnimation);


$AA.Action = function(target, duration, fps) {
    /// <summary>
    /// <code>Action</code> is a base class for all "non-animating" animations that provides empty implementations
    /// for abstract methods and adds a <code>doAction</code> method that will be called to perform the action's
    /// operation.  While regular animations perform an operation in a sequence of small steps spread over an interval,
    /// the actions perform a single operation instantaneously.  By default, all actions have a <code>duration</code>
    /// of zero.  The actions are very useful for defining complex animations.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 0.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <animation>Action</animation>
    $AA.Action.initializeBase(this, [target, duration, fps]);

    if (duration === undefined) {
        this.set_duration(0);
    }
}
$AA.Action.prototype = {
    
    onEnd : function() {
        /// <summary>
        /// Call the <code>doAction</code> method when the animation completes
        /// </summary>
        /// <returns />
        this.doAction();
        $AA.Action.callBaseMethod(this, 'onEnd');
    },
    
    doAction : function() {
        /// <summary>
        /// The <code>doAction</code> method must be implemented by all actions
        /// </summary>
        /// <returns />
        throw Error.notImplemented();
    },
    
    getAnimatedValue : function() {
        /// <summary>
        /// Empty implementation of required abstract method
        /// </summary>
    },
    setValue : function() {
        /// <summary>
        /// Empty implementation of required abstract method
        /// </summary>
    }
}
$AA.Action.registerClass('Sys.Extended.UI.Animation.Action', $AA.Animation);
$AA.registerAnimation('action', $AA.Action);


$AA.EnableAction = function(target, duration, fps, enabled) {
    /// <summary>
    /// The <code>EnableAction</code> changes whether or not the <code>target</code> is disabled.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 0.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="enabled" type="Boolean" mayBeNull="true" optional="true">
    /// Whether or not the <code>target</code> is disabled. The default value is <code>true</code>.
    /// </param>
    /// <animation>EnableAction</animation>
    $AA.EnableAction.initializeBase(this, [target, duration, fps]);

    this._enabled = (enabled !== undefined) ? enabled : true;
}
$AA.EnableAction.prototype = {
    doAction : function() {
    	/// <summary>
        /// Set the enabled property of the <code>target</code>
    	/// </summary>
    	/// <returns />
    	
        var element = this.get_target();
        if (element) {
            element.disabled = !this._enabled;
        }
    },
    
    get_enabled : function() {
        /// <value type="Boolean">
        /// Whether or not the <code>target</code> is disabled. The default value is <code>true</code>.
        /// </value>
        return this._enabled;
    },
    set_enabled : function(value) {
        value = this._getBoolean(value);
        if (this._enabled != value) {
            this._enabled = value;
            this.raisePropertyChanged('enabled');
        }
    }
}
$AA.EnableAction.registerClass('Sys.Extended.UI.Animation.EnableAction', $AA.Action);
$AA.registerAnimation('enableAction', $AA.EnableAction);


$AA.HideAction = function(target, duration, fps, visible) {
    /// <summary>
    /// The <code>HideAction</code> simply hides the <code>target</code> from view
    /// (by setting its style's <code>display</code> attribute to <code>'none'</code>)
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 0.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="visible" type="Boolean" mayBeNull="False">
    /// True to show the target, false to hide it.  The default value is false.
    /// </param>
    /// <animation>HideAction</animation>
    $AA.HideAction.initializeBase(this, [target, duration, fps]);

    this._visible = visible;
}
$AA.HideAction.prototype = {
    doAction : function() {
        /// <summary>
        /// Hide the <code>target</code>
        /// </summary>
        /// <returns />
        var element = this.get_target();
        if (element) {
            $common.setVisible(element, this._visible);
        }
    },
    
    get_visible : function() {
        /// <value type="Boolean" mayBeNull="False">
        /// True to show the target, false to hide it.  The default value is false.
        /// </value>
        return this._visible;
    },
    set_visible : function(value) {
        if (this._visible != value) {
            this._visible = value;
            this.raisePropertyChanged('visible');
        }
    }
}
$AA.HideAction.registerClass('Sys.Extended.UI.Animation.HideAction', $AA.Action);
$AA.registerAnimation('hideAction', $AA.HideAction);


$AA.StyleAction = function(target, duration, fps, attribute, value) {
    /// <summary>
    /// The <code>StyleAction<code> is used to set a particular <code>attribute</code> of the <code>target</code>'s style
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 0.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="attribute" type="String" mayBeNull="true" optional="true">
    /// Style attribute to set (this must be in a JavaScript friendly format, i.e. <code>backgroundColor</code>
    /// instead of <code>background-color</code>)
    /// </param>
    /// <param name="value" type="String" mayBeNull="true" optional="true">
    /// Value to set the <code>attribute</code>
    /// </param>
    /// <animation>StyleAction</animation>
    $AA.StyleAction.initializeBase(this, [target, duration, fps]);

    this._attribute = attribute;
    
    this._value = value;
    
}
$AA.StyleAction.prototype = {
    doAction : function() {
    	/// <summary>
        /// Assign the <code>value</code> to the style's <code>attribute</code>
    	/// </summary>
    	/// <returns />
        var element = this.get_target();
        if (element) {
            element.style[this._attribute] = this._value;
        }
    },
    
    get_attribute : function() {
        /// <value type="String">
        /// Style attribute to set (this must be in a JavaScript friendly format, i.e. <code>backgroundColor</code>
        /// instead of <code>background-color</code>)
        /// </value>
        return this._attribute;
    },
    set_attribute : function(value) {
        if (this._attribute != value) {
            this._attribute = value;
            this.raisePropertyChanged('attribute');
        }
    },
    
    get_value : function() {
        /// <value type="String">
        /// Value to set the <code>attribute</code>
        /// </value>
        return this._value;
    },
    set_value : function(value) {
        if (this._value != value) {
            this._value = value;
            this.raisePropertyChanged('value');
        }
    }
}
$AA.StyleAction.registerClass('Sys.Extended.UI.Animation.StyleAction', $AA.Action);
$AA.registerAnimation('styleAction', $AA.StyleAction);


$AA.OpacityAction = function(target, duration, fps, opacity) {
    /// <summary>
    /// <code>OpacityAction</code> allows you to set the <code>opacity</code> of the <code>target</code>
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 0.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="opacity" type="Number" mayBeNull="true" optional="true">
    /// Opacity to set the <code>target</code>
    /// </param>
    /// <animation>OpacityAction</animation>
    $AA.OpacityAction.initializeBase(this, [target, duration, fps]);
    
    this._opacity = opacity;
}
$AA.OpacityAction.prototype = {
    doAction : function() {
    	/// <summary>
        /// Set the opacity
    	/// </summary>
    	/// <returns />
        var element = this.get_target();
        if (element) {
            $common.setElementOpacity(element, this._opacity);
        }
    },
    
    get_opacity : function() {
        /// <value type="Number">
        /// Opacity to set the <code>target</code>
        /// </value>
        return this._opacity;
    },
    set_opacity : function(value) {
        value = this._getFloat(value);
        if (this._opacity != value) {
            this._opacity = value;
            this.raisePropertyChanged('opacity');
        }
    }
}
$AA.OpacityAction.registerClass('Sys.Extended.UI.Animation.OpacityAction', $AA.Action);
$AA.registerAnimation('opacityAction', $AA.OpacityAction);


$AA.ScriptAction = function(target, duration, fps, script) {
    /// <summary>
    /// The <code>ScriptAction</code> is used to execute arbitrary JavaScript
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 0.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="script" type="String" mayBeNull="true" optional="true">
    /// JavaScript to execute
    /// </param>
    /// <animation>ScriptAction</animation>
    $AA.ScriptAction.initializeBase(this, [target, duration, fps]);

    this._script = script;
}
$AA.ScriptAction.prototype = {
    doAction : function() {
    	/// <summary>
        /// Execute the script
    	/// </summary>
    	/// <returns />
        try {
            eval(this._script);
        } catch (ex) {
        }
    },
    
    get_script : function() {
        /// <value type="String">
        /// JavaScript to execute
        /// </value>
        return this._script;
    },
    set_script : function(value) {
        if (this._script != value) {
            this._script = value;
            this.raisePropertyChanged('script');
        }
    }
}
$AA.ScriptAction.registerClass('Sys.Extended.UI.Animation.ScriptAction', $AA.Action);
$AA.registerAnimation('scriptAction', $AA.ScriptAction);

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedCommon", "ExtendedTimer"], execute);
}
else {
    execute();
}

})();

var $AA;
6   �& h�( @ U��m������Xg������f������Og�����������Nx��y��Lg������������Nx��r��8n���������������Qy��f��Uh�������������������Py��p��J�����j�����������������������[�������j���h���f���d���b���a�����������������������������V~��Nt��Mr��Kp��Jn��Hl��Fj��Eh��Dg��Cf��Bd��Ac�@b~�@b~�k������������������������������������������������������������������������������������������������@b~�l������������������������������������������������������������������������������������������������@b�m�����������������������������������������������������������������������������������������������Ac��o������������������V��|��v��v��v��v��z��z��x��v��v��v��v��y�����������������������������Be��p������������������
����������������Fdz�6���������������������������������������Be��q������������������0����������5:�^�ads���������2��������������������������Df��r�����������������������9���������MO�������������E���������������������������Eg��s���������������������=��J�F������	��������	��v���������������������������Eh��t�����������������������:��n���@������
��,I`����
�����E�������������������������������Fj��u������������������������?��s���n���&�����^,�������u��������������������������������Gk��w���������������������������L�����E������� �"�����������3����������������������������������Hm��w���������������������������=�����i���1���`�'�������	v�����������������������������������In��x���������������������������~��M��}���<ca�M�;JT�������$������������������������������������Jp��x�������������������������������7��p���N���+!�0������{�������������������������������������Lq��y������������������������������w��?��U���������� �������������������������������������Lr��{���������������������������������.��A���I������
{��������������������������������������Ms��{���������������������������������{��$��Q�����{�������������������������������������Ou��|�����������������������������������8��9��2���������������������������������������Qw��|����������������������������������������������������������������������������������Qy��|���������������������������������������������������������������������������������Rz��|���|���|���{���z���y���x���v���u���t���r���q���o���n���l���j���i���g���e���c���a���_���]���[���Z���X���V}��T{����������������������?��?�������������������������������(  l���@b~�Ou�����@b~����"_��������@b~����^���[���X���������������Lq��Gk��Ei��Df��Ac�@b~�@b~�a�����������������������������������������������Ab�d����������������������������������������������Be��h������������������~��m�������������������Df��k�����������4��(���gj����y����������Ei��n������������4��Y����������
��#�����������Hm��q���������������J��_��CCP������������������Kp��t���������������K��o��>::�����������������Ns��v������������������4���������������������Qw��x������������������A��4������������������T{��{�������������������������������������W���|���������������������������������������[���|���|���{���y���w���u���s���p���m���j���g���d���a���^����������������������������������������������6   �& h�( @ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������}}~��������������������������������}}~������������������������������������}}~�}}~��������������������������������}}~�}}~������������������������������}}~�}}~�}}~��������������������������������}}~�}}~�}}~������������������������}}~�}}~�}}~�}}~��������������������������������}}~�}}~�}}~�}}~������������������������}}~�}}~�}}~��������������������������������}}~�}}~�}}~������������������������������}}~�}}~��������������������������������}}~�}}~������������������������������������}}~������������������y�}@�}@�}@�}@���y�����������������}}~����������������������������������������������������������ۼ��ŕ�v���h�}�Z�q��ȡ������������������������������������������������������������������������������~���o���a�v�S�k��ǟ������������������������������������������������������������������������������������������Ț�|���n���`�v��˦�������������������������������������������������ʰ����������������������Х��ǘ�{���l����Ь��ˤ��Ǟ��˜��Ø�����������y��{b��������������������ݺ��կ��ϣ��Ƙ�y���j��\�s�O�h�Q�i�OI3��xj��xj�}@��g��ޯ�������������������ܸ��խ��΢��Ɩ�w���k���h�|�OI3��|o��xj��x3���k�����������������������۷��Ԭ��͡��Ŕ��Ò�anR��������������y5���p���������߰�������������������ڶ��ӫ��Ϧ�hxZ�ϼ������춙�����z8���u����������q��ް�����������������ݺ�x�t�ή��eO?�eO?�ذ��������{;���{��������������q��ް����������������hxZ�����ϼ��ɴ��Ĭ���¡��}@����������������������q�������������hxZ�����������κ��Ȳ��ë��ʧ��}@��������������������������q���q���q���q����������������̹��DZ��©�ʧ��}@����������������������������������������������� S�Q�ѱ���Ư�ʧ��}@�â�������������������������������������������0^�r���D��Q��ʵ�ҭ��~B"�ť���������������������������������������������1`���r��� S��λ�ٳ��D$�ǧ��������������������������������������������������1`�0_�������޷��F&�ɪ�����������������������������������������������������������������G(�ɪ��ɪ��Ȩ��ƥ��Ģ����������������|���x���s���n���i��~e��za��v\��rY��pU��mR��kP��������������������������������?�?�?�?�?�?�?�?�?�?�?�?�?�?�?��������(  ��������������������������������������������������������������������������������������������������������������}}~����������|=�{;�����������}}~�������������������}}~�}}~����������4�Q�"�A�����������}}~�}}~�������������������}}~����������N�f�5�Q�����������}}~���������������������������������_�u�H�a���������������������������������������������wÉ��œ����������������������������������������������������ː���������������������������������������������q��ް���h^J�ؽ������������Ǫ�ӽ��ä�����ä���������������q���q�����������й��ʰ��Ũ�¡��|=� �������������������������� S�Q�ѱ���ʰ�ʧ��}@�Ʀ�������������������������0^�r���D��Q��й�ҭ��~B"�ɪ��������������������������1`���r��� S����ٳ��D$�ɪ�����������������������������1`�0_�������޷��F&�ɪ���������������������������������������������G(�ɪ��ɪ��ɪ��ɪ��Ʀ�� ��������|���s���j��{b��u[��oT��kP��������~�~�~�~�����������6   �& h�( @ f�{��&��al�3���'���2��h�[���P��an�����`���4�����������f�P#��pM������
s��g���������&n�PT��p�������\���/�ôW��2����f��%���J�����/��f�`{���������������=s��r��������������.o�`2��=6������2��~�����������K��=���������������q���������������(������%��:�������n�)��f��t��������������������������=s��U���p���Y���������)��f�0������������������������k�02��"������������<�x����^�����f�p4��[������ݝ����������������������������6q�pf� �����=��Y�0����!��`���������C���v��f�@i� ~��͛���������������������������������������h���l�@$���p������������d���A������������9���f� �����������������������������������������������i� 9���U���2��2��2��2�������+��q��2��2��2��2��]���f�n���������������������������������a�����������������������h�f�02������f�`k�0������������.o�`2��X���f� �����������i� 2��������������{���$|�p���r��R��p���Q~����f�����h�����������������������������������������ÇÇ�����������?�?�?�?��������������������������������������(  �A������g�+��dm����V����l���Ds�j��D����Y���Q�ηL��?��ϙ�����{�����������������,h�%��O<��O����
���\��.����������y���2i�%���^��W���������!���a�3L��y��������������������3t�UP�Ƹe���s���9��)���c���U���)��c�������ӭ��ҷ������찵�����k���|�>��|�����Z���#��R���p�J����L��w���������������������������5GIF89a��������!�,��-;aGIF89a�����������������������333���Evု�WWX���hhh"""������ٕ��SSS��������}}}��L��������F}�ev���������������III�������샤�w���񗗗������u����C~ݞ������������������������j��a��;t�����b�总��������Q����VVWWWW�������w������s�ꂈ����yzz���[����軻�R���������w����N��lll��hmm�������N�����������뙙�������VVV����������������[������.aص����������|������9j���������K���YYY������ۜ���������������!��,�?	H�����<)\ȰaC�	Jt�။&*���| �hRB�D��z�9�"({� �@�S�4K����!F�B*�`��Ц�9-`P����"�)R4"�!��\���$B¸���� &Gfؘ�G� �T-P�H"7D(m�HCRХK��&6��<"�#	00��re��#a��BM��%xRA�e�ܰ�I�	
"Ov2�
0�!�=��C��
�1��:�H@'��	$uI�)D�(>� @A�/�(�&S'W�O`����%w4R�MRpb�&��@$t��F�AV;�GIF89a�������������������������������333���!�,i��I��"�ͻ�`���6�䉂���B`�m2k����5�
�Ca�X��М�	uB�ج֙�&cݮA��d��6���@7L�uga��N�����Nw�7��;GIF89a��������������������������������������������������������������������������������������������������������������������������������������������������X��y�ڝ���۾����������;n�i����Ӛ�ܗ�Ң�ݨ���������������)^�+`�2e�4g�6i�6h�8j�?o�P}�Z��f��l��w��~�ɢ�ڨ�߷�숫̧�ݩ�߱����������������!�v,��v������������ $'(������%+.1������*05������59:�:JPQ8����1>�H\[[aS��˂5;BBA`��\jBL@�܂?
CCV[eonf[^Yd���DDR[msZZi\][q���4���la�$�b��A���@;
D�@�—1I6h(�D�	"D�:ٲ��U�СsĂ
A�s�'gd�X��	8hАA�
FY|BseF�V�(!"TAD��c�
X_
ܨ��(L��4l��cI��ʀ�B@A'\�\`?|��CGlԠ!���;p@ُ̜u( HF&�͛"��	;�GIF89a����:�U�ܻ���������������������������������������������������������������������������������������������������������������������������)^����������������������!�E,��E������������ #&'������$),.��>�>����(-2�>����256>B���B>6�Â.9��̾�ς27
;��>;�ۂ:
<>C䯯<���=����>=�=�0
�>
��C�AA"L���"���0a� ,`���?��]�`A��
:p$�Dz4dda�$W��ɓ^mqB�'4>���D��B� �"ƌ5\J�
A&X�z�s�fȈ!hE�8#r�x� 4:r�a�A/j�H`p���
օv���@;�GIF89a����}}~jjk��������������������������ƽ�������������������������������������������������������������������������������������������������iii333���!�0,�@�pH,���r�l
���3JUN��+��2�����Q_��0�L�ފ��u8��ua�I�^!///k r���  k�*&�/-/(%/
�/�0 "ro,$o+k���k�����k�����k�����k����������G��A;�GIF89a����������������������������������������������������������������������������������������������������������������������������������������������r�Lj������������������R}�Py�c��b��e��m��z�¦������� S�Ft�Ht�Q|�V�p��������������ҽ������������!�i,��i������������#&'������$),.������(-2������27:������.>��9RXXQS�ǂ2<@��JXZhab�΂?
A��GX]fK���B��^XcgL��0�	�NXhIH��	b���	.`Ѐ%�"(L� !�<�`�"��#c��(H� ���N�xҮʊ#>t8�R�
1U��d*.�0A"��4�8��+W��)S�*P�(QB�^Ę1`V�:Fpؠ!�EV2�"F�<z����G:n0CFA+b���ׁ�~>��@A/n�8�/�i�/�:ĺu ;�GIF89a�?����q$$��ӂ���������������Z**����������X�����������޴���u��r��hS�赵���������l������f��xx���AAAiii���묬�c��k��o���ռ�����罽p�����
t{�}r�x]��������������333���������!�?,��pH,��r�l6�=�T
�Z�ի5��y�^�/�\�L����:%��r� E�>�'+�|k�N\Jo/^��c8��	
��U;�����P��0�/��P9���)��9P7��0==2)��P
�4*�51��P�,!#3��P-+���!6 ��c:����: ��H�E����G*;GIF89a�?����X������Ǘ����l�������7c���������aV�Ǫ˛���ʔ��ȣ�i����f�v��ܣ�����ۺ�h��sTs�x��.5V}�ٶ����Ex��e���	����yc������zy��������B6_����Ͳ�Ѩ��W���������������!�?,���pH,����l:�Mao�Z�ثp������&"x!M.��d<�uN��s��b�
4
&'t#��B<9';&o(
 �;��B:��)3��B9;*1
&&���;�(�t����;::(00"���B	��" �,
9�	���*,,$7=��?�-)!

���C�<	B(H�B0�'�(����
�H�R��(Sb0)���-�� �‚�.r�8��5@���b�͛9]�<����5�Y� Ѧ6���"�d�Ɗ7X9Y�6;�GIF89a����p��s�����������������Kw�Ny�]��a��������:l�=n�������r��t��d��f��[��\������������������������X�傷��������������������������������������������������������������������������������������������������������������M{���|�҆�˴��������>l�Dp�S|�[��V~�_��f��g��d��j��j��s��}��s�����{����͎�ʢ�֝���������������DwFyGy&T�-Z�6b�<g�Dm�Go�Lu�W��_��c��g��g��w�������׻�����������չ������������������!��,�7	H����2hظ���Ç
����ŋ3^�CH$ C�R �#L4�tr��.*c�� 0�'QrB���89�
�d�H;�Q��P 9`<$M*��V��Ysi"F{���J֊@
UD\�B'�JE��ڻg;���%QKX�`�'�&��*��4�����̢>�kX�D
-��cE�0u޴�Ă��)�@�⅌8ʌ!#Ǝ�^��p�E�(Xܞ�C�!Bw��
2d��b�!�@����H!>x��a]�?���O���!@~��!0ǏI``8���@$qD!�E,��LAP�(�4����SPQR|�TUP1�Qp��@I<A��� ����#U%�d@;.ajax__multi_slider_default .outer_rail_vertical{position:absolute;background:url(Images/slider_v_rail_outer.gif) repeat-y;width:22px;height:150px;}
.ajax__multi_slider_default .inner_rail_vertical{position:absolute;background:url(Images/slider_v_rail.gif) repeat-y;width:22px;z-index:100;}
.ajax__multi_slider_default .inner_rail_horizontal{position:absolute;background:url(Images/slider_h_rail.gif) repeat-x;height:22px;z-index:100;}
.ajax__multi_slider_default .outer_rail_horizontal{position:absolute;background:url(Image/.slider_h_rail_outer.gif) repeat-x;height:22px;width:150px;}
.ajax__multi_slider_default .handle_horizontal{position:absolute;background:url(Images/slider_h_handle.gif) no-repeat;height:22px;width:10px;z-index:200;}
.ajax__multi_slider_default .handle_horizontal_hover{position:absolute;background:url(Images/slider_h_handle_hover.gif) no-repeat;height:22px;width:10px;z-index:200;}
.ajax__multi_slider_default .handle_horizontal_down{position:absolute;background:url(Images/slider_h_handle_down.gif) no-repeat;height:22px;width:10px;z-index:200;}
.ajax__multi_slider_default .handle_vertical{position:absolute;background:url(Images/slider_v_handle.gif) no-repeat;height:10px;width:22px;z-index:200;}
.ajax__multi_slider_default .handle_vertical_hover{position:absolute;background:url(Images/slider_v_handle_hover.gif) no-repeat;height:10px;width:22px;z-index:200;}
.ajax__multi_slider_default .handle_vertical_down{position:absolute;background:url(Images/slider_v_handle_down.gif) no-repeat;height:10px;width:22px;z-index:200;}�:// (c) 2010 CodePlex Foundation
Type.registerNamespace('Sys.Extended.UI.Seadragon');
Type.registerNamespace('Seadragon');
Seadragon.Utils = function() {


    var Browser = {
        UNKNOWN: 0,
        IE: 1,
        FIREFOX: 2,
        SAFARI: 3,
        CHROME: 4,
        OPERA: 5
    };

    Seadragon.Browser = Browser;


    var self = this;

    var arrActiveX = ["Msxml2.XMLHTTP", "Msxml3.XMLHTTP", "Microsoft.XMLHTTP"];
    var fileFormats = {
        "bmp": false,
        "jpeg": true,
        "jpg": true,
        "png": true,
        "tif": false,
        "wdp": false
    };

    var browser = Browser.UNKNOWN;
    var browserVersion = 0;
    var badAlphaBrowser = false;    // updated in constructor

    var urlParams = {};


    (function() {


        var app = navigator.appName;
        var ver = navigator.appVersion;
        var ua = navigator.userAgent;

        if (app == "Microsoft Internet Explorer" &&
                !!window.attachEvent && !!window.ActiveXObject) {

            var ieOffset = ua.indexOf("MSIE");
            browser = Browser.IE;
            browserVersion = parseFloat(
                    ua.substring(ieOffset + 5, ua.indexOf(";", ieOffset)));

        } else if (app == "Netscape" && !!window.addEventListener) {

            var ffOffset = ua.indexOf("Firefox");
            var saOffset = ua.indexOf("Safari");
            var chOffset = ua.indexOf("Chrome");

            if (ffOffset >= 0) {
                browser = Browser.FIREFOX;
                browserVersion = parseFloat(ua.substring(ffOffset + 8));
            } else if (saOffset >= 0) {
                var slash = ua.substring(0, saOffset).lastIndexOf("/");
                browser = (chOffset >= 0) ? Browser.CHROME : Browser.SAFARI;
                browserVersion = parseFloat(ua.substring(slash + 1, saOffset));
            }

        } else if (app == "Opera" && !!window.opera && !!window.attachEvent) {

            browser = Browser.OPERA;
            browserVersion = parseFloat(ver);

        }


        var query = window.location.search.substring(1);    // ignore '?'
        var parts = query.split('&');

        for (var i = 0; i < parts.length; i++) {
            var part = parts[i];
            var sep = part.indexOf('=');

            if (sep > 0) {
                urlParams[part.substring(0, sep)] =
                        decodeURIComponent(part.substring(sep + 1));
            }
        }


        badAlphaBrowser = (browser == Browser.IE ||
                (browser == Browser.CHROME && browserVersion < 2));

    })();


    function getOffsetParent(elmt, isFixed) {
        if (isFixed && elmt != document.body) {
            return document.body;
        } else {
            return elmt.offsetParent;
        }
    }


    this.getBrowser = function() {
        return browser;
    };

    this.getBrowserVersion = function() {
        return browserVersion;
    };

    this.getElement = function(elmt) {
        if (typeof (elmt) == "string") {
            elmt = document.getElementById(elmt);
        }

        return elmt;
    };

    this.getElementPosition = function(elmt) {
        var elmt = self.getElement(elmt);
        var result = new Seadragon.Point();


        var isFixed = self.getElementStyle(elmt).position == "fixed";
        var offsetParent = getOffsetParent(elmt, isFixed);

        while (offsetParent) {
            result.x += elmt.offsetLeft;
            result.y += elmt.offsetTop;

            if (isFixed) {
                result = result.plus(self.getPageScroll());
            }

            elmt = offsetParent;
            isFixed = self.getElementStyle(elmt).position == "fixed";
            offsetParent = getOffsetParent(elmt, isFixed);
        }

        return result;
    };

    this.getElementSize = function(elmt) {
        var elmt = self.getElement(elmt);
        return new Seadragon.Point(elmt.clientWidth, elmt.clientHeight);
    };

    this.getElementStyle = function(elmt) {
        var elmt = self.getElement(elmt);

        if (elmt.currentStyle) {
            return elmt.currentStyle;
        } else if (window.getComputedStyle) {
            return window.getComputedStyle(elmt, "");
        } else {
            Seadragon.Debug.fail("Unknown element style, no known technique.");
        }
    };

    this.getEvent = function(event) {
        return event ? event : window.event;
    };

    this.getMousePosition = function(event) {
        var event = self.getEvent(event);
        var result = new Seadragon.Point();


        if (typeof (event.pageX) == "number") {
            result.x = event.pageX;
            result.y = event.pageY;
        } else if (typeof (event.clientX) == "number") {
            result.x = event.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
            result.y = event.clientY + document.body.scrollTop + document.documentElement.scrollTop;
        } else {
            Seadragon.Debug.fail("Unknown event mouse position, no known technique.");
        }

        return result;
    };

    this.getPageScroll = function() {
        var result = new Seadragon.Point();
        var docElmt = document.documentElement || {};
        var body = document.body || {};


        if (typeof (window.pageXOffset) == "number") {
            result.x = window.pageXOffset;
            result.y = window.pageYOffset;
        } else if (body.scrollLeft || body.scrollTop) {
            result.x = body.scrollLeft;
            result.y = body.scrollTop;
        } else if (docElmt.scrollLeft || docElmt.scrollTop) {
            result.x = docElmt.scrollLeft;
            result.y = docElmt.scrollTop;
        }


        return result;
    };

    this.getWindowSize = function() {
        var result = new Seadragon.Point();
        var docElmt = document.documentElement || {};
        var body = document.body || {};



        if (typeof (window.innerWidth) == 'number') {
            result.x = window.innerWidth;
            result.y = window.innerHeight;
        } else if (docElmt.clientWidth || docElmt.clientHeight) {
            result.x = docElmt.clientWidth;
            result.y = docElmt.clientHeight;
        } else if (body.clientWidth || body.clientHeight) {
            result.x = body.clientWidth;
            result.y = body.clientHeight;
        } else {
            Seadragon.Debug.fail("Unknown window size, no known technique.");
        }

        return result;
    };

    this.imageFormatSupported = function(ext) {
        var ext = ext ? ext : "";
        return !!fileFormats[ext.toLowerCase()];
    };

    this.makeCenteredNode = function(elmt) {
        var elmt = Seadragon.Utils.getElement(elmt);
        var div = self.makeNeutralElement("div");
        var html = [];

        html.push('<div style="display:table; height:100%; width:100%;');
        html.push('border:none; margin:0px; padding:0px;'); // neutralizing
        html.push('#position:relative; overflow:hidden; text-align:left;">');
        html.push('<div style="#position:absolute; #top:50%; width:100%; ');
        html.push('border:none; margin:0px; padding:0px;'); // neutralizing
        html.push('display:table-cell; vertical-align:middle;">');
        html.push('<div style="#position:relative; #top:-50%; width:100%; ');
        html.push('border:none; margin:0px; padding:0px;'); // neutralizing
        html.push('text-align:center;"></div></div></div>');

        div.innerHTML = html.join('');
        div = div.firstChild;

        var innerDiv = div;
        var innerDivs = div.getElementsByTagName("div");
        while (innerDivs.length > 0) {
            innerDiv = innerDivs[0];
            innerDivs = innerDiv.getElementsByTagName("div");
        }

        innerDiv.appendChild(elmt);

        return div;
    };

    this.makeNeutralElement = function(tagName) {
        var elmt = document.createElement(tagName);
        var style = elmt.style;

        style.background = "transparent none";
        style.border = "none";
        style.margin = "0px";
        style.padding = "0px";
        style.position = "static";

        return elmt;
    };

    this.makeTransparentImage = function(src) {
        var img = self.makeNeutralElement("img");
        var elmt = null;

        if (browser == Browser.IE && browserVersion < 7) {
            elmt = self.makeNeutralElement("span");
            elmt.style.display = "inline-block";

            img.onload = function() {
                elmt.style.width = elmt.style.width || img.width + "px";
                elmt.style.height = elmt.style.height || img.height + "px";

                img.onload = null;
                img = null;     // to prevent memory leaks in IE
            };

            img.src = src;
            elmt.style.filter =
                    "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" +
                    src + "', sizingMethod='scale')";
        } else {
            elmt = img;
            elmt.src = src;
        }

        return elmt;
    };

    this.setElementOpacity = function(elmt, opacity, usesAlpha) {
        var elmt = self.getElement(elmt);

        if (usesAlpha && badAlphaBrowser) {
            opacity = Math.round(opacity);
        }

        if (opacity < 1) {
            elmt.style.opacity = opacity;
        } else {
            elmt.style.opacity = "";
        }

        if (opacity == 1) {
            var prevFilter = elmt.style.filter || "";
            elmt.style.filter = prevFilter.replace(/alpha\(.*?\)/g, "");
            return;
        }

        var ieOpacity = Math.round(100 * opacity);
        var ieFilter = " alpha(opacity=" + ieOpacity + ") ";

        try {
            if (elmt.filters && elmt.filters.alpha) {
                elmt.filters.alpha.opacity = ieOpacity;
            } else {
                elmt.style.filter += ieFilter;
            }
        } catch (e) {
            elmt.style.filter += ieFilter;
        }
    };

    this.addEvent = function(elmt, eventName, handler, useCapture) {
        var elmt = self.getElement(elmt);


        if (elmt.addEventListener) {
            elmt.addEventListener(eventName, handler, useCapture);
        } else if (elmt.attachEvent) {
            elmt.attachEvent("on" + eventName, handler);
            if (useCapture && elmt.setCapture) {
                elmt.setCapture();
            }
        } else {
            Seadragon.Debug.fail("Unable to attach event handler, no known technique.");
        }
    };

    this.removeEvent = function(elmt, eventName, handler, useCapture) {
        var elmt = self.getElement(elmt);


        if (elmt.removeEventListener) {
            elmt.removeEventListener(eventName, handler, useCapture);
        } else if (elmt.detachEvent) {
            elmt.detachEvent("on" + eventName, handler);
            if (useCapture && elmt.releaseCapture) {
                elmt.releaseCapture();
            }
        } else {
            Seadragon.Debug.fail("Unable to detach event handler, no known technique.");
        }
    };

    this.cancelEvent = function(event) {
        var event = self.getEvent(event);


        if (event.preventDefault) {
            event.preventDefault();     // W3C for preventing default
        }

        event.cancel = true;            // legacy for preventing default
        event.returnValue = false;      // IE for preventing default
    };

    this.stopEvent = function(event) {
        var event = self.getEvent(event);


        if (event.stopPropagation) {
            event.stopPropagation();    // W3C for stopping propagation
        }

        event.cancelBubble = true;      // IE for stopping propagation
    };

    this.createCallback = function(object, method) {
        var initialArgs = [];
        for (var i = 2; i < arguments.length; i++) {
            initialArgs.push(arguments[i]);
        }

        return function() {
            var args = initialArgs.concat([]);
            for (var i = 0; i < arguments.length; i++) {
                args.push(arguments[i]);
            }

            return method.apply(object, args);
        };
    };

    this.getUrlParameter = function(key) {
        var value = urlParams[key];
        return value ? value : null;
    };

    this.makeAjaxRequest = function(url, callback) {
        var async = typeof (callback) == "function";
        var req = null;

        if (async) {
            var actual = callback;
            var callback = function() {
                window.setTimeout(Seadragon.Utils.createCallback(null, actual, req), 1);
            };
        }

        if (window.ActiveXObject) {
            for (var i = 0; i < arrActiveX.length; i++) {
                try {
                    req = new ActiveXObject(arrActiveX[i]);
                    break;
                } catch (e) {
                    continue;
                }
            }
        } else if (window.XMLHttpRequest) {
            req = new XMLHttpRequest();
        }

        if (!req) {
            Seadragon.Debug.fail("Browser doesn't support XMLHttpRequest.");
        }


        if (async) {
            req.onreadystatechange = function() {
                if (req.readyState == 4) {
                    req.onreadystatechange = new Function();
                    callback();
                }
            };
        }

        try {
            req.open("GET", url, async);
            req.send(null);
        } catch (e) {
            Seadragon.Debug.log(e.name + " while making AJAX request: " + e.message);

            req.onreadystatechange = null;
            req = null;

            if (async) {
                callback();
            }
        }

        return async ? null : req;
    };

    this.parseXml = function(string) {
        var xmlDoc = null;

        if (window.ActiveXObject) {
            try {
                xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
                xmlDoc.async = false;
                xmlDoc.loadXML(string);
            } catch (e) {
                Seadragon.Debug.log(e.name + " while parsing XML (ActiveX): " + e.message);
            }
        } else if (window.DOMParser) {
            try {
                var parser = new DOMParser();
                xmlDoc = parser.parseFromString(string, "text/xml");
            } catch (e) {
                Seadragon.Debug.log(e.name + " while parsing XML (DOMParser): " + e.message);
            }
        } else {
            Seadragon.Debug.fail("Browser doesn't support XML DOM.");
        }

        return xmlDoc;
    };

};
Seadragon.Utils = new Seadragon.Utils();
�
Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.DraggableListItem=function(c){var b=null,a=this;Sys.Extended.UI.DraggableListItem.initializeBase(a,[c]);a._data=b;a._handle=b;a._dragVisualTemplate=b;a._dragVisualTemplateInstance=b;a._mouseDownHandler=b};Sys.Extended.UI.DraggableListItem.prototype={dispose:function(){var a=this.get_element();this.set_handle(null);Sys.Extended.UI.DraggableListItem.callBaseMethod(this,"dispose")},get_data:function(){var a=this;if(a._data==null){var b=a._findDragSource();if(b!=null&&Sys.Extended.UI.DragDropList.IsValidDataType(b.get_dragDataType()))return a.get_element()}return a._data},set_data:function(a){if(this._data!=a){this._data=a;this.raisePropertyChanged("data")}},get_handle:function(){return this._handle},set_handle:function(b){var c="mousedown",a=this;if(a._handle!=null){$removeHandler(a._handle,c,a.get_mouseDownHandler());a._handle.__draggableBehavior=null}if(b){if(b.element)b=b.element;a._handle=b;a.raisePropertyChanged("handle");a._handle.__draggableBehavior=a;$addHandler(a._handle,c,a.get_mouseDownHandler());a._handle.__draggableBehavior=a}else a._handle=null},get_mouseDownHandler:function(){var a=this;if(a._mouseDownHandler==null)a._mouseDownHandler=Function.createDelegate(a,a._onMouseDown);return a._mouseDownHandler},get_dragVisualTemplate:function(){return this._dragVisualTemplate},set_dragVisualTemplate:function(a){if(this._dragVisualTemplate!=a){this._dragVisualTemplate=a;this.raisePropertyChanged("dragVisualTemplate")}},_onMouseDown:function(a){window._event=a.rawEvent;this._handle.__draggableBehavior._mouseDownHandlerInternal(a)},_mouseDownHandlerInternal:function(b){var a=this,b=window.testEvent?window.testEvent:b;if(b.button<=1){var c=a._findDragSource();if(c!=null){var d=a._createDragVisual();c.startDragDrop(a.get_element(),a.get_data(),d);b.returnValue=false}}},_createDragVisual:function(){var a=this,c=window.testEvent?window.testEvent:window.event;if(a._dragVisualTemplate!=null){if(a._dragVisualTemplateInstance==null)a._dragVisualTemplateInstance=a._dragVisualTemplate.cloneElement();else!Sys.UI.DragDropManager._getInstance().hasParent(a._dragVisualTemplateInstance)&&a.get_element().appendChild(a._dragVisualTemplateInstance);var b={x:c.clientX,y:c.clientY};b=Sys.UI.DragDropManager._getInstance().addPoints(b,Sys.UI.DragDropManager._getInstance().getScrollOffset(document.body,true));$common.setLocation(a._dragVisualTemplateInstance,b)}return a._dragVisualTemplateInstance},_findDragSource:function(){var a=this.get_element();while(a!=null){if(a.__dragDropList!=null)return a.__dragDropList;a=a.parentNode}return null}};Sys.Extended.UI.DraggableListItem.registerClass("Sys.Extended.UI.DraggableListItem",Sys.Extended.UI.BehaviorBase);�M// (c) 2010 CodePlex Foundation
(function(g,b){var o="object",t="set_",l="#",n="$",k="string",j=".",h=" ",s="onreadystatechange",m="load",y="_readyQueue",x="_domReadyQueue",r="error",d=false,q="on",a=null,c=true,f="function",i="number",e="undefined",A=function(a){a=a||{};p(arguments,function(b){b&&v(b,function(c,b){a[b]=c})},1);return a},v=function(a,c){for(var b in a)c(a[b],b)},p=function(a,h,j){var d;if(a){a=a!==g&&typeof a.nodeType===e&&(a instanceof Array||typeof a.length===i&&(typeof a.callee===f||a.item&&typeof a.nodeType===e&&!a.addEventListener&&!a.attachEvent))?a:[a];for(var b=j||0,k=a.length;b<k;b++)if(h(a[b],b)){d=c;break}}return!d},u=function(b,e,d){var c=b[e],a=typeof c===f;a&&c.call(b,d);return a};if(!b||!b.loader){function M(a){a=a||{};p(arguments,function(b){b&&v(b,function(c,b){if(typeof a[b]===e)a[b]=c})},1);return a}var z=!!document.attachEvent;function C(b,a){var c=b[a];delete b[a];return c}function K(d,b,c){p(C(d,b),function(b){b.apply(a,c||[])})}function I(a,c,b){return a?(a[c]=a[c]||b):b}function G(c,b,a){I(c,b,[]).push(a)}function B(b,a){return(a||document).getElementsByTagName(b)}function J(a){return document.createElement(a)}function D(b,e,g,i,h,f){function c(){if(!z||!h||/loaded|complete/.test(b.readyState)){if(z)b.detachEvent(g||q+e,c);else{b.removeEventListener(e,c,d);f&&b.removeEventListener(r,c,d)}i.apply(b);b=a}}if(z)b.attachEvent(g||q+e,c);else{b.addEventListener(e,c,d);f&&b.addEventListener(r,c,d)}}function E(){b._domReady&&b._2Pass(C(b,x))}function F(){var a=b._ready;if(!a&&b._domReady&&!(b.loader&&b.loader._loading))b._ready=a=c;a&&b._2Pass(C(b,y))}g.Sys=b=M(b,{version:[3,0,31106,0],__namespace:c,debug:d,scripts:{},activateDom:c,composites:{},components:{},plugins:{},create:{},converters:{},_domLoaded:function(){if(b._domChecked)return;b._domChecked=c;function d(){if(!b._domReady){b._domReady=c;var d=b._autoRequire;d&&b.require(d,function(){b._autoRequire=a;K(b,"_autoQueue")},autoToken);E();F()}}D(g,m,a,d);var e;if(z)if(g==g.top&&document.documentElement.doScroll){var h,i,f=J("div");e=function(){try{f.doScroll("left")}catch(b){h=g.setTimeout(e,0);return}f=a;d()};e()}else D(document,a,s,d,c);else document.addEventListener&&D(document,"DOMContentLoaded",a,d)},_getById:function(b,d,h,f,a,g){if(a)if(f&&a.id===d)b.push(a);else!g&&p(B("*",a),function(a){if(a.id===d){b.push(a);return c}});else{var e=document.getElementById(d);e&&b.push(e)}return b.length},_getByClass:function(l,d,g,m,a,n){function i(b){var e,a=b.className;if(a&&(a===d||a.indexOf(h+d)>=0||a.indexOf(d+h)>=0)){l.push(b);e=c}return e}var b,f,e;if(m&&i(a)&&g)return c;if(!n){a=a||document;var k=a.querySelectorAll||a.getElementsByClassName;if(k){if(a.querySelectorAll)d=j+d;e=k.call(a,d);for(b=0,f=e.length;b<f;b++){l.push(e[b]);if(g)return c}}else{e=B("*",a);for(b=0,f=e.length;b<f;b++)if(i(e[b])&&g)return c}}},query:function(a,c){return new b.ElementSet(a,c)},"get":function(b,a){return a&&typeof a.get===f?a.get(b):this._find(b,a,c)},_find:function(m,d,f,h){var e=[],j;if(typeof m===k)j=[m];else j=m;var i=d instanceof Array,o=/^([\$#\.])((\w|[$:\.\-])+)$/,q=/^((\w+)|\*)$/;if(typeof d===k||d instanceof Array)d=b._find(d);if(d instanceof b.ElementSet)d=d.get();p(j,function(a){if(typeof a!==k)if(h)contains(d,a)&&e.push(a);else e.push(a);else{var j=o.exec(a);if(j&&j.length===4){a=j[2];var s=j[1];if(s===n)b._getComponent(e,a,d);else{var r=s===l?b._getById:b._getByClass;if(d)p(d,function(b){if(b.nodeType===1)return r(e,a,f,i,b,h)});else r(e,a,f)}}else if(q.test(a))if(d instanceof Array)p(d,function(b){if(b.nodeType===1){if(i&&(a==="*"||b.tagName.toLowerCase()===a)){e.push(b);if(f)return c}if(!h)if(!p(B(a,b),function(a){e.push(a);if(f)return c}))return c}});else{var m=B(a,d);if(f){m[0]&&e.push(m[0]);return c}p(m,function(a){e.push(a)})}else if(g.jQuery){!h&&e.push.apply(e,jQuery(a,d).get());i&&e.push.apply(e,jQuery(d).filter(a).get())}}});return e.length?f?e[0]||a:e:a},onDomReady:function(a){G(this,x,a);E()},onReady:function(a){G(this,y,a);F()},_set:function(a,b){v(b,function(c,b){u(a,"add_"+b,c)||u(a,t+b,c)||(a[b]=c)})}});b._getComponent=b._getComponent||function(){};b._2Pass=b._2Pass||function(a){p(a,function(a){a()})};var w;if(!b.ElementSet){w=b.ElementSet=function(c,a){this._elements=typeof a===o&&typeof a.query===f?a.query(c).get():b._find(c,a)||[]};w.prototype={__class:c,components:function(d,c){var a=new b.ElementSet(this.get());return new b.ComponentSet(a,d,c)},component:function(b,a){return this.components(b,a).get(0)},each:function(c){for(var b=this._elements,a=0,e=b.length;a<e;a++)if(c.call(b[a],a)===d)break;return this},"get":function(c){var b=this._elements;return typeof c===e?Array.apply(a,b):b[c]||a},find:function(a){return new b.ElementSet(a,this)},filter:function(a){return new b.ElementSet(b._find(a,this._elements,d,c))}}}if(!b.ComponentSet){w=b.ComponentSet=function(a,d,c){this._elementSet=a||(a=new b.ElementSet);this._components=this._execute(a,d,c)};w.prototype={__class:c,setProperties:function(a){return this.each(function(){b._set(this,a)})},"get":function(c){var b=this._components;return typeof c===e?Array.apply(a,b):b[c||0]||a},each:function(a){p(this._components,function(b,e){if(a.call(b,e)===d)return c});return this},elements:function(){return this._elementSet},_execute:function(f,b,c){var a=[];function d(c){var a;return c instanceof b||(a=c.constructor)&&(a===b||a.inheritsFrom&&a.inheritsFrom(b)||a.implementsInterface&&a.implementsInterface(b))}if(b instanceof Array)a.push.apply(a,b);else f.each(function(){var c=this.control;c&&(!b||d(c))&&a.push(c);p(this._behaviors,function(c){(!b||d(c))&&a.push(c)})});if(typeof c!==e)if(a[c])a=[a[c]];else a=[];return a}}}w=a}var L=function(a,d){if(d)return function(){return b.plugins[a.name].plugin.apply(this,arguments)};else{var c=function(){var c=arguments.callee,a=c._component;return b._createComp.call(this,a,a.defaults,arguments)};c._component=a;return c}};b._getCreate=L;function H(){var sb="callback",Q="completed",hb="completedRequest",gb="invokingRequest",vb="Sys.Net.XMLHttpExecutor",M="Content-Type",kb="text/xml",rb="SelectionLanguage",fb="navigate",eb="dispose",db="init",L="unload",P="none",cb="HTML",I="absolute",O="BODY",bb="InternetExplorer",ab="disposing",H="+",qb="MonthNames",pb="MonthGenitiveNames",Z="Abbreviated",E="-",D="/",Y="yyyy",X="MMMM",W="dddd",B=100,J="collectionChanged",V="get_",C="propertyChanged",G=",",U="null",S="Firefox",T="initialize",jb="beginUpdate",y=-1,ob="Undefined",x="",F="\n",nb="Exception",w,z;b._foreach=p;b._forIn=v;b._merge=A;b._callIf=u;w=Function;w.__typeName="Function";w.__class=c;w.createCallback=function(b,a){return function(){var e=arguments.length;if(e>0){for(var d=[],c=0;c<e;c++)d[c]=arguments[c];d[e]=a;return b.apply(this,d)}return b.call(this,a)}};w.createDelegate=function(a,b){return function(){return b.apply(a,arguments)}};w.emptyFunction=w.emptyMethod=function(){};w.validateParameters=function(c,b,a){return Function._validateParams(c,b,a)};w._validateParams=function(i,g,e){var b,f=g.length;e=e!==d;b=Function._validateParameterCount(i,g,e);if(b){b.popStackFrame();return b}for(var c=0,k=i.length;c<k;c++){var h=g[Math.min(c,f-1)],j=h.name;if(h.parameterArray)j+="["+(c-f+1)+"]";else if(!e&&c>=f)break;b=Function._validateParameter(i[c],h,j);if(b){b.popStackFrame();return b}}return a};w._validateParameterCount=function(m,g,l){var b,f,e=g.length,h=m.length;if(h<e){var i=e;for(b=0;b<e;b++){var j=g[b];if(j.optional||j.parameterArray)i--}if(h<i)f=c}else if(l&&h>e){f=c;for(b=0;b<e;b++)if(g[b].parameterArray){f=d;break}}if(f){var k=Error.parameterCount();k.popStackFrame();return k}return a};w._validateParameter=function(d,b,j){var c,i=b.type,n=!!b.integer,m=!!b.domElement,o=!!b.mayBeNull;c=Function._validateParameterType(d,i,n,m,o,j);if(c){c.popStackFrame();return c}var g=b.elementType,h=!!b.elementMayBeNull;if(i===Array&&typeof d!==e&&d!==a&&(g||!h))for(var l=!!b.elementInteger,k=!!b.elementDomElement,f=0;f<d.length;f++){var p=d[f];c=Function._validateParameterType(p,g,l,k,h,j+"["+f+"]");if(c){c.popStackFrame();return c}}return a};w._validateParameterType=function(c,f,n,m,o,g){var d,k;if(typeof c===e||c===a){if(o)return a;d=c===a?Error.argumentNull(g):Error.argumentUndefined(g);d.popStackFrame();return d}if(f&&f.__enum){if(typeof c!==i){d=Error.argumentType(g,Object.getType(c),f);d.popStackFrame();return d}if(c%1===0){var h=f.prototype;if(!f.__flags||c===0){for(k in h)if(h[k]===c)return a}else{var l=c;for(k in h){var j=h[k];if(j===0)continue;if((j&c)===j)l-=j;if(l===0)return a}}}d=Error.argumentOutOfRange(g,c,String.format(b.Res.enumInvalidValue,c,f.getName()));d.popStackFrame();return d}if(m&&(!b._isDomElement(c)||c.nodeType===3)){d=Error.argument(g,b.Res.argumentDomElement);d.popStackFrame();return d}if(f&&!b._isInstanceOfType(f,c)){d=Error.argumentType(g,Object.getType(c),f);d.popStackFrame();return d}if(f===Number&&n)if(c%1!==0){d=Error.argumentOutOfRange(g,c,b.Res.argumentInteger);d.popStackFrame();return d}return a};w=Error;w.__typeName="Error";w.__class=c;b._errorArgument=function(e,a,g){var f="Sys.Argument"+e+nb,d=f+": "+(g||b.Res["argument"+e]);if(a)d+=F+String.format(b.Res.paramName,a);var c=Error.create(d,{name:f,paramName:a});c.popStackFrame();c.popStackFrame();return c};b._error=function(g,f,d){var c="Sys."+g+nb,e=c+": "+(f||b.Res[d]),a=Error.create(e,{name:c});a.popStackFrame();a.popStackFrame();return a};w.create=function(c,b){var a=new Error(c);a.message=c;if(b)for(var d in b)a[d]=b[d];a.popStackFrame();return a};w.argument=function(a,c){return b._errorArgument(x,a,c)};w.argumentNull=function(a,c){return b._errorArgument("Null",a,c)};w.argumentOutOfRange=function(f,c,h){var d="Sys.ArgumentOutOfRangeException: "+(h||b.Res.argumentOutOfRange);if(f)d+=F+String.format(b.Res.paramName,f);if(typeof c!==e&&c!==a)d+=F+String.format(b.Res.actualValue,c);var g=Error.create(d,{name:"Sys.ArgumentOutOfRangeException",paramName:f,actualValue:c});g.popStackFrame();return g};w.argumentType=function(e,d,c,f){var a="Sys.ArgumentTypeException: ";if(f)a+=f;else if(d&&c)a+=String.format(b.Res.argumentTypeWithTypes,d.getName(),c.getName());else a+=b.Res.argumentType;if(e)a+=F+String.format(b.Res.paramName,e);var g=Error.create(a,{name:"Sys.ArgumentTypeException",paramName:e,actualType:d,expectedType:c});g.popStackFrame();return g};w.argumentUndefined=function(a,c){return b._errorArgument(ob,a,c)};w.format=function(a){return b._error("Format",a,"format")};w.invalidOperation=function(a){return b._error("InvalidOperation",a,"invalidOperation")};w.notImplemented=function(a){return b._error("NotImplemented",a,"notImplemented")};w.parameterCount=function(a){return b._error("ParameterCount",a,"parameterCount")};w.prototype.popStackFrame=function(){var b=this;if(typeof b.stack===e||b.stack===a||typeof b.fileName===e||b.fileName===a||typeof b.lineNumber===e||b.lineNumber===a)return;var c=b.stack.split(F),f=c[0],h=b.fileName+":"+b.lineNumber;while(typeof f!==e&&f!==a&&f.indexOf(h)<0){c.shift();f=c[0]}var g=c[1];if(typeof g===e||g===a)return;var d=g.match(/@(.*):(\d+)$/);if(typeof d===e||d===a)return;b.fileName=d[1];b.lineNumber=parseInt(d[2]);c.shift();b.stack=c.join(F)};w=Object;w.__typeName="Object";w.__class=c;w.getType=function(b){var a=b.constructor;return!a||typeof a!==f||!a.__typeName||a.__typeName==="Object"?Object:a};w.getTypeName=function(a){return Object.getType(a).getName()};w=String;w.__typeName="String";w.__class=c;z=w.prototype;z.endsWith=function(a){return this.substr(this.length-a.length)===a};z.startsWith=function(a){return this.substr(0,a.length)===a};z.trim=function(){return this.replace(/^\s+|\s+$/g,x)};z.trimEnd=function(){return this.replace(/\s+$/,x)};z.trimStart=function(){return this.replace(/^\s+/,x)};w.format=function(){return String._toFormattedString(d,arguments)};w._toFormattedString=function(o,m){for(var f=x,h=m[0],b=0;c;){var i=h.indexOf("{",b),g=h.indexOf("}",b);if(i<0&&g<0){f+=h.slice(b);break}if(g>0&&(g<i||i<0)){f+=h.slice(b,g+1);b=g+2;continue}f+=h.slice(b,i);b=i+1;if(h.charAt(b)==="{"){f+="{";b++;continue}if(g<0)break;var k=h.substring(b,g),j=k.indexOf(":"),n=parseInt(j<0?k:k.substring(0,j),10)+1,l=j<0?x:k.substring(j+1),d=m[n];if(typeof d===e||d===a)d=x;if(d.toFormattedString)f+=d.toFormattedString(l);else if(o&&d.localeFormat)f+=d.localeFormat(l);else if(d.format)f+=d.format(l);else f+=d.toString();b=g+1}return f};w=Boolean;w.__typeName="Boolean";w.__class=c;w.parse=function(e){var b=e.trim().toLowerCase(),a;if(b==="false")a=d;else if(b==="true")a=c;return a};w=Date;w.__typeName="Date";w.__class=c;w=Number;w.__typeName="Number";w.__class=c;w=RegExp;w.__typeName="RegExp";w.__class=c;if(!g)this.window=this;g.Type=w=Function;z=w.prototype;z.callBaseMethod=function(a,e,c){var d=b._getBaseMethod(this,a,e);return c?d.apply(a,c):d.apply(a)};z.getBaseMethod=function(a,c){return b._getBaseMethod(this,a,c)};z.getBaseType=function(){return typeof this.__baseType===e?a:this.__baseType};z.getInterfaces=function(){var c=[],a=this;while(a){var b=a.__interfaces;if(b)for(var d=0,f=b.length;d<f;d++){var e=b[d];!Array.contains(c,e)&&c.push(e)}a=a.__baseType}return c};z.getName=function(){return typeof this.__typeName===e?x:this.__typeName};z.implementsInterface=function(h){var f=this;f.resolveInheritance();var g=h.getName(),a=f.__interfaceCache;if(a){var i=a[g];if(typeof i!==e)return i}else a=f.__interfaceCache={};var b=f;while(b){var j=b.__interfaces;if(j&&Array.indexOf(j,h)!==y)return a[g]=c;b=b.__baseType}return a[g]=d};z.inheritsFrom=function(a){this.resolveInheritance();return b._inheritsFrom(this,a)};b._inheritsFrom=function(e,b){var d;if(b){var a=e.__baseType;while(a){if(a===b){d=c;break}a=a.__baseType}}return!!d};z.initializeBase=function(b,c){this.resolveInheritance();var a=this.__baseType;if(a)c?a.apply(b,c):a.apply(b);return b};z.isImplementedBy=function(b){if(typeof b===e||b===a)return d;var c=Object.getType(b);return!!(c.implementsInterface&&c.implementsInterface(this))};z.isInstanceOfType=function(a){return b._isInstanceOfType(this,a)};z.registerClass=function(f,e,g){var a=this,j=a.prototype;j.constructor=a;a.__typeName=f;a.__class=c;if(e){a.__baseType=e;a.__basePrototypePending=c}b.__upperCaseTypes[f.toUpperCase()]=a;if(g)for(var i=a.__interfaces=[],d=2,k=arguments.length;d<k;d++){var h=arguments[d];i.push(h)}return a};b.registerComponent=function(d,c){var f=d.getName(),e=b.UI&&(b._inheritsFrom(d,b.UI.Control)||b._inheritsFrom(d,b.UI.Behavior)),a=c&&c.name;if(!a){a=f;var g=a.lastIndexOf(j);if(g>=0){a=a.substr(g+1);if(a&&a.charAt(0)==="_")return}a=a.substr(0,1).toLowerCase()+a.substr(1)}if(!c)c={};c.name=a;c.type=d;c.typeName=f;c._isBehavior=e;c=b.components[a]=A(b.components[a],c);var i=b._getCreate(c),h=e?b.ElementSet.prototype:b.create;h[a]=i};b.registerPlugin=function(a){var e=a.name,f=a.functionName||e;b.plugins[e]=A(b.plugins[e],a);var g=a.plugin,d;if(a.global)d=b;else if(a.dom)d=b.ElementSet.prototype;else if(a.components)d=b.ComponentSet.prototype;if(d)d[f]=b._getCreate(a,c)};b._createComp=function(d,l,f){var i=d.type,h=d.parameters||[],j=d._isBehavior,m=j?f[0]:a,c=f[h.length]||{};c=A({},l,c);p(h,function(a,g){var d=typeof a===k?a:a.name,b=f[g];if(typeof b!==e&&typeof c[d]===e)c[d]=b});if(this instanceof b.ElementSet){var g=[];this.each(function(){g.push(b._create(i,c,this))});return new b.ComponentSet(this,g)}else return b._create(i,c)};b._create=function(f,g,c){var d=typeof c;if(d===k)c=b.get(c);var a;b._2Pass(function(){a=d===e?new f:new f(c);u(a,jb);b._set(a,g);var h=b.Component;if(!h||!h._register(a))u(a,"endUpdate")||u(a,T)});return a};z.registerInterface=function(d){var a=this;b.__upperCaseTypes[d.toUpperCase()]=a;a.prototype.constructor=a;a.__typeName=d;a.__interface=c;return a};z.resolveInheritance=function(){var a=this;if(a.__basePrototypePending){var e=a.__baseType;e.resolveInheritance();var c=e.prototype,d=a.prototype;for(var b in c)d[b]=d[b]||c[b];delete a.__basePrototypePending}};w.getRootNamespaces=function(){return Array.clone(b.__rootNamespaces)};w.isClass=function(a){return!!(a&&a.__class)};w.isInterface=function(a){return!!(a&&a.__interface)};w.isNamespace=function(a){return!!(a&&a.__namespace)};w.parse=function(d,f){var c;if(f){c=b.__upperCaseTypes[f.getName().toUpperCase()+j+d.toUpperCase()];return c||a}if(!d)return a;var e=Type.__htClasses;if(!e)Type.__htClasses=e={};c=e[d];if(!c){c=g.eval(d);e[d]=c}return c};w.registerNamespace=function(a){Type._registerNamespace(a)};w._registerNamespace=function(h){for(var f=g,e=h.split(j),d=0,k=e.length;d<k;d++){var i=e[d],a=f[i];if(!a)a=f[i]={};if(!a.__namespace){!d&&h!=="Sys"&&b.__rootNamespaces.push(a);a.__namespace=c;a.__typeName=e.slice(0,d+1).join(j);a.getName=function(){return this.__typeName}}f=a}};w._checkDependency=function(f,a){var g=Type._registerScript._scripts,c=g?!!g[f]:d;if(typeof a!==e&&!c)throw Error.invalidOperation(String.format(b.Res.requiredScriptReferenceNotIncluded,a,f));return c};w._registerScript=function(a,e){var d=Type._registerScript._scripts;if(!d)Type._registerScript._scripts=d={};if(d[a])throw Error.invalidOperation(String.format(b.Res.scriptAlreadyLoaded,a));d[a]=c;if(e)for(var f=0,h=e.length;f<h;f++){var g=e[f];if(!Type._checkDependency(g))throw Error.invalidOperation(String.format(b.Res.scriptDependencyNotFound,a,g));}};w._registerNamespace("Sys");b.__upperCaseTypes={};b.__rootNamespaces=[b];b._isInstanceOfType=function(g,f){if(typeof f===e||f===a)return d;if(f instanceof g)return c;var b=Object.getType(f);return!!(b===g)||b.inheritsFrom&&b.inheritsFrom(g)||b.implementsInterface&&b.implementsInterface(g)};b._getBaseMethod=function(e,f,d){var c=e.getBaseType();if(c){var b=c.prototype[d];return b instanceof Function?b:a}return a};b._isDomElement=function(a){var e=d;if(typeof a.nodeType!==i){var c=a.ownerDocument||a.document||a;if(c!=a){var f=c.defaultView||c.parentWindow;e=f!=a}else e=!c.body||!b._isDomElement(c.body)}return!e};var ib=b._isBrowser=function(a){return b.Browser.agent===b.Browser[a]};p(b._ns,w._registerNamespace);delete b._ns;w=Array;w.__typeName="Array";w.__class=c;var tb=b._indexOf=function(d,f,a){if(typeof f===e)return y;var c=d.length;if(c!==0){a=a-0;if(isNaN(a))a=0;else{if(isFinite(a))a=a-a%1;if(a<0)a=Math.max(0,c+a)}for(var b=a;b<c;b++)if(d[b]===f)return b}return y};w.add=w.enqueue=function(a,b){a[a.length]=b};w.addRange=function(a,b){a.push.apply(a,b)};w.clear=function(a){a.length=0};w.clone=function(b){return b.length===1?[b[0]]:Array.apply(a,b)};w.contains=function(a,b){return tb(a,b)>=0};w.dequeue=function(a){return a.shift()};w.forEach=function(b,f,d){for(var a=0,g=b.length;a<g;a++){var c=b[a];typeof c!==e&&f.call(d,c,a,b)}};w.indexOf=tb;w.insert=function(a,b,c){a.splice(b,0,c)};w.parse=function(a){return a?g.eval("("+a+")"):[]};w.remove=function(b,c){var a=tb(b,c);a>=0&&b.splice(a,1);return a>=0};w.removeAt=function(a,b){a.splice(b,1)};Type._registerScript._scripts={"MicrosoftAjaxCore.js":c,"MicrosoftAjaxGlobalization.js":c,"MicrosoftAjaxSerialization.js":c,"MicrosoftAjaxComponentModel.js":c,"MicrosoftAjaxHistory.js":c,"MicrosoftAjaxNetwork.js":c,"MicrosoftAjaxWebServices.js":c};w=b.IDisposable=function(){};w.registerInterface("Sys.IDisposable");w=b.StringBuilder=function(b){this._parts=typeof b!==e&&b!==a&&b!==x?[b.toString()]:[];this._value={};this._len=0};w.prototype={append:function(a){this._parts.push(a);return this},appendLine:function(b){this._parts.push(typeof b===e||b===a||b===x?"\r\n":b+"\r\n");return this},clear:function(){this._parts=[];this._value={};this._len=0},isEmpty:function(){return!this._parts.length||!this.toString()},toString:function(b){var d=this;b=b||x;var c=d._parts;if(d._len!==c.length){d._value={};d._len=c.length}var i=d._value,h=i[b];if(typeof h===e){if(b!==x)for(var f=0;f<c.length;){var g=c[f];if(typeof g===e||g===x||g===a)c.splice(f,1);else f++}i[b]=h=c.join(b)}return h}};w.registerClass("Sys.StringBuilder");var lb=navigator.userAgent,K=b.Browser={InternetExplorer:{},Firefox:{},Safari:{},Opera:{},agent:a,hasDebuggerStatement:d,name:navigator.appName,version:parseFloat(navigator.appVersion),documentMode:0};if(lb.indexOf(" MSIE ")>y){K.agent=K.InternetExplorer;K.version=parseFloat(lb.match(/MSIE (\d+\.\d+)/)[1]);if(K.version>7&&document.documentMode>6)K.documentMode=document.documentMode;K.hasDebuggerStatement=c}else if(lb.indexOf(" Firefox/")>y){K.agent=K.Firefox;K.version=parseFloat(lb.match(/ Firefox\/(\d+\.\d+)/)[1]);K.name=S;K.hasDebuggerStatement=c}else if(lb.indexOf(" AppleWebKit/")>y){K.agent=K.Safari;K.version=parseFloat(lb.match(/ AppleWebKit\/(\d+(\.\d+)?)/)[1]);K.name="Safari"}else if(lb.indexOf("Opera/")>y)K.agent=K.Opera;w=b.EventArgs=function(){};w.registerClass("Sys.EventArgs");b.EventArgs.Empty=new b.EventArgs;w=b.CancelEventArgs=function(){b.CancelEventArgs.initializeBase(this);this._cancel=d};w.prototype={get_cancel:function(){return this._cancel},set_cancel:function(a){this._cancel=a}};w.registerClass("Sys.CancelEventArgs",b.EventArgs);Type.registerNamespace("Sys.UI");w=b._Debug=function(){};w.prototype={_appendConsole:function(a){typeof Debug!==e&&Debug.writeln;g.console&&g.console.log&&g.console.log(a);g.opera&&g.opera.postError(a);g.debugService&&g.debugService.trace(a)},_getTrace:function(){var c=b.get("#TraceConsole");return c&&c.tagName.toUpperCase()==="TEXTAREA"?c:a},_appendTrace:function(b){var a=this._getTrace();if(a)a.value+=b+F},"assert":function(d,a,c){if(!d){a=c&&this.assert.caller?String.format(b.Res.assertFailedCaller,a,this.assert.caller):String.format(b.Res.assertFailed,a);confirm(String.format(b.Res.breakIntoDebugger,a))&&this.fail(a)}},clearTrace:function(){var a=this._getTrace();if(a)a.value=x},fail:function(a){this._appendConsole(a);b.Browser.hasDebuggerStatement&&g.eval("debugger")},trace:function(a){this._appendConsole(a);this._appendTrace(a)},traceDump:function(a,b){this._traceDump(a,b,c)},_traceDump:function(b,l,n,c,h){var d=this;l=l||"traceDump";c=c||x;var j=c+l+": ";if(b===a){d.trace(j+U);return}switch(typeof b){case e:d.trace(j+ob);break;case i:case k:case"boolean":d.trace(j+b);break;default:if(Date.isInstanceOfType(b)||RegExp.isInstanceOfType(b)){d.trace(j+b.toString());break}if(!h)h=[];else if(Array.contains(h,b)){d.trace(j+"...");return}h.push(b);if(b==g||b===document||g.HTMLElement&&b instanceof HTMLElement||typeof b.nodeName===k){var s=b.tagName||"DomElement";if(b.id)s+=" - "+b.id;d.trace(c+l+" {"+s+"}")}else{var q=Object.getTypeName(b);d.trace(c+l+(typeof q===k?" {"+q+"}":x));if(c===x||n){c+="    ";var m,r,t,o,p;if(b instanceof Array){r=b.length;for(m=0;m<r;m++)d._traceDump(b[m],"["+m+"]",n,c,h)}else for(o in b){p=b[o];typeof p!==f&&d._traceDump(p,o,n,c,h)}}}Array.remove(h,b)}}};w.registerClass("Sys._Debug");w=b.Debug=new b._Debug;w.isDebug=d;function Hb(e,g){var d=this,c,a,m;if(g){c=d.__lowerCaseValues;if(!c){d.__lowerCaseValues=c={};var j=d.prototype;for(var l in j)c[l.toLowerCase()]=j[l]}}else c=d.prototype;function h(c){if(typeof a!==i)throw Error.argument("value",String.format(b.Res.enumInvalidValue,c,this.__typeName));}if(!d.__flags){m=g?e.toLowerCase():e;a=c[m.trim()];typeof a!==i&&h.call(d,e);return a}else{for(var k=(g?e.toLowerCase():e).split(G),n=0,f=k.length-1;f>=0;f--){var o=k[f].trim();a=c[o];typeof a!==i&&h.call(d,e.split(G)[f].trim());n|=a}return n}}function Gb(d){var f=this;if(typeof d===e||d===a)return f.__string;var g=f.prototype,b;if(!f.__flags||d===0){for(b in g)if(g[b]===d)return b}else{var c=f.__sortedValues;if(!c){c=[];for(b in g)c.push({key:b,value:g[b]});c.sort(function(a,b){return a.value-b.value});f.__sortedValues=c}var i=[],j=d;for(b=c.length-1;b>=0;b--){var k=c[b],h=k.value;if(h===0)continue;if((h&d)===h){i.push(k.key);j-=h;if(j===0)break}}if(i.length&&j===0)return i.reverse().join(", ")}return x}w=Type;w.prototype.registerEnum=function(d,f){var a=this;b.__upperCaseTypes[d.toUpperCase()]=a;for(var e in a.prototype)a[e]=a.prototype[e];a.__typeName=d;a.parse=Hb;a.__string=a.toString();a.toString=Gb;a.__flags=f;a.__enum=c};w.isEnum=function(a){return!!(a&&a.__enum)};w.isFlags=function(a){return!!(a&&a.__flags)};w=b.CollectionChange=function(g,b,e,c,f){var d=this;d.action=g;if(b)if(!(b instanceof Array))b=[b];d.newItems=b||a;if(typeof e!==i)e=y;d.newStartingIndex=e;if(c)if(!(c instanceof Array))c=[c];d.oldItems=c||a;if(typeof f!==i)f=y;d.oldStartingIndex=f};w.registerClass("Sys.CollectionChange");w=b.NotifyCollectionChangedAction=function(){};w.prototype={add:0,remove:1,reset:2};w.registerEnum("Sys.NotifyCollectionChangedAction");w=b.NotifyCollectionChangedEventArgs=function(a){this._changes=a;b.NotifyCollectionChangedEventArgs.initializeBase(this)};w.prototype={get_changes:function(){return this._changes||[]}};w.registerClass("Sys.NotifyCollectionChangedEventArgs",b.EventArgs);w=b.Observer=function(){};w.registerClass("Sys.Observer");w.makeObservable=function(a){var d=a instanceof Array,c=b.Observer;if(a.setValue===c._observeMethods.setValue)return a;c._addMethods(a,c._observeMethods);d&&c._addMethods(a,c._arrayMethods);return a};w._addMethods=function(c,a){for(var b in a)c[b]=a[b]};w._addEventHandler=function(e,a,d){b.Observer._getContext(e,c).events._addHandler(a,d)};w.addEventHandler=function(d,a,c){b.Observer._addEventHandler(d,a,c)};w._removeEventHandler=function(e,a,d){b.Observer._getContext(e,c).events._removeHandler(a,d)};w.removeEventHandler=function(d,a,c){b.Observer._removeEventHandler(d,a,c)};w.clearEventHandlers=function(d,a){b.Observer._getContext(d,c).events._removeHandlers(a)};w.raiseEvent=function(c,f,e){var d=b.Observer._getContext(c);if(!d)return;var a=d.events.getHandler(f);a&&a(c,e||b.EventArgs.Empty)};w.addPropertyChanged=function(c,a){b.Observer._addEventHandler(c,C,a)};w.removePropertyChanged=function(c,a){b.Observer._removeEventHandler(c,C,a)};w.beginUpdate=function(a){b.Observer._getContext(a,c).updating=c};w.endUpdate=function(e){var c=b.Observer._getContext(e);if(!c||!c.updating)return;c.updating=d;var g=c.dirty;c.dirty=d;if(g){if(e instanceof Array){var f=c.changes;c.changes=a;b.Observer.raiseCollectionChanged(e,f)}b.Observer.raisePropertyChanged(e,x)}};w.isUpdating=function(c){var a=b.Observer._getContext(c);return a?a.updating:d};w._setValue=function(d,o,l){for(var g,v,p=d,i=o.split(j),n=0,r=i.length-1;n<r;n++){var q=i[n];g=d[V+q];if(typeof g===f)d=g.call(d);else d=d[q];var s=typeof d;if(d===a||s===e)throw Error.invalidOperation(String.format(b.Res.nullReferenceInPath,o));}var k,h=i[r];g=d[V+h];if(typeof g===f)k=g.call(d);else k=d[h];u(d,t+h,l)||(d[h]=l);if(k!==l){var m=b.Observer._getContext(p);if(m&&m.updating){m.dirty=c;return}b.Observer.raisePropertyChanged(p,i[0])}};w.setValue=function(c,a,d){b.Observer._setValue(c,a,d)};w.raisePropertyChanged=function(c,a){b.Observer.raiseEvent(c,C,new b.PropertyChangedEventArgs(a))};w.addCollectionChanged=function(c,a){b.Observer._addEventHandler(c,J,a)};w.removeCollectionChanged=function(c,a){b.Observer._removeEventHandler(c,J,a)};w._collectionChange=function(e,d){var a=this._getContext(e);if(a&&a.updating){a.dirty=c;var b=a.changes;if(!b)a.changes=b=[d];else b.push(d)}else{this.raiseCollectionChanged(e,[d]);this.raisePropertyChanged(e,"length")}};w.add=function(a,c){var d=new b.CollectionChange(b.NotifyCollectionChangedAction.add,[c],a.length);Array.add(a,c);b.Observer._collectionChange(a,d)};w.addRange=function(a,c){var d=new b.CollectionChange(b.NotifyCollectionChangedAction.add,c,a.length);Array.addRange(a,c);b.Observer._collectionChange(a,d)};w.clear=function(c){var d=Array.clone(c);Array.clear(c);b.Observer._collectionChange(c,new b.CollectionChange(b.NotifyCollectionChangedAction.reset,a,y,d,0))};w.insert=function(a,c,d){Array.insert(a,c,d);b.Observer._collectionChange(a,new b.CollectionChange(b.NotifyCollectionChangedAction.add,[d],c))};w.remove=function(e,f){var g=Array.indexOf(e,f);if(g!==y){Array.remove(e,f);b.Observer._collectionChange(e,new b.CollectionChange(b.NotifyCollectionChangedAction.remove,a,y,[f],g));return c}return d};w.removeAt=function(d,c){if(c>y&&c<d.length){var e=d[c];Array.removeAt(d,c);b.Observer._collectionChange(d,new b.CollectionChange(b.NotifyCollectionChangedAction.remove,a,y,[e],c))}};w.raiseCollectionChanged=function(c,a){b.Observer.raiseEvent(c,J,new b.NotifyCollectionChangedEventArgs(a))};w._observeMethods={add_propertyChanged:function(a){b.Observer._addEventHandler(this,C,a)},remove_propertyChanged:function(a){b.Observer._removeEventHandler(this,C,a)},addEventHandler:function(a,c){b.Observer._addEventHandler(this,a,c)},removeEventHandler:function(a,c){b.Observer._removeEventHandler(this,a,c)},clearEventHandlers:function(a){b.Observer._getContext(this,c).events._removeHandlers(a)},get_isUpdating:function(){return b.Observer.isUpdating(this)},beginUpdate:function(){b.Observer.beginUpdate(this)},endUpdate:function(){b.Observer.endUpdate(this)},setValue:function(c,a){b.Observer._setValue(this,c,a)},raiseEvent:function(d,c){b.Observer.raiseEvent(this,d,c||a)},raisePropertyChanged:function(a){b.Observer.raiseEvent(this,C,new b.PropertyChangedEventArgs(a))}};w._arrayMethods={add_collectionChanged:function(a){b.Observer._addEventHandler(this,J,a)},remove_collectionChanged:function(a){b.Observer._removeEventHandler(this,J,a)},add:function(a){b.Observer.add(this,a)},addRange:function(a){b.Observer.addRange(this,a)},clear:function(){b.Observer.clear(this)},insert:function(a,c){b.Observer.insert(this,a,c)},remove:function(a){return b.Observer.remove(this,a)},removeAt:function(a){b.Observer.removeAt(this,a)},raiseCollectionChanged:function(a){b.Observer.raiseEvent(this,J,new b.NotifyCollectionChangedEventArgs(a))}};w._getContext=function(c,d){var b=c._observerContext;return b?b():d?(c._observerContext=this._createContext())():a};w._createContext=function(){var a={events:new b.EventHandlerList};return function(){return a}};function N(a,c,b){return a<c||a>b}function Ib(c,a){var d=new Date,e=wb(d);if(a<B){var b=yb(d,c,e);a+=b-b%B;if(a>c.Calendar.TwoDigitYearMax)a-=B}return a}function wb(f,d){if(!d)return 0;for(var c,e=f.getTime(),b=0,g=d.length;b<g;b+=4){c=d[b+2];if(c===a||e>=c)return b}return 0}function yb(d,b,e,c){var a=d.getFullYear();if(!c&&b.eras)a-=b.eras[e+3];return a}b._appendPreOrPostMatch=function(f,b){for(var e=0,a=d,c=0,h=f.length;c<h;c++){var g=f.charAt(c);switch(g){case"'":if(a)b.push("'");else e++;a=d;break;case"\\":a&&b.push("\\");a=!a;break;default:b.push(g);a=d}}return e};w=Date;w._expandFormat=function(a,c){c=c||"F";var d=c.length;if(d===1)switch(c){case"d":return a.ShortDatePattern;case"D":return a.LongDatePattern;case"t":return a.ShortTimePattern;case"T":return a.LongTimePattern;case"f":return a.LongDatePattern+h+a.ShortTimePattern;case"F":return a.FullDateTimePattern;case"M":case"m":return a.MonthDayPattern;case"s":return a.SortableDateTimePattern;case"Y":case"y":return a.YearMonthPattern;default:throw Error.format(b.Res.formatInvalidString);}else if(d===2&&c.charAt(0)==="%")c=c.charAt(1);return c};w._getParseRegExp=function(g,i){var h=g._parseRegExp;if(!h)g._parseRegExp=h={};else{var o=h[i];if(o)return o}var e=Date._expandFormat(g,i);e=e.replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g,"\\\\$1");var d=["^"],p=[],j=0,m=0,l=Date._getTokenRegExp(),f;while((f=l.exec(e))!==a){var s=e.slice(j,f.index);j=l.lastIndex;m+=b._appendPreOrPostMatch(s,d);if(m%2){d.push(f[0]);continue}var q=f[0],t=q.length,c;switch(q){case W:case"ddd":case X:case"MMM":case"gg":case"g":c="(\\D+)";break;case"tt":case"t":c="(\\D*)";break;case Y:case"fff":case"ff":case"f":c="(\\d{"+t+"})";break;case"dd":case"d":case"MM":case"M":case"yy":case"y":case"HH":case"H":case"hh":case"h":case"mm":case"m":case"ss":case"s":c="(\\d\\d?)";break;case"zzz":c="([+-]?\\d\\d?:\\d{2})";break;case"zz":case"z":c="([+-]?\\d\\d?)";break;case D:c="(\\"+g.DateSeparator+")"}c&&d.push(c);p.push(f[0])}b._appendPreOrPostMatch(e.slice(j),d);d.push(n);var r=d.join(x).replace(/\s+/g,"\\s+"),k={regExp:r,groups:p};h[i]=k;return k};w._getTokenRegExp=function(){return/\/|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z|gg|g/g};w.parseLocale=function(a){return Date._parse(a,b.CultureInfo.CurrentCulture,arguments)};w.parseInvariant=function(a){return Date._parse(a,b.CultureInfo.InvariantCulture,arguments)};w._parse=function(k,g,l){var b,f,e,i,h,j=d;for(b=1,f=l.length;b<f;b++){i=l[b];if(i){j=c;e=Date._parseExact(k,i,g);if(e)return e}}if(!j){h=g._getDateTimeFormats();for(b=0,f=h.length;b<f;b++){e=Date._parseExact(k,h[b],g);if(e)return e}}return a};w._parseExact=function(w,J,s){w=w.trim();var e=s.dateTimeFormat,F=this._getParseRegExp(e,J),I=(new RegExp(F.regExp)).exec(w);if(I===a)return a;for(var H=F.groups,y=a,j=a,h=a,i=a,p=a,f=0,k,z=0,A=0,x=0,l=a,v=d,r=0,K=H.length;r<K;r++){var g=I[r+1];if(g){var G=H[r],m=G.length,c=parseInt(g,10);switch(G){case"dd":case"d":i=c;if(N(i,1,31))return a;break;case"MMM":case X:h=s._getMonthIndex(g,m===3);if(N(h,0,11))return a;break;case"M":case"MM":h=c-1;if(N(h,0,11))return a;break;case"y":case"yy":case Y:j=m<4?Ib(e,c):c;if(N(j,0,9999))return a;break;case"h":case"hh":f=c;if(f===12)f=0;if(N(f,0,11))return a;break;case"H":case"HH":f=c;if(N(f,0,23))return a;break;case"m":case"mm":z=c;if(N(z,0,59))return a;break;case"s":case"ss":A=c;if(N(A,0,59))return a;break;case"tt":case"t":var D=g.toUpperCase();v=D===e.PMDesignator.toUpperCase();if(!v&&D!==e.AMDesignator.toUpperCase())return a;break;case"f":case"ff":case"fff":x=c*Math.pow(10,3-m);if(N(x,0,999))return a;break;case"ddd":case W:p=s._getDayIndex(g,m===3);if(N(p,0,6))return a;break;case"zzz":var u=g.split(/:/);if(u.length!==2)return a;k=parseInt(u[0],10);if(N(k,-12,13))return a;var t=parseInt(u[1],10);if(N(t,0,59))return a;l=k*60+(g.startsWith(E)?-t:t);break;case"z":case"zz":k=c;if(N(k,-12,13))return a;l=k*60;break;case"g":case"gg":var o=g;if(!o||!e.eras)return a;o=o.toLowerCase().trim();for(var q=0,L=e.eras.length;q<L;q+=4)if(o===e.eras[q+1].toLowerCase()){y=q;break}if(y===a)return a}}}var b=new Date,C,n=e.Calendar.convert;C=n?n.fromGregorian(b)[0]:b.getFullYear();if(j===a)j=C;else if(e.eras)j+=e.eras[(y||0)+3];if(h===a)h=0;if(i===a)i=1;if(n){b=n.toGregorian(j,h,i);if(b===a)return a}else{b.setFullYear(j,h,i);if(b.getDate()!==i)return a;if(p!==a&&b.getDay()!==p)return a}if(v&&f<12)f+=12;b.setHours(f,z,A,x);if(l!==a){var B=b.getMinutes()-(l+b.getTimezoneOffset());b.setHours(b.getHours()+parseInt(B/60,10),B%60)}return b};z=w.prototype;z.format=function(a){return this._toFormattedString(a,b.CultureInfo.InvariantCulture)};z.localeFormat=function(a){return this._toFormattedString(a,b.CultureInfo.CurrentCulture)};z._toFormattedString=function(h,n){var d=this,e=n.dateTimeFormat,o=e.Calendar.convert;if(!h||!h.length||h==="i"){var a;if(n&&n.name.length)if(o)a=d._toFormattedString(e.FullDateTimePattern,n);else{var z=new Date(d.getTime()),K=wb(d,e.eras);z.setFullYear(yb(d,e,K));a=z.toLocaleString()}else a=d.toString();return a}var A=e.eras,w=h==="s";h=Date._expandFormat(e,h);a=[];var i,J=["0","00","000"];function g(c,a){var b=c+x;return a>1&&b.length<a?(J[a-2]+b).substr(-a):b}var l,t,C=/([^d]|^)(d|dd)([^d]|$)/g;function G(){if(l||t)return l;l=C.test(h);t=c;return l}var v=0,s=Date._getTokenRegExp(),k;if(!w&&o)k=o.fromGregorian(d);for(;c;){var I=s.lastIndex,m=s.exec(h),F=h.slice(I,m?m.index:h.length);v+=b._appendPreOrPostMatch(F,a);if(!m)break;if(v%2){a.push(m[0]);continue}function p(a,b){if(k)return k[b];switch(b){case 0:return a.getFullYear();case 1:return a.getMonth();case 2:return a.getDate()}}var y=m[0],f=y.length;switch(y){case"ddd":case W:q=f===3?e.AbbreviatedDayNames:e.DayNames;a.push(q[d.getDay()]);break;case"d":case"dd":l=c;a.push(g(p(d,2),f));break;case"MMM":case X:var u=f===3?Z:x,r=e[u+pb],q=e[u+qb],j=p(d,1);a.push(r&&G()?r[j]:q[j]);break;case"M":case"MM":a.push(g(p(d,1)+1,f));break;case"y":case"yy":case Y:j=k?k[0]:yb(d,e,wb(d,A),w);if(f<4)j=j%B;a.push(g(j,f));break;case"h":case"hh":i=d.getHours()%12;if(i===0)i=12;a.push(g(i,f));break;case"H":case"HH":a.push(g(d.getHours(),f));break;case"m":case"mm":a.push(g(d.getMinutes(),f));break;case"s":case"ss":a.push(g(d.getSeconds(),f));break;case"t":case"tt":j=d.getHours()<12?e.AMDesignator:e.PMDesignator;a.push(f===1?j.charAt(0):j);break;case"f":case"ff":case"fff":a.push(g(d.getMilliseconds(),3).substr(0,f));break;case"z":case"zz":i=d.getTimezoneOffset()/60;a.push((i<=0?H:E)+g(Math.floor(Math.abs(i)),f));break;case"zzz":i=d.getTimezoneOffset()/60;a.push((i<=0?H:E)+g(Math.floor(Math.abs(i)),2)+":"+g(Math.abs(d.getTimezoneOffset()%60),2));break;case"g":case"gg":e.eras&&a.push(e.eras[wb(d,A)+1]);break;case D:a.push(e.DateSeparator)}}return a.join(x)};String.localeFormat=function(){return String._toFormattedString(c,arguments)};var Fb={P:["Percent",["-n %","-n%","-%n"],["n %","n%","%n"],B],N:["Number",["(n)","-n","- n","n-","n -"],a,1],C:["Currency",["($n)","-$n","$-n","$n-","(n$)","-n$","n-$","n$-","-n $","-$ n","n $-","$ n-","$ -n","n- $","($ n)","(n $)"],["$n","n$","$ n","n $"],1]};b._toFormattedString=function(f,q){var i=this;if(!f||!f.length||f==="i")return q&&q.name.length?i.toLocaleString():i.toString();function o(a,c,d){for(var b=a.length;b<c;b++)a=d?"0"+a:a+"0";return a}function s(l,i,n,q,s){var k=n[0],m=1,r=Math.pow(10,i),p=Math.round(l*r)/r;if(!isFinite(p))p=l;l=p;var b=l+x,a=x,e,g=b.split(/e/i);b=g[0];e=g.length>1?parseInt(g[1]):0;g=b.split(j);b=g[0];a=g.length>1?g[1]:x;var t;if(e>0){a=o(a,e,d);b+=a.slice(0,e);a=a.substr(e)}else if(e<0){e=-e;b=o(b,e+1,c);a=b.slice(-e,b.length)+a;b=b.slice(0,-e)}if(i>0)a=s+(a.length>i?a.slice(0,i):o(a,i,d));else a=x;var f=b.length-1,h=x;while(f>=0){if(k===0||k>f)return b.slice(0,f+1)+(h.length?q+h+a:a);h=b.slice(f-k+1,f+1)+(h.length?q+h:x);f-=k;if(m<n.length){k=n[m];m++}}return b.slice(0,f+1)+q+h+a}var a=q.numberFormat,g=Math.abs(i);f=f||"D";var h=y;if(f.length>1)h=parseInt(f.slice(1),10);var m,e=f.charAt(0).toUpperCase();switch(e){case"D":m="n";if(h!==y)g=o(x+g,h,c);if(i<0)g=-g;break;case"C":case"N":case"P":e=Fb[e];var k=e[0];m=i<0?e[1][a[k+"NegativePattern"]]:e[2]?e[2][a[k+"PositivePattern"]]:"n";if(h===y)h=a[k+"DecimalDigits"];g=s(Math.abs(i)*e[3],h,a[k+"GroupSizes"],a[k+"GroupSeparator"],a[k+"DecimalSeparator"]);break;default:throw Error.format(b.Res.formatBadFormatSpecifier);}for(var r=/n|\$|-|%/g,l=x;c;){var t=r.lastIndex,p=r.exec(m);l+=m.slice(t,p?p.index:m.length);if(!p)break;switch(p[0]){case"n":l+=g;break;case n:l+=a.CurrencySymbol;break;case E:if(/[1-9]/.test(g))l+=a.NegativeSign;break;case"%":l+=a.PercentSymbol}}return l};w=Number;w.parseLocale=function(a){return Number._parse(a,b.CultureInfo.CurrentCulture)};w.parseInvariant=function(a){return Number._parse(a,b.CultureInfo.InvariantCulture)};w._parse=function(b,t){b=b.trim();if(b.match(/^[+-]?infinity$/i))return parseFloat(b);if(b.match(/^0x[a-f0-9]+$/i))return parseInt(b);var c=t.numberFormat,i=Number._parseNumberNegativePattern(b,c,c.NumberNegativePattern),k=i[0],f=i[1];if(k===x&&c.NumberNegativePattern!==1){i=Number._parseNumberNegativePattern(b,c,1);k=i[0];f=i[1]}if(k===x)k=H;var m,e,g=f.indexOf("e");if(g<0)g=f.indexOf("E");if(g<0){e=f;m=a}else{e=f.substr(0,g);m=f.substr(g+1)}var d,n,s=c.NumberDecimalSeparator,q=e.indexOf(s);if(q<0){d=e;n=a}else{d=e.substr(0,q);n=e.substr(q+s.length)}var p=c.NumberGroupSeparator;d=d.split(p).join(x);var r=p.replace(/\u00A0/g,h);if(p!==r)d=d.split(r).join(x);var o=k+d;if(n!==a)o+=j+n;if(m!==a){var l=Number._parseNumberNegativePattern(m,c,1);if(l[0]===x)l[0]=H;o+="e"+l[0]+l[1]}return o.match(/^[+-]?\d*\.?\d*(e[+-]?\d+)?$/)?parseFloat(o):Number.NaN};w._parseNumberNegativePattern=function(a,d,e){var b=d.NegativeSign,c=d.PositiveSign;switch(e){case 4:b=h+b;c=h+c;case 3:if(a.endsWith(b))return[E,a.substr(0,a.length-b.length)];else if(a.endsWith(c))return[H,a.substr(0,a.length-c.length)];break;case 2:b+=h;c+=h;case 1:if(a.startsWith(b))return[E,a.substr(b.length)];else if(a.startsWith(c))return[H,a.substr(c.length)];break;case 0:if(a.startsWith("(")&&a.endsWith(")"))return[E,a.substr(1,a.length-2)]}return[x,a]};z=w.prototype;z.format=function(a){return b._toFormattedString.call(this,a,b.CultureInfo.InvariantCulture)};z.localeFormat=function(a){return b._toFormattedString.call(this,a,b.CultureInfo.CurrentCulture)};function Ab(a){return a.split(" ").join(h).toUpperCase()}function xb(b){var a=[];p(b,function(b,c){a[c]=Ab(b)});return a}function Cb(c){var b={};v(c,function(c,d){b[d]=c instanceof Array?c.length===1?[c]:Array.apply(a,c):typeof c===o?Cb(c):c});return b}w=b.CultureInfo=function(c,b,a){this.name=c;this.numberFormat=b;this.dateTimeFormat=a};w.prototype={_getDateTimeFormats:function(){var b=this._dateTimeFormats;if(!b){var a=this.dateTimeFormat;this._dateTimeFormats=b=[a.MonthDayPattern,a.YearMonthPattern,a.ShortDatePattern,a.ShortTimePattern,a.LongDatePattern,a.LongTimePattern,a.FullDateTimePattern,a.RFC1123Pattern,a.SortableDateTimePattern,a.UniversalSortableDateTimePattern]}return b},_getMonthIndex:function(b,g){var a=this,c=g?"_upperAbbrMonths":"_upperMonths",e=c+"Genitive",h=a[c];if(!h){var f=g?Z:x;a[c]=xb(a.dateTimeFormat[f+qb]);a[e]=xb(a.dateTimeFormat[f+pb])}b=Ab(b);var d=tb(a[c],b);if(d<0)d=tb(a[e],b);return d},_getDayIndex:function(e,c){var a=this,b=c?"_upperAbbrDays":"_upperDays",d=a[b];if(!d)a[b]=xb(a.dateTimeFormat[(c?Z:x)+"DayNames"]);return tb(a[b],Ab(e))}};w.registerClass("Sys.CultureInfo");w._parse=function(a){var c=a.dateTimeFormat;if(c&&!c.eras)c.eras=a.eras;return new b.CultureInfo(a.name,a.numberFormat,c)};w._setup=function(){var c=this,b=g.__cultureInfo,f=["January","February","March","April","May","June","July","August","September","October","November","December",x],e=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",x],h={name:x,numberFormat:{CurrencyDecimalDigits:2,CurrencyDecimalSeparator:j,CurrencyGroupSizes:[3],NumberGroupSizes:[3],PercentGroupSizes:[3],CurrencyGroupSeparator:G,CurrencySymbol:"¤",NaNSymbol:"NaN",CurrencyNegativePattern:0,NumberNegativePattern:1,PercentPositivePattern:0,PercentNegativePattern:0,NegativeInfinitySymbol:"-Infinity",NegativeSign:E,NumberDecimalDigits:2,NumberDecimalSeparator:j,NumberGroupSeparator:G,CurrencyPositivePattern:0,PositiveInfinitySymbol:"Infinity",PositiveSign:H,PercentDecimalDigits:2,PercentDecimalSeparator:j,PercentGroupSeparator:G,PercentSymbol:"%",PerMilleSymbol:"‰",NativeDigits:["0","1","2","3","4","5","6","7","8","9"],DigitSubstitution:1},dateTimeFormat:{AMDesignator:"AM",Calendar:{MinSupportedDateTime:"@-62135568000000@",MaxSupportedDateTime:"@253402300799999@",AlgorithmType:1,CalendarType:1,Eras:[1],TwoDigitYearMax:2029},DateSeparator:D,FirstDayOfWeek:0,CalendarWeekRule:0,FullDateTimePattern:"dddd, dd MMMM yyyy HH:mm:ss",LongDatePattern:"dddd, dd MMMM yyyy",LongTimePattern:"HH:mm:ss",MonthDayPattern:"MMMM dd",PMDesignator:"PM",RFC1123Pattern:"ddd, dd MMM yyyy HH':'mm':'ss 'GMT'",ShortDatePattern:"MM/dd/yyyy",ShortTimePattern:"HH:mm",SortableDateTimePattern:"yyyy'-'MM'-'dd'T'HH':'mm':'ss",TimeSeparator:":",UniversalSortableDateTimePattern:"yyyy'-'MM'-'dd HH':'mm':'ss'Z'",YearMonthPattern:"yyyy MMMM",AbbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],ShortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],DayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],AbbreviatedMonthNames:e,MonthNames:f,NativeCalendarName:"Gregorian Calendar",AbbreviatedMonthGenitiveNames:Array.clone(e),MonthGenitiveNames:Array.clone(f)},eras:[1,"A.D.",a,0]};c.InvariantCulture=c._parse(h);switch(typeof b){case k:b=g.eval("("+b+")");case o:c.CurrentCulture=c._parse(b);delete __cultureInfo;break;default:b=Cb(h);b.name="en-US";b.numberFormat.CurrencySymbol=n;var d=b.dateTimeFormat;d.FullDatePattern="dddd, MMMM dd, yyyy h:mm:ss tt";d.LongDatePattern="dddd, MMMM dd, yyyy";d.LongTimePattern="h:mm:ss tt";d.ShortDatePattern="M/d/yyyy";d.ShortTimePattern="h:mm tt";d.YearMonthPattern="MMMM, yyyy";c.CurrentCulture=c._parse(b)}};w._setup();Type.registerNamespace("Sys.Serialization");w=b.Serialization.JavaScriptSerializer=function(){};w.registerClass("Sys.Serialization.JavaScriptSerializer");w._esc={charsRegExs:{'"':/\"/g,"\\":/\\/g},chars:["\\",'"'],dateRegEx:/(^|[^\\])\"\\\/Date\((-?[0-9]+)(?:[a-zA-Z]|(?:\+|-)[0-9]{4})?\)\\\/\"/g,escapeChars:{"\\":"\\\\",'"':'\\"',"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r"},escapeRegExG:/[\"\\\x00-\x1F]/g,escapeRegEx:/[\"\\\x00-\x1F]/i,jsonRegEx:/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/g,jsonStringRegEx:/\"(\\.|[^\"\\])*\"/g};w._init=function(){for(var d=this._esc,g=d.chars,f=d.charsRegExs,e=d.escapeChars,b=0;b<32;b++){var a=String.fromCharCode(b);g[b+2]=a;f[a]=new RegExp(a,"g");e[a]=e[a]||"\\u"+("000"+b.toString(16)).slice(-4)}this._load=c};w._serializeNumberWithBuilder=function(a,c){if(!isFinite(a))throw Error.invalidOperation(b.Res.cannotSerializeNonFiniteNumbers);c.append(String(a))};w._serializeStringWithBuilder=function(a,e){e.append('"');var b=this._esc;if(b.escapeRegEx.test(a)){!this._load&&this._init();if(a.length<128)a=a.replace(b.escapeRegExG,function(a){return b.escapeChars[a]});else for(var d=0;d<34;d++){var c=b.chars[d];if(a.indexOf(c)!==y){var f=b.escapeChars[c];a=ib("Opera")||ib(S)?a.split(c).join(f):a.replace(b.charsRegExs[c],f)}}}e.append(a).append('"')};w._serializeWithBuilder=function(b,a,q,p){var h=this,g;switch(typeof b){case o:if(b)if(Number.isInstanceOfType(b))h._serializeNumberWithBuilder(b,a);else if(Boolean.isInstanceOfType(b))a.append(b);else if(String.isInstanceOfType(b))h._serializeStringWithBuilder(b,a);else if(b instanceof Array){a.append("[");for(g=0;g<b.length;++g){g&&a.append(G);h._serializeWithBuilder(b[g],a,d,p)}a.append("]")}else{if(Date.isInstanceOfType(b)){a.append('"\\/Date(').append(b.getTime()).append(')\\/"');break}var j=[],l=0;for(var m in b)if(m.charAt(0)!==n)if(m==="__type"&&l){j[l++]=j[0];j[0]=m}else j[l++]=m;q&&j.sort();a.append("{");var r;for(g=0;g<l;g++){var t=j[g],s=b[t],u=typeof s;if(u!==e&&u!==f){r&&a.append(G);h._serializeWithBuilder(t,a,q,p);a.append(":");h._serializeWithBuilder(s,a,q,p);r=c}}a.append("}")}else a.append(U);break;case i:h._serializeNumberWithBuilder(b,a);break;case k:h._serializeStringWithBuilder(b,a);break;case"boolean":a.append(b);break;default:a.append(U)}};w.serialize=function(c){var a=new b.StringBuilder;b.Serialization.JavaScriptSerializer._serializeWithBuilder(c,a,d);return a.toString()};w.deserialize=function(d,f){if(!d.length)throw Error.argument("data",b.Res.cannotDeserializeEmptyString);var h,c=b.Serialization.JavaScriptSerializer._esc;try{var e=d.replace(c.dateRegEx,"$1new Date($2)");if(f&&c.jsonRegEx.test(e.replace(c.jsonStringRegEx,x)))throw a;return g.eval("("+e+")")}catch(h){throw Error.argument("data",b.Res.cannotDeserializeInvalidJson);}};Type.registerNamespace("Sys.UI");w=b.EventHandlerList=function(){this._list={}};w.prototype={_addHandler:function(b,a){Array.add(this._getEvent(b,c),a)},addHandler:function(b,a){this._addHandler(b,a)},_removeHandler:function(c,b){var a=this._getEvent(c);if(!a)return;Array.remove(a,b)},_removeHandlers:function(b){if(!b)this._list={};else{var a=this._getEvent(b);if(!a)return;a.length=0}},removeHandler:function(b,a){this._removeHandler(b,a)},getHandler:function(c){var b=this._getEvent(c);if(!b||!b.length)return a;b=Array.clone(b);return function(c,d){for(var a=0,e=b.length;a<e;a++)b[a](c,d)}},_getEvent:function(c,d){var b=this._list[c];if(!b){if(!d)return a;this._list[c]=b=[]}return b}};w.registerClass("Sys.EventHandlerList");w=b.CommandEventArgs=function(f,c,d,e){var a=this;b.CommandEventArgs.initializeBase(a);a._commandName=f;a._commandArgument=c;a._commandSource=d;a._commandEvent=e};w.prototype={get_commandName:function(){return this._commandName||a},get_commandArgument:function(){return this._commandArgument},get_commandSource:function(){return this._commandSource||a},get_commandEvent:function(){return this._commandEvent||a}};w.registerClass("Sys.CommandEventArgs",b.CancelEventArgs);w=b.INotifyPropertyChange=function(){};w.registerInterface("Sys.INotifyPropertyChange");w=b.PropertyChangedEventArgs=function(a){b.PropertyChangedEventArgs.initializeBase(this);this._propertyName=a};w.prototype={get_propertyName:function(){return this._propertyName}};w.registerClass("Sys.PropertyChangedEventArgs",b.EventArgs);w=b.INotifyDisposing=function(){};w.registerInterface("Sys.INotifyDisposing");w=b.Component=function(){b.Application&&b.Application.registerDisposableObject(this)};w.prototype={get_events:function(){return b.Observer._getContext(this,c).events},get_id:function(){return this._id||a},set_id:function(a){this._id=a},get_isInitialized:function(){return!!this._initialized},get_isUpdating:function(){return!!this._updating},add_disposing:function(a){this._addHandler(ab,a)},remove_disposing:function(a){this._removeHandler(ab,a)},add_propertyChanged:function(a){this._addHandler(C,a)},remove_propertyChanged:function(a){this._removeHandler(C,a)},_addHandler:function(a,c){b.Observer.addEventHandler(this,a,c)},_removeHandler:function(a,c){b.Observer.removeEventHandler(this,a,c)},beginUpdate:function(){this._updating=c},dispose:function(){var a=this;b.Observer.raiseEvent(a,ab);b.Observer.clearEventHandlers(a);b.Application.unregisterDisposableObject(a);b.Application.removeComponent(a)},endUpdate:function(){var a=this;a._updating=d;!a._initialized&&a.initialize();a.updated()},initialize:function(){this._initialized=c},raisePropertyChanged:function(a){b.Observer.raisePropertyChanged(this,a)},updated:function(){}};w.registerClass("Sys.Component",a,b.IDisposable,b.INotifyPropertyChange,b.INotifyDisposing);w._setProperties=function(c,l){var e,m=Object.getType(c),h=m===Object||m===b.UI.DomElement,k=b.Component.isInstanceOfType(c)&&!c.get_isUpdating();k&&c.beginUpdate();for(var g in l){var d=l[g],i=h?a:c[V+g];if(h||typeof i!==f){var n=c[g];if(!d||typeof d!==o||h&&!n)c[g]=d;else this._setProperties(n,d)}else{var p=c[t+g];if(typeof p===f)p.apply(c,[d]);else if(d instanceof Array){e=i.apply(c);for(var j=0,q=e.length,r=d.length;j<r;j++,q++)e[q]=d[j]}else if(typeof d===o&&Object.getType(d)===Object){e=i.apply(c);this._setProperties(e,d)}}}k&&c.endUpdate()};w._setReferences=function(e,d){var a,c={};v(d,function(d,e){c[e]=a=$find(d);if(!a)throw Error.invalidOperation(String.format(b.Res.referenceNotFound,d));});b._set(e,c)};$create=w.create=function(g,d,c,h,e){var a=e?new g(e):new g;u(a,jb);d&&b.Component._setProperties(a,d);if(c)for(var f in c)a["add_"+f](c[f]);b.Component._register(a,h);return a};w._register=function(a,d,f){var g;if(b.Component.isInstanceOfType(a)){g=c;var e=b.Application;a.get_id()&&e.addComponent(a);if(e.get_isCreatingComponents()){e._createdComponents.push(a);if(d)e._addComponentToSecondPass(a,d);else!f&&a.endUpdate()}else{d&&b.Component._setReferences(a,d);!f&&a.endUpdate()}}return g};b._getComponent=function(d,c){var a=b.Application.findComponent(c);a&&d.push(a)};b._2Pass=function(d){var a=b.Application,c=!a.get_isCreatingComponents();c&&a.beginCreateComponents();p(d,function(a){a()});c&&a.endCreateComponents()};w=b.UI.MouseButton=function(){};w.prototype={leftButton:0,middleButton:1,rightButton:2};w.registerEnum("Sys.UI.MouseButton");w=b.UI.Key=function(){};w.prototype={backspace:8,tab:9,enter:13,esc:27,space:32,pageUp:33,pageDown:34,end:35,home:36,left:37,up:38,right:39,down:40,del:127};w.registerEnum("Sys.UI.Key");w=b.UI.Point=function(a,b){this.x=a;this.y=b};w.registerClass("Sys.UI.Point");w=b.UI.Bounds=function(d,e,c,b){var a=this;a.x=d;a.y=e;a.height=b;a.width=c};w.registerClass("Sys.UI.Bounds");w=b.UI.DomEvent=function(h){var c=this,a=h,d=c.type=a.type.toLowerCase();c.rawEvent=a;c.altKey=a.altKey;if(typeof a.button!==e)c.button=typeof a.which!==e?a.button:a.button===4?b.UI.MouseButton.middleButton:a.button===2?b.UI.MouseButton.rightButton:b.UI.MouseButton.leftButton;if(d==="keypress")c.charCode=a.charCode||a.keyCode;else if(a.keyCode&&a.keyCode===46)c.keyCode=127;else c.keyCode=a.keyCode;c.clientX=a.clientX;c.clientY=a.clientY;c.ctrlKey=a.ctrlKey;c.target=a.target||a.srcElement;if(!d.startsWith("key"))if(typeof a.offsetX!==e&&typeof a.offsetY!==e){c.offsetX=a.offsetX;c.offsetY=a.offsetY}else if(c.target&&c.target.nodeType!==3&&typeof a.clientX===i){var f=b.UI.DomElement.getLocation(c.target),g=b.UI.DomElement._getWindow(c.target);c.offsetX=(g.pageXOffset||0)+a.clientX-f.x;c.offsetY=(g.pageYOffset||0)+a.clientY-f.y}c.screenX=a.screenX;c.screenY=a.screenY;c.shiftKey=a.shiftKey};w.prototype={preventDefault:function(){var a=this.rawEvent;if(a.preventDefault)a.preventDefault();else if(g.event)a.returnValue=d},stopPropagation:function(){var a=this.rawEvent;if(a.stopPropagation)a.stopPropagation();else if(g.event)a.cancelBubble=c}};w.registerClass("Sys.UI.DomEvent");$addHandler=w.addHandler=function(f,a,c,e){b.query(f).each(function(){var f=this,i=f.nodeType;if(i===3||i===2||i===8)return;if(!f._events)f._events={};var h=f._events[a];if(!h)f._events[a]=h=[];var j=f,g;if(f.addEventListener){g=function(a){return c.call(j,new b.UI.DomEvent(a))};f.addEventListener(a,g,d)}else if(f.attachEvent){g=function(){var d,a={};try{a=b.UI.DomElement._getWindow(j).event}catch(d){}return c.call(j,new b.UI.DomEvent(a))};f.attachEvent(q+a,g)}h.push({handler:c,browserHandler:g,autoRemove:e});e&&b.UI.DomElement._onDispose(f,b.UI.DomEvent._disposeHandlers)})};b.registerPlugin({name:"addHandler",dom:c,plugin:function(c,d,a){b.UI.DomEvent.addHandler(this.get(),c,d,a);return this}});$addHandlers=w.addHandlers=function(f,c,a,e){b.query(f).each(function(){var b=this.nodeType;if(b===3||b===2||b===8)return;for(var g in c){var f=c[g];if(a)f=Function.createDelegate(a,f);$addHandler(this,g,f,e||d)}})};b.registerPlugin({name:"addHandlers",dom:c,plugin:function(d,a,c){b.UI.DomEvent.addHandlers(this.get(),d,a,c);return this}});$clearHandlers=w.clearHandlers=function(a){b.query(a).each(function(){var a=this.nodeType;if(a===3||a===2||a===8)return;b.UI.DomEvent._clearHandlers(this,d)})};b.registerPlugin({name:"clearHandlers",dom:c,plugin:function(){b.UI.DomEvent.clearHandlers(this.get());return this}});w._clearHandlers=function(c,a){b.query(c).each(function(){var b=this.nodeType;if(b===3||b===2||b===8)return;var c=this._events;if(c)for(var g in c)for(var e=c[g],d=e.length-1;d>=0;d--){var f=e[d];(!a||f.autoRemove)&&$removeHandler(this,g,f.handler)}})};w._disposeHandlers=function(){b.UI.DomEvent._clearHandlers(this,c)};$removeHandler=w.removeHandler=function(c,a,d){b.UI.DomEvent._removeHandler(c,a,d)};w._removeHandler=function(e,c,f){b.query(e).each(function(){var b=this,i=b.nodeType;if(i===3||i===2||i===8)return;for(var h=a,g=b._events[c],e=0,j=g.length;e<j;e++)if(g[e].handler===f){h=g[e].browserHandler;break}if(b.removeEventListener)b.removeEventListener(c,h,d);else b.detachEvent&&b.detachEvent(q+c,h);g.splice(e,1)})};b.registerPlugin({name:"removeHandler",dom:c,plugin:function(a,c){b.UI.DomEvent.removeHandler(this.get(),a,c);return this}});w=b.UI.DomElement=function(){};w.registerClass("Sys.UI.DomElement");w.addCssClass=function(a,c){if(!b.UI.DomElement.containsCssClass(a,c))if(a.className===x)a.className=c;else a.className+=h+c};w.containsCssClass=function(b,a){return Array.contains(b.className.split(h),a)};w.getBounds=function(a){var c=b.UI.DomElement.getLocation(a);return new b.UI.Bounds(c.x,c.y,a.offsetWidth||0,a.offsetHeight||0)};$get=w.getElementById=function(d,c){return b.get(l+d,c||a)};if(document.documentElement.getBoundingClientRect)w.getLocation=function(d){if(d.self||d.nodeType===9||d===document.documentElement||d.parentNode===d.ownerDocument.documentElement)return new b.UI.Point(0,0);var j=d.getBoundingClientRect();if(!j)return new b.UI.Point(0,0);var n,e=d.ownerDocument,i=e.documentElement,f=Math.round(j.left)+(i.scrollLeft||(e.body?e.body.scrollLeft:0)),g=Math.round(j.top)+(i.scrollTop||(e.body?e.body.scrollTop:0));if(ib(bb)){try{var h=d.ownerDocument.parentWindow.frameElement||a;if(h){h=h.frameBorder;var k=h==="0"||h==="no"?2:0;f+=k;g+=k}}catch(n){}if(b.Browser.version===7&&!document.documentMode){var l=document.body,m=l.getBoundingClientRect(),c=(m.right-m.left)/l.clientWidth;c=Math.round(c*B);c=(c-c%5)/B;if(!isNaN(c)&&c!==1){f=Math.round(f/c);g=Math.round(g/c)}}if((document.documentMode||0)<8){f-=i.clientLeft;g-=i.clientTop}}return new b.UI.Point(f,g)};else if(ib("Safari"))w.getLocation=function(e){if(e.window&&e.window===e||e.nodeType===9)return new b.UI.Point(0,0);for(var f=0,g=0,k=a,i=a,d,c=e;c;k=c,i=d,c=c.offsetParent){d=b.UI.DomElement._getCurrentStyle(c);var h=c.tagName?c.tagName.toUpperCase():a;if((c.offsetLeft||c.offsetTop)&&(h!==O||(!i||i.position!==I))){f+=c.offsetLeft;g+=c.offsetTop}if(k&&b.Browser.version>=3){f+=parseInt(d.borderLeftWidth);g+=parseInt(d.borderTopWidth)}}d=b.UI.DomElement._getCurrentStyle(e);var l=d?d.position:a;if(l!==I)for(c=e.parentNode;c;c=c.parentNode){h=c.tagName?c.tagName.toUpperCase():a;if(h!==O&&h!==cb&&(c.scrollLeft||c.scrollTop)){f-=c.scrollLeft||0;g-=c.scrollTop||0}d=b.UI.DomElement._getCurrentStyle(c);var j=d?d.position:a;if(j&&j===I)break}return new b.UI.Point(f,g)};else w.getLocation=function(f){if(f.window&&f.window===f||f.nodeType===9)return new b.UI.Point(0,0);for(var g=0,h=0,j=a,i=a,d=a,c=f;c;j=c,i=d,c=c.offsetParent){var e=c.tagName?c.tagName.toUpperCase():a;d=b.UI.DomElement._getCurrentStyle(c);if((c.offsetLeft||c.offsetTop)&&!(e===O&&(!i||i.position!==I))){g+=c.offsetLeft;h+=c.offsetTop}if(j!==a&&d){if(e!=="TABLE"&&e!=="TD"&&e!==cb){g+=parseInt(d.borderLeftWidth)||0;h+=parseInt(d.borderTopWidth)||0}if(e==="TABLE"&&(d.position==="relative"||d.position===I)){g+=parseInt(d.marginLeft)||0;h+=parseInt(d.marginTop)||0}}}d=b.UI.DomElement._getCurrentStyle(f);var k=d?d.position:a;if(k!==I)for(c=f.parentNode;c;c=c.parentNode){e=c.tagName?c.tagName.toUpperCase():a;if(e!==O&&e!==cb&&(c.scrollLeft||c.scrollTop)){g-=c.scrollLeft||0;h-=c.scrollTop||0;d=b.UI.DomElement._getCurrentStyle(c);if(d){g+=parseInt(d.borderLeftWidth)||0;h+=parseInt(d.borderTopWidth)||0}}}return new b.UI.Point(g,h)};w.isDomElement=function(a){return b._isDomElement(a)};w.removeCssClass=function(d,c){var a=h+d.className+h,b=a.indexOf(h+c+h);if(b>=0)d.className=(a.substr(0,b)+h+a.substring(b+c.length+1,a.length)).trim()};w.resolveElement=function(d,e){var c=d;if(!c)return a;if(typeof c===k)c=b.get(l+c,e);return c};w.raiseBubbleEvent=function(c,d){var b=c;while(b){var a=b.control;if(a&&a.onBubbleEvent&&a.raiseBubbleEvent){!a.onBubbleEvent(c,d)&&a._raiseBubbleEvent(c,d);return}b=b.parentNode}};w._ensureGet=function(a,c){return b.get(a,c)};w.setLocation=function(b,c,d){var a=b.style;a.position=I;a.left=c+"px";a.top=d+"px"};w.toggleCssClass=function(c,a){if(b.UI.DomElement.containsCssClass(c,a))b.UI.DomElement.removeCssClass(c,a);else b.UI.DomElement.addCssClass(c,a)};w.getVisibilityMode=function(a){return a._visibilityMode===b.UI.VisibilityMode.hide?b.UI.VisibilityMode.hide:b.UI.VisibilityMode.collapse};w.setVisibilityMode=function(a,c){b.UI.DomElement._ensureOldDisplayMode(a);if(a._visibilityMode!==c){a._visibilityMode=c;if(b.UI.DomElement.getVisible(a)===d)a.style.display=c===b.UI.VisibilityMode.hide?a._oldDisplayMode:P}};w.getVisible=function(d){var a=d.currentStyle||b.UI.DomElement._getCurrentStyle(d);return a?a.visibility!=="hidden"&&a.display!==P:c};w.setVisible=function(a,c){if(c!==b.UI.DomElement.getVisible(a)){b.UI.DomElement._ensureOldDisplayMode(a);var d=a.style;d.visibility=c?"visible":"hidden";d.display=c||a._visibilityMode===b.UI.VisibilityMode.hide?a._oldDisplayMode:P}};w.setCommand=function(d,f,a,e){b.UI.DomEvent.addHandler(d,"click",function(d){var c=e||this;b.UI.DomElement.raiseBubbleEvent(c,new b.CommandEventArgs(f,a,this,d))},c)};b.registerPlugin({name:"setCommand",dom:c,plugin:function(e,a,d){return this.addHandler("click",function(f){var c=d||this;b.UI.DomElement.raiseBubbleEvent(c,new b.CommandEventArgs(e,a,this,f))},c)}});w._ensureOldDisplayMode=function(b){if(!b._oldDisplayMode){var e=b.currentStyle||this._getCurrentStyle(b);b._oldDisplayMode=e?e.display:a;if(!b._oldDisplayMode||b._oldDisplayMode===P){var d=b.tagName,c="inline";if(/^(DIV|P|ADDRESS|BLOCKQUOTE|BODY|COL|COLGROUP|DD|DL|DT|FIELDSET|FORM|H1|H2|H3|H4|H5|H6|HR|IFRAME|LEGEND|OL|PRE|TABLE|TD|TH|TR|UL)$/i.test(d))c="block";else if(d.toUpperCase()==="LI")c="list-item";b._oldDisplayMode=c}}};w._getWindow=function(a){var b=a.ownerDocument||a.document||a;return b.defaultView||b.parentWindow};w._getCurrentStyle=function(b){if(b.nodeType===3)return a;var c=this._getWindow(b);if(b.documentElement)b=b.documentElement;var d=c&&b!==c&&c.getComputedStyle?c.getComputedStyle(b,a):b.currentStyle||b.style;return d};w._onDispose=function(a,e){var c,d=a.dispose;if(d!==b.UI.DomElement._dispose){a.dispose=b.UI.DomElement._dispose;a.__msajaxdispose=c=[];typeof d===f&&c.push(d)}else c=a.__msajaxdispose;c.push(e)};w._dispose=function(){var b=this,c=b.__msajaxdispose;if(c)for(var d=0,e=c.length;d<e;d++)c[d].apply(b);b.control&&typeof b.control.dispose===f&&b.control.dispose();b.__msajaxdispose=a;b.dispose=a};w=b.IContainer=function(){};w.registerInterface("Sys.IContainer");w=b.ApplicationLoadEventArgs=function(c,a){b.ApplicationLoadEventArgs.initializeBase(this);this._components=c;this._isPartialLoad=a};w.prototype={get_components:function(){return this._components},get_isPartialLoad:function(){return this._isPartialLoad}};w.registerClass("Sys.ApplicationLoadEventArgs",b.EventArgs);w=b._Application=function(){var a=this;b._Application.initializeBase(a);a._disposableObjects=[];a._components={};a._createdComponents=[];a._secondPassComponents=[];a._unloadHandlerDelegate=Function.createDelegate(a,a._unloadHandler);b.UI.DomEvent.addHandler(g,L,a._unloadHandlerDelegate)};w.prototype={_deleteCount:0,get_isCreatingComponents:function(){return!!this._creatingComponents},get_isDisposing:function(){return!!this._disposing},add_init:function(a){if(this._initialized)a(this,b.EventArgs.Empty);else this._addHandler(db,a)},remove_init:function(a){this._removeHandler(db,a)},add_load:function(a){this._addHandler(m,a)},remove_load:function(a){this._removeHandler(m,a)},add_unload:function(a){this._addHandler(L,a)},remove_unload:function(a){this._removeHandler(L,a)},addComponent:function(a){this._components[a.get_id()]=a},beginCreateComponents:function(){this._creatingComponents=c},dispose:function(){var a=this;if(!a._disposing){a._disposing=c;if(a._timerCookie){g.clearTimeout(a._timerCookie);delete a._timerCookie}var f=a._endRequestHandler,d=a._beginRequestHandler;if(f||d){var k=b.WebForms.PageRequestManager.getInstance();f&&k.remove_endRequest(f);d&&k.remove_beginRequest(d);delete a._endRequestHandler;delete a._beginRequestHandler}g.pageUnload&&g.pageUnload(a,b.EventArgs.Empty);b.Observer.raiseEvent(a,L);for(var i=Array.clone(a._disposableObjects),h=0,m=i.length;h<m;h++){var j=i[h];typeof j!==e&&j.dispose()}a._disposableObjects.length=0;b.UI.DomEvent.removeHandler(g,L,a._unloadHandlerDelegate);if(b._ScriptLoader){var l=b._ScriptLoader.getInstance();l&&l.dispose()}b._Application.callBaseMethod(a,eb)}},disposeElement:function(c,m){var i=this;if(c.nodeType===1){for(var h,d,b,k=c.getElementsByTagName("*"),j=k.length,l=new Array(j),e=0;e<j;e++)l[e]=k[e];for(e=j-1;e>=0;e--){var g=l[e];h=g.dispose;if(h&&typeof h===f)g.dispose();else{d=g.control;d&&typeof d.dispose===f&&d.dispose()}b=g._behaviors;b&&i._disposeComponents(b);b=g._components;if(b){i._disposeComponents(b);g._components=a}}if(!m){h=c.dispose;if(h&&typeof h===f)c.dispose();else{d=c.control;d&&typeof d.dispose===f&&d.dispose()}b=c._behaviors;b&&i._disposeComponents(b);b=c._components;if(b){i._disposeComponents(b);c._components=a}}}},endCreateComponents:function(){for(var c=this._secondPassComponents,a=0,g=c.length;a<g;a++){var f=c[a],e=f.component;b.Component._setReferences(e,f.references);e.endUpdate()}this._secondPassComponents=[];this._creatingComponents=d},findComponent:function(d,c){return c?b.IContainer.isInstanceOfType(c)?c.findComponent(d):c[d]||a:b.Application._components[d]||a},getComponents:function(){var c=[],a=this._components;for(var b in a)a.hasOwnProperty(b)&&c.push(a[b]);return c},initialize:function(){g.setTimeout(Function.createDelegate(this,this._doInitialize),0)},_doInitialize:function(){var a=this;if(!a.get_isInitialized()&&!a._disposing){b._Application.callBaseMethod(a,T);a._raiseInit();if(a.get_stateString){if(b.WebForms&&b.WebForms.PageRequestManager){var d=b.WebForms.PageRequestManager.getInstance();a._beginRequestHandler=Function.createDelegate(a,a._onPageRequestManagerBeginRequest);d.add_beginRequest(a._beginRequestHandler);a._endRequestHandler=Function.createDelegate(a,a._onPageRequestManagerEndRequest);d.add_endRequest(a._endRequestHandler)}var c=a.get_stateString();if(c!==a._currentEntry)a._navigate(c);else a._ensureHistory()}a.raiseLoad()}},notifyScriptLoaded:function(){},registerDisposableObject:function(b){if(!this._disposing){var a=this._disposableObjects,c=a.length;a[c]=b;b.__msdisposeindex=c}},raiseLoad:function(){var a=this,d=new b.ApplicationLoadEventArgs(Array.clone(a._createdComponents),!!a._loaded);a._loaded=c;b.Observer.raiseEvent(a,m,d);g.pageLoad&&g.pageLoad(a,d);a._createdComponents=[]},removeComponent:function(b){var a=b.get_id();if(a)delete this._components[a]},unregisterDisposableObject:function(a){var b=this;if(!b._disposing){var g=a.__msdisposeindex;if(typeof g===i){var c=b._disposableObjects;delete c[g];delete a.__msdisposeindex;if(++b._deleteCount>1e3){for(var d=[],f=0,h=c.length;f<h;f++){a=c[f];if(typeof a!==e){a.__msdisposeindex=d.length;d.push(a)}}b._disposableObjects=d;b._deleteCount=0}}}},_addComponentToSecondPass:function(b,a){this._secondPassComponents.push({component:b,references:a})},_disposeComponents:function(a){if(a)for(var b=a.length-1;b>=0;b--){var c=a[b];typeof c.dispose===f&&c.dispose()}},_raiseInit:function(){this.beginCreateComponents();b.Observer.raiseEvent(this,db);this.endCreateComponents()},_unloadHandler:function(){this.dispose()}};w.registerClass("Sys._Application",b.Component,b.IContainer);b.Application=new b._Application;g.$find=b.Application.findComponent;b.onReady(function(){b.Application._doInitialize()});w=b.UI.Behavior=function(a){b.UI.Behavior.initializeBase(this);this._element=a;var c=a._behaviors=a._behaviors||[];c.push(this)};w.prototype={get_element:function(){return this._element},get_id:function(){var c=b.UI.Behavior.callBaseMethod(this,"get_id");if(c)return c;var a=this._element;return!a||!a.id?x:a.id+n+this.get_name()},get_name:function(){var a=this;if(a._name)return a._name;var b=Object.getTypeName(a),c=b.lastIndexOf(j);if(c>=0)b=b.substr(c+1);if(!a._initialized)a._name=b;return b},set_name:function(a){this._name=a},initialize:function(){var a=this;b.UI.Behavior.callBaseMethod(a,T);var c=a.get_name();if(c)a._element[c]=a},dispose:function(){var c=this;b.UI.Behavior.callBaseMethod(c,eb);var d=c._element;if(d){var f=c.get_name();if(f)d[f]=a;var e=d._behaviors;Array.remove(e,c);if(!e.length)d._behaviors=a;delete c._element}}};w.registerClass("Sys.UI.Behavior",b.Component);w.getBehaviorByName=function(d,e){var c=d[e];return c&&b.UI.Behavior.isInstanceOfType(c)?c:a};w.getBehaviors=function(b){var a=b._behaviors;return a?Array.clone(a):[]};b.UI.Behavior.getBehaviorsByType=function(e,f){var a=e._behaviors,d=[];if(a)for(var b=0,g=a.length;b<g;b++){var c=a[b];f.isInstanceOfType(c)&&d.push(c)}return d};w=b.UI.VisibilityMode=function(){};w.prototype={hide:0,collapse:1};w.registerEnum("Sys.UI.VisibilityMode");w=b.UI.Control=function(c){var a=this;b.UI.Control.initializeBase(a);a._element=c;c.control=a;var d=a.get_role();d&&c.setAttribute("role",d)};w.prototype={_parent:a,_visibilityMode:b.UI.VisibilityMode.hide,get_element:function(){return this._element},get_id:function(){return this._id||(this._element?this._element.id:x)},get_parent:function(){var c=this;if(c._parent)return c._parent;if(!c._element)return a;var b=c._element.parentNode;while(b){if(b.control)return b.control;b=b.parentNode}return a},set_parent:function(a){this._parent=a},get_role:function(){return a},get_visibilityMode:function(){return b.UI.DomElement.getVisibilityMode(this._element)},set_visibilityMode:function(a){b.UI.DomElement.setVisibilityMode(this._element,a)},get_visible:function(){return b.UI.DomElement.getVisible(this._element)},set_visible:function(a){b.UI.DomElement.setVisible(this._element,a)},addCssClass:function(a){b.UI.DomElement.addCssClass(this._element,a)},dispose:function(){var c=this;b.UI.Control.callBaseMethod(c,eb);if(c._element){c._element.control=a;delete c._element}if(c._parent)delete c._parent},onBubbleEvent:function(){return d},raiseBubbleEvent:function(a,b){this._raiseBubbleEvent(a,b)},_raiseBubbleEvent:function(b,c){var a=this.get_parent();while(a){if(a.onBubbleEvent(b,c))return;a=a.get_parent()}},removeCssClass:function(a){b.UI.DomElement.removeCssClass(this._element,a)},toggleCssClass:function(a){b.UI.DomElement.toggleCssClass(this._element,a)}};w.registerClass("Sys.UI.Control",b.Component);w=b.HistoryEventArgs=function(a){b.HistoryEventArgs.initializeBase(this);this._state=a};w.prototype={get_state:function(){return this._state}};w.registerClass("Sys.HistoryEventArgs",b.EventArgs);w=b.Application;w._currentEntry=x;w._initialState=a;w._state={};z=b._Application.prototype;z.get_stateString=function(){var b=a;if(ib(S)){var d=g.location.href,c=d.indexOf(l);if(c!==y)b=d.substring(c+1);else b=x;return b}else b=g.location.hash;if(b.length&&b.charAt(0)===l)b=b.substring(1);return b};z.get_enableHistory=function(){return!!this._enableHistory};z.set_enableHistory=function(a){this._enableHistory=a};z.add_navigate=function(a){this._addHandler(fb,a)};z.remove_navigate=function(a){this._removeHandler(fb,a)};z.addHistoryPoint=function(g,j){var b=this;b._ensureHistory();var d=b._state;for(var f in g){var h=g[f];if(h===a){if(typeof d[f]!==e)delete d[f]}else d[f]=h}var i=b._serializeState(d);b._historyPointIsNew=c;b._setState(i,j);b._raiseNavigate()};z.setServerId=function(a,b){this._clientId=a;this._uniqueId=b};z.setServerState=function(a){this._ensureHistory();this._state.__s=a;this._updateHiddenField(a)};z._deserializeState=function(a){var e={};a=a||x;var b=a.indexOf("&&");if(b!==y&&b+2<a.length){e.__s=a.substr(b+2);a=a.substr(0,b)}for(var g=a.split("&"),f=0,j=g.length;f<j;f++){var d=g[f],c=d.indexOf("=");if(c!==y&&c+1<d.length){var i=d.substr(0,c),h=d.substr(c+1);e[i]=decodeURIComponent(h)}}return e};z._enableHistoryInScriptManager=function(){this._enableHistory=c};z._ensureHistory=function(){var a=this;if(!a._historyInitialized&&a._enableHistory){if(ib(bb)&&b.Browser.documentMode<8){a._historyFrame=b.get("#__historyFrame");a._ignoreIFrame=c}a._timerHandler=Function.createDelegate(a,a._onIdle);a._timerCookie=g.setTimeout(a._timerHandler,B);var d;try{a._initialState=a._deserializeState(a.get_stateString())}catch(d){}a._historyInitialized=c}};z._navigate=function(d){var a=this;a._ensureHistory();var c=a._deserializeState(d);if(a._uniqueId){var e=a._state.__s||x,b=c.__s||x;if(b!==e){a._updateHiddenField(b);__doPostBack(a._uniqueId,b);a._state=c;return}}a._setState(d);a._state=c;a._raiseNavigate()};z._onIdle=function(){var a=this;delete a._timerCookie;var b=a.get_stateString();if(b!==a._currentEntry){if(!a._ignoreTimer){a._historyPointIsNew=d;a._navigate(b)}}else a._ignoreTimer=d;a._timerCookie=g.setTimeout(a._timerHandler,B)};z._onIFrameLoad=function(b){var a=this;a._ensureHistory();if(!a._ignoreIFrame){a._historyPointIsNew=d;a._navigate(b)}a._ignoreIFrame=d};z._onPageRequestManagerBeginRequest=function(){this._ignoreTimer=c;this._originalTitle=document.title};z._onPageRequestManagerEndRequest=function(n,m){var f=this,j=m.get_dataItems()[f._clientId],i=f._originalTitle;f._originalTitle=a;var h=b.get("#__EVENTTARGET");if(h&&h.value===f._uniqueId)h.value=x;if(typeof j!==e){f.setServerState(j);f._historyPointIsNew=c}else f._ignoreTimer=d;var g=f._serializeState(f._state);if(g!==f._currentEntry){f._ignoreTimer=c;if(typeof i===k){if(!ib(bb)||b.Browser.version>7){var l=document.title;document.title=i;f._setState(g);document.title=l}else f._setState(g);f._raiseNavigate()}else{f._setState(g);f._raiseNavigate()}}};z._raiseNavigate=function(){var a=this,e=a._historyPointIsNew,d={};for(var c in a._state)if(c!=="__s")d[c]=a._state[c];var f=new b.HistoryEventArgs(d);b.Observer.raiseEvent(a,fb,f);if(!e){var h;try{if(ib(S)&&g.location.hash&&(!g.frameElement||g.top.location.hash))b.Browser.version<3.5?g.history.go(0):(location.hash=a.get_stateString())}catch(h){}}};z._serializeState=function(d){var c=[];for(var a in d){var e=d[a];if(a==="__s")var b=e;else c.push(a+"="+encodeURIComponent(e))}return c.join("&")+(b?"&&"+b:x)};z._setState=function(h,i){var f=this;if(f._enableHistory){h=h||x;if(h!==f._currentEntry){if(g.theForm){var k=g.theForm.action,m=k.indexOf(l);g.theForm.action=(m!==y?k.substring(0,m):k)+l+h}if(f._historyFrame&&f._historyPointIsNew){f._ignoreIFrame=c;var j=f._historyFrame.contentWindow.document;j.open("javascript:'<html></html>'");j.write("<html><head><title>"+(i||document.title)+'</title><script type="text/javascript">parent.Sys.Application._onIFrameLoad('+b.Serialization.JavaScriptSerializer.serialize(h)+");<\/script></head><body></body></html>");j.close()}f._ignoreTimer=d;f._currentEntry=h;if(f._historyFrame||f._historyPointIsNew){var n=f.get_stateString();if(h!==n){g.location.hash=h;f._currentEntry=f.get_stateString();if(typeof i!==e&&i!==a)document.title=i}}f._historyPointIsNew=d}}};z._updateHiddenField=function(b){if(this._clientId){var a=document.getElementById(this._clientId);if(a)a.value=b}};if(!g.XMLHttpRequest)g.XMLHttpRequest=function(){for(var e,c=["Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP"],b=0,d=c.length;b<d;b++)try{return new ActiveXObject(c[b])}catch(e){}return a};Type.registerNamespace("Sys.Net");w=b.Net.WebRequestExecutor=function(){this._webRequest=a;this._resultObject=a};var R=function(){};w.prototype={get_started:R,get_responseAvailable:R,get_timedOut:R,get_aborted:R,get_responseData:R,get_statusCode:R,get_statusText:R,get_xml:R,executeRequest:R,abort:R,getAllResponseHeaders:R,getResponseHeader:R,get_webRequest:function(){return this._webRequest},_set_webRequest:function(a){this._webRequest=a},get_object:function(){var a=this._resultObject;if(!a)this._resultObject=a=b.Serialization.JavaScriptSerializer.deserialize(this.get_responseData());return a}};w.registerClass("Sys.Net.WebRequestExecutor");b.Net.XMLDOM=function(f){if(!g.DOMParser)for(var j,e=["Msxml2.DOMDocument.3.0","Msxml2.DOMDocument"],c=0,i=e.length;c<i;c++)try{var b=new ActiveXObject(e[c]);b.async=d;b.loadXML(f);b.setProperty(rb,"XPath");return b}catch(j){}else try{var h=new g.DOMParser;return h.parseFromString(f,kb)}catch(j){}return a};w=b.Net.XMLHttpExecutor=function(){var f=this;b.Net.XMLHttpExecutor.initializeBase(f);var d=f;f._onReadyStateChange=function(){if(d._xmlHttpRequest.readyState===4){try{if(typeof d._xmlHttpRequest.status===e)return}catch(f){return}d._clearTimer();d._responseAvailable=c;try{d._webRequest.completed(b.EventArgs.Empty)}finally{if(d._xmlHttpRequest){d._xmlHttpRequest.onreadystatechange=Function.emptyMethod;d._xmlHttpRequest=a}}}};f._clearTimer=function(){if(d._timer){g.clearTimeout(d._timer);d._timer=a}};f._onTimeout=function(){if(!d._responseAvailable){d._clearTimer();d._timedOut=c;var e=d._xmlHttpRequest;e.onreadystatechange=Function.emptyMethod;e.abort();d._webRequest.completed(b.EventArgs.Empty);d._xmlHttpRequest=a}}};w.prototype={get_timedOut:function(){return!!this._timedOut},get_started:function(){return!!this._started},get_responseAvailable:function(){return!!this._responseAvailable},get_aborted:function(){return!!this._aborted},executeRequest:function(){var b=this,e=b.get_webRequest();b._webRequest=e;var i=e.get_body(),h=e.get_headers(),d=new XMLHttpRequest;b._xmlHttpRequest=d;d.onreadystatechange=b._onReadyStateChange;var l=e.get_httpVerb();d.open(l,e.getResolvedUrl(),c);d.setRequestHeader("X-Requested-With","XMLHttpRequest");if(h)for(var k in h){var m=h[k];typeof m!==f&&d.setRequestHeader(k,m)}if(l.toLowerCase()==="post"){(h===a||!h[M])&&d.setRequestHeader(M,"application/x-www-form-urlencoded; charset=utf-8");if(!i)i=x}var j=e.get_timeout();if(j>0)b._timer=g.setTimeout(Function.createDelegate(b,b._onTimeout),j);d.send(i);b._started=c},getResponseHeader:function(b){var c,a;try{a=this._xmlHttpRequest.getResponseHeader(b)}catch(c){}if(!a)a=x;return a},getAllResponseHeaders:function(){return this._xmlHttpRequest.getAllResponseHeaders()},get_responseData:function(){return this._xmlHttpRequest.responseText},get_statusCode:function(){var b,a=0;try{a=this._xmlHttpRequest.status}catch(b){}return a},get_statusText:function(){return this._xmlHttpRequest.statusText},get_xml:function(){var d="parsererror",e=this._xmlHttpRequest,c=e.responseXML;if(!c||!c.documentElement){c=b.Net.XMLDOM(e.responseText);if(!c||!c.documentElement)return a}else navigator.userAgent.indexOf("MSIE")!==y&&c.setProperty(rb,"XPath");return c.documentElement.namespaceURI==="http://www.mozilla.org/newlayout/xml/parsererror.xml"&&c.documentElement.tagName===d?a:c.documentElement.firstChild&&c.documentElement.firstChild.tagName===d?a:c},abort:function(){var d=this;if(d._aborted||d._responseAvailable||d._timedOut)return;d._aborted=c;d._clearTimer();var e=d._xmlHttpRequest;if(e&&!d._responseAvailable){e.onreadystatechange=Function.emptyMethod;e.abort();d._xmlHttpRequest=a;d._webRequest.completed(b.EventArgs.Empty)}}};w.registerClass(vb,b.Net.WebRequestExecutor);w=b.Net._WebRequestManager=function(){this._defaultExecutorType=vb};w.prototype={add_invokingRequest:function(a){b.Observer.addEventHandler(this,gb,a)},remove_invokingRequest:function(a){b.Observer.removeEventHandler(this,gb,a)},add_completedRequest:function(a){b.Observer.addEventHandler(this,hb,a)},remove_completedRequest:function(a){b.Observer.removeEventHandler(this,hb,a)},get_defaultTimeout:function(){return this._defaultTimeout||0},set_defaultTimeout:function(a){this._defaultTimeout=a},get_defaultExecutorType:function(){return this._defaultExecutorType},set_defaultExecutorType:function(a){this._defaultExecutorType=a},executeRequest:function(d){var a=d.get_executor();if(!a){var i,h;try{var f=g.eval(this._defaultExecutorType);a=new f}catch(i){h=c}d.set_executor(a)}if(!a.get_aborted()){var e=new b.Net.NetworkRequestEventArgs(d);b.Observer.raiseEvent(this,gb,e);!e.get_cancel()&&a.executeRequest()}}};w.registerClass("Sys.Net._WebRequestManager");b.Net.WebRequestManager=new b.Net._WebRequestManager;w=b.Net.NetworkRequestEventArgs=function(a){b.Net.NetworkRequestEventArgs.initializeBase(this);this._webRequest=a};w.prototype={get_webRequest:function(){return this._webRequest}};w.registerClass("Sys.Net.NetworkRequestEventArgs",b.CancelEventArgs);w=b.Net.WebRequest=function(){var b=this;b._url=x;b._headers={};b._body=a;b._userContext=a;b._httpVerb=a};w.prototype={add_completed:function(a){b.Observer.addEventHandler(this,Q,a)},remove_completed:function(a){b.Observer.removeEventHandler(this,Q,a)},completed:function(e){var a=this;function d(g,f,d){var a=b.Observer._getContext(g,c).events.getHandler(d);a&&a(f,e)}d(b.Net.WebRequestManager,a._executor,hb);d(a,a._executor,Q);b.Observer.clearEventHandlers(a,Q)},get_url:function(){return this._url},set_url:function(a){this._url=a},get_headers:function(){return this._headers},get_httpVerb:function(){return this._httpVerb===a?this._body===a?"GET":"POST":this._httpVerb},set_httpVerb:function(a){this._httpVerb=a},get_body:function(){return this._body},set_body:function(a){this._body=a},get_userContext:function(){return this._userContext},set_userContext:function(a){this._userContext=a},get_executor:function(){return this._executor||a},set_executor:function(a){this._executor=a;a._set_webRequest(this)},get_timeout:function(){return this._timeout||b.Net.WebRequestManager.get_defaultTimeout()},set_timeout:function(a){this._timeout=a},getResolvedUrl:function(){return b.Net.WebRequest._resolveUrl(this._url)},invoke:function(){b.Net.WebRequestManager.executeRequest(this)}};w._resolveUrl=function(c,a){if(c&&c.indexOf("://")>0)return c;if(!a||!a.length){var e=b.get("base");if(e&&e.href&&e.href.length)a=e.href;else a=document.URL}var d=a.indexOf("?");if(d>0)a=a.substr(0,d);d=a.indexOf(l);if(d>0)a=a.substr(0,d);a=a.substr(0,a.lastIndexOf(D)+1);if(!c||!c.length)return a;if(c.charAt(0)===D){var f=a.indexOf("://"),h=a.indexOf(D,f+3);return a.substr(0,h)+c}else{var g=a.lastIndexOf(D);return a.substr(0,g+1)+c}};w._createQueryString=function(d,c,h){c=c||encodeURIComponent;var j=0,g,i,e,a=new b.StringBuilder;if(d)for(e in d){g=d[e];if(typeof g===f)continue;i=b.Serialization.JavaScriptSerializer.serialize(g);j++&&a.append("&");a.append(e);a.append("=");a.append(c(i))}if(h){j&&a.append("&");a.append(h)}return a.toString()};w._createUrl=function(c,d,e){if(!d&&!e)return c;var f=b.Net.WebRequest._createQueryString(d,a,e);return f.length?c+(c&&c.indexOf("?")>=0?"&":"?")+f:c};w.registerClass("Sys.Net.WebRequest");Type.registerNamespace("Sys.Net");w=b.Net.WebServiceProxy=function(){var a=Object.getType(this);if(a._staticInstance&&typeof a._staticInstance.get_enableJsonp===f)this._jsonp=a._staticInstance.get_enableJsonp()};w.prototype={get_timeout:function(){return this._timeout||0},set_timeout:function(a){this._timeout=a},get_defaultUserContext:function(){return typeof this._userContext===e?a:this._userContext},set_defaultUserContext:function(a){this._userContext=a},get_defaultSucceededCallback:function(){return this._succeeded||a},set_defaultSucceededCallback:function(a){this._succeeded=a},get_defaultFailedCallback:function(){return this._failed||a},set_defaultFailedCallback:function(a){this._failed=a},get_enableJsonp:function(){return!!this._jsonp},set_enableJsonp:function(a){this._jsonp=a},get_path:function(){return this._path||a},set_path:function(a){this._path=a},get_jsonpCallbackParameter:function(){return this._callbackParameter||sb},set_jsonpCallbackParameter:function(a){this._callbackParameter=a},_invoke:function(h,i,k,j,g,f,d){var c=this;g=g||c.get_defaultSucceededCallback();f=f||c.get_defaultFailedCallback();if(d===a||typeof d===e)d=c.get_defaultUserContext();return b.Net.WebServiceProxy.invoke(h,i,k,j,g,f,d,c.get_timeout(),c.get_enableJsonp(),c.get_jsonpCallbackParameter())}};w.registerClass("Sys.Net.WebServiceProxy");w.invoke=function(v,f,r,q,p,h,l,m,C,u){var o=C!==d?b.Net.WebServiceProxy._xdomain.exec(v):a,i,s=o&&o.length===3&&(o[1]!==location.protocol||o[2]!==location.host);r=s||r;if(s){u=u||sb;i="_jsonp"+b._jsonp++}if(!q)q={};var w=q;if(!r||!w)w={};var n,k=a,t=a,A=b.Net.WebRequest._createUrl(f?v+D+encodeURIComponent(f):v,w,s?u+"=Sys."+i:a);if(s){function B(){if(k===a)return;k=a;n=new b.Net.WebServiceError(c,String.format(b.Res.webServiceTimedOut,f));delete b[i];h&&h(n,l,f)}function z(c,j){if(k!==a){g.clearTimeout(k);k=a}delete b[i];i=a;if(typeof j!==e&&j!==200){if(h){n=new b.Net.WebServiceError(d,c.Message||String.format(b.Res.webServiceFailedNoMsg,f),c.StackTrace||a,c.ExceptionType||a,c);n._statusCode=j;h(n,l,f)}}else p&&p(c,l,f)}b[i]=z;m=m||b.Net.WebRequestManager.get_defaultTimeout();if(m>0)k=g.setTimeout(B,m);b._loadJsonp(A,function(){i&&z({Message:String.format(b.Res.webServiceFailedNoMsg,f)},y)});return a}var j=new b.Net.WebRequest;j.set_url(A);j.get_headers()[M]="application/json; charset=utf-8";if(!r){t=b.Serialization.JavaScriptSerializer.serialize(q);if(t==="{}")t=x}j.set_body(t);j.add_completed(E);m>0&&j.set_timeout(m);j.invoke();function E(g){if(g.get_responseAvailable()){var s,i=g.get_statusCode(),c=a,k;try{var m=g.getResponseHeader(M);k=m.startsWith("application/json");c=k?g.get_object():m.startsWith(kb)?g.get_xml():g.get_responseData()}catch(s){}var o=g.getResponseHeader("jsonerror"),j=o==="true";if(j){if(c)c=new b.Net.WebServiceError(d,c.Message,c.StackTrace,c.ExceptionType,c)}else if(k)c=!c||typeof c.d===e?c:c.d;if(i<200||i>=300||j){if(h){if(!c||!j)c=new b.Net.WebServiceError(d,String.format(b.Res.webServiceFailedNoMsg,f));c._statusCode=i;h(c,l,f)}}else p&&p(c,l,f)}else{var n=g.get_timedOut(),q=String.format(n?b.Res.webServiceTimedOut:b.Res.webServiceFailedNoMsg,f);h&&h(new b.Net.WebServiceError(n,q,x,x),l,f)}}return j};w._generateTypedConstructor=function(a){return function(b){if(b)for(var c in b)this[c]=b[c];this.__type=a}};b._jsonp=0;w._xdomain=/^\s*([a-zA-Z0-9\+\-\.]+\:)\/\/([^?#\/]+)/;b._loadJsonp=function(h,g){var c=document.createElement("script");c.type="text/javascript";c.src=h;var f=c.attachEvent;function e(){if(!f||/loaded|complete/.test(c.readyState)){if(f)c.detachEvent(s,e);else{c.removeEventListener(m,e,d);c.removeEventListener(r,e,d)}g.apply(c);c=a}}if(f)c.attachEvent(s,e);else{c.addEventListener(m,e,d);c.addEventListener(r,e,d)}b.get("head").appendChild(c)};w=b.Net.WebServiceError=function(e,f,d,b,c){var a=this;a._timedOut=e;a._message=f;a._stackTrace=d;a._exceptionType=b;a._errorObject=c;a._statusCode=y};w.prototype={get_timedOut:function(){return this._timedOut},get_statusCode:function(){return this._statusCode},get_message:function(){return this._message},get_stackTrace:function(){return this._stackTrace||x},get_exceptionType:function(){return this._exceptionType||x},get_errorObject:function(){return this._errorObject||a}};w.registerClass("Sys.Net.WebServiceError");Type.registerNamespace("Sys.Services");var mb=b.Services,ub="Service",Eb="Role",Db="Authentication",Bb="Profile";function zb(a){this._path=a}mb[Db+ub]={set_path:zb,_setAuthenticated:function(a){this._auth=a}};mb["_"+Db+ub]={};mb[Bb+ub]={set_path:zb};mb["_"+Bb+ub]={};mb.ProfileGroup=function(a){this._propertygroup=a};mb[Eb+ub]={set_path:zb};mb["_"+Eb+ub]={};b._domLoaded()}if(b.loader)b.loader.registerScript("MicrosoftAjax",a,H);else H()})(window,window.Sys);var $get,$create,$addHandler,$addHandlers,$clearHandlers;�S// (c) 2010 CodePlex Foundation

(function(window, Sys) {

var merge = function _merge(target) {
    target = target || {};
    foreach(arguments, function(o) {
        if (o) {
            forIn(o, function(v, n) {
                target[n] = v;
            });
        }
    }, 1);
    return target;
}
var forIn = function _forIn(obj, callback) {
    for (var x in obj) {
        callback(obj[x], x);
    }
}
var foreach = function _foreach(arr, callback, start) {
    var cancelled;
    if (arr) {
        arr = arr !== window && typeof(arr.nodeType) === "undefined" &&
            (arr instanceof Array || 
            (typeof(arr.length) === 'number' && (typeof(arr.callee) === "function" || (arr.item && typeof(arr.nodeType) === "undefined") && !arr.addEventListener && !arr.attachEvent)))
            ? arr : [arr];
        for (var i = start||0, l = arr.length; i < l; i++) {
            if (callback(arr[i], i)) {
                cancelled = true;
                break;
            }
        }
    }
    return !cancelled;
}
var callIf = function _callIf(obj, name, args) {
    var fn = obj[name],
        exists = typeof(fn) === "function";
    if (exists) fn.call(obj, args);
    return exists;
}
if (!Sys || !Sys.loader) {
    function append(target) {
        target = target || {};
        foreach(arguments, function(o) {
            if (o) {
                forIn(o, function(v, n) {
                    if (typeof(target[n]) === "undefined") target[n] = v;
                });
            }
        }, 1);
        return target;
    }

    var attachEvent = !!document.attachEvent;
  
    function getAndDelete(obj, field) {
        var r = obj[field];
        delete obj[field];
        return r;
    }
    function foreachCall(obj, field, args) {
        foreach(getAndDelete(obj, field), function(callback) {
            callback.apply(null, args||[]);
        });
    }
    function lazyget(obj, name, value) {
        return obj ? (obj[name] = obj[name] || value) : value;
    }
    function lazypush(obj, name, value) {
        lazyget(obj, name, []).push(value);
    }
    function lazyset(obj, name, key, value) {
        lazyget(obj, name, {})[key] = value;
    }
    function all(tag, element) {
        return (element||document).getElementsByTagName(tag);
    }
    function createElement(tag) {
        return document.createElement(tag);
    }
    function listenOnce(target, name, ieName, callback, isReadyState, isScript) {
        function onEvent() {
            if (!attachEvent || !isReadyState || /loaded|complete/.test(target.readyState)) {
                if (attachEvent) {
                    target.detachEvent(ieName || ("on" + name), onEvent);
                }
                else {
                    target.removeEventListener(name, onEvent, false);
                    if (isScript) {
                        target.removeEventListener("error", onEvent, false);
                    }
                }
                callback.apply(target);
                target = null;
            }
        }
        if (attachEvent) {
            target.attachEvent(ieName || ("on" + name), onEvent);
        }
        else {
            if (target.addEventListener) {
            target.addEventListener(name, onEvent, false);
            }
            if (isScript) {
                target.addEventListener("error", onEvent, false);
            }
        }
    }
    function raiseDomReady() {
        if (Sys._domReady) {
            Sys._2Pass(getAndDelete(Sys, "_domReadyQueue"));
        }
    }
    function raiseOnReady() {
        var ready = Sys._ready;
        if (!ready && Sys._domReady && !(Sys.loader && Sys.loader._loading)) {
            Sys._ready = ready = true;
        }
        if (ready) {
            Sys._2Pass(getAndDelete(Sys, "_readyQueue"));
        }
    }
    window.Sys = Sys = append(Sys, {
        version: [3, 0, 31106, 0],
        __namespace: true,
        debug: true,
        scripts: {},
        activateDom: true,
        composites: {},
        components: {},
        plugins: {},
        create: {},
        converters: {},
        _domLoaded: function _domLoaded() {
            if (Sys._domChecked) return;
            Sys._domChecked = true;
            function domReady() {
                if (!Sys._domReady) {
                    Sys._domReady = true;
                    var autoRequire = Sys._autoRequire;
                    if (autoRequire) {
                        Sys.require(autoRequire, function() {
                            Sys._autoRequire = null;
                            foreachCall(Sys, "_autoQueue");
                        }, autoToken);
                    }
                    raiseDomReady();
                    raiseOnReady();
                }
            }
            listenOnce(window, "load", null, domReady);

            var check;
            if (attachEvent) {
                if ((window == window.top) && document.documentElement.doScroll) {
                    var timeout, er, el = createElement("div");
                    check = function() {
                        try {
                            el.doScroll("left");
                        }
                        catch (er) {
                            timeout = window.setTimeout(check, 0);
                            return;
                        }
                        el = null;
                        domReady();
                    }
                    check();
                }
                else {
                    listenOnce(document, null, "onreadystatechange", domReady, true);
                }
            }
            else if (document.addEventListener) {
                listenOnce(document, "DOMContentLoaded", null, domReady);
            }
        },
        _getById: function _getById(found, id, single, includeSelf, element, filter) {
            if (element) {
                if (includeSelf && (element.id === id)) {
                    found.push(element);
                }
                else if (!filter) {
                    foreach(all("*", element), function(element) {
                        if (element.id === id) {
                            found.push(element);
                            return true;
                        }
                    });
                }
            }
            else {
                var e = document.getElementById(id);
                if (e) found.push(e);
            }
            return found.length;
        },
        _getByClass: function _getByClass(found, targetClass, single, includeSelf, element, filter) {
            function pushIfMatch(element) {
                var ret, className = element.className;
                if (className && ((className === targetClass) || (className.indexOf(' ' + targetClass) >= 0) || (className.indexOf(targetClass + ' ') >= 0))) {
                    found.push(element);
                    ret = true;
                }
                return ret;
            }
            var i, l, nodes;
            if (includeSelf && pushIfMatch(element) && single) {
                return true;
            }
            if (!filter) {
                element = element || document;
                var finder = element.querySelectorAll || element.getElementsByClassName;
                if (finder) {
                    if (element.querySelectorAll) targetClass = "." + targetClass;
                    nodes = finder.call(element, targetClass);
                    for (i = 0, l = nodes.length; i < l; i++) {
                        found.push(nodes[i]);
                        if (single) return true;
                    }
                }
                else {
                    nodes = all("*", element);
                    for (i = 0, l = nodes.length; i < l; i++) {
                        if (pushIfMatch(nodes[i]) && single) {
                            return true;
                        }
                    }
                }
            }
        },
        query: function query(selector, context) {
            /// <summary>Queries the DOM for a set of DOM elements.</summary>
            /// <validationOptions enabled="false" />
            /// <param name="selector">Selector for a set of DOM elements based on id (#&lt;id>), class (.&lt;name>), or tag name (&lt;tagname>). Also supports an array of DOM elements or selectors. More complex selectors may be used if jQuery is loaded.</param>
            /// <param name="context" optional="true" mayBeNull="true">A DOM element (exclusive), array of DOM elements (inclusive), or other Sys.ElementSet or Sys.UI.TemplateContext (exclusive) to restrict the search within.</param>
            /// <returns type="Sys.ElementSet">An object representing the set of matching elements.</returns>
            return new Sys.ElementSet(selector, context);
        },
        get: function get(selector, context) {
            /// <summary>Queries the DOM for a single DOM element.</summary>
            /// <validationOptions enabled="false" />
            /// <param name="selector">
            /// Selector for a DOM element based on id (#&lt;id>), class (.&lt;name>), or tag name (&lt;tagname>). More complex selectors may be used if jQuery is loaded.
            /// If multiple elements match the selector, the first one is returned.
            /// </param>
            /// <param name="context" optional="true" mayBeNull="true">An element, array of elements, or Sys.UI.TemplateContext to restrict the query within.</param>
            /// <returns>The matching element, or null if none match.</returns>
            return (context && typeof(context.get) === "function") ?
                context.get(selector) :
                this._find(selector, context, true);
        },
        _find: function _find(selector, context, single, filter) {
            var found = [],
                selectors;
            if (typeof(selector) === "string") {
                selectors = [selector];
            }
            else {
                selectors = selector;
            }
            var includeSelf = context instanceof Array,
                simpleNonTag = /^([\$#\.])((\w|[$:\.\-])+)$/,
                tag = /^((\w+)|\*)$/;
            if ((typeof(context) === "string") || (context instanceof Array)) {
                context = Sys._find(context);
            }
            if (context instanceof Sys.ElementSet) {
                context = context.get();
            }
            foreach(selectors, function(selector) {
                if (typeof(selector) !== "string") {
                    if (filter) {
                        if (contains(context, selector)) {
                            found.push(selector);
                        }
                    }
                    else {
                        found.push(selector);
                    }
                }
                else {
                    var match = simpleNonTag.exec(selector);
                    if (match && match.length === 4) {
                        selector = match[2];
                        var type = match[1];
                        if (type === "$") {
                            Sys._getComponent(found, selector, context);
                        }
                        else {
                            var finder = type === "#" ? Sys._getById : Sys._getByClass;
                            if (context) {
                                foreach(context, function(node) {
                                    if (node.nodeType === 1) {
                                        return finder(found, selector, single, includeSelf, node, filter);
                                    }
                                });
                            }
                            else {
                                finder(found, selector, single);
                            }
                        }
                    }
                    else if (tag.test(selector)) {
                        if (context instanceof Array) {
                            foreach(context, function(node) {
                                if (node.nodeType === 1) {
                                    if (includeSelf && (selector === "*" || (node.tagName.toLowerCase() === selector))) {
                                        found.push(node);
                                        if (single) return true;
                                    }
                                    if (!filter) {
                                        if(!foreach(all(selector, node), function(node) {
                                            found.push(node);
                                            if (single) return true;
                                        })) {
                                            return true;
                                        }
                                    }
                                }
                            });
                        }
                        else {
                            var nodes = all(selector, context);
                            if (single) {
                                if (nodes[0]) {
                                    found.push(nodes[0]);
                                }
                                return true;
                            }
                            foreach(nodes, function(node) {
                                found.push(node);
                            });
                        }
                    }
                    else if (window.jQuery) {
                        if (!filter) {
                            found.push.apply(found, jQuery(selector, context).get());
                        }
                        if (includeSelf) {
                            found.push.apply(found, jQuery(context).filter(selector).get());
                        }
                    }
                }
            });
            return found.length ? (single ? (found[0] || null) : found) : null;
        },
        onDomReady: function onDomReady(callback) {
            /// <summary>Registers a function to be called when the DOM is ready.</summary>
            /// <validationOptions enabled="false" />
            /// <param name="callback" type="Function"></param>
            lazypush(this, "_domReadyQueue", callback);
            raiseDomReady();
        },
        onReady: function onReady(callback) {
            /// <summary>Registers a function to be called when the DOM is ready and when all required resources have been loaded.</summary>
            /// <validationOptions enabled="false" />
            /// <param name="callback" type="Function"></param>
            lazypush(this, "_readyQueue", callback);
            raiseOnReady();
        },
        _set: function(instance, properties) {
            forIn(properties, function(value, field) {
                callIf(instance, "add_" + field, value) ||
                callIf(instance, "set_" + field, value) ||
                (instance[field] = value);
            });
        }
    });

    Sys._getComponent = Sys._getComponent || function() { }
    
    Sys._2Pass = Sys._2Pass || function _2Pass(callback) {
       foreach(callback, function(c) { c(); });
    }

    var obj;
    if (!Sys.ElementSet) {
obj = Sys.ElementSet = function(selector, context) {
    /// <summary>Represents a set of DOM elements.</summary>
    /// <param name="selector">The DOM selector, array of DOM selectors, or array of DOM elements to query the document for.</param>
    /// <param name="context">A DOM selector (exclusive), A DOM element (exclusive), array of DOM elements (inclusive), or other Sys.ElementSet (exclusive) to restrict the search within.</param>
    this._elements = ((typeof(context) === "object") && typeof(context.query) === "function") ?
        context.query(selector).get() :
        Sys._find(selector, context) || [];
}
obj.prototype = {
    __class: true,
    components: function(type, index) {
        /// <summary>Gets the set of controls and behaviors associated with the current DOM elements.</summary>
        /// <param name="type" type="Function" mayBeNull="true" optional="true">Type to limit the search to.</param>
        /// <param name="index" type="Number" mayBeNull="true" optional="true">Index of the component to limit to.</param>
        /// <returns type="Sys.ComponentSet" />
        var elementSet = new Sys.ElementSet(this.get());
        return new Sys.ComponentSet(elementSet, type, index);
    },
    component: function(type, index) {
        /// <summary>Get the first control or behavior associated with the current set of DOM elements.</summary>
        /// <param name="type" type="Function" mayBeNull="true" optional="true">Type to limit the search to.</param>
        /// <param name="index" type="Number" mayBeNull="true" optional="true">Index of the component to return.</param>
        /// <returns type="Object" mayBeNull="true" />
        return this.components(type, index).get(0);
    },
    each: function(callback) {
        /// <summary>Enumerates all the matched elements, calling the given callback for each with the current element as the context.
        /// The callback may return false to cancel enumeration.</summary>
        /// <returns type="Sys.ElementSet"/>
        var elements = this._elements;
        for (var i = 0, l = elements.length; i < l; i++) {
            if (callback.call(elements[i], i) === false) break;
        }
        return this;
    },
    get: function(index) {
        /// <summary>Retrieves the element at the specified index.</summary>
        /// <param name="index" type="Number">The index of the element to retrieve. Omit to return all elements as an array.</param>
        /// <returns isDomElement="true">The element at the given index, or an array of all the matched elements.</returns>
        var elements = this._elements;
        return (typeof(index) === "undefined") ? (Array.apply(null, elements)) : (elements[index] || null);
    },
    find: function(selector) {
        /// <summary>Searches the current set of DOM elements with the given selector, including descendents.</summary>
        /// <param name="selector">DOM selector or array of DOM selectors to search with.</param>
        /// <returns type="Sys.ElementSet">A new element set with the matched elements.</returns>
        return new Sys.ElementSet(selector, this);
    },
    filter: function(selector) {
        /// <summary>Filters the current set of DOM elements by the given selector, excluding descendents.</summary>
        /// <param name="selector">DOM selector or array of elements to filter by.</param>
        /// <returns type="Sys.ElementSet">A new element set with the matched elements.</returns>
        return new Sys.ElementSet(Sys._find(selector, this._elements, false, true));
    }
}
    }
    if (!Sys.ComponentSet) {
obj = Sys.ComponentSet = function ComponentSet(elementSet, query, index) {
    /// <summary></summary>
    /// <param name="elementSet" type="Sys.ElementSet" mayBeNull="true" optional="true"></param>
    /// <param name="query" mayBeNull="true" optional="true">The type of component to filter by, or an array of components to include.</param>
    /// <param name="index" type="Number" mayBeNull="true" optional="true">The index of the component to retrieve from the filtered list.</param>
    this._elementSet = elementSet || (elementSet = new Sys.ElementSet());
    this._components = this._execute(elementSet, query, index);
}
obj.prototype = {
    __class: true,
    setProperties: function ComponentSet$setProperties(properties) {
        /// <summary>Sets properties on the matched components.</summary>
        /// <param name="properties" type="Object" mayBeNull="false">Object with the names and values of the properties to set.</param>
        /// <returns type="Sys.ComponentSet" />
        return this.each(function() {
            Sys._set(this, properties);
        });
    },
    get: function ComponentSet$get(index) {
        /// <summary>Returns the component at the specified index, or an array of all matches if not specified.</summary>
        /// <param name="index" type="Number" mayBeNull="true" optional="true"></param>
        /// <returns type="Object" mayBeNull="true"/>
        var components = this._components;
        return (typeof(index) === "undefined") ? (Array.apply(null, components)) : (components[index || 0] || null);
    },
    each: function ComponentSet$each(callback) {
        /// <summary>Enumerate all the found components. The index of the component are passed as parameters to a callback. You may return 'false' to cancel the enumeration.</summary>
        /// <param name="callback" type="Function" mayBeNull="false">Function called for each component.</param>
        /// <returns type="Sys.ComponentSet" />
        foreach(this._components, function(c, i) {
            if (callback.call(c, i) === false) {
                return true;
            }
        });
        return this;
    },
    elements: function ComponentSet$elements() {
        /// <summary>Returns the underlying set of elements this component collection came from.</summary>
        /// <returns type="Sys.ElementSet" />
        return this._elementSet;
    },
    _execute: function ComponentSet$_execute(elementSet, query, index) {
        var components = [];
        function match(c) {
            var ctor;
            return (c instanceof query) ||
                ((ctor = c.constructor) && (
                    (ctor === query) ||
                    (ctor.inheritsFrom && ctor.inheritsFrom(query)) ||
                    (ctor.implementsInterface && ctor.implementsInterface(query))));
        }
        if (query instanceof Array) {
            components.push.apply(components, query);
        }
        else {
            elementSet.each(function() {
                var c = this.control;
                if (c && (!query || match(c))) {
                    components.push(c);
                }
                foreach(this._behaviors, function(b) {
                    if (!query || match(b)) {
                        components.push(b);
                    }
                });
            });
        }
        if ((typeof(index) !== "undefined")) {
            if (components[index]) {
                components = [components[index]];
            }
            else {
                components = [];
            }
        }
        return components;
    }
}
    }
    
    obj = null;
}
    var getCreate = function _getCreate(options, isPlugin) {
        var body = [],
            arglist = [],
            type = options.type,
            typeName = options.typeName || (type ? type.getName() : ""),
            isBehavior = options._isBehavior,
            description = (options && options.description) || 
                          (type && ("Creates an instance of the type '" + typeName  + "' and sets the given properties.")) ||
                          "";
        body.push("/// <summary>", description, "</summary>\n");
        foreach(options && options.parameters, function(parameter) {
            var name = parameter, type = '', desc = '';
            if (typeof(parameter) !== "string") {
                name = parameter.name;
                type = parameter.type||'';
                desc = parameter.description||'';
            }
            arglist.push(name);
            body.push('/// <param name="', name, '"');
            if (type) {
                body.push(' type="', type, '"');
            }
            body.push('>', desc, '</param>\n');
        });
        var returnType;
        if (!isPlugin) {
            arglist.push("properties");
            body.push('/// <param name="properties" type="Object" mayBeNull="true" optional="true">Additional properties to set on the component.</param>\n');
            returnType = isBehavior ? 'Sys.ComponentSet' : typeName;
        }
        else {
            returnType = options.returnType;
        }
        if (returnType) {
            body.push('/// <returns type="', returnType, '" />\n');
        }
        if (isPlugin) {
            body.push('return Sys.plugins["', options.name, '"].plugin.apply(this, arguments);');
        }
        else {
            body.push('return Sys._createComp.call(this, arguments.callee._component, arguments.callee._component.defaults, arguments);');
        }
        arglist.push(body.join(''));
    
        var fn = Function.apply(null, arglist);
        if (!isPlugin) {
            fn._component = options;
        }
        return fn;
        
    }
    Sys._getCreate = getCreate;

function execute() {

var $type, $prototype;
Sys._foreach = foreach;
Sys._forIn = forIn;
Sys._merge = merge;
Sys._callIf = callIf;

$type = Function;
$type.__typeName = 'Function';
$type.__class = true;

$type.createCallback = function Function$createCallback(method, context) {
    /// <summary locid="M:J#Function.createCallback">Creates a callback function that retains the parameter initially used during its creation.   The callback is used without parameter but this will call the actual method with the parameter.   This is especially useful when setting up a handler for a DOM event that must retain a parameter   despite the DOM event handler needing to be a function with the event object as the only parameter.   In this case, the function will be called with the event as the first parameter and the context   as the second.   If the callback is called with an arbitrary list of parameters, the context is appended.</summary>
    /// <param name="method" type="Function">The function for which the callback is created.</param>
    /// <param name="context" mayBeNull="true">The parameter for the function.</param>
    /// <returns type="Function">The callback function.</returns>
    var e = Function._validateParams(arguments, [
        {name: "method", type: Function},
        {name: "context", mayBeNull: true}
    ]);
    if (e) throw e;


    return function() {
        var l = arguments.length;
        if (l > 0) {
            var args = [];
            for (var i = 0; i < l; i++) {
                args[i] = arguments[i];
            }
            args[l] = context;
            return method.apply(this, args);
        }
        return method.call(this, context);
    }
}

$type.createDelegate = function Function$createDelegate(instance, method) {
    /// <summary locid="M:J#Function.createDelegate">Creates a delegate function that retains the context from its creation   (i.e. what 'this' means from within its scope).   This is especially useful when setting up an event handler to point to an object method   that needs to use the 'this' pointer from within its scope.</summary>
    /// <param name="instance" mayBeNull="true">The object instance that will be the context for the function (i.e. what 'this' means from within its scope).</param>
    /// <param name="method" type="Function">The function from which the delegate is created.</param>
    /// <returns type="Function">The delegate function.</returns>
    var e = Function._validateParams(arguments, [
        {name: "instance", mayBeNull: true},
        {name: "method", type: Function}
    ]);
    if (e) throw e;


    return function() {
        return method.apply(instance, arguments);
    }
}

$type.emptyFunction = $type.emptyMethod = function Function$emptyMethod() {
    /// <summary locid="M:J#Function.emptyMethod">A function that does nothing.</summary>
}

$type.validateParameters = function Function$validateParameters(parameters, expectedParameters, validateParameterCount) {
    /// <summary locid="M:J#Function.validateParameters">Validates the parameters to a method are as expected.</summary>
    /// <param name="parameters"></param>
    /// <param name="expectedParameters"></param>
    /// <param name="validateParameterCount" type="Boolean" optional="true" mayBeNull="true">True if extra parameters are prohibited, false if they should be ignored. The default is true.</param>
    /// <returns type="Error" mayBeNull="true"></returns>
    var e = Function._validateParams(arguments, [
        {name: "parameters"},
        {name: "expectedParameters"},
        {name: "validateParameterCount", type: Boolean, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    return Function._validateParams(parameters, expectedParameters, validateParameterCount);
}

$type._validateParams = function Function$_validateParams(params, expectedParams, validateParameterCount) {
    var e, expectedLength = expectedParams.length;
    validateParameterCount = validateParameterCount !== false;
    e = Function._validateParameterCount(params, expectedParams, validateParameterCount);
    if (e) {
        e.popStackFrame();
        return e;
    }
    for (var i = 0, l = params.length; i < l; i++) {
        var expectedParam = expectedParams[Math.min(i, expectedLength - 1)],
            paramName = expectedParam.name;
        if (expectedParam.parameterArray) {
            paramName += "[" + (i - expectedLength + 1) + "]";
        }
        else if (!validateParameterCount && (i >= expectedLength)) {
            break;
        }
        e = Function._validateParameter(params[i], expectedParam, paramName);
        if (e) {
            e.popStackFrame();
            return e;
        }
    }
    return null;
}

$type._validateParameterCount = function Function$_validateParameterCount(params, expectedParams, validateParameterCount) {
    var i, error,
        expectedLen = expectedParams.length,
        actualLen = params.length;
    if (actualLen < expectedLen) {
        var minParams = expectedLen;
        for (i = 0; i < expectedLen; i++) {
            var param = expectedParams[i];
            if (param.optional || param.parameterArray) {
                minParams--;
            }
        }        
        if (actualLen < minParams) {
            error = true;
        }
    }
    else if (validateParameterCount && (actualLen > expectedLen)) {
        error = true;      
        for (i = 0; i < expectedLen; i++) {
            if (expectedParams[i].parameterArray) {
                error = false;
                break;
            }
        }  
    }

    if (error) {
        var e = Error.parameterCount();
        e.popStackFrame();
        return e;
    }

    return null;
}

$type._validateParameter = function Function$_validateParameter(param, expectedParam, paramName) {
    var e,
        expectedType = expectedParam.type,
        expectedInteger = !!expectedParam.integer,
        expectedDomElement = !!expectedParam.domElement,
        mayBeNull = !!expectedParam.mayBeNull;

    e = Function._validateParameterType(param, expectedType, expectedInteger, expectedDomElement, mayBeNull, paramName);
    if (e) {
        e.popStackFrame();
        return e;
    }

    var expectedElementType = expectedParam.elementType,
        elementMayBeNull = !!expectedParam.elementMayBeNull;
    if (expectedType === Array && typeof(param) !== "undefined" && param !== null &&
        (expectedElementType || !elementMayBeNull)) {
        var expectedElementInteger = !!expectedParam.elementInteger,
            expectedElementDomElement = !!expectedParam.elementDomElement;
        for (var i=0; i < param.length; i++) {
            var elem = param[i];
            e = Function._validateParameterType(elem, expectedElementType,
                expectedElementInteger, expectedElementDomElement, elementMayBeNull,
                paramName + "[" + i + "]");
            if (e) {
                e.popStackFrame();
                return e;
            }
        }
    }

    return null;
}

$type._validateParameterType = function Function$_validateParameterType(param, expectedType, expectedInteger, expectedDomElement, mayBeNull, paramName) {
    var e, i;

    if (typeof(param) === "undefined" || param === null) {
        if (mayBeNull) {
            return null;
        }
        e = param === null ? Error.argumentNull(paramName) : Error.argumentUndefined(paramName);
        e.popStackFrame();
        return e;
    }

    if (expectedType && expectedType.__enum) {
        if (typeof(param) !== 'number') {
            e = Error.argumentType(paramName, Object.getType(param), expectedType);
            e.popStackFrame();
            return e;
        }
        if ((param % 1) === 0) {
            var values = expectedType.prototype;
            if (!expectedType.__flags || (param === 0)) {
                for (i in values) {
                    if (values[i] === param) return null;
                }
            }
            else {
                var v = param;
                for (i in values) {
                    var vali = values[i];
                    if (vali === 0) continue;
                    if ((vali & param) === vali) {
                        v -= vali;
                    }
                    if (v === 0) return null;
                }
            }
        }
        e = Error.argumentOutOfRange(paramName, param, String.format(Sys.Res.enumInvalidValue, param, expectedType.getName()));
        e.popStackFrame();
        return e;
    }

    if (expectedDomElement && (!Sys._isDomElement(param) || (param.nodeType === 3))) {
        e = Error.argument(paramName, Sys.Res.argumentDomElement);
        e.popStackFrame();
        return e;
    }

    if (expectedType && !Sys._isInstanceOfType(expectedType, param)) {
        e = Error.argumentType(paramName, Object.getType(param), expectedType);
        e.popStackFrame();
        return e;
    }

    if (expectedType === Number && expectedInteger) {
        if ((param % 1) !== 0) {
            e = Error.argumentOutOfRange(paramName, param, Sys.Res.argumentInteger);
            e.popStackFrame();
            return e;
        }
    }

    return null;
}
$type = Error;
$type.__typeName = 'Error';
$type.__class = true;

Sys._errorArgument = function(kind, paramName, message) {
    var name = "Sys.Argument" + kind + "Exception";
    var displayMessage = name + ": " + (message || Sys.Res["argument"+kind]);
    if (paramName) {
        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
    }

    var err = Error.create(displayMessage, { name: name, paramName: paramName });
    err.popStackFrame();
    err.popStackFrame();
    return err;
}

Sys._error = function(kind, message, defaultMessage) {
    var name = "Sys." + kind + "Exception";
    var displayMessage = name + ": " + (message || Sys.Res[defaultMessage]);
    var err = Error.create(displayMessage, {name: name});
    err.popStackFrame();
    err.popStackFrame();
    return err;
}

$type.create = function Error$create(message, errorInfo) {
    /// <summary locid="M:J#Error.create">Use this method to create a new error.</summary>
    /// <param name="message" type="String" optional="true" mayBeNull="true">The error message.</param>
    /// <param name="errorInfo" optional="true" mayBeNull="true">A plain JavaScript object that contains extended information about the error.   The object should have a 'name' field that contains a string that identifies the error   and any additional fields that are necessary to fully describe the error.</param>
    /// <returns type="Error">An Error object.</returns>
    var e = Function._validateParams(arguments, [
        {name: "message", type: String, mayBeNull: true, optional: true},
        {name: "errorInfo", mayBeNull: true, optional: true}
    ]);
    if (e) throw e;

    var err = new Error(message);
    err.message = message;

    if (errorInfo) {
        for (var v in errorInfo) {
            err[v] = errorInfo[v];
        }
    }

    err.popStackFrame();
    return err;
}

$type.argument = function Error$argument(paramName, message) {
    /// <summary locid="M:J#Error.argument">Creates an ArgumentException with a specified error message   and the name of the parameter that caused this exception.</summary>
    /// <param name="paramName" type="String" optional="true" mayBeNull="true">The name of the parameter that caused the exception.</param>
    /// <param name="message" type="String" optional="true" mayBeNull="true">A message that describes the error.</param>
    /// <returns>An Error instance that represents an ArgumentException.</returns>
    var e = Function._validateParams(arguments, [
        {name: "paramName", type: String, mayBeNull: true, optional: true},
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    return Sys._errorArgument("", paramName, message);
}

$type.argumentNull = function Error$argumentNull(paramName, message) {
    /// <summary locid="M:J#Error.argumentNull">Creates an ArgumentNullException with a specified error message   and the name of the parameter that caused this exception.</summary>
    /// <param name="paramName" type="String" optional="true" mayBeNull="true">The name of the parameter that caused the exception.</param>
    /// <param name="message" type="String" optional="true" mayBeNull="true">A message that describes the error.</param>
    /// <returns>An Error instance that represents an ArgumentNullException.</returns>
    var e = Function._validateParams(arguments, [
        {name: "paramName", type: String, mayBeNull: true, optional: true},
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    return Sys._errorArgument("Null", paramName, message);
}

$type.argumentOutOfRange = function Error$argumentOutOfRange(paramName, actualValue, message) {
    /// <summary locid="M:J#Error.argumentOutOfRange">Creates an ArgumentOutOfRangeException with a specified error message   and the name and actual value of the parameter that caused this exception.</summary>
    /// <param name="paramName" type="String" optional="true" mayBeNull="true">The name of the parameter that caused the exception.</param>
    /// <param name="actualValue" optional="true" mayBeNull="true">The actual value of the parameter.</param>
    /// <param name="message" type="String" optional="true" mayBeNull="true">A message that describes the error.</param>
    /// <returns>An Error instance that represents an ArgumentOutOfRangeException.</returns>
    var e = Function._validateParams(arguments, [
        {name: "paramName", type: String, mayBeNull: true, optional: true},
        {name: "actualValue", mayBeNull: true, optional: true},
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;

    var displayMessage = "Sys.ArgumentOutOfRangeException: " + (message || Sys.Res.argumentOutOfRange);
    if (paramName) {
        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
    }

    if (typeof(actualValue) !== "undefined" && actualValue !== null) {
        displayMessage += "\n" + String.format(Sys.Res.actualValue, actualValue);
    }

    var err = Error.create(displayMessage, {
        name: "Sys.ArgumentOutOfRangeException",
        paramName: paramName,
        actualValue: actualValue
    });
    err.popStackFrame();
    return err;
}

$type.argumentType = function Error$argumentType(paramName, actualType, expectedType, message) {
    /// <summary locid="M:J#Error.argumentType">Creates an ArgumentTypeException with a specified error message   and the name, actual type, and expected type of the parameter that   caused this exception.</summary>
    /// <param name="paramName" type="String" optional="true" mayBeNull="true">The name of the parameter that caused the exception.</param>
    /// <param name="actualType" type="Type" optional="true" mayBeNull="true">The actual type of the parameter value.</param>
    /// <param name="expectedType" type="Type" optional="true" mayBeNull="true">The expected type of the parameter value.</param>
    /// <param name="message" type="String" optional="true" mayBeNull="true">A message that describes the error.</param>
    /// <returns>An Error instance that represents an ArgumentTypeException.</returns>
    var e = Function._validateParams(arguments, [
        {name: "paramName", type: String, mayBeNull: true, optional: true},
        {name: "actualType", type: Type, mayBeNull: true, optional: true},
        {name: "expectedType", type: Type, mayBeNull: true, optional: true},
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;

    var displayMessage = "Sys.ArgumentTypeException: ";
    if (message) {
        displayMessage += message;
    }
    else if (actualType && expectedType) {
        displayMessage +=
            String.format(Sys.Res.argumentTypeWithTypes, actualType.getName(), expectedType.getName());
    }
    else {
        displayMessage += Sys.Res.argumentType;
    }

    if (paramName) {
        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
    }

    var err = Error.create(displayMessage, {
        name: "Sys.ArgumentTypeException",
        paramName: paramName,
        actualType: actualType,
        expectedType: expectedType
    });
    err.popStackFrame();
    return err;
}

$type.argumentUndefined = function Error$argumentUndefined(paramName, message) {
    /// <summary locid="M:J#Error.argumentUndefined">Creates an ArgumentUndefinedException with a specified error message   and the name of the parameter that caused this exception.</summary>
    /// <param name="paramName" type="String" optional="true" mayBeNull="true">The name of the parameter that caused the exception.</param>
    /// <param name="message" type="String" optional="true" mayBeNull="true">A message that describes the error.</param>
    /// <returns>An Error instance that represents an ArgumentUndefinedException.</returns>
    var e = Function._validateParams(arguments, [
        {name: "paramName", type: String, mayBeNull: true, optional: true},
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    return Sys._errorArgument("Undefined", paramName, message);
}

$type.format = function Error$format(message) {
    /// <summary locid="M:J#Error.format">Creates a format error.</summary>
    /// <param name="message" type="String" optional="true" mayBeNull="true">The error message.</param>
    /// <returns>An Error object that represents a FormatException.</returns>
    var e = Function._validateParams(arguments, [
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    return Sys._error("Format", message, "format");
}

$type.invalidOperation = function Error$invalidOperation(message) {
    /// <summary locid="M:J#Error.invalidOperation">Creates an invalid operation error.</summary>
    /// <param name="message" type="String" optional="true" mayBeNull="true">The error message.</param>
    /// <returns>An Error instance that represents an InvalidOperationException.</returns>
    var e = Function._validateParams(arguments, [
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    return Sys._error("InvalidOperation", message, "invalidOperation");
}

$type.notImplemented = function Error$notImplemented(message) {
    /// <summary locid="M:J#Error.notImplemented">Creates a not implemented error.</summary>
    /// <param name="message" type="String" optional="true" mayBeNull="true">The error message.</param>
    /// <returns>An Error instance that represents a NotImplementedException.</returns>
    var e = Function._validateParams(arguments, [
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    return Sys._error("NotImplemented", message, "notImplemented");
}

$type.parameterCount = function Error$parameterCount(message) {
    /// <summary locid="M:J#Error.parameterCount">Creates a ParameterCountException with a specified error message.</summary>
    /// <param name="message" type="String" optional="true" mayBeNull="true">A message that describes the error.</param>
    /// <returns>An Error instance that represents a ParameterCountException.</returns>
    var e = Function._validateParams(arguments, [
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    return Sys._error("ParameterCount", message, "parameterCount");
}

$type.prototype.popStackFrame = function Error$popStackFrame() {
    /// <summary locid="M:J#checkParam">Updates the fileName and lineNumber fields based on the next frame in the   stack trace. Call this method whenever an instance of Error is returned   from a function. This makes the fileName and lineNumber reported in the   FireFox console point to the location where the exception was thrown, not   the location where the instance of Error was created.</summary>
    if (arguments.length !== 0) throw Error.parameterCount();


    if (typeof(this.stack) === "undefined" || this.stack === null ||
        typeof(this.fileName) === "undefined" || this.fileName === null ||
        typeof(this.lineNumber) === "undefined" || this.lineNumber === null) {
        return;
    }

    var stackFrames = this.stack.split("\n");

    var currentFrame = stackFrames[0];
    var pattern = this.fileName + ":" + this.lineNumber;
    while(typeof(currentFrame) !== "undefined" &&
          currentFrame !== null &&
          currentFrame.indexOf(pattern) < 0) {
        stackFrames.shift();
        currentFrame = stackFrames[0];
    }

    var nextFrame = stackFrames[1];

    if (typeof(nextFrame) === "undefined" || nextFrame === null) {
        return;
    }

    var nextFrameParts = nextFrame.match(/@(.*):(\d+)$/);
    if (typeof(nextFrameParts) === "undefined" || nextFrameParts === null) {
        return;
    }

    this.fileName = nextFrameParts[1];

    this.lineNumber = parseInt(nextFrameParts[2]);

    stackFrames.shift();
    this.stack = stackFrames.join("\n");
}
$type = Object;
$type.__typeName = 'Object';
$type.__class = true;

$type.getType = function Object$getType(instance) {
    /// <summary locid="M:J#Object.getType"></summary>
    /// <param name="instance">The object for which the type must be returned.</param>
    /// <returns type="Type">The type of the object.</returns>
    var e = Function._validateParams(arguments, [
        {name: "instance"}
    ]);
    if (e) throw e;
    var ctor = instance.constructor;
    if (!ctor || (typeof(ctor) !== "function") || !ctor.__typeName || (ctor.__typeName === 'Object')) {
        return Object;
    }
    return ctor;
}

$type.getTypeName = function Object$getTypeName(instance) {
    /// <summary locid="M:J#Object.getTypeName"></summary>
    /// <param name="instance">The object for which the type name must be returned.</param>
    /// <returns type="String">The name of the type of the object.</returns>
    var e = Function._validateParams(arguments, [
        {name: "instance"}
    ]);
    if (e) throw e;
    return Object.getType(instance).getName();
}
$type = String;
$type.__typeName = 'String';
$type.__class = true;

$prototype = $type.prototype;
$prototype.endsWith = function String$endsWith(suffix) {
    /// <summary locid="M:J#String.endsWith">Determines whether the end of this instance matches the specified string.</summary>
    /// <param name="suffix" type="String">A string to compare to.</param>
    /// <returns type="Boolean">true if suffix matches the end of this instance; otherwise, false.</returns>
    var e = Function._validateParams(arguments, [
        {name: "suffix", type: String}
    ]);
    if (e) throw e;
    return (this.substr(this.length - suffix.length) === suffix);
}

$prototype.startsWith = function String$startsWith(prefix) {
    /// <summary locid="M:J#String.startsWith">Determines whether the beginning of this instance matches the specified string.</summary>
    /// <param name="prefix" type="String">The String to compare.</param>
    /// <returns type="Boolean">true if prefix matches the beginning of this string; otherwise, false.</returns>
    var e = Function._validateParams(arguments, [
        {name: "prefix", type: String}
    ]);
    if (e) throw e;
    return (this.substr(0, prefix.length) === prefix);
}

$prototype.trim = function String$trim() {
    /// <summary locid="M:J#String.trim">Removes all leading and trailing white-space characters from the current String object.</summary>
    /// <returns type="String">The string that remains after all white-space characters are removed from the start and end of the current String object.</returns>
    if (arguments.length !== 0) throw Error.parameterCount();
    return this.replace(/^\s+|\s+$/g, '');
}

$prototype.trimEnd = function String$trimEnd() {
    /// <summary locid="M:J#String.trimEnd">Removes all trailing white spaces from the current String object.</summary>
    /// <returns type="String">The string that remains after all white-space characters are removed from the end of the current String object.</returns>
    if (arguments.length !== 0) throw Error.parameterCount();
    return this.replace(/\s+$/, '');
}

$prototype.trimStart = function String$trimStart() {
    /// <summary locid="M:J#String.trimStart">Removes all leading white spaces from the current String object.</summary>
    /// <returns type="String">The string that remains after all white-space characters are removed from the start of the current String object.</returns>
    if (arguments.length !== 0) throw Error.parameterCount();
    return this.replace(/^\s+/, '');
}

$type.format = function String$format(format, args) {
    /// <summary locid="M:J#String.format">Replaces the format items in a specified String with the text equivalents of the values of   corresponding object instances. The invariant culture will be used to format dates and numbers.</summary>
    /// <param name="format" type="String">A format string.</param>
    /// <param name="args" parameterArray="true" mayBeNull="true">The objects to format.</param>
    /// <returns type="String">A copy of format in which the format items have been replaced by the   string equivalent of the corresponding instances of object arguments.</returns>
    var e = Function._validateParams(arguments, [
        {name: "format", type: String},
        {name: "args", mayBeNull: true, parameterArray: true}
    ]);
    if (e) throw e;
    return String._toFormattedString(false, arguments);
}

$type._toFormattedString = function String$_toFormattedString(useLocale, args) {
    var result = '';
    var format = args[0];

    for (var i=0;;) {
        var open = format.indexOf('{', i);
        var close = format.indexOf('}', i);
        if ((open < 0) && (close < 0)) {
            result += format.slice(i);
            break;
        }
        if ((close > 0) && ((close < open) || (open < 0))) {
            if (format.charAt(close + 1) !== '}') {
                throw Error.argument('format', Sys.Res.stringFormatBraceMismatch);
            }
            result += format.slice(i, close + 1);
            i = close + 2;
            continue;
        }

        result += format.slice(i, open);
        i = open + 1;

        if (format.charAt(i) === '{') {
            result += '{';
            i++;
            continue;
        }

        if (close < 0) throw Error.argument('format', Sys.Res.stringFormatBraceMismatch);


        var brace = format.substring(i, close);
        var colonIndex = brace.indexOf(':');
        var argNumber = parseInt((colonIndex < 0)? brace : brace.substring(0, colonIndex), 10) + 1;
        if (isNaN(argNumber)) throw Error.argument('format', Sys.Res.stringFormatInvalid);
        var argFormat = (colonIndex < 0)? '' : brace.substring(colonIndex + 1);

        var arg = args[argNumber];
        if (typeof(arg) === "undefined" || arg === null) {
            arg = '';
        }

        if (arg.toFormattedString) {
            result += arg.toFormattedString(argFormat);
        }
        else if (useLocale && arg.localeFormat) {
            result += arg.localeFormat(argFormat);
        }
        else if (arg.format) {
            result += arg.format(argFormat);
        }
        else
            result += arg.toString();

        i = close + 1;
    }

    return result;
}
$type = Boolean;
$type.__typeName = 'Boolean';
$type.__class = true;

$type.parse = function Boolean$parse(value) {
    /// <summary locid="M:J#Boolean.parse">Creates a bool from its string representation.</summary>
    /// <param name="value" type="String">"true" or "false".</param>
    /// <returns type="Boolean"></returns>
    var e = Function._validateParams(arguments, [
        {name: "value", type: String}
    ], false);
    if (e) throw e;
    var v = value.trim().toLowerCase(),
        r;
    if (v === 'false') {
        r = false;
    }
    else if (v === 'true') {
        r = true;
    }
    else {
        throw Error.argumentOutOfRange('value', value, Sys.Res.boolTrueOrFalse);
    }
    return r;
}
$type = Date;
$type.__typeName = 'Date';
$type.__class = true;
$type = Number;
$type.__typeName = 'Number';
$type.__class = true;
$type = RegExp;
$type.__typeName = 'RegExp';
$type.__class = true;
if (!window) this.window = this;

window.Type = $type = Function;

$type.__fullyQualifiedIdentifierRegExp = new RegExp("^[^.0-9 \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]([^ \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]*[^. \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\])?$", "i");
$type.__identifierRegExp = new RegExp("^[^.0-9 \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\][^. \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]*$", "i");

$prototype = $type.prototype;
$prototype.callBaseMethod = function Type$callBaseMethod(instance, name, baseArguments) {
    /// <summary locid="M:J#Type.callBaseMethod"></summary>
    /// <param name="instance">The instance for the base method. Usually 'this'.</param>
    /// <param name="name" type="String">The name of the base method.</param>
    /// <param name="baseArguments" type="Array" optional="true" mayBeNull="true" elementMayBeNull="true">The arguments to pass to the base method.</param>
    /// <returns>The return value of the base method.</returns>
    var e = Function._validateParams(arguments, [
        {name: "instance"},
        {name: "name", type: String},
        {name: "baseArguments", type: Array, mayBeNull: true, optional: true, elementMayBeNull: true}
    ]);
    if (e) throw e;
    var baseMethod = Sys._getBaseMethod(this, instance, name);
    if (!baseMethod) throw Error.invalidOperation(String.format(Sys.Res.methodNotFound, name));
    return baseArguments ? baseMethod.apply(instance, baseArguments) : baseMethod.apply(instance);
}

$prototype.getBaseMethod = function Type$getBaseMethod(instance, name) {
    /// <summary locid="M:J#Type.getBaseMethod">Use this method to get the base implementation of a method from the base class.</summary>
    /// <param name="instance">The instance for which the base method is needed. Usually 'this'.</param>
    /// <param name="name" type="String">The name of the method to get.</param>
    /// <returns type="Function" mayBeNull="true">The base method.</returns>
    var e = Function._validateParams(arguments, [
        {name: "instance"},
        {name: "name", type: String}
    ]);
    if (e) throw e;
    return Sys._getBaseMethod(this, instance, name);
}

$prototype.getBaseType = function Type$getBaseType() {
    /// <summary locid="M:J#Type.getBaseType"></summary>
    /// <returns type="Type" mayBeNull="true">The base type.</returns>
    if (arguments.length !== 0) throw Error.parameterCount();
    return (typeof(this.__baseType) === "undefined") ? null : this.__baseType;
}

$prototype.getInterfaces = function Type$getInterfaces() {
    /// <summary locid="M:J#Type.getInterfaces"></summary>
    /// <returns type="Array" elementType="Type" mayBeNull="false" elementMayBeNull="false">A copy of the list of interfaces that the type implements.</returns>
    if (arguments.length !== 0) throw Error.parameterCount();
    var result = [];
    var type = this;
    while(type) {
        var interfaces = type.__interfaces;
        if (interfaces) {
            for (var i = 0, l = interfaces.length; i < l; i++) {
                var interfaceType = interfaces[i];
                if (!Array.contains(result, interfaceType)) {
                    result.push(interfaceType);
                }
            }
        }
        type = type.__baseType;
    }
    return result;
}

$prototype.getName = function Type$getName() {
    /// <summary locid="M:J#Type.getName"></summary>
    /// <returns type="String">The name of the type.</returns>
    if (arguments.length !== 0) throw Error.parameterCount();
    return (typeof(this.__typeName) === "undefined") ? "" : this.__typeName;
}

$prototype.implementsInterface = function Type$implementsInterface(interfaceType) {
    /// <summary locid="M:J#Type.implementsInterface"></summary>
    /// <param name="interfaceType" type="Type">The interface to test.</param>
    /// <returns type="Boolean">True if the type implements the interface.</returns>
    var e = Function._validateParams(arguments, [
        {name: "interfaceType", type: Type}
    ]);
    if (e) throw e;
    this.resolveInheritance();

    var interfaceName = interfaceType.getName();
    var cache = this.__interfaceCache;
    if (cache) {
        var cacheEntry = cache[interfaceName];
        if (typeof(cacheEntry) !== 'undefined') return cacheEntry;
    }
    else {
        cache = this.__interfaceCache = {};
    }

    var baseType = this;
    while (baseType) {
        var interfaces = baseType.__interfaces;
        if (interfaces && Array.indexOf(interfaces, interfaceType) !== -1) {
            return cache[interfaceName] = true;
        }

        baseType = baseType.__baseType;
    }

    return cache[interfaceName] = false;
}

$prototype.inheritsFrom = function Type$inheritsFrom(parentType) {
    /// <summary locid="M:J#Type.inheritsFrom"></summary>
    /// <param name="parentType" type="Type">The type to test.</param>
    /// <returns type="Boolean">True if the type inherits from parentType.</returns>
    var e = Function._validateParams(arguments, [
        {name: "parentType", type: Type}
    ]);
    if (e) throw e;
    this.resolveInheritance();
    return Sys._inheritsFrom(this, parentType);
}

Sys._inheritsFrom = function _inheritsFrom(type, parentType) {
    var ret;
    if (parentType) {
        var baseType = type.__baseType;
        while (baseType) {
            if (baseType === parentType) {
                ret = true;
                break;
            }
            baseType = baseType.__baseType;
        }
    }
    return !!ret;
}

$prototype.initializeBase = function Type$initializeBase(instance, baseArguments) {
    /// <summary locid="M:J#Type.initializeBase">This method initializes the base type in the context   of a given instance object (to keep track of the base type, and to   effectively inherit the object model of the base class, and   initializing members of the base class).   This should be called from the derived class constructor.</summary>
    /// <param name="instance">The object to initialize base types for. Usually 'this'.</param>
    /// <param name="baseArguments" type="Array" optional="true" mayBeNull="true" elementMayBeNull="true">The arguments for the base constructor.</param>
    /// <returns>The instance.</returns>
    var e = Function._validateParams(arguments, [
        {name: "instance"},
        {name: "baseArguments", type: Array, mayBeNull: true, optional: true, elementMayBeNull: true}
    ]);
    if (e) throw e;
    if (!Sys._isInstanceOfType(this, instance)) throw Error.argumentType('instance', Object.getType(instance), this);

    this.resolveInheritance();
    var baseType = this.__baseType;
    if (baseType) {
        baseArguments ? baseType.apply(instance, baseArguments) : baseType.apply(instance);
    }

    return instance;
}

$prototype.isImplementedBy = function Type$isImplementedBy(instance) {
    /// <summary locid="M:J#Type.isImplementedBy"></summary>
    /// <param name="instance" mayBeNull="true">The object on which the interface must be tested.</param>
    /// <returns type="Boolean">True if the instance implements the interface.</returns>
    var e = Function._validateParams(arguments, [
        {name: "instance", mayBeNull: true}
    ]);
    if (e) throw e;
    if (typeof(instance) === "undefined" || instance === null) return false;

    var instanceType = Object.getType(instance);
    return !!(instanceType.implementsInterface && instanceType.implementsInterface(this));
}

$prototype.isInstanceOfType = function Type$isInstanceOfType(instance) {
    /// <summary locid="M:J#Type.isInstanceOfType"></summary>
    /// <param name="instance" mayBeNull="true">The object on which the type must be tested.</param>
    /// <returns type="Boolean">True if the object is an instance of the type or one of its derived types.</returns>
    var e = Function._validateParams(arguments, [
        {name: "instance", mayBeNull: true}
    ]);
    if (e) throw e;
    return Sys._isInstanceOfType(this, instance);
}

$prototype.registerClass = function Type$registerClass(typeName, baseType, interfaceTypes) {
    /// <summary locid="M:J#Type.registerClass">Registers a class (represented by its ctor function), and   optional base type, followed by any number of interfaces.</summary>
    /// <param name="typeName" type="String">The fully-qualified name of the type.</param>
    /// <param name="baseType" type="Type" optional="true" mayBeNull="true">The base type.</param>
    /// <param name="interfaceTypes" parameterArray="true" type="Type">One or several interfaces that the type implements.</param>
    /// <returns type="Type">The registered type.</returns>
    var e = Function._validateParams(arguments, [
        {name: "typeName", type: String},
        {name: "baseType", type: Type, mayBeNull: true, optional: true},
        {name: "interfaceTypes", type: Type, parameterArray: true}
    ]);
    if (e) throw e;
    if (!Type.__fullyQualifiedIdentifierRegExp.test(typeName)) throw Error.argument('typeName', Sys.Res.notATypeName);
    var parsedName;
    try {
        parsedName = eval(typeName);
    }
    catch(e) {
        throw Error.argument('typeName', Sys.Res.argumentTypeName);
    }
    if (parsedName !== this) throw Error.argument('typeName', Sys.Res.badTypeName);
    if (Sys.__registeredTypes[typeName]) throw Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, typeName));

    if ((arguments.length > 1) && (typeof(baseType) === 'undefined')) throw Error.argumentUndefined('baseType');
    var prototype = this.prototype;
    prototype.constructor = this;
    this.__typeName = typeName;
    this.__class = true;
    if (baseType) {
        this.__baseType = baseType;
        this.__basePrototypePending = true;
    }
    Sys.__upperCaseTypes[typeName.toUpperCase()] = this;

    if (interfaceTypes) {
        var interfaces = this.__interfaces = [];
        this.resolveInheritance();
        for (var i = 2, l = arguments.length; i < l; i++) {
            var interfaceType = arguments[i];
            if (!interfaceType.__interface) throw Error.argument('interfaceTypes[' + (i - 2) + ']', Sys.Res.notAnInterface);
            for (var methodName in interfaceType.prototype) {
                var method = interfaceType.prototype[methodName];
                if (!prototype[methodName]) {
                    prototype[methodName] = method;
                }
            }
            interfaces.push(interfaceType);
        }
    }
    Sys.__registeredTypes[typeName] = true;
    return this;
}

Sys.registerComponent = function registerComponent(type, options) {
    /// <summary locid="M:J#Sys.registerComponent">Generates a create() function for the given type using the optional description and parameters for intellisense.</summary>
    /// <param name="type" type="Function">The type to be created.</param>
    /// <param name="options" type="Object" optional="true" mayBeNull="true"></param>
    var e = Function._validateParams(arguments, [
        {name: "type", type: Function},
        {name: "options", type: Object, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    var typeName = type.getName();
    var isControlOrBehavior = Sys.UI && (Sys._inheritsFrom(type, Sys.UI.Control) || Sys._inheritsFrom(type, Sys.UI.Behavior));
    var name = (options && options.name);
    if (!name) {
        name = typeName;
        var i = name.lastIndexOf('.');
        if (i >= 0) {
            name = name.substr(i+1);
            if (name && name.charAt(0) === "_") return;
        }
        name = name.substr(0, 1).toLowerCase() + name.substr(1);
    }
    if (!options) {
        options = {};
    }
    options.name = name;
    options.type = type;
    options.typeName = typeName;
    options._isBehavior = isControlOrBehavior;
    
    options = Sys.components[name] = merge(Sys.components[name], options);

    var fn = Sys._getCreate(options),
        target = isControlOrBehavior ? Sys.ElementSet.prototype : Sys.create;
    target[name] = fn;
}

Sys.registerPlugin = function registerPlugin(pluginInfo) {
    /// <summary locid="M:J#Sys.registerPlugin"></summary>
    /// <param name="pluginInfo" type="Object">An object describing the plugin (name, plugin, dom, global, components)</param>
    var e = Function._validateParams(arguments, [
        {name: "pluginInfo", type: Object}
    ]);
    if (e) throw e;
    var name = pluginInfo.name,
        fnName = pluginInfo.functionName || name;
    Sys.plugins[name] = merge(Sys.plugins[name], pluginInfo);
    var plugin = pluginInfo.plugin,
        sysTarget;
    if (pluginInfo.global) {
        sysTarget = Sys;
    }
    else if (pluginInfo.dom) {
        sysTarget = Sys.ElementSet.prototype;
    }
    else if (pluginInfo.components) {
        sysTarget = Sys.ComponentSet.prototype;
    }
    if (sysTarget) {
        sysTarget[fnName] = Sys._getCreate(pluginInfo, true);
    }
}

Sys._createComp = function _createComp(component, defaults, args) {
    var type = component.type,
        parameters = component.parameters || [],
        isBehavior = component._isBehavior,
        target = isBehavior ? args[0] : null;
    var props = args[parameters.length] || {};
    props = merge({}, defaults, props);
    foreach(parameters, function(parameter, i) {
        var name = typeof(parameter) === "string" ? parameter : parameter.name,
            value = args[i];
        if (typeof(value) !== "undefined" && typeof(props[name]) === "undefined") {
            props[name] = value;
        }
    });
    if (this instanceof Sys.ElementSet) {
        var components = [];
        this.each(function() {
            components.push(Sys._create(type, props, this));
        });
        return new Sys.ComponentSet(this, components);
    }
    else {
        return Sys._create(type, props);
    }
}

Sys._create = function _create(type, properties, target) {
    var targetType = typeof(target);
    if (targetType === "string") {
        target = Sys.get(target);
    }
    var instance;
    Sys._2Pass(function() {
        instance = targetType === "undefined" ? new type() : new type(target);
        callIf(instance, "beginUpdate");
        Sys._set(instance, properties);
        var componentType = Sys.Component;
        if (!componentType || !componentType._register(instance)) {
            callIf(instance, "endUpdate") || callIf(instance, "initialize");
        }
    });    
    return instance;
}

$prototype.registerInterface = function Type$registerInterface(typeName) {
    /// <summary locid="M:J#Type.registerInterface">Registers an interface (represented by its ctor function).</summary>
    /// <param name="typeName" type="String">The fully-qualified name of the interface.</param>
    /// <returns type="Type">The registered interface.</returns>
    var e = Function._validateParams(arguments, [
        {name: "typeName", type: String}
    ]);
    if (e) throw e;
    if (!Type.__fullyQualifiedIdentifierRegExp.test(typeName)) throw Error.argument('typeName', Sys.Res.notATypeName);
    var parsedName;
    try {
        parsedName = eval(typeName);
    }
    catch(e) {
        throw Error.argument('typeName', Sys.Res.argumentTypeName);
    }
    if (parsedName !== this) throw Error.argument('typeName', Sys.Res.badTypeName);
    if (Sys.__registeredTypes[typeName]) throw Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, typeName));
    Sys.__upperCaseTypes[typeName.toUpperCase()] = this;

    this.prototype.constructor = this;
    this.__typeName = typeName;
    this.__interface = true;
    Sys.__registeredTypes[typeName] = true;

    return this;
}

$prototype.resolveInheritance = function Type$resolveInheritance() {
    /// <summary locid="M:J#Type.resolveInheritance">This method is called on the ctor function instance. It does three things: 1. It stores __baseType as a property of the constructor function 2. It copies members from the baseType's prototype into the  prototype associated with the type represented by this ctor,  if this type itself doesn't have the same member in its prototype,  i.e., it doesn't override the method. 3. It recurses up the inheritance chain to do the same for the base type.  Note that this logic runs only once per type, because it  is based on true value for __basePrototypePending property  off the ctor function.</summary>
    if (arguments.length !== 0) throw Error.parameterCount();

    if (this.__basePrototypePending) {
        var baseType = this.__baseType;

        baseType.resolveInheritance();
        var basePrototype = baseType.prototype,
            thisPrototype = this.prototype;
        for (var memberName in basePrototype) {
            thisPrototype[memberName] = thisPrototype[memberName] || basePrototype[memberName];
        }
        delete this.__basePrototypePending;
    }
}

$type.getRootNamespaces = function Type$getRootNamespaces() {
    /// <summary locid="M:J#Type.getRootNamespaces"></summary>
    /// <returns type="Array">Returns an array containing references to all the root namespaces</returns>
    if (arguments.length !== 0) throw Error.parameterCount();
    return Array.clone(Sys.__rootNamespaces);
}

$type.isClass = function Type$isClass(type) {
    /// <summary locid="M:J#Type.isClass"></summary>
    /// <param name="type" mayBeNull="true">The type to test.</param>
    /// <returns type="Boolean">True if the type is a class.</returns>
    var e = Function._validateParams(arguments, [
        {name: "type", mayBeNull: true}
    ]);
    if (e) throw e;
    return !!(type && type.__class);
}

$type.isInterface = function Type$isInterface(type) {
    /// <summary locid="M:J#Type.isInterface"></summary>
    /// <param name="type" mayBeNull="true">The type to test.</param>
    /// <returns type="Boolean">True if the type is an interface.</returns>
    var e = Function._validateParams(arguments, [
        {name: "type", mayBeNull: true}
    ]);
    if (e) throw e;
    return !!(type && type.__interface);
}

$type.isNamespace = function Type$isNamespace(object) {
    /// <summary locid="M:J#Type.isNamespace"></summary>
    /// <param name="object" mayBeNull="true">The type to test.</param>
    /// <returns type="Boolean">True if the object is a namespace.</returns>
    var e = Function._validateParams(arguments, [
        {name: "object", mayBeNull: true}
    ]);
    if (e) throw e;
    return !!(object && object.__namespace);
}

$type.parse = function Type$parse(typeName, ns) {
    /// <summary locid="M:J#Type.parse">If a namespace is specified, the type name is searched for on this namespace in a  case-insensitive way.  If no namespace is specified, the fully-qualified, case-sensitive type name must be specified.</summary>
    /// <param name="typeName" type="String" mayBeNull="true">The name of the type.</param>
    /// <param name="ns" optional="true" mayBeNull="true">The namespace where to look for the type.</param>
    /// <returns type="Type" mayBeNull="true">The type or null.</returns>
    var e = Function._validateParams(arguments, [
        {name: "typeName", type: String, mayBeNull: true},
        {name: "ns", mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    var fn;
    if (ns) {
        fn = Sys.__upperCaseTypes[ns.getName().toUpperCase() + '.' + typeName.toUpperCase()];
        return fn || null;
    }
    if (!typeName) return null;
    var htClasses = Type.__htClasses;
    if (!htClasses) {
        Type.__htClasses = htClasses = {};
    }
    fn = htClasses[typeName];
    if (!fn) {
        fn = window.eval(typeName);
        if (typeof(fn) !== 'function') throw Error.argument('typeName', Sys.Res.notATypeName);
        htClasses[typeName] = fn;
    }
    return fn;
}

$type.registerNamespace = function Type$registerNamespace(namespacePath) {
    /// <summary locid="M:J#Type.registerNamespace">Creates a namespace.</summary>
    /// <param name="namespacePath" type="String">The full path of the namespace.</param>
    var e = Function._validateParams(arguments, [
        {name: "namespacePath", type: String}
    ]);
    if (e) throw e;
    Type._registerNamespace(namespacePath);
}
$type._registerNamespace = function Type$_registerNamespace(namespacePath) {
    if (!Type.__fullyQualifiedIdentifierRegExp.test(namespacePath)) throw Error.argument('namespacePath', Sys.Res.invalidNameSpace);
    var rootObject = window;
    var namespaceParts = namespacePath.split('.');

    for (var i = 0, l = namespaceParts.length; i < l; i++) {
        var currentPart = namespaceParts[i];
        var ns = rootObject[currentPart];
        var nsType = typeof(ns);
        if ((nsType !== "undefined") && (ns !== null)) {
            if (nsType === "function") {
                throw Error.invalidOperation(String.format(Sys.Res.namespaceContainsClass, namespaceParts.splice(0, i + 1).join('.')));
            }
            if ((typeof(ns) !== "object") || (ns instanceof Array)) {
                throw Error.invalidOperation(String.format(Sys.Res.namespaceContainsNonObject, namespaceParts.splice(0, i + 1).join('.')));
            }
        }
        if (!ns) {
            ns = rootObject[currentPart] = {};
        }
        if (!ns.__namespace) {
            if (!i && (namespacePath !== "Sys")) {
                Sys.__rootNamespaces.push(ns);
            }
            ns.__namespace = true;
            ns.__typeName = namespaceParts.slice(0, i + 1).join('.');
            var parsedName;
            try {
                parsedName = eval(ns.__typeName);
            }
            catch(e) {
                parsedName = null;
            }
            if (parsedName !== ns) {
                delete rootObject[currentPart];
                throw Error.argument('namespacePath', Sys.Res.invalidNameSpace);
            }
            ns.getName = function ns$getName() {return this.__typeName;}
        }
        rootObject = ns;
    }
}

$type._checkDependency = function Type$_checkDependency(dependency, featureName) {
    var scripts = Type._registerScript._scripts, isDependent = (scripts ? (!!scripts[dependency]) : false);
    if ((typeof(featureName) !== 'undefined') && !isDependent) {
        throw Error.invalidOperation(String.format(Sys.Res.requiredScriptReferenceNotIncluded, 
        featureName, dependency));
    }
    return isDependent;
}

$type._registerScript = function Type$_registerScript(scriptName, dependencies) {
    var scripts = Type._registerScript._scripts;
    if (!scripts) {
        Type._registerScript._scripts = scripts = {};
    }
    if (scripts[scriptName]) {
        throw Error.invalidOperation(String.format(Sys.Res.scriptAlreadyLoaded, scriptName));
    }
    scripts[scriptName] = true;
    if (dependencies) {
        for (var i = 0, l = dependencies.length; i < l; i++) {
            var dependency = dependencies[i];
            if (!Type._checkDependency(dependency)) {
                throw Error.invalidOperation(String.format(Sys.Res.scriptDependencyNotFound, scriptName, dependency));
            }
        }
    }
}

$type._registerNamespace("Sys");
Sys.__upperCaseTypes = {};
Sys.__rootNamespaces = [Sys];
Sys.__registeredTypes = {};

Sys._isInstanceOfType = function _isInstanceOfType(type, instance) {
    if (typeof(instance) === "undefined" || instance === null) return false;
    if (instance instanceof type) return true;
    var instanceType = Object.getType(instance);
    return !!(instanceType === type) ||
           (instanceType.inheritsFrom && instanceType.inheritsFrom(type)) ||
           (instanceType.implementsInterface && instanceType.implementsInterface(type));
}

Sys._getBaseMethod = function _getBaseMethod(type, instance, name) {
    if (!Sys._isInstanceOfType(type, instance)) throw Error.argumentType('instance', Object.getType(instance), type);
    var baseType = type.getBaseType();
    if (baseType) {
        var baseMethod = baseType.prototype[name];
        return (baseMethod instanceof Function) ? baseMethod : null;
    }
    return null;
}

Sys._isDomElement = function _isDomElement(obj) {
    var val = false;
    if (typeof (obj.nodeType) !== 'number') {
        var doc = obj.ownerDocument || obj.document || obj;
        if (doc != obj) {
            var w = doc.defaultView || doc.parentWindow;
            val = (w != obj);
        }
        else {
            val = !doc.body || !Sys._isDomElement(doc.body);
        }
    }
    return !val;
}

var isBrowser = Sys._isBrowser = function _isBrowser(name) {
    return Sys.Browser.agent === Sys.Browser[name];
}


foreach(Sys._ns, $type._registerNamespace);
delete Sys._ns;
$type = Array;
$type.__typeName = 'Array';
$type.__class = true;

var indexOf = Sys._indexOf = function _indexOf(array, item, start) {
    if (typeof(item) === "undefined") return -1;
    var length = array.length;
    if (length !== 0) {
        start = start - 0;
        if (isNaN(start)) {
            start = 0;
        }
        else {
            if (isFinite(start)) {
                start = start - (start % 1);
            }
            if (start < 0) {
                start = Math.max(0, length + start);
            }
        }

        for (var i = start; i < length; i++) {
            if (array[i] === item) {
                return i;
            }
        }
    }
    return -1;
}

$type.add = $type.enqueue = function Array$enqueue(array, item) {
    /// <summary locid="M:J#Array.enqueue">Adds an element at the end of the array.</summary>
    /// <param name="array" type="Array" elementMayBeNull="true">The array to add to.</param>
    /// <param name="item" mayBeNull="true">The object to add.</param>
    var e = Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true},
        {name: "item", mayBeNull: true}
    ]);
    if (e) throw e;
    array[array.length] = item;
}

$type.addRange = function Array$addRange(array, items) {
    /// <summary locid="M:J#Array.addRange">Adds a range of items at the end of the array.</summary>
    /// <param name="array" type="Array" elementMayBeNull="true">The array to add to.</param>
    /// <param name="items" type="Array" elementMayBeNull="true">The array of items to append.</param>
    var e = Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true},
        {name: "items", type: Array, elementMayBeNull: true}
    ]);
    if (e) throw e;

    array.push.apply(array, items);
}

$type.clear = function Array$clear(array) {
    /// <summary locid="M:J#Array.clear">Clears the array of its elements.</summary>
    /// <param name="array" type="Array" elementMayBeNull="true">The array to clear.</param>
    var e = Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true}
    ]);
    if (e) throw e;
    array.length = 0;
}

$type.clone = function Array$clone(array) {
    /// <summary locid="M:J#Array.clone">Makes a clone of the array.</summary>
    /// <param name="array" type="Array" elementMayBeNull="true">The array to clone.</param>
    /// <returns type="Array" elementMayBeNull="true">A clone of the array.</returns>
    var e = Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true}
    ]);
    if (e) throw e;
    return array.length === 1 ? [array[0]] : Array.apply(null, array);
}

$type.contains = function Array$contains(array, item) {
    /// <summary locid="M:J#Array.contains">Use this method to determine if an array contains the specified element.</summary>
    /// <param name="array" type="Array" elementMayBeNull="true">The array to look into.</param>
    /// <param name="item" mayBeNull="true">The object to find in the array.</param>
    /// <returns type="Boolean">True if the object was found.</returns>
    var e = Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true},
        {name: "item", mayBeNull: true}
    ]);
    if (e) throw e;
    return (indexOf(array, item) >= 0);
}

$type.dequeue = function Array$dequeue(array) {
    /// <summary locid="M:J#Array.dequeue"></summary>
    /// <param name="array" type="Array" elementMayBeNull="true">Removes and returns the object at the beginning of the array.</param>
    /// <returns mayBeNull="true">The object that is removed from the beginning of the array.</returns>
    var e = Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true}
    ]);
    if (e) throw e;
    return array.shift();
}

$type.forEach = function Array$forEach(array, method, instance) {
    /// <summary locid="M:J#Array.forEach">Calls the specified function on each element of the array.</summary>
    /// <param name="array" type="Array" elementMayBeNull="true">The array to enumerate.</param>
    /// <param name="method" type="Function">The method to call.   The method should take the array element, the index of the element and   the array itself as its parameters.</param>
    /// <param name="instance" optional="true" mayBeNull="true">The context under which the function must run (i.e. what 'this' means inside the function).</param>
    var e = Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true},
        {name: "method", type: Function},
        {name: "instance", mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    for (var i = 0, l = array.length; i < l; i++) {
        var elt = array[i];
        if (typeof(elt) !== 'undefined') method.call(instance, elt, i, array);
    }
}

$type.indexOf = function Array$indexOf(array, item, start) {
    /// <summary locid="M:J#Array.indexOf">Finds the index in the array of the provided item.</summary>
    /// <param name="array" type="Array" elementMayBeNull="true">The array to look into.</param>
    /// <param name="item" optional="true" mayBeNull="true">The object to find.</param>
    /// <param name="start" optional="true" mayBeNull="true">The index where the search begins.</param>
    /// <returns type="Number">The index of the item or -1 if it wasn't found.</returns>
    var e = Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true},
        {name: "item", mayBeNull: true, optional: true},
        {name: "start", mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    return indexOf(array, item, start);
}

$type.insert = function Array$insert(array, index, item) {
    /// <summary locid="M:J#Array.insert">Inserts an item at the specified index.</summary>
    /// <param name="array" type="Array" elementMayBeNull="true">The array to insert into.</param>
    /// <param name="index" mayBeNull="true">The index where the item will be inserted.</param>
    /// <param name="item" mayBeNull="true">The item to insert.</param>
    var e = Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true},
        {name: "index", mayBeNull: true},
        {name: "item", mayBeNull: true}
    ]);
    if (e) throw e;
    array.splice(index, 0, item);
}

$type.parse = function Array$parse(value) {
    /// <summary locid="M:J#Array.parse">Creates an array from a string representation of the form "[elt1, elt2, elt3]".</summary>
    /// <param name="value" type="String" mayBeNull="true">The string representation of the array.</param>
    /// <returns type="Array" elementMayBeNull="true">An array built from the string representation.</returns>
    var e = Function._validateParams(arguments, [
        {name: "value", type: String, mayBeNull: true}
    ]);
    if (e) throw e;
    var v = value ? window.eval("(" + value + ")") : [];
    if (!Array.isInstanceOfType(v)) throw Error.argument('value', Sys.Res.arrayParseBadFormat);
    return v;
}

$type.remove = function Array$remove(array, item) {
    /// <summary locid="M:J#Array.remove">Removes the first occurence of an item from the array.</summary>
    /// <param name="array" type="Array" elementMayBeNull="true">The array to remove from.</param>
    /// <param name="item" mayBeNull="true">The item to remove.</param>
    /// <returns type="Boolean">True if the item was found.</returns>
    var e = Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true},
        {name: "item", mayBeNull: true}
    ]);
    if (e) throw e;
    var index = indexOf(array, item);
    if (index >= 0) {
        array.splice(index, 1);
    }
    return (index >= 0);
}

$type.removeAt = function Array$removeAt(array, index) {
    /// <summary locid="M:J#Array.removeAt">Removes the item at the specified index from the array.</summary>
    /// <param name="array" type="Array" elementMayBeNull="true">The array to remove from.</param>
    /// <param name="index" mayBeNull="true">The index of the item to remove.</param>
    var e = Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true},
        {name: "index", mayBeNull: true}
    ]);
    if (e) throw e;
    array.splice(index, 1);
}



Type._registerScript._scripts = {
	"MicrosoftAjaxCore.js": true,
	"MicrosoftAjaxGlobalization.js": true,
	"MicrosoftAjaxSerialization.js": true,
	"MicrosoftAjaxComponentModel.js": true,
	"MicrosoftAjaxHistory.js": true,
	"MicrosoftAjaxNetwork.js" : true,
	"MicrosoftAjaxWebServices.js": true };

$type = Sys.IDisposable = function IDisposable() {
    throw Error.notImplemented();
}
$type.prototype = {
    dispose: function IDisposable$dispose() {
        throw Error.notImplemented();
    }
}
$type.registerInterface('Sys.IDisposable');
$type = Sys.StringBuilder = function StringBuilder(initialText) {
    /// <summary locid="M:J#Sys.StringBuilder.#ctor">Provides an optimized mechanism to concatenate a sequence of strings.</summary>
    /// <param name="initialText" optional="true" mayBeNull="true">The initial text for the StringBuilder.</param>
    var e = Function._validateParams(arguments, [
        {name: "initialText", mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    this._parts = (typeof(initialText) !== 'undefined' && initialText !== null && initialText !== '') ?
        [initialText.toString()] : [];
    this._value = {};
    this._len = 0;
}

$type.prototype = {
    append: function StringBuilder$append(text) {
        /// <summary locid="M:J#Sys.StringBuilder.append">Appends a new string at the end of the StringBuilder.</summary>
        /// <param name="text" mayBeNull="true">The string to append.</param>
        /// <returns type="Sys.StringBuilder"></returns>
        var e = Function._validateParams(arguments, [
            {name: "text", mayBeNull: true}
        ]);
        if (e) throw e;
        this._parts.push(text);
        return this;
    },

    appendLine: function StringBuilder$appendLine(text) {
        /// <summary locid="M:J#Sys.StringBuilder.appendLine">Appends a new string as a line of text at the end of the StringBuilder.</summary>
        /// <param name="text" optional="true" mayBeNull="true">The string to append.</param>
        /// <returns type="Sys.StringBuilder"></returns>
        var e = Function._validateParams(arguments, [
            {name: "text", mayBeNull: true, optional: true}
        ]);
        if (e) throw e;
        this._parts.push(
            ((typeof(text) === 'undefined') || (text === null) || (text === '')) ?
            '\r\n' : (text + '\r\n'));
        return this;
    },

    clear: function StringBuilder$clear() {
        /// <summary locid="M:J#Sys.StringBuilder.clear">Clears the StringBuilder of its current contents.</summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        this._parts = [];
        this._value = {};
        this._len = 0;
    },

    isEmpty: function StringBuilder$isEmpty() {
        /// <summary locid="M:J#Sys.StringBuilder.isEmpty">Use this method to determine if the StringBuilder has contents.</summary>
        /// <returns type="Boolean">True if the StringBuilder has any contents.</returns>
        if (arguments.length !== 0) throw Error.parameterCount();
        return (!this._parts.length || !this.toString());
    },

    toString: function StringBuilder$toString(separator) {
        /// <summary locid="M:J#Sys.StringBuilder.toString">Creates a string from the contents of the StringBuilder.</summary>
        /// <param name="separator" type="String" optional="true" mayBeNull="true">The separator to insert between the elements of the StringBuilder.</param>
        /// <returns type="String">The string built from the StringBuilder.</returns>
        var e = Function._validateParams(arguments, [
            {name: "separator", type: String, mayBeNull: true, optional: true}
        ]);
        if (e) throw e;
        separator = separator || '';
        var parts = this._parts;
        if (this._len !== parts.length) {
            this._value = {};
            this._len = parts.length;
        }
        var val = this._value;
        var ret = val[separator];
        if (typeof(ret) === 'undefined') {
            if (separator !== '') {
                for (var i = 0; i < parts.length;) {
                    var part = parts[i];
                    if ((typeof(part) === 'undefined') || (part === '') || (part === null)) {
                        parts.splice(i, 1);
                    }
                    else {
                        i++;
                    }
                }
            }
            val[separator] = ret = parts.join(separator);
        }
        return ret;
    }
}
$type.registerClass('Sys.StringBuilder');

var agent = navigator.userAgent,
    browser = Sys.Browser = {
        InternetExplorer: {},
        Firefox: {},
        Safari: {},
        Opera: {},
        agent: null,
        hasDebuggerStatement: false,
        name: navigator.appName,
        version: parseFloat(navigator.appVersion),
        documentMode: 0 };

if (agent.indexOf(' MSIE ') > -1) {
    browser.agent = browser.InternetExplorer;
    browser.version = parseFloat(agent.match(/MSIE (\d+\.\d+)/)[1]);
    if ((browser.version > 7) && (document.documentMode > 6)) {
        browser.documentMode = document.documentMode;    
    }
    browser.hasDebuggerStatement = true;
}
else if (agent.indexOf(' Firefox/') > -1) {
    browser.agent = browser.Firefox;
    browser.version = parseFloat(agent.match(/ Firefox\/(\d+\.\d+)/)[1]);
    browser.name = 'Firefox';
    browser.hasDebuggerStatement = true;
}
else if (agent.indexOf(' AppleWebKit/') > -1) {
    browser.agent = browser.Safari;
    browser.version = parseFloat(agent.match(/ AppleWebKit\/(\d+(\.\d+)?)/)[1]);
    browser.name = 'Safari';
}
else if (agent.indexOf('Opera/') > -1) {
    browser.agent = browser.Opera;
}


$type = Sys.EventArgs = function EventArgs() {
    /// <summary locid="M:J#Sys.EventArgs.#ctor">EventArgs is the base class for classes containing event data.</summary>
    if (arguments.length !== 0) throw Error.parameterCount();
}
$type.registerClass('Sys.EventArgs');

Sys.EventArgs.Empty = new Sys.EventArgs();
$type = Sys.CancelEventArgs = function CancelEventArgs() {
    /// <summary locid="M:J#Sys.CancelEventArgs.#ctor">CancelEventArgs is the base class for classes containing event data, which can be used to cancel the event.</summary>
    if (arguments.length !== 0) throw Error.parameterCount();
    Sys.CancelEventArgs.initializeBase(this);

    this._cancel = false;
}
$type.prototype = {
    get_cancel: function CancelEventArgs$get_cancel() {
        /// <value type="Boolean" locid="P:J#Sys.CancelEventArgs.cancel"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._cancel;
    },
    set_cancel: function CancelEventArgs$set_cancel(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
        if (e) throw e;
        this._cancel = value;
    }
}
$type.registerClass('Sys.CancelEventArgs', Sys.EventArgs);


Type.registerNamespace('Sys.UI');

$type = Sys._Debug = function _Debug() {
    /// <summary locid="M:J#Sys.Debug.#ctor">Provides a set of methods that help debug your code.</summary>
    /// <field name="isDebug" type="Boolean" locid="F:J#Sys.Debug.isDebug"></field>
    if (arguments.length !== 0) throw Error.parameterCount();
}
$type.prototype = {
    _appendConsole: function _Debug$_appendConsole(text) {
        if ((typeof(Debug) !== 'undefined') && Debug.writeln) {
            Debug.writeln(text);
        }
        if (window.console && window.console.log) {
            window.console.log(text);
        }
        if (window.opera) {
            window.opera.postError(text);
        }
        if (window.debugService) {
            window.debugService.trace(text);
        }
    },

    _getTrace: function() {
        var traceElement = Sys.get('#TraceConsole');
        return (traceElement && (traceElement.tagName.toUpperCase() === 'TEXTAREA')) ? traceElement : null;
    },

    _appendTrace: function _Debug$_appendTrace(text) {
        var traceElement = this._getTrace();
        if (traceElement) {
            traceElement.value += text + '\n';
        }
    },

    assert: function _Debug$assert(condition, message, displayCaller) {
        /// <summary locid="M:J#Sys.Debug.assert">Checks for a condition, displays a message and prompts the user to break   into the debugger if the condition is false.</summary>
        /// <param name="condition" type="Boolean">true to prevent a message being displayed; otherwise, false.</param>
        /// <param name="message" type="String" optional="true" mayBeNull="true">A message to display.</param>
        /// <param name="displayCaller" type="Boolean" optional="true" mayBeNull="true">True if the function calling assert should be displayed in the message.</param>
        var e = Function._validateParams(arguments, [
            {name: "condition", type: Boolean},
            {name: "message", type: String, mayBeNull: true, optional: true},
            {name: "displayCaller", type: Boolean, mayBeNull: true, optional: true}
        ]);
        if (e) throw e;
        if (!condition) {
            message = (displayCaller && this.assert.caller) ?
                String.format(Sys.Res.assertFailedCaller, message, this.assert.caller) :
                String.format(Sys.Res.assertFailed, message);

            if (confirm(String.format(Sys.Res.breakIntoDebugger, message))) {
                this.fail(message);
            }
        }
    },

    clearTrace: function _Debug$clearTrace() {
        /// <summary locid="M:J#Sys.Debug.clearTrace"></summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        var traceElement = this._getTrace();
        if (traceElement) {
            traceElement.value = '';
        }
    },

    fail: function _Debug$fail(message) {
        /// <summary locid="M:J#Sys.Debug.fail">Displays a message in the debugger's output window and breaks into the debugger.</summary>
        /// <param name="message" type="String" mayBeNull="true">A message to display.</param>
        var e = Function._validateParams(arguments, [
            {name: "message", type: String, mayBeNull: true}
        ]);
        if (e) throw e;
        this._appendConsole(message);

        if (Sys.Browser.hasDebuggerStatement) {
            window.eval('debugger');
        }
    },

    trace: function _Debug$trace(text) {
        /// <summary locid="M:J#Sys.Debug.trace">Appends a text line to the debugger console and the TraceConsole textarea element if available.</summary>
        /// <param name="text">Text for trace.</param>
        var e = Function._validateParams(arguments, [
            {name: "text"}
        ]);
        if (e) throw e;
        this._appendConsole(text);
        this._appendTrace(text);
    },

    traceDump: function _Debug$traceDump(object, name) {
        /// <summary locid="M:J#Sys.Debug.traceDump">Dumps an object to the debugger console and the TraceConsole textarea element if available.</summary>
        /// <param name="object" mayBeNull="true">Object for trace dump.</param>
        /// <param name="name" type="String" mayBeNull="true" optional="true">Object name.</param>
        var e = Function._validateParams(arguments, [
            {name: "object", mayBeNull: true},
            {name: "name", type: String, mayBeNull: true, optional: true}
        ]);
        if (e) throw e;
        this._traceDump(object, name, true);
    },

    _traceDump: function _Debug$_traceDump(object, name, recursive, indentationPadding, loopArray) {
        name = name || 'traceDump';
        indentationPadding = indentationPadding || '';
        var prefix = indentationPadding + name + ": ";
        if (object === null) {
            this.trace(prefix + 'null');
            return;
        }
        switch(typeof(object)) {
            case 'undefined':
                this.trace(prefix + 'Undefined');
                break;
            case 'number': case 'string': case 'boolean':
                this.trace(prefix + object);
                break;
            default:
                if (Date.isInstanceOfType(object) || RegExp.isInstanceOfType(object)) {
                    this.trace(prefix + object.toString());
                    break;
                }
                if (!loopArray) {
                    loopArray = [];
                }
                else if (Array.contains(loopArray, object)) {
                    this.trace(prefix + '...');
                    return;
                }
                loopArray.push(object);

                if ((object == window) || (object === document) ||
                    (window.HTMLElement && (object instanceof HTMLElement)) ||
                    (typeof(object.nodeName) === 'string')) {
                    var tag = object.tagName || 'DomElement';
                    if (object.id) {
                        tag += ' - ' + object.id;
                    }
                    this.trace(indentationPadding + name + ' {' +  tag + '}');
                }
                else {
                    var typeName = Object.getTypeName(object);
                    this.trace(indentationPadding + name + (typeof(typeName) === 'string' ? ' {' + typeName + '}' : ''));
                    if ((indentationPadding === '') || recursive) {
                        indentationPadding += "    ";
                        var i, length, properties, p, v;
                        if (object instanceof Array) {
                            length = object.length;
                            for (i = 0; i < length; i++) {
                                this._traceDump(object[i], '[' + i + ']', recursive, indentationPadding, loopArray);
                            }
                        }
                        else {
                            for (p in object) {
                                v = object[p];
                                if (typeof(v) !== "function") {
                                    this._traceDump(v, p, recursive, indentationPadding, loopArray);
                                }
                            }
                        }
                    }
                }
                Array.remove(loopArray, object);
        }
    }
}
$type.registerClass('Sys._Debug');

$type = Sys.Debug = new Sys._Debug();
$type.isDebug = true;
function Sys$Enum$parse(value, ignoreCase) {
    /// <summary locid="M:J#Sys.Enum.parse">Converts the string representation of the name or numeric value of one or more enumerated   constants to an equivalent enumerated object.</summary>
    /// <param name="value" type="String">A string containing the name or value to convert.</param>
    /// <param name="ignoreCase" type="Boolean" optional="true" mayBeNull="true">If true, the parsing will be done case-insensitively.  If omitted, the parsing is done case-sensitively.</param>
    /// <returns>An object of type enumType whose value is represented by value.</returns>
    var e = Function._validateParams(arguments, [
        {name: "value", type: String},
        {name: "ignoreCase", type: Boolean, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    var values, parsed, val;
    if (ignoreCase) {
        values = this.__lowerCaseValues;
        if (!values) {
            this.__lowerCaseValues = values = {};
            var prototype = this.prototype;
            for (var name in prototype) {
                values[name.toLowerCase()] = prototype[name];
            }
        }
    }
    else {
        values = this.prototype;
    }
    function throwError(v) {
        if (typeof(parsed) !== 'number') throw Error.argument('value', String.format(Sys.Res.enumInvalidValue, v, this.__typeName));
    }
    if (!this.__flags) {
        val = (ignoreCase ? value.toLowerCase() : value);
        parsed = values[val.trim()];
        if (typeof(parsed) !== 'number') throwError.call(this, value);
        return parsed;
    }
    else {
        var parts = (ignoreCase ? value.toLowerCase() : value).split(',');
        var v = 0;

        for (var i = parts.length - 1; i >= 0; i--) {
            var part = parts[i].trim();
            parsed = values[part];
            if (typeof(parsed) !== 'number') throwError.call(this, value.split(',')[i].trim());
            v |= parsed;
        }
        return v;
    }
}

function Sys$Enum$toString(value) {
    /// <summary locid="M:J#Sys.Enum.toString">Converts the value of an enum instance to its equivalent string representation.</summary>
    /// <param name="value" optional="true" mayBeNull="true">The value of the enum instance for which the string representation must be constructed.</param>
    /// <returns type="String">The string representation of "value".</returns>
    var e = Function._validateParams(arguments, [
        {name: "value", mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    if ((typeof(value) === 'undefined') || (value === null)) return this.__string;
    if ((typeof(value) != 'number') || ((value % 1) !== 0)) throw Error.argumentType('value', Object.getType(value), this);
    var values = this.prototype;
    var i;
    if (!this.__flags || (value === 0)) {
        for (i in values) {
            if (values[i] === value) {
                return i;
            }
        }
    }
    else {
        var sorted = this.__sortedValues;
        if (!sorted) {
            sorted = [];
            for (i in values) {
                sorted.push({key: i, value: values[i]});
            }
            sorted.sort(function(a, b) {
                return a.value - b.value;
            });
            this.__sortedValues = sorted;
        }
        var parts = [];
        var v = value;
        for (i = sorted.length - 1; i >= 0; i--) {
            var kvp = sorted[i];
            var vali = kvp.value;
            if (vali === 0) continue;
            if ((vali & value) === vali) {
                parts.push(kvp.key);
                v -= vali;
                if (v === 0) break;
            }
        }
        if (parts.length && v === 0) return parts.reverse().join(', ');
    }
    throw Error.argumentOutOfRange('value', value, String.format(Sys.Res.enumInvalidValue, value, this.__typeName));
}

$type = Type;

$type.prototype.registerEnum = function Type$registerEnum(name, flags) {
    /// <summary locid="M:J#Sys.UI.LineType.#ctor">Registers an enum type.</summary>
    /// <param name="name" type="String">The fully-qualified name of the enum.</param>
    /// <param name="flags" type="Boolean" optional="true" mayBeNull="true">True if the enum is a flags collection.</param>
    var e = Function._validateParams(arguments, [
        {name: "name", type: String},
        {name: "flags", type: Boolean, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    if (!Type.__fullyQualifiedIdentifierRegExp.test(name)) throw Error.argument('name', Sys.Res.notATypeName);
    var parsedName;
    try {
        parsedName = eval(name);
    }
    catch(e) {
        throw Error.argument('name', Sys.Res.argumentTypeName);
    }
    if (parsedName !== this) throw Error.argument('name', Sys.Res.badTypeName);
    if (Sys.__registeredTypes[name]) throw Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, name));
    for (var j in this.prototype) {
        var val = this.prototype[j];
        if (!Type.__identifierRegExp.test(j)) throw Error.invalidOperation(String.format(Sys.Res.enumInvalidValueName, j));
        if (typeof(val) !== 'number' || (val % 1) !== 0) throw Error.invalidOperation(Sys.Res.enumValueNotInteger);
        if (typeof(this[j]) !== 'undefined') throw Error.invalidOperation(String.format(Sys.Res.enumReservedName, j));
    }
    Sys.__upperCaseTypes[name.toUpperCase()] = this;

    for (var i in this.prototype) {
        this[i] = this.prototype[i];
    }
    this.__typeName = name;
    this.parse = Sys$Enum$parse;
    this.__string = this.toString();
    this.toString = Sys$Enum$toString;
    this.__flags = flags;
    this.__enum = true;
    Sys.__registeredTypes[name] = true;
}

$type.isEnum = function Type$isEnum(type) {
    /// <summary locid="M:J#Type.isEnum"></summary>
    /// <param name="type" mayBeNull="true">The type to test.</param>
    /// <returns type="Boolean">True if the type is an enum.</returns>
    var e = Function._validateParams(arguments, [
        {name: "type", mayBeNull: true}
    ]);
    if (e) throw e;
    return !!(type && type.__enum);
}

$type.isFlags = function Type$isFlags(type) {
    /// <summary locid="M:J#Type.isFlags"></summary>
    /// <param name="type" mayBeNull="true">The type to test.</param>
    /// <returns type="Boolean">True if the type is a set of flags.</returns>
    var e = Function._validateParams(arguments, [
        {name: "type", mayBeNull: true}
    ]);
    if (e) throw e;
    return !!(type && type.__flags);
}

$type = Sys.CollectionChange = function CollectionChange(action, newItems, newStartingIndex, oldItems, oldStartingIndex) {
    /// <summary locid="M:J#Sys.CollectionChange.#ctor">Describes a change in a collection.</summary>
    /// <param name="action" type="Sys.NotifyCollectionChangedAction"></param>
    /// <param name="newItems" optional="true" mayBeNull="true">The items that were added when action is add or replace.</param>
    /// <param name="newStartingIndex" type="Number" integer="true" optional="true" mayBeNull="true">The index where new items have been inserted.</param>
    /// <param name="oldItems" optional="true" mayBeNull="true">The items that were removed when action is remove or replace.</param>
    /// <param name="oldStartingIndex" type="Number" integer="true" optional="true" mayBeNull="true">The index where old items have been removed.</param>
    /// <field name="action" type="Sys.NotifyCollectionChangedAction" locid="F:J#Sys.CollectionChange.action"></field>
    /// <field name="newItems" type="Array" mayBeNull="true" elementMayBeNull="true" locid="F:J#Sys.CollectionChange.newItems">The items that were added when action is add.</field>
    /// <field name="newStartingIndex" type="Number" integer="true" locid="F:J#Sys.CollectionChange.newStartingIndex">The index where new items have been inserted.</field>
    /// <field name="oldItems" type="Array" mayBeNull="true" elementMayBeNull="true" locid="F:J#Sys.CollectionChange.oldItems">The items that were removed when action is remove.</field>
    /// <field name="oldStartingIndex" type="Number" integer="true" locid="F:J#Sys.CollectionChange.oldStartingIndex">The index where old items have been removed.</field>
    var e = Function._validateParams(arguments, [
        {name: "action", type: Sys.NotifyCollectionChangedAction},
        {name: "newItems", mayBeNull: true, optional: true},
        {name: "newStartingIndex", type: Number, mayBeNull: true, integer: true, optional: true},
        {name: "oldItems", mayBeNull: true, optional: true},
        {name: "oldStartingIndex", type: Number, mayBeNull: true, integer: true, optional: true}
    ]);
    if (e) throw e;
    this.action = action;
    if (newItems) {
        if (!(newItems instanceof Array)) {
            newItems = [newItems];
        }
    }
    this.newItems = newItems || null;
    if (typeof newStartingIndex !== "number") {
        newStartingIndex = -1;
    }
    this.newStartingIndex = newStartingIndex;
    if (oldItems) {
        if (!(oldItems instanceof Array)) {
            oldItems = [oldItems];
        }
    }
    this.oldItems = oldItems || null;
    if (typeof oldStartingIndex !== "number") {
        oldStartingIndex = -1;
    }
    this.oldStartingIndex = oldStartingIndex;
}
$type.registerClass("Sys.CollectionChange");
$type = Sys.NotifyCollectionChangedAction = function NotifyCollectionChangedAction() {
    /// <summary locid="M:J#Sys.NotifyCollectionChangedAction.#ctor">Describes how a collection has changed.</summary>
    /// <field name="add" type="Number" integer="true" static="true" locid="F:J#Sys.NotifyCollectionChangedAction.add"></field>
    /// <field name="remove" type="Number" integer="true" static="true" locid="F:J#Sys.NotifyCollectionChangedAction.remove"></field>
    /// <field name="reset" type="Number" integer="true" static="true" locid="F:J#Sys.NotifyCollectionChangedAction.reset"></field>
    if (arguments.length !== 0) throw Error.parameterCount();
    throw Error.notImplemented();
}
$type.prototype = {
    add: 0,
    remove: 1,
    reset: 2
}
$type.registerEnum('Sys.NotifyCollectionChangedAction');
$type = Sys.NotifyCollectionChangedEventArgs = function NotifyCollectionChangedEventArgs(changes) {
    /// <summary locid="M:J#Sys.NotifyCollectionChangedEventArgs.#ctor">Describes how the collection was changed.</summary>
    /// <param name="changes" type="Array" elementType="Sys.CollectionChange">A list of changes that were performed on the collection since the last event.</param>
    var e = Function._validateParams(arguments, [
        {name: "changes", type: Array, elementType: Sys.CollectionChange}
    ]);
    if (e) throw e;
    this._changes = changes;
    Sys.NotifyCollectionChangedEventArgs.initializeBase(this);
}
$type.prototype = {
    get_changes: function NotifyCollectionChangedEventArgs$get_changes() {
        /// <value type="Array" elementType="Sys.CollectionChange" locid="P:J#Sys.NotifyCollectionChangedEventArgs.changes"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._changes || [];
    }
}
$type.registerClass("Sys.NotifyCollectionChangedEventArgs", Sys.EventArgs);

$type = Sys.Observer = function Observer() {
    throw Error.invalidOperation();
}
$type.registerClass("Sys.Observer");

$type.makeObservable = function Observer$makeObservable(target) {
    /// <summary locid="M:J#Sys.Observer.makeObservable">Makes an object directly observable by adding observable methods to it.</summary>
    /// <param name="target" mayBeNull="false">The object, array, or DOM element to make observable.</param>
    /// <returns>The observable object.</returns>
    var e = Function._validateParams(arguments, [
        {name: "target"}
    ]);
    if (e) throw e;
    var isArray = target instanceof Array,
        o = Sys.Observer;
    Sys.Observer._ensureObservable(target);
    if (target.setValue === o._observeMethods.setValue) return target;
    o._addMethods(target, o._observeMethods);
    if (isArray) {
        o._addMethods(target, o._arrayMethods);
    }
    return target;
}

$type._ensureObservable = function Observer$_ensureObservable(target) {
    var type = typeof target;
    if ((type === "string") || (type === "number") || (type === "boolean") || (type === "date")) {
        throw Error.invalidOperation(String.format(Sys.Res.notObservable, type));
    }
}
$type._addMethods = function Observer$_addMethods(target, methods) {
    for (var m in methods) {
        if (target[m] && (target[m] !== methods[m])) {
            throw Error.invalidOperation(String.format(Sys.Res.observableConflict, m));
        }
        target[m] = methods[m];
    }
}
$type._addEventHandler = function Observer$_addEventHandler(target, eventName, handler) {
    Sys.Observer._getContext(target, true).events._addHandler(eventName, handler);
}
$type.addEventHandler = function Observer$addEventHandler(target, eventName, handler) {
    /// <summary locid="M:J#Sys.Observer.addEventHandler">Adds an observable event handler to the target.</summary>
    /// <param name="target"></param>
    /// <param name="eventName" type="String"></param>
    /// <param name="handler" type="Function"></param>
    var e = Function._validateParams(arguments, [
        {name: "target"},
        {name: "eventName", type: String},
        {name: "handler", type: Function}
    ]);
    if (e) throw e;
    Sys.Observer._ensureObservable(target);
    Sys.Observer._addEventHandler(target, eventName, handler);
}
$type._removeEventHandler = function Observer$_removeEventHandler(target, eventName, handler) {
    Sys.Observer._getContext(target, true).events._removeHandler(eventName, handler);
}
$type.removeEventHandler = function Observer$removeEventHandler(target, eventName, handler) {
    /// <summary locid="M:J#Sys.Observer.removeEventHandler">Removes an observable event handler from the target.</summary>
    /// <param name="target"></param>
    /// <param name="eventName" type="String"></param>
    /// <param name="handler" type="Function"></param>
    var e = Function._validateParams(arguments, [
        {name: "target"},
        {name: "eventName", type: String},
        {name: "handler", type: Function}
    ]);
    if (e) throw e;
    Sys.Observer._ensureObservable(target);
    Sys.Observer._removeEventHandler(target, eventName, handler);
}
$type.clearEventHandlers = function Observer$clearEventHandlers(target, eventName) {
    /// <summary locid="M:J#Sys.Observer.clearEventHandlers">Removes all observable event handlers from the target.</summary>
    /// <param name="target"></param>
    /// <param name="eventName" type="String" mayBeNull="true" optional="true">If not given, handlers for all events are removed.</param>
    var e = Function._validateParams(arguments, [
        {name: "target"},
        {name: "eventName", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    Sys.Observer._ensureObservable(target);
    Sys.Observer._getContext(target, true).events._removeHandlers(eventName);
}
$type.raiseEvent = function Observer$raiseEvent(target, eventName, eventArgs) {
    /// <summary locid="M:J#Sys.Observer.raiseEvent">Raises an observable event on the target.</summary>
    /// <param name="target"></param>
    /// <param name="eventName" type="String"></param>
    /// <param name="eventArgs" optional="true" mayBeNull="true"></param>
    var e = Function._validateParams(arguments, [
        {name: "target"},
        {name: "eventName", type: String},
        {name: "eventArgs", mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    Sys.Observer._ensureObservable(target);
    var ctx = Sys.Observer._getContext(target);
    if (!ctx) return;
    var handler = ctx.events.getHandler(eventName);
    if (handler) {
        handler(target, eventArgs || Sys.EventArgs.Empty);
    }
}
$type.addPropertyChanged = function Observer$addPropertyChanged(target, handler) {
    /// <summary locid="M:J#Sys.Observer.addPropertyChanged">Adds a propertyChanged event handler to the target.</summary>
    /// <param name="target" mayBeNull="false">The object to observe.</param>
    /// <param name="handler" type="Function">The event handler.</param>
    var e = Function._validateParams(arguments, [
        {name: "target"},
        {name: "handler", type: Function}
    ]);
    if (e) throw e;
    Sys.Observer._ensureObservable(target);
    Sys.Observer._addEventHandler(target, "propertyChanged", handler);
}
$type.removePropertyChanged = function Observer$removePropertyChanged(target, handler) {
    /// <summary locid="M:J#Sys.Observer.removePropertyChanged">Removes a propertyChanged event handler from the target.</summary>
    /// <param name="target" mayBeNull="false">The object to observe.</param>
    /// <param name="handler" type="Function">The event handler.</param>
    var e = Function._validateParams(arguments, [
        {name: "target"},
        {name: "handler", type: Function}
    ]);
    if (e) throw e;
    Sys.Observer._ensureObservable(target);
    Sys.Observer._removeEventHandler(target, "propertyChanged", handler);
}
$type.beginUpdate = function Observer$beginUpdate(target) {
    /// <summary locid="M:J#Sys.Observer.beginUpdate"></summary>
    /// <param name="target" mayBeNull="false"></param>
    var e = Function._validateParams(arguments, [
        {name: "target"}
    ]);
    if (e) throw e;
    Sys.Observer._ensureObservable(target);
    Sys.Observer._getContext(target, true).updating = true;
}
$type.endUpdate = function Observer$endUpdate(target) {
    /// <summary locid="M:J#Sys.Observer.endUpdate"></summary>
    /// <param name="target" mayBeNull="false"></param>
    var e = Function._validateParams(arguments, [
        {name: "target"}
    ]);
    if (e) throw e;
    Sys.Observer._ensureObservable(target);
    var ctx = Sys.Observer._getContext(target);
    if (!ctx || !ctx.updating) return;
    ctx.updating = false;
    var dirty = ctx.dirty;
    ctx.dirty = false;
    if (dirty) {
        if (target instanceof Array) {
            var changes = ctx.changes;
            ctx.changes = null;
            Sys.Observer.raiseCollectionChanged(target, changes);
        }
        Sys.Observer.raisePropertyChanged(target, "");
    }
}
$type.isUpdating = function Observer$isUpdating(target) {
    /// <summary locid="M:J#Sys.Observer.isUpdating"></summary>
    /// <param name="target" mayBeNull="false"></param>
    /// <returns type="Boolean"></returns>
    var e = Function._validateParams(arguments, [
        {name: "target"}
    ]);
    if (e) throw e;
    Sys.Observer._ensureObservable(target);
    var ctx = Sys.Observer._getContext(target);
    return ctx ? ctx.updating : false;
}
$type._setValue = function Observer$_setValue(target, propertyName, value) {
    var getter, setter, mainTarget = target, path = propertyName.split('.');
    for (var i = 0, l = (path.length - 1); i < l ; i++) {
        var name = path[i];
        getter = target["get_" + name]; 
        if (typeof (getter) === "function") {
            target = getter.call(target);
        }
        else {
            target = target[name];
        }
        var type = typeof (target);
        if ((target === null) || (type === "undefined")) {
            throw Error.invalidOperation(String.format(Sys.Res.nullReferenceInPath, propertyName));
        }
    }    
    var currentValue, lastPath = path[l];
    getter = target["get_" + lastPath];
    if (typeof(getter) === 'function') {
        currentValue = getter.call(target);
    }
    else {
        currentValue = target[lastPath];
    }
    callIf(target, "set_" + lastPath, value) || (target[lastPath] = value);
    if (currentValue !== value) {
        var ctx = Sys.Observer._getContext(mainTarget);
        if (ctx && ctx.updating) {
            ctx.dirty = true;
            return;
        };
        Sys.Observer.raisePropertyChanged(mainTarget, path[0]);
    }
}
$type.setValue = function Observer$setValue(target, propertyName, value) {
    /// <summary locid="M:J#Sys.Observer.setValue">Sets a property or field on the target in an observable manner.</summary>
    /// <param name="target" mayBeNull="false">The object to set a property on.</param>
    /// <param name="propertyName" type="String">The name of the property to field to set.</param>
    /// <param name="value" mayBeNull="true">The value to set.</param>
    var e = Function._validateParams(arguments, [
        {name: "target"},
        {name: "propertyName", type: String},
        {name: "value", mayBeNull: true}
    ]);
    if (e) throw e;
    Sys.Observer._ensureObservable(target);
    Sys.Observer._setValue(target, propertyName, value);
}
$type.raisePropertyChanged = function Observer$raisePropertyChanged(target, propertyName) {
    /// <summary locid="M:J#Sys.Observer.raisePropertyChanged">Raises a change notification event.</summary>
    /// <param name="target" mayBeNull="false">The object to raise the event on.</param>
    /// <param name="propertyName" type="String">The name of the property that changed.</param>
    Sys.Observer.raiseEvent(target, "propertyChanged", new Sys.PropertyChangedEventArgs(propertyName));
}

$type.addCollectionChanged = function Observer$addCollectionChanged(target, handler) {
    /// <summary locid="M:J#Sys.Observer.addCollectionChanged"></summary>
    /// <param name="target" type="Array" elementMayBeNull="true"></param>
    /// <param name="handler" type="Function"></param>
    var e = Function._validateParams(arguments, [
        {name: "target", type: Array, elementMayBeNull: true},
        {name: "handler", type: Function}
    ]);
    if (e) throw e;
    Sys.Observer._addEventHandler(target, "collectionChanged", handler);
}
$type.removeCollectionChanged = function Observer$removeCollectionChanged(target, handler) {
    /// <summary locid="M:J#Sys.Observer.removeCollectionChanged"></summary>
    /// <param name="target" type="Array" elementMayBeNull="true"></param>
    /// <param name="handler" type="Function"></param>
    var e = Function._validateParams(arguments, [
        {name: "target", type: Array, elementMayBeNull: true},
        {name: "handler", type: Function}
    ]);
    if (e) throw e;
    Sys.Observer._removeEventHandler(target, "collectionChanged", handler);
}
$type._collectionChange = function Observer$_collectionChange(target, change) {
    var ctx = this._getContext(target);
    if (ctx && ctx.updating) {
        ctx.dirty = true;
        var changes = ctx.changes;
        if (!changes) {
            ctx.changes = changes = [change];
        }
        else {
            changes.push(change);
        }
    }
    else {
        this.raiseCollectionChanged(target, [change]);
        this.raisePropertyChanged(target, 'length');
    }
}
$type.add = function Observer$add(target, item) {
    /// <summary locid="M:J#Sys.Observer.add">Adds an item to the collection in an observable manner.</summary>
    /// <param name="target" type="Array" elementMayBeNull="true">The array to add to.</param>
    /// <param name="item" mayBeNull="true">The item to add.</param>
    var e = Function._validateParams(arguments, [
        {name: "target", type: Array, elementMayBeNull: true},
        {name: "item", mayBeNull: true}
    ]);
    if (e) throw e;
    var change = new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.add, [item], target.length);
    Array.add(target, item);
    Sys.Observer._collectionChange(target, change);
}
$type.addRange = function Observer$addRange(target, items) {
    /// <summary locid="M:J#Sys.Observer.addRange">Adds items to the collection in an observable manner.</summary>
    /// <param name="target" type="Array" elementMayBeNull="true">The array to add to.</param>
    /// <param name="items" type="Array" elementMayBeNull="true">The array of items to add.</param>
    var e = Function._validateParams(arguments, [
        {name: "target", type: Array, elementMayBeNull: true},
        {name: "items", type: Array, elementMayBeNull: true}
    ]);
    if (e) throw e;
    var change = new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.add, items, target.length);
    Array.addRange(target, items);
    Sys.Observer._collectionChange(target, change);
}
$type.clear = function Observer$clear(target) {
    /// <summary locid="M:J#Sys.Observer.clear">Clears the array of its elements in an observable manner.</summary>
    /// <param name="target" type="Array" elementMayBeNull="true">The array to clear.</param>
    var e = Function._validateParams(arguments, [
        {name: "target", type: Array, elementMayBeNull: true}
    ]);
    if (e) throw e;
    var oldItems = Array.clone(target);
    Array.clear(target);
    Sys.Observer._collectionChange(target, new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.reset, null, -1, oldItems, 0));
}
$type.insert = function Observer$insert(target, index, item) {
    /// <summary locid="M:J#Sys.Observer.insert">Inserts an item at the specified index in an observable manner.</summary>
    /// <param name="target" type="Array" elementMayBeNull="true">The array to insert into.</param>
    /// <param name="index" type="Number" integer="true">The index where the item will be inserted.</param>
    /// <param name="item" mayBeNull="true">The item to insert.</param>
    var e = Function._validateParams(arguments, [
        {name: "target", type: Array, elementMayBeNull: true},
        {name: "index", type: Number, integer: true},
        {name: "item", mayBeNull: true}
    ]);
    if (e) throw e;
    Array.insert(target, index, item);
    Sys.Observer._collectionChange(target, new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.add, [item], index));
}
$type.remove = function Observer$remove(target, item) {
    /// <summary locid="M:J#Sys.Observer.remove">Removes the first occurence of an item from the array in an observable manner.</summary>
    /// <param name="target" type="Array" elementMayBeNull="true">The array to remove from.</param>
    /// <param name="item" mayBeNull="true">The item to remove.</param>
    /// <returns type="Boolean">True if the item was found.</returns>
    var e = Function._validateParams(arguments, [
        {name: "target", type: Array, elementMayBeNull: true},
        {name: "item", mayBeNull: true}
    ]);
    if (e) throw e;
    var index = Array.indexOf(target, item);
    if (index !== -1) {
        Array.remove(target, item);
        Sys.Observer._collectionChange(target, new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.remove, null, -1, [item], index));
        return true;
    }
    return false;
}
$type.removeAt = function Observer$removeAt(target, index) {
    /// <summary locid="M:J#Sys.Observer.removeAt">Removes the item at the specified index from the array in an observable manner.</summary>
    /// <param name="target" type="Array" elementMayBeNull="true">The array to remove from.</param>
    /// <param name="index" type="Number" integer="true">The index of the item to remove.</param>
    var e = Function._validateParams(arguments, [
        {name: "target", type: Array, elementMayBeNull: true},
        {name: "index", type: Number, integer: true}
    ]);
    if (e) throw e;
    if ((index > -1) && (index < target.length)) {
        var item = target[index];
        Array.removeAt(target, index);
        Sys.Observer._collectionChange(target, new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.remove, null, -1, [item], index));
    }
}
$type.raiseCollectionChanged = function Observer$raiseCollectionChanged(target, changes) {
    /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged">Raises the collectionChanged event.</summary>
    /// <param name="target">The collection to raise the event on.</param>
    /// <param name="changes" type="Array" elementType="Sys.CollectionChange">A list of changes that were performed on the collection since the last event.</param>
    Sys.Observer.raiseEvent(target, "collectionChanged", new Sys.NotifyCollectionChangedEventArgs(changes));
}

$type._observeMethods = {
    add_propertyChanged: function(handler) {
        Sys.Observer._addEventHandler(this, "propertyChanged", handler);
    },
    remove_propertyChanged: function(handler) {
        Sys.Observer._removeEventHandler(this, "propertyChanged", handler);
    },
    addEventHandler: function(eventName, handler) {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged">Adds an observable event handler.</summary>
        /// <param name="eventName" type="String"></param>
        /// <param name="handler" type="Function"></param>
        var e = Function._validateParams(arguments, [
            {name: "eventName", type: String},
            {name: "handler", type: Function}
        ]);
        if (e) throw e;
        Sys.Observer._addEventHandler(this, eventName, handler);
    },
    removeEventHandler: function(eventName, handler) {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged">Removes an observable event handler.</summary>
        /// <param name="eventName" type="String"></param>
        /// <param name="handler" type="Function"></param>
        var e = Function._validateParams(arguments, [
            {name: "eventName", type: String},
            {name: "handler", type: Function}
        ]);
        if (e) throw e;
        Sys.Observer._removeEventHandler(this, eventName, handler);
    },
    clearEventHandlers: function(eventName) {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged">Removes all observable event handlers from the target.</summary>
        /// <param name="target"></param>
        /// <param name="eventName" type="String" mayBeNull="true" optional="true">If not given, handlers for all events are removed.</param>
        var e = Function._validateParams(arguments, [
            {name: "target"},
            {name: "eventName", type: String, mayBeNull: true, optional: true}
        ]);
        if (e) throw e;
        Sys.Observer._getContext(this, true).events._removeHandlers(eventName);
    },
    get_isUpdating: function() {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged"></summary>
        /// <returns type="Boolean"></returns>
        return Sys.Observer.isUpdating(this);
    },
    beginUpdate: function() {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged"></summary>
        Sys.Observer.beginUpdate(this);
    },
    endUpdate: function() {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged"></summary>
        Sys.Observer.endUpdate(this);
    },
    setValue: function(name, value) {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged">Sets a property or field on the target in an observable manner.</summary>
        /// <param name="name" type="String">The name of the property to field to set.</param>
        /// <param name="value" mayBeNull="true">The value to set.</param>
        var e = Function._validateParams(arguments, [
            {name: "name", type: String},
            {name: "value", mayBeNull: true}
        ]);
        if (e) throw e;
        Sys.Observer._setValue(this, name, value);
    },
    raiseEvent: function(eventName, eventArgs) {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged">Raises an observable event.</summary>
        /// <param name="eventName" type="String"></param>
        /// <param name="eventArgs" optional="true" mayBeNull="true"></param>
        Sys.Observer.raiseEvent(this, eventName, eventArgs||null);
    },
    raisePropertyChanged: function(name) {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged">Raises a change notification event.</summary>
        /// <param name="name" type="String">The name of the property that changed.</param>
        Sys.Observer.raiseEvent(this, "propertyChanged", new Sys.PropertyChangedEventArgs(name));
    }
}
$type._arrayMethods = {
    add_collectionChanged: function(handler) {
        Sys.Observer._addEventHandler(this, "collectionChanged", handler);
    },
    remove_collectionChanged: function(handler) {
        Sys.Observer._removeEventHandler(this, "collectionChanged", handler);
    },
    add: function(item) {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged">Adds an item to the collection in an observable manner.</summary>
        /// <param name="item" mayBeNull="true">The item to add.</param>
        Sys.Observer.add(this, item);
    },
    addRange: function(items) {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged">Adds items to the collection in an observable manner.</summary>
        /// <param name="items" type="Array" elementMayBeNull="true">The array of items to add.</param>
        Sys.Observer.addRange(this, items);
    },
    clear: function() {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged">Clears the array of its elements in an observable manner.</summary>
        Sys.Observer.clear(this);
    },
    insert: function(index, item) { 
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged">Inserts an item at the specified index in an observable manner.</summary>
        /// <param name="index" type="Number" integer="true">The index where the item will be inserted.</param>
        /// <param name="item" mayBeNull="true">The item to insert.</param>
        Sys.Observer.insert(this, index, item);
    },
    remove: function(item) {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged">Removes the first occurence of an item from the array in an observable manner.</summary>
        /// <param name="item" mayBeNull="true">The item to remove.</param>
        /// <returns type="Boolean">True if the item was found.</returns>
        return Sys.Observer.remove(this, item);
    },
    removeAt: function(index) {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged">Removes the item at the specified index from the array in an observable manner.</summary>
        /// <param name="index" type="Number" integer="true">The index of the item to remove.</param>
        Sys.Observer.removeAt(this, index);
    },
    raiseCollectionChanged: function(changes) {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged">Raises the collectionChanged event.</summary>
        /// <param name="changes" type="Array" elementType="Sys.CollectionChange">A list of changes that were performed on the collection since the last event.</param>
        Sys.Observer.raiseEvent(this, "collectionChanged", new Sys.NotifyCollectionChangedEventArgs(changes));
    }
}
$type._getContext = function Observer$_getContext(obj, create) {
    var ctx = obj._observerContext;
    if (ctx) return ctx();
    if (create) {
        return (obj._observerContext = this._createContext())();
    }
    return null;
}
$type._createContext = function Observer$_createContext() {
    var ctx = {
        events: new Sys.EventHandlerList()
    };
    return function() {
        return ctx;
    }
}


function outOfRange(value, low, high) {
    return (value < low) || (value > high);
}

function expandYear(dtf, year) {
    var now = new Date(),
        era = getEra(now);
    if (year < 100) {
        var curr = getEraYear(now, dtf, era);
        year += curr - (curr % 100);
        if (year > dtf.Calendar.TwoDigitYearMax) {
            year -= 100;
        }
    }
    return year;
}

function getEra(date, eras) {
    if (!eras) return 0;
    var start, ticks = date.getTime();
    for (var i = 0, l = eras.length; i < l; i += 4) {
        start = eras[i+2];
        if ((start === null) || (ticks >= start)) {
            return i;
        }
    }
    return 0;
}

function getEraYear(date, dtf, era, sortable) {
    var year = date.getFullYear();
    if (!sortable && dtf.eras) {
        year -= dtf.eras[era + 3];
    }    
    return year;
}

Sys._appendPreOrPostMatch = function _appendPreOrPostMatch(preMatch, strings) {
    var quoteCount = 0;
    var escaped = false;
    for (var i = 0, il = preMatch.length; i < il; i++) {
        var c = preMatch.charAt(i);
        switch (c) {
        case '\'':
            if (escaped) strings.push("'");
            else quoteCount++;
            escaped = false;
            break;
        case '\\':
            if (escaped) strings.push("\\");
            escaped = !escaped;
            break;
        default:
            strings.push(c);
            escaped = false;
            break;
        }
    }
    return quoteCount;
}

$type = Date;
$type._expandFormat = function Date$_expandFormat(dtf, format) {
    format = format || "F";
    var len = format.length;
    if (len === 1) {
        switch (format) {
        case "d":
            return dtf["ShortDatePattern"];
        case "D":
            return dtf["LongDatePattern"];
        case "t":
            return dtf["ShortTimePattern"];
        case "T":
            return dtf["LongTimePattern"];
        case "f":
            return dtf["LongDatePattern"] + " " + dtf["ShortTimePattern"];
        case "F":
            return dtf["FullDateTimePattern"];
        case "M": case "m":
            return dtf["MonthDayPattern"];
        case "s":
            return dtf["SortableDateTimePattern"];
        case "Y": case "y":
            return dtf["YearMonthPattern"];
        default:
            throw Error.format(Sys.Res.formatInvalidString);
        }
    }
    else if ((len === 2) && (format.charAt(0) === "%")) {
        format = format.charAt(1);
    }
    return format;
}

$type._getParseRegExp = function Date$_getParseRegExp(dtf, format) {
    var re = dtf._parseRegExp;
    if (!re) {
        dtf._parseRegExp = re = {};
    }
    else {
        var reFormat = re[format];
        if (reFormat) {
            return reFormat;
        }
    }

    var expFormat = Date._expandFormat(dtf, format);
    expFormat = expFormat.replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g, "\\\\$1");

    var regexp = ["^"];
    var groups = [];
    var index = 0;
    var quoteCount = 0;
    var tokenRegExp = Date._getTokenRegExp();
    var match;

    while ((match = tokenRegExp.exec(expFormat)) !== null) {
        var preMatch = expFormat.slice(index, match.index);
        index = tokenRegExp.lastIndex;

        quoteCount += Sys._appendPreOrPostMatch(preMatch, regexp);
        if (quoteCount % 2) {
            regexp.push(match[0]);
            continue;
        }

        var m = match[0],
            len = m.length,
            add;
        switch (m) {
            case 'dddd': case 'ddd':
            case 'MMMM': case 'MMM':
            case 'gg': case 'g':
                add = "(\\D+)";
                break;
            case 'tt': case 't':
                add = "(\\D*)";
                break;
            case 'yyyy':
            case 'fff':
            case 'ff':
            case 'f':
                add = "(\\d{" + len + "})";
                break;
            case 'dd': case 'd':
            case 'MM': case 'M':
            case 'yy': case 'y':
            case 'HH': case 'H':
            case 'hh': case 'h':
            case 'mm': case 'm':
            case 'ss': case 's':
                add = "(\\d\\d?)";
                break;
            case 'zzz':
                add = "([+-]?\\d\\d?:\\d{2})";
                break;
            case 'zz': case 'z':
                add = "([+-]?\\d\\d?)";
                break;
            case '/':
                add = "(\\" + dtf.DateSeparator + ")";
                break;
        }
        if (add) {
            regexp.push(add);
        }
        groups.push(match[0]);
    }
    Sys._appendPreOrPostMatch(expFormat.slice(index), regexp);
    regexp.push("$");
    var regexpStr = regexp.join('').replace(/\s+/g, "\\s+");
    var parseRegExp = {'regExp': regexpStr, 'groups': groups};
    re[format] = parseRegExp;
    return parseRegExp;
}

$type._getTokenRegExp = function Date$_getTokenRegExp() {
    return /\/|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z|gg|g/g;
}

$type.parseLocale = function Date$parseLocale(value, formats) {
    /// <summary locid="M:J#Date.parseLocale">Creates a date from a locale-specific string representation.</summary>
    /// <param name="value" type="String">A locale-specific string that can parse to a date.</param>
    /// <param name="formats" parameterArray="true" optional="true" mayBeNull="true">Custom formats to match.</param>
    /// <returns type="Date"></returns>
    var e = Function._validateParams(arguments, [
        {name: "value", type: String},
        {name: "formats", mayBeNull: true, optional: true, parameterArray: true}
    ]);
    if (e) throw e;
    return Date._parse(value, Sys.CultureInfo.CurrentCulture, arguments);
}

$type.parseInvariant = function Date$parseInvariant(value, formats) {
    /// <summary locid="M:J#Date.parseInvariant">Creates a date from its string representation.</summary>
    /// <param name="value" type="String">A string that can parse to a date.</param>
    /// <param name="formats" parameterArray="true" optional="true" mayBeNull="true">Custom formats to match.</param>
    /// <returns type="Date"></returns>
    var e = Function._validateParams(arguments, [
        {name: "value", type: String},
        {name: "formats", mayBeNull: true, optional: true, parameterArray: true}
    ]);
    if (e) throw e;
    return Date._parse(value, Sys.CultureInfo.InvariantCulture, arguments);
}

$type._parse = function Date$_parse(value, cultureInfo, args) {
    var i, l, date, format, formats, custom = false;
    for (i = 1, l = args.length; i < l; i++) {
        format = args[i];
        if (format) {
            custom = true;
            date = Date._parseExact(value, format, cultureInfo);
            if (date) return date;
        }
    }
    if (! custom) {
        formats = cultureInfo._getDateTimeFormats();
        for (i = 0, l = formats.length; i < l; i++) {
            date = Date._parseExact(value, formats[i], cultureInfo);
            if (date) return date;
        }
    }
    return null;
}

$type._parseExact = function Date$_parseExact(value, format, cultureInfo) {
    value = value.trim();
    var dtf = cultureInfo.dateTimeFormat,
        parseInfo = this._getParseRegExp(dtf, format),
        match = new RegExp(parseInfo.regExp).exec(value);
    if (match === null) return null;
    
    var groups = parseInfo.groups,
        era = null, year = null, month = null, date = null, weekDay = null,
        hour = 0, hourOffset, min = 0, sec = 0, msec = 0, tzMinOffset = null,
        pmHour = false;
    
    for (var j = 0, jl = groups.length; j < jl; j++) {
        var matchGroup = match[j+1];
        if (matchGroup) {
            var current = groups[j],
                clength = current.length,
                matchInt = parseInt(matchGroup, 10);
            switch (current) {
                case 'dd': case 'd':
                    date = matchInt;
                    if (outOfRange(date, 1, 31)) return null;
                    break;
                case 'MMM':
                case 'MMMM':
                    month = cultureInfo._getMonthIndex(matchGroup, clength === 3);
                    if (outOfRange(month, 0, 11)) return null;
                    break;
                case 'M': case 'MM':
                    month = matchInt - 1;
                    if (outOfRange(month, 0, 11)) return null;
                    break;
                case 'y': case 'yy':
                case 'yyyy':
                    year = clength < 4 ? expandYear(dtf,matchInt) : matchInt;
                    if (outOfRange(year, 0, 9999)) return null;
                    break;
                case 'h': case 'hh':
                    hour = matchInt;
                    if (hour === 12) hour = 0;
                    if (outOfRange(hour, 0, 11)) return null;
                    break;
                case 'H': case 'HH':
                    hour = matchInt;
                    if (outOfRange(hour, 0, 23)) return null;
                    break;
                case 'm': case 'mm':
                    min = matchInt;
                    if (outOfRange(min, 0, 59)) return null;
                    break;
                case 's': case 'ss':
                    sec = matchInt;
                    if (outOfRange(sec, 0, 59)) return null;
                    break;
                case 'tt': case 't':
                    var upperToken = matchGroup.toUpperCase();
                    pmHour = (upperToken === dtf.PMDesignator.toUpperCase());
                    if (!pmHour && (upperToken !== dtf.AMDesignator.toUpperCase())) return null;
                    break;
                case 'f':
                case 'ff':
                case 'fff':
                    msec = matchInt * Math.pow(10, 3-clength);
                    if (outOfRange(msec, 0, 999)) return null;
                    break;
                case 'ddd':
                case 'dddd':
                    weekDay = cultureInfo._getDayIndex(matchGroup, clength === 3);
                    if (outOfRange(weekDay, 0, 6)) return null;
                    break;
                case 'zzz':
                    var offsets = matchGroup.split(/:/);
                    if (offsets.length !== 2) return null;
                    hourOffset = parseInt(offsets[0], 10);
                    if (outOfRange(hourOffset, -12, 13)) return null;
                    var minOffset = parseInt(offsets[1], 10);
                    if (outOfRange(minOffset, 0, 59)) return null;
                    tzMinOffset = (hourOffset * 60) + (matchGroup.startsWith('-')? -minOffset : minOffset);
                    break;
                case 'z': case 'zz':
                    hourOffset = matchInt;
                    if (outOfRange(hourOffset, -12, 13)) return null;
                    tzMinOffset = hourOffset * 60;
                    break;
                case 'g': case 'gg':
                    var eraName = matchGroup;
                    if (!eraName || !dtf.eras) return null;
                    eraName = eraName.toLowerCase().trim();
                    for (var i = 0, l = dtf.eras.length; i < l; i += 4) {
                        if (eraName === dtf.eras[i + 1].toLowerCase()) {
                            era = i;
                            break;
                        }
                    }
                    if (era === null) return null;
                    break;
            }
        }
    }
    var result = new Date(), defaultYear, convert = dtf.Calendar.convert;
    defaultYear = convert ? convert.fromGregorian(result)[0] : result.getFullYear();
    if (year === null) {
        year = defaultYear;
    }
    else if (dtf.eras) {
        year += dtf.eras[(era || 0) + 3];
    }
    if (month === null) {
        month = 0;
    }
    if (date === null) {
        date = 1;
    }
    if (convert) {
        result = convert.toGregorian(year, month, date);
        if (result === null) return null;
    }
    else {
        result.setFullYear(year, month, date);
        if (result.getDate() !== date) return null;
        if ((weekDay !== null) && (result.getDay() !== weekDay)) {
            return null;
        }
    }
    if (pmHour && (hour < 12)) {
        hour += 12;
    }
    result.setHours(hour, min, sec, msec);
    if (tzMinOffset !== null) {
        var adjustedMin = result.getMinutes() - (tzMinOffset + result.getTimezoneOffset());
        result.setHours(result.getHours() + parseInt(adjustedMin/60, 10), adjustedMin%60);
    }
    return result;
}

$prototype = $type.prototype;
$prototype.format = function Date$format(format) {
    /// <summary locid="M:J#Date.format">Format a date using the invariant culture.</summary>
    /// <param name="format" type="String">Format string.</param>
    /// <returns type="String">Formatted date.</returns>
    var e = Function._validateParams(arguments, [
        {name: "format", type: String}
    ]);
    if (e) throw e;
    return this._toFormattedString(format, Sys.CultureInfo.InvariantCulture);
}

$prototype.localeFormat = function Date$localeFormat(format) {
    /// <summary locid="M:J#Date.localeFormat">Format a date using the current culture.</summary>
    /// <param name="format" type="String">Format string.</param>
    /// <returns type="String">Formatted date.</returns>
    var e = Function._validateParams(arguments, [
        {name: "format", type: String}
    ]);
    if (e) throw e;
    return this._toFormattedString(format, Sys.CultureInfo.CurrentCulture);
}

$prototype._toFormattedString = function Date$_toFormattedString(format, cultureInfo) {
    var dtf = cultureInfo.dateTimeFormat,
        convert = dtf.Calendar.convert;
    if (!format || !format.length || (format === 'i')) {
        var ret;
        if (cultureInfo && cultureInfo.name.length) {
            if (convert) {
                ret = this._toFormattedString(dtf.FullDateTimePattern, cultureInfo);
            }
            else {
                var eraDate = new Date(this.getTime());
                var era = getEra(this, dtf.eras);
                eraDate.setFullYear(getEraYear(this, dtf, era));
                ret = eraDate.toLocaleString();
            }
        }
        else {
            ret = this.toString();
        }
        return ret;
    }

    var eras = dtf.eras,
        sortable = (format === "s");
    format = Date._expandFormat(dtf, format);

    ret = [];
    var hour;

    var zeros = ['0','00','000'];
    function padZeros(num, c) {
        var s = num+'';
        return ((c > 1) && (s.length < c)) ? (zeros[c-2]+s).substr(-c) : s;
    }

    var foundDay, checkedDay, dayPartRegExp = /([^d]|^)(d|dd)([^d]|$)/g;
    function hasDay() {
        if (foundDay || checkedDay) {
            return foundDay;
        }
        foundDay = dayPartRegExp.test(format);
        checkedDay = true;
        return foundDay;
    }
    
    var quoteCount = 0,
        tokenRegExp = Date._getTokenRegExp(),
        converted;
    if (!sortable && convert) {
        converted = convert.fromGregorian(this);
    }
    for (;;) {

        var index = tokenRegExp.lastIndex;

        var ar = tokenRegExp.exec(format);

        var preMatch = format.slice(index, ar ? ar.index : format.length);
        quoteCount += Sys._appendPreOrPostMatch(preMatch, ret);

        if (!ar) break;

        if (quoteCount % 2) {
            ret.push(ar[0]);
            continue;
        }
        
        function getPart(date, part) {
            if (converted) {
                return converted[part];
            }
            switch (part) {
                case 0: return date.getFullYear();
                case 1: return date.getMonth();
                case 2: return date.getDate();
            }
        }

        var current = ar[0],
            clength = current.length;

        switch (current) {
        case "ddd":
        case "dddd":
            names = (clength === 3) ? dtf.AbbreviatedDayNames : dtf.DayNames;
            ret.push(names[this.getDay()]);
            break;
        case "d":
        case "dd":
            foundDay = true;
            ret.push(padZeros(getPart(this, 2), clength));
            break;
        case "MMM":
        case "MMMM":
            var namePrefix = (clength === 3 ? "Abbreviated" : ""),
                genitiveNames = dtf[namePrefix + "MonthGenitiveNames"],
                names = dtf[namePrefix + "MonthNames"],
                part = getPart(this, 1);
            ret.push((genitiveNames && hasDay())
                ? genitiveNames[part]
                : names[part]);
            break;
        case "M":
        case "MM":
            ret.push(padZeros(getPart(this, 1) + 1, clength));
            break;
        case "y":
        case "yy":
        case "yyyy":
            part = converted ? converted[0] : getEraYear(this, dtf, getEra(this, eras), sortable);
            if (clength < 4) {
                part = part % 100;
            }
            ret.push(padZeros(part, clength));
            break;
        case "h":
        case "hh":
            hour = this.getHours() % 12;
            if (hour === 0) hour = 12;
            ret.push(padZeros(hour, clength));
            break;
        case "H":
        case "HH":
            ret.push(padZeros(this.getHours(), clength));
            break;
        case "m":
        case "mm":
            ret.push(padZeros(this.getMinutes(), clength));
            break;
        case "s":
        case "ss":
            ret.push(padZeros(this.getSeconds(), clength));
            break;
        case "t":
        case "tt":
            part = (this.getHours() < 12) ? dtf.AMDesignator : dtf.PMDesignator;
            ret.push(clength === 1 ? part.charAt(0) : part);
            break;
        case "f":
        case "ff":
        case "fff":
            ret.push(padZeros(this.getMilliseconds(), 3).substr(0, clength));
            break;
        case "z": 
        case "zz":
            hour = this.getTimezoneOffset() / 60;
            ret.push(((hour <= 0) ? '+' : '-') + padZeros(Math.floor(Math.abs(hour)), clength));
            break;
        case "zzz":
            hour = this.getTimezoneOffset() / 60;
            ret.push(((hour <= 0) ? '+' : '-') + padZeros(Math.floor(Math.abs(hour)), 2) +
                ":" + padZeros(Math.abs(this.getTimezoneOffset() % 60), 2));
            break;
        case "g":
        case "gg":
            if (dtf.eras) {
                ret.push(dtf.eras[getEra(this, eras) + 1]);
            }
            break;
        case "/":
            ret.push(dtf.DateSeparator);
            break;
        }
    }
    return ret.join('');
}
String.localeFormat = function String$localeFormat(format, args) {
    /// <summary locid="M:J#String.localeFormat">Replaces the format items in a specified String with the text equivalents of the values of   corresponding object instances. The current culture will be used to format dates and numbers.</summary>
    /// <param name="format" type="String">A format string.</param>
    /// <param name="args" parameterArray="true" mayBeNull="true">The objects to format.</param>
    /// <returns type="String">A copy of format in which the format items have been replaced by the   string equivalent of the corresponding instances of object arguments.</returns>
    var e = Function._validateParams(arguments, [
        {name: "format", type: String},
        {name: "args", mayBeNull: true, parameterArray: true}
    ]);
    if (e) throw e;
    return String._toFormattedString(true, arguments);
}
var formattingPatterns = {
    P: ["Percent", ["-n %", "-n%", "-%n"], ["n %", "n%", "%n" ], 100],
    N: ["Number",["(n)","-n","- n","n-","n -"], null, 1],
    C: ["Currency",["($n)","-$n","$-n","$n-","(n$)","-n$","n-$","n$-","-n $","-$ n","n $-","$ n-","$ -n","n- $","($ n)","(n $)"],["$n","n$","$ n","n $"], 1]
};

Sys._toFormattedString = function _toFormattedString(format, cultureInfo) {
    if (!format || !format.length || (format === 'i')) {
        return (cultureInfo && cultureInfo.name.length) ?
            this.toLocaleString() :
            this.toString();
    }
    
    function zeroPad(str, count, left) {
        for (var l=str.length; l < count; l++) {
            str = (left ? ('0' + str) : (str + '0'));
        }
        return str;
    }
    
    function expandNumber(number, precision, groupSizes, sep, decimalChar) {
        var curSize = groupSizes[0];
        var curGroupIndex = 1;



        var factor = Math.pow(10, precision);
        var rounded = (Math.round(number * factor) / factor);
        if (!isFinite(rounded)) {
            rounded = number;
        }
        number = rounded;
        
        var numberString = number+'';
        var right = "";
        var exponent;
        
        
        var split = numberString.split(/e/i);
        numberString = split[0];
        exponent = (split.length > 1 ? parseInt(split[1]) : 0);
        split = numberString.split('.');
        numberString = split[0];
        right = split.length > 1 ? split[1] : "";
        
        var l;
        if (exponent > 0) {
            right = zeroPad(right, exponent, false);
            numberString += right.slice(0, exponent);
            right = right.substr(exponent);
        }
        else if (exponent < 0) {
            exponent = -exponent;
            numberString = zeroPad(numberString, exponent+1, true);
            right = numberString.slice(-exponent, numberString.length) + right;
            numberString = numberString.slice(0, -exponent);
        }

        if (precision > 0) {
            right = decimalChar +
                ((right.length > precision) ? right.slice(0, precision) : zeroPad(right, precision, false));
        }
        else {
            right = "";
        }

        var stringIndex = numberString.length-1;
        var ret = "";
        while (stringIndex >= 0) {
            if (curSize === 0 || curSize > stringIndex) {
                return numberString.slice(0, stringIndex + 1) +
                    (ret.length ? (sep + ret + right) : right);
            }

            ret = numberString.slice(stringIndex - curSize + 1, stringIndex + 1) +
                (ret.length ? (sep+ret) : "");

            stringIndex -= curSize;

            if (curGroupIndex < groupSizes.length) {
                curSize = groupSizes[curGroupIndex];
                curGroupIndex++;
            }
        }
        return numberString.slice(0, stringIndex + 1) + sep + ret + right;
    }
    var nf = cultureInfo.numberFormat;

    var number = Math.abs(this);

    format = format || "D";

    var precision = -1;
    if (format.length > 1) precision = parseInt(format.slice(1), 10);

    var pattern,
        current = format.charAt(0).toUpperCase();    
    switch (current) {
    case "D":
        pattern = 'n';

        if (precision !== -1) {
            number = zeroPad(""+number, precision, true);
        }

        if (this < 0) number = -number;
        break;
    case "C":
    case "N":
    case "P":
        current = formattingPatterns[current];
        var name = current[0];
        pattern = (this < 0) ? current[1][nf[name+"NegativePattern"]] : (current[2] ? current[2][nf[name+"PositivePattern"]] : "n");
        if (precision === -1) precision = nf[name+"DecimalDigits"];
        number = expandNumber(Math.abs(this)*current[3], precision, nf[name+"GroupSizes"], nf[name+"GroupSeparator"], nf[name+"DecimalSeparator"]);
        break;
    default:
        throw Error.format(Sys.Res.formatBadFormatSpecifier);
    }

    var regex = /n|\$|-|%/g;

    var ret = "";

    for (;;) {

        var index = regex.lastIndex;

        var ar = regex.exec(pattern);

        ret += pattern.slice(index, ar ? ar.index : pattern.length);

        if (!ar)
            break;

        switch (ar[0]) {
        case "n":
            ret += number;
            break;
        case "$":
            ret += nf.CurrencySymbol;
            break;
        case "-":
            if (/[1-9]/.test(number)) {
                ret += nf.NegativeSign;
            }
            break;
        case "%":
            ret += nf.PercentSymbol;
            break;
        }
    }

    return ret;
}

$type = Number;
$type.parseLocale = function Number$parseLocale(value) {
    /// <summary locid="M:J#Number.parseLocale">Creates a number from its locale string representation.</summary>
    /// <param name="value" type="String">A string that can parse to a number.</param>
    /// <returns type="Number"></returns>
    var e = Function._validateParams(arguments, [
        {name: "value", type: String}
    ], false);
    if (e) throw e;
    return Number._parse(value, Sys.CultureInfo.CurrentCulture);
}
$type.parseInvariant = function Number$parseInvariant(value) {
    /// <summary locid="M:J#Number.parseInvariant">Creates a number from its string representation.</summary>
    /// <param name="value" type="String">A string that can parse to a number.</param>
    /// <returns type="Number"></returns>
    var e = Function._validateParams(arguments, [
        {name: "value", type: String}
    ], false);
    if (e) throw e;
    return Number._parse(value, Sys.CultureInfo.InvariantCulture);
}
$type._parse = function Number$_parse(value, cultureInfo) {
    value = value.trim();
    
    if (value.match(/^[+-]?infinity$/i)) {
        return parseFloat(value);
    }
    if (value.match(/^0x[a-f0-9]+$/i)) {
        return parseInt(value);
    }

    var numFormat = cultureInfo.numberFormat;
    var signInfo = Number._parseNumberNegativePattern(value, numFormat, numFormat.NumberNegativePattern);
    var sign = signInfo[0];
    var num = signInfo[1];
    
    if ((sign === '') && (numFormat.NumberNegativePattern !== 1)) {
        signInfo = Number._parseNumberNegativePattern(value, numFormat, 1);
        sign = signInfo[0];
        num = signInfo[1];
    }
    if (sign === '') sign = '+';
    
    var exponent;
    var intAndFraction;
    var exponentPos = num.indexOf('e');
    if (exponentPos < 0) exponentPos = num.indexOf('E');
    if (exponentPos < 0) {
        intAndFraction = num;
        exponent = null;
    }
    else {
        intAndFraction = num.substr(0, exponentPos);
        exponent = num.substr(exponentPos + 1);
    }
    
    var integer;
    var fraction;
    var decSep = numFormat.NumberDecimalSeparator
    var decimalPos = intAndFraction.indexOf(decSep);
    if (decimalPos < 0) {
        integer = intAndFraction;
        fraction = null;
    }
    else {
        integer = intAndFraction.substr(0, decimalPos);
        fraction = intAndFraction.substr(decimalPos + decSep.length);
    }
    
    var numGroupSep = numFormat.NumberGroupSeparator
    integer = integer.split(numGroupSep).join('');
    var altNumGroupSeparator = numGroupSep.replace(/\u00A0/g, " ");
    if (numGroupSep !== altNumGroupSeparator) {
        integer = integer.split(altNumGroupSeparator).join('');
    }
    
    var p = sign + integer;
    if (fraction !== null) {
        p += '.' + fraction;
    }
    if (exponent !== null) {
        var expSignInfo = Number._parseNumberNegativePattern(exponent, numFormat, 1);
        if (expSignInfo[0] === '') {
            expSignInfo[0] = '+';
        }
        p += 'e' + expSignInfo[0] + expSignInfo[1];
    }

    if (p.match(/^[+-]?\d*\.?\d*(e[+-]?\d+)?$/)) {
        return parseFloat(p);
    }
    return Number.NaN;
}
$type._parseNumberNegativePattern = function Number$_parseNumberNegativePattern(value, numFormat, numberNegativePattern) {
    var neg = numFormat.NegativeSign;
    var pos = numFormat.PositiveSign;    
    switch (numberNegativePattern) {
        case 4:
            neg = ' ' + neg;
            pos = ' ' + pos;
        case 3:
            if (value.endsWith(neg)) {
                return ['-', value.substr(0, value.length - neg.length)];
            }
            else if (value.endsWith(pos)) {
                return ['+', value.substr(0, value.length - pos.length)];
            }
            break;
        case 2:
            neg += ' ';
            pos += ' ';
        case 1:
            if (value.startsWith(neg)) {
                return ['-', value.substr(neg.length)];
            }
            else if (value.startsWith(pos)) {
                return ['+', value.substr(pos.length)];
            }
            break;
        case 0:
            if (value.startsWith('(') && value.endsWith(')')) {
                return ['-', value.substr(1, value.length - 2)];
            }
            break;
    }
    return ['', value];
}

$prototype = $type.prototype;
$prototype.format = function Number$format(format) {
    /// <summary locid="M:J#Number.format">Format a number using the invariant culture.</summary>
    /// <param name="format" type="String">Format string.</param>
    /// <returns type="String">Formatted number.</returns>
    var e = Function._validateParams(arguments, [
        {name: "format", type: String}
    ]);
    if (e) throw e;
    return Sys._toFormattedString.call(this, format, Sys.CultureInfo.InvariantCulture);
}
$prototype.localeFormat = function Number$localeFormat(format) {
    /// <summary locid="M:J#Number.localeFormat">Format a number using the current culture.</summary>
    /// <param name="format" type="String">Format string.</param>
    /// <returns type="String">Formatted number.</returns>
    var e = Function._validateParams(arguments, [
        {name: "format", type: String}
    ]);
    if (e) throw e;
    return Sys._toFormattedString.call(this, format, Sys.CultureInfo.CurrentCulture);
}
function toUpper(value) {
    return value.split("\u00A0").join(' ').toUpperCase();
}
function toUpperArray(arr) {
    var result = [];
    foreach(arr, function(value, i) {
        result[i] = toUpper(value);
    });
    return result;
}

function clone(obj) {
    var objNew = {};
    forIn(obj, function(value, field) {
        objNew[field] = (value instanceof Array) ? (value.length === 1 ? [value] : Array.apply(null, value)) :
            ((typeof(value) === "object") ? clone(value) : value);
    });
    return objNew;
}

$type = Sys.CultureInfo = function CultureInfo(name, numberFormat, dateTimeFormat) {
    /// <summary locid="M:J#Sys.CultureInfo.#ctor"></summary>
    /// <param name="name" type="String">CultureInfo name.</param>
    /// <param name="numberFormat" type="Object">CultureInfo number format information.</param>
    /// <param name="dateTimeFormat" type="Object">CultureInfo date time format information.</param>
    var e = Function._validateParams(arguments, [
        {name: "name", type: String},
        {name: "numberFormat", type: Object},
        {name: "dateTimeFormat", type: Object}
    ]);
    if (e) throw e;
    this.name = name;
    this.numberFormat = numberFormat;
    this.dateTimeFormat = dateTimeFormat;
}
$type.prototype = {
    _getDateTimeFormats: function CultureInfo$_getDateTimeFormats() {
        var formats = this._dateTimeFormats;
        if (!formats) {
            var dtf = this.dateTimeFormat;
            this._dateTimeFormats = formats =
              [ dtf["MonthDayPattern"],
                dtf["YearMonthPattern"],
                dtf["ShortDatePattern"],
                dtf["ShortTimePattern"],
                dtf["LongDatePattern"],
                dtf["LongTimePattern"],
                dtf["FullDateTimePattern"],
                dtf["RFC1123Pattern"],
                dtf["SortableDateTimePattern"],
                dtf["UniversalSortableDateTimePattern"] ];
        }
        return formats;
    },
    _getMonthIndex: function CultureInfo$_getMonthIndex(value, abbr) {
        var name = abbr ? "_upperAbbrMonths" : "_upperMonths",
            genitiveName = name + "Genitive",
            upperMonths = this[name];
        if (!upperMonths) {
            var prefix = (abbr ? "Abbreviated" : "");
            this[name] = toUpperArray(this.dateTimeFormat[prefix+"MonthNames"]);
            this[genitiveName] = toUpperArray(this.dateTimeFormat[prefix+"MonthGenitiveNames"]);
        }
        value = toUpper(value);
        var i = indexOf(this[name], value);
        if (i < 0) {
            i = indexOf(this[genitiveName], value);
        }
        return i;
    },    
    _getDayIndex: function CultureInfo$_getDayIndex(value, abbr) {
        var name = abbr ? "_upperAbbrDays" : "_upperDays",
            upperDays = this[name];
        if (!upperDays) {
            this[name] = toUpperArray(this.dateTimeFormat[(abbr ? "Abbreviated" : "")+"DayNames"]);
        }
        return indexOf(this[name], toUpper(value));
    }
}
$type.registerClass('Sys.CultureInfo');

$type._parse = function(value) {
    var dtf = value.dateTimeFormat;
    if (dtf && !dtf.eras) {
        dtf.eras = value.eras;
    }
    return new Sys.CultureInfo(value.name, value.numberFormat, dtf);
}
$type._setup = function() {
    var cultureInfo = window.__cultureInfo,
        monthNames = ["January","February","March","April","May","June","July","August","September","October","November","December",""],
        shortMonthNames = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],
        invariant = {"name":"","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"\u00A4","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, dd MMMM yyyy HH:mm:ss","LongDatePattern":"dddd, dd MMMM yyyy","LongTimePattern":"HH:mm:ss","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'","ShortDatePattern":"MM/dd/yyyy","ShortTimePattern":"HH:mm","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"yyyy MMMM","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":shortMonthNames,"MonthNames":monthNames,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":Array.clone(shortMonthNames),"MonthGenitiveNames":Array.clone(monthNames)},"eras":[1,"A.D.",null,0]};
    this.InvariantCulture = this._parse(invariant);
    switch(typeof(cultureInfo)) {
        case "string":
            cultureInfo = window.eval("(" + cultureInfo + ")");
        case "object":
            this.CurrentCulture = this._parse(cultureInfo);
            delete __cultureInfo;    
            break;
        default:
            cultureInfo = clone(invariant);
            cultureInfo.name = "en-US";
            cultureInfo.numberFormat.CurrencySymbol = "$";
            var dtf = cultureInfo.dateTimeFormat;
            dtf.FullDatePattern = "dddd, MMMM dd, yyyy h:mm:ss tt";
            dtf.LongDatePattern = "dddd, MMMM dd, yyyy";
            dtf.LongTimePattern = "h:mm:ss tt";
            dtf.ShortDatePattern = "M/d/yyyy";
            dtf.ShortTimePattern = "h:mm tt";
            dtf.YearMonthPattern = "MMMM, yyyy";
            this.CurrentCulture = this._parse(cultureInfo);
            break;
    }
}

$type._setup();





Type.registerNamespace('Sys.Serialization');

$type = Sys.Serialization.JavaScriptSerializer = function Serialization$JavaScriptSerializer() {
    /// <summary locid="M:J#Sys.Serialization.JavaScriptSerializer.#ctor">Provides serialization from JavaScript object to JavaScript object notation.</summary>
    if (arguments.length !== 0) throw Error.parameterCount();
}
$type.registerClass('Sys.Serialization.JavaScriptSerializer');

$type._esc = {
    charsRegExs: { '"': /\"/g, '\\': /\\/g }, /*"*/
    chars: ['\\', '"'],
    dateRegEx: /(^|[^\\])\"\\\/Date\((-?[0-9]+)(?:[a-zA-Z]|(?:\+|-)[0-9]{4})?\)\\\/\"/g, /* " */
    escapeChars: {'\\':'\\\\', '"':'\\"', "\b":"\\b", "\t":"\\t", "\n":"\\n", "\f":"\\f", "\r":"\\r"},
    escapeRegExG: /[\"\\\x00-\x1F]/g,
    escapeRegEx: /[\"\\\x00-\x1F]/i,
    jsonRegEx: /[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/g,
    jsonStringRegEx: /\"(\\.|[^\"\\])*\"/g /*"*/
};
$type._init = function() {
    var esc = this._esc,
        toEsc = esc.chars,
        toEscRE = esc.charsRegExs,
        escChars = esc.escapeChars;
    for (var i = 0; i < 32; i++) {
        var c = String.fromCharCode(i);
        toEsc[i+2] = c;
        toEscRE[c] = new RegExp(c, 'g');
        escChars[c] = escChars[c] || ("\\u" + ("000" + i.toString(16)).slice(-4));
    }
    this._load = true;
}
$type._serializeNumberWithBuilder = function(object, stringBuilder) {
    if (!isFinite(object)) {
        throw Error.invalidOperation(Sys.Res.cannotSerializeNonFiniteNumbers);
    }
    stringBuilder.append(String(object));
}
$type._serializeStringWithBuilder = function(string, stringBuilder) {
    stringBuilder.append('"');
    var esc = this._esc;
    if (esc.escapeRegEx.test(string)) {
        if (!this._load) {
            this._init();
        }
        if (string.length < 128) {
            string = string.replace(esc.escapeRegExG,
                function(x) { return esc.escapeChars[x]; });
        }
        else {
            for (var i = 0; i < 34; i++) {
                var c = esc.chars[i];
                if (string.indexOf(c) !== -1) {
                    var escChar = esc.escapeChars[c];
                    string = (isBrowser("Opera") || isBrowser("Firefox")) ?
                        string.split(c).join(escChar) :
                        string.replace(esc.charsRegExs[c], escChar);
                }
            }
       }
    }
    stringBuilder.append(string).append('"');
}
$type._serializeWithBuilder = function(object, stringBuilder, sort, prevObjects) {
    var i;
    switch (typeof object) {
    case 'object':
        if (object) {
            if (prevObjects){
                if (Sys._indexOf(prevObjects, object) !== -1) {
                    throw Error.invalidOperation(Sys.Res.cannotSerializeObjectWithCycle);
                }
            }
            else {
                prevObjects = [];
            }
            try {
                prevObjects.push(object);
                
                if (Number.isInstanceOfType(object)) {
                    this._serializeNumberWithBuilder(object, stringBuilder);
                }
                else if (Boolean.isInstanceOfType(object)) {
                    stringBuilder.append(object);
                }
                else if (String.isInstanceOfType(object)) {
                    this._serializeStringWithBuilder(object, stringBuilder);
                }
            
                else if (object instanceof Array) {
                    stringBuilder.append('[');
                   
                    for (i = 0; i < object.length; ++i) {
                        if (i) {
                            stringBuilder.append(',');
                        }
                        this._serializeWithBuilder(object[i], stringBuilder, false, prevObjects);
                    }
                    stringBuilder.append(']');
                }
                else {
                    if (Date.isInstanceOfType(object)) {
                        stringBuilder.append('"\\/Date(').
                            append(object.getTime()).
                            append(')\\/"');
                        break;
                    }

                    var properties = [],
                        propertyCount = 0;
                    for (var name in object) {
                        if (name.charAt(0) !== '$') {
                            if (name === '__type' && propertyCount) {
                                properties[propertyCount++] = properties[0];
                                properties[0] = name;
                            }
                            else {
                                properties[propertyCount++] = name;
                            }
                        }
                    }
                    if (sort) properties.sort();

                    stringBuilder.append('{');
                     
                    var needComma;
                    for (i=0; i < propertyCount; i++) {
                        var prop = properties[i], value = object[prop],
                            type = typeof(value);
                        if (type !== 'undefined' && type !== 'function') {
                            if (needComma) {
                                stringBuilder.append(',');
                            }
                            this._serializeWithBuilder(prop, stringBuilder, sort, prevObjects);
                            stringBuilder.append(':');
                            this._serializeWithBuilder(value, stringBuilder, sort, prevObjects);
                            needComma = true;
                        }
                    }
                stringBuilder.append('}');
                }
            }
            finally {
                Array.removeAt(prevObjects, prevObjects.length - 1);
            }
        }
        else {
            stringBuilder.append('null');
        }
        break;

    case 'number':
        this._serializeNumberWithBuilder(object, stringBuilder);
        break;

    case 'string':
        this._serializeStringWithBuilder(object, stringBuilder);
        break;

    case 'boolean':
        stringBuilder.append(object);
        break;

    default:
        stringBuilder.append('null');
        break;
    }
}

$type.serialize = function JavaScriptSerializer$serialize(object) {
    /// <summary locid="M:J#Sys.Serialization.JavaScriptSerializer.serialize">Generates a JSON string from an object.</summary>
    /// <param name="object" mayBeNull="true">The object to serialize.</param>
    /// <returns type="String">The JSON string representation of the object.</returns>
    var e = Function._validateParams(arguments, [
        {name: "object", mayBeNull: true}
    ]);
    if (e) throw e;
    var stringBuilder = new Sys.StringBuilder();
    Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(object, stringBuilder, false);
    return stringBuilder.toString();
}

$type.deserialize = function JavaScriptSerializer$deserialize(data, secure) {
    /// <summary locid="M:J#Sys.Serialization.JavaScriptSerializer.deserialize">Deserializes a JSON string.</summary>
    /// <param name="data" type="String">The JSON string to eval.</param>
    /// <param name="secure" type="Boolean" optional="true" mayBeNull="true">True if the method should perform JSON conformance checks before evaluating. False by default.</param>
    /// <returns>The results of eval applied to data.</returns>
    var e = Function._validateParams(arguments, [
        {name: "data", type: String},
        {name: "secure", type: Boolean, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    if (!data.length) throw Error.argument('data', Sys.Res.cannotDeserializeEmptyString);
    var er, esc = Sys.Serialization.JavaScriptSerializer._esc;
    try {    
        var exp = data.replace(esc.dateRegEx, "$1new Date($2)");
        
        if (secure && esc.jsonRegEx.test(exp.replace(esc.jsonStringRegEx, ''))) throw null;

        return window.eval('(' + exp + ')');
    }
    catch (er) {
         throw Error.argument('data', Sys.Res.cannotDeserializeInvalidJson);
    }
}


Type.registerNamespace('Sys.UI');

$type = Sys.EventHandlerList = function EventHandlerList() {
    /// <summary locid="M:J#Sys.EventHandlerList.#ctor">The EventHandlerList class contains a dictionary of multicast events.</summary>
    if (arguments.length !== 0) throw Error.parameterCount();
    this._list = {};
}

$type.prototype = {
    _addHandler: function EventHandlerList$_addHandler(id, handler) {
        Array.add(this._getEvent(id, true), handler);
    },
    addHandler: function EventHandlerList$addHandler(id, handler) {
        /// <summary locid="M:J#Sys.EventHandlerList.addHandler">The addHandler method adds a handler to the event identified by id.</summary>
        /// <param name="id" type="String">The identifier for the event.</param>
        /// <param name="handler" type="Function">The handler to add to the event.</param>
        var e = Function._validateParams(arguments, [
            {name: "id", type: String},
            {name: "handler", type: Function}
        ]);
        if (e) throw e;
        this._addHandler(id, handler);
    },
    _removeHandler: function EventHandlerList$_removeHandler(id, handler) {
        var evt = this._getEvent(id);
        if (!evt) return;
        Array.remove(evt, handler);
    },
    _removeHandlers: function EventHandlerList$_removeHandlers(id) {
        if (!id) {
            this._list = {};
        }
        else {
            var evt = this._getEvent(id);
            if (!evt) return;
            evt.length = 0;
        }
    },
    removeHandler: function EventHandlerList$removeHandler(id, handler) {
        /// <summary locid="M:J#Sys.EventHandlerList.removeHandler">The removeHandler method removes a handler to the event identified by id.</summary>
        /// <param name="id" type="String">The identifier for the event.</param>
        /// <param name="handler" type="Function">The handler to remove from the event.</param>
        var e = Function._validateParams(arguments, [
            {name: "id", type: String},
            {name: "handler", type: Function}
        ]);
        if (e) throw e;
        this._removeHandler(id, handler);
    },
    getHandler: function EventHandlerList$getHandler(id) {
        /// <summary locid="M:J#Sys.EventHandlerList.getHandler">The getHandler method returns a single function that will call all   handlers sequentially for the specified event.</summary>
        /// <param name="id" type="String">The identifier for the event.</param>
        /// <returns type="Function">A function that will call each handler sequentially.</returns>
        var e = Function._validateParams(arguments, [
            {name: "id", type: String}
        ]);
        if (e) throw e;
        var evt = this._getEvent(id);
        if (!evt || !evt.length) return null;
        evt = Array.clone(evt);
        return function(source, args) {
            for (var i = 0, l = evt.length; i < l; i++) {
                evt[i](source, args);
            }
        };
    },
    _getEvent: function EventHandlerList$_getEvent(id, create) {
        var e = this._list[id];
        if (!e) {
            if (!create) return null;
            this._list[id] = e = [];
        }
        return e;
    }
}
$type.registerClass('Sys.EventHandlerList');
$type = Sys.CommandEventArgs = function CommandEventArgs(commandName, commandArgument, commandSource, commandEvent) {
    /// <summary locid="M:J#Sys.CommandEventArgs.#ctor"></summary>
    /// <param name="commandName" type="String">The command name.</param>
    /// <param name="commandArgument" mayBeNull="true">The command arguments.</param>
    /// <param name="commandSource" mayBeNull="true">The command source.</param>
    /// <param name="commandEvent" type="Sys.UI.DomEvent" mayBeNull="true" optional="true">The DOM event that caused the command, if any.</param>
    var e = Function._validateParams(arguments, [
        {name: "commandName", type: String},
        {name: "commandArgument", mayBeNull: true},
        {name: "commandSource", mayBeNull: true},
        {name: "commandEvent", type: Sys.UI.DomEvent, mayBeNull: true, optional: true }
    ]);
    if (e) throw e;
    Sys.CommandEventArgs.initializeBase(this);
    this._commandName = commandName;
    this._commandArgument = commandArgument;
    this._commandSource = commandSource;
    this._commandEvent = commandEvent;
}
$type.prototype = {
    get_commandName: function CommandEventArgs$get_commandName() {
        /// <value type="String" locid="P:J#Sys.CommandEventArgs.commandName">The command name.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._commandName || null;
    },
    get_commandArgument: function CommandEventArgs$get_commandArgument() {
        /// <value mayBeNull="true" locid="P:J#Sys.CommandEventArgs.commandArgument">The command arguments.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._commandArgument;
    },
    get_commandSource: function CommandEventArgs$get_commandSource() {
        /// <value mayBeNull="true" locid="P:J#Sys.CommandEventArgs.commandSource">The command source.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._commandSource || null;
    },
    get_commandEvent: function CommandEventArgs$get_commandEvent() {
        /// <value mayBeNull="true" type="Sys.UI.DomEvent" locid="P:J#Sys.CommandEventArgs.commandEvent">The DOM event that caused the command, if any.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._commandEvent || null;
    }
}
$type.registerClass("Sys.CommandEventArgs", Sys.CancelEventArgs);
$type = Sys.INotifyPropertyChange = function INotifyPropertyChange() {
    /// <summary locid="M:J#Sys.INotifyPropertyChange.#ctor">Implement this interface to become a provider of property change notifications.</summary>
    if (arguments.length !== 0) throw Error.parameterCount();
    throw Error.notImplemented();
}
$type.prototype = {
    add_propertyChanged: function INotifyPropertyChange$add_propertyChanged(handler) {
    /// <summary locid="E:J#Sys.INotifyPropertyChange.propertyChanged"></summary>
    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
    if (e) throw e;
        throw Error.notImplemented();
    },
    remove_propertyChanged: function INotifyPropertyChange$remove_propertyChanged(handler) {
    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
    if (e) throw e;
        throw Error.notImplemented();
    }
}
$type.registerInterface('Sys.INotifyPropertyChange');
$type = Sys.PropertyChangedEventArgs = function PropertyChangedEventArgs(propertyName) {
    /// <summary locid="M:J#Sys.PropertyChangedEventArgs.#ctor">Describes property changes.</summary>
    /// <param name="propertyName" type="String">The name of the property that changed.</param>
    var e = Function._validateParams(arguments, [
        {name: "propertyName", type: String}
    ]);
    if (e) throw e;
    Sys.PropertyChangedEventArgs.initializeBase(this);
    this._propertyName = propertyName;
}
 $type.prototype = {
    get_propertyName: function PropertyChangedEventArgs$get_propertyName() {
        /// <value type="String" locid="P:J#Sys.PropertyChangedEventArgs.propertyName">The name of the property that changed.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._propertyName;
    }
}
$type.registerClass('Sys.PropertyChangedEventArgs', Sys.EventArgs);
$type = Sys.INotifyDisposing = function INotifyDisposing() {
    /// <summary locid="M:J#Sys.INotifyDisposing.#ctor">Implement this interface if the class exposes an event to notify when it's disposing.</summary>
    if (arguments.length !== 0) throw Error.parameterCount();
    throw Error.notImplemented();
}
$type.prototype = {
    add_disposing: function INotifyDisposing$add_disposing(handler) {
    /// <summary locid="E:J#Sys.INotifyDisposing.disposing"></summary>
    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
    if (e) throw e;
        throw Error.notImplemented();
    },
    remove_disposing: function INotifyDisposing$remove_disposing(handler) {
    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
    if (e) throw e;
        throw Error.notImplemented();
    }
}
$type.registerInterface("Sys.INotifyDisposing");
$type = Sys.Component = function Component() {
    /// <summary locid="M:J#Sys.Component.#ctor">Base class for Control, Behavior and any object that wants its lifetime to be managed.</summary>
    if (arguments.length !== 0) throw Error.parameterCount();
    if (Sys.Application) Sys.Application.registerDisposableObject(this);
}
$type.prototype = {
    _idSet: false,
    get_events: function Component$get_events() {
        /// <value type="Sys.EventHandlerList" locid="P:J#Sys.Component.events">The collection of event handlers for this behavior.  This property should only be used by derived behaviors  and should not be publicly called by other code.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return Sys.Observer._getContext(this, true).events;
    },
    get_id: function Component$get_id() {
        /// <value type="String" locid="P:J#Sys.Component.id"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._id || null;
    },
    set_id: function Component$set_id(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
        if (e) throw e;
        if (this._idSet) throw Error.invalidOperation(Sys.Res.componentCantSetIdTwice);
        this._idSet = true;
        var oldId = this.get_id();
        if (oldId && Sys.Application.findComponent(oldId)) throw Error.invalidOperation(Sys.Res.componentCantSetIdAfterAddedToApp);
        this._id = value;
    },
    get_isInitialized: function Component$get_isInitialized() {
        /// <value type="Boolean" locid="P:J#Sys.Component.isInitialized"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return !!this._initialized;
    },
    get_isUpdating: function Component$get_isUpdating() {
        /// <value type="Boolean" locid="P:J#Sys.Component.isUpdating"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return !!this._updating;
    },
    add_disposing: function Component$add_disposing(handler) {
        /// <summary locid="E:J#Sys.Component.disposing"></summary>
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        this._addHandler("disposing", handler);
    },
    remove_disposing: function Component$remove_disposing(handler) {
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        this._removeHandler("disposing", handler);
    },
    add_propertyChanged: function Component$add_propertyChanged(handler) {
        /// <summary locid="E:J#Sys.Component.propertyChanged"></summary>
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        this._addHandler("propertyChanged", handler);
    },
    remove_propertyChanged: function Component$remove_propertyChanged(handler) {
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        this._removeHandler("propertyChanged", handler);
    },
    _addHandler: function Component$_addHandler(eventName, handler) {
        Sys.Observer.addEventHandler(this, eventName, handler);
    },
    _removeHandler: function Component$_removeHandler(eventName, handler) {
        Sys.Observer.removeEventHandler(this, eventName, handler);
    },
    beginUpdate: function Component$beginUpdate() {
        this._updating = true;
    },
    dispose: function Component$dispose() {
        Sys.Observer.raiseEvent(this, "disposing")
        Sys.Observer.clearEventHandlers(this);
        Sys.Application.unregisterDisposableObject(this);
        Sys.Application.removeComponent(this);
    },
    endUpdate: function Component$endUpdate() {
        this._updating = false;
        if (!this._initialized) this.initialize();
        this.updated();
    },
    initialize: function Component$initialize() {
        this._initialized = true;
    },
    raisePropertyChanged: function Component$raisePropertyChanged(propertyName) {
        /// <summary locid="M:J#Sys.Component.raisePropertyChanged">Raises a change notification event.</summary>
        /// <param name="propertyName" type="String">The name of the property that changed.</param>
        var e = Function._validateParams(arguments, [
            {name: "propertyName", type: String}
        ]);
        if (e) throw e;
        Sys.Observer.raisePropertyChanged(this, propertyName);
    },
    updated: function Component$updated() {
    }
}
$type.registerClass('Sys.Component', null, Sys.IDisposable, Sys.INotifyPropertyChange, Sys.INotifyDisposing);

$type._setProperties = function Component$_setProperties(target, properties) {
    /// <summary locid="M:J#Sys.Component._setProperties">Recursively sets properties on an object.</summary>
    /// <param name="target">The object on which to set the property values.</param>
    /// <param name="properties">A JSON object containing the property values.</param>
    var e = Function._validateParams(arguments, [
        {name: "target"},
        {name: "properties"}
    ]);
    if (e) throw e;
    var current;
    var targetType = Object.getType(target);
    var isObject = (targetType === Object) || (targetType === Sys.UI.DomElement);
    var isComponent = Sys.Component.isInstanceOfType(target) && !target.get_isUpdating();
    if (isComponent) target.beginUpdate();
    for (var name in properties) {
        var val = properties[name];
        var getter = isObject ? null : target["get_" + name];
        if (isObject || typeof(getter) !== 'function') {
            var targetVal = target[name];
            if (!val || (typeof(val) !== 'object') || (isObject && !targetVal)) {
                target[name] = val;
            }
            else {
                this._setProperties(targetVal, val);
            }
        }
        else {
            var setter = target["set_" + name];
            if (typeof(setter) === 'function') {
                setter.apply(target, [val]);
            }
            else if (val instanceof Array) {
                current = getter.apply(target);
                if (!(current instanceof Array)) throw new Error.invalidOperation(String.format(Sys.Res.propertyNotAnArray, name));
                for (var i = 0, j = current.length, l= val.length; i < l; i++, j++) {
                    current[j] = val[i];
                }
            }
            else if ((typeof(val) === 'object') && (Object.getType(val) === Object)) {
                current = getter.apply(target);
                if ((typeof(current) === 'undefined') || (current === null)) throw new Error.invalidOperation(String.format(Sys.Res.propertyNullOrUndefined, name));
                this._setProperties(current, val);
            }
            else {
                throw new Error.invalidOperation(String.format(Sys.Res.propertyNotWritable, name));
            }
        }
    }
    if (isComponent) target.endUpdate();
}

$type._setReferences = function Component$_setReferences(component, references) {
    var reference, refs = {};
    forIn(references, function(id, name) {
        refs[name] = reference = $find(id);
        if (!reference) throw Error.invalidOperation(String.format(Sys.Res.referenceNotFound, id));
    });
    Sys._set(component, refs);
}

$create = $type.create = function Component$create(type, properties, events, references, element) {
    /// <summary locid="M:J#Sys.Component.create">Instantiates a component of the specified type, attaches it to the specified element if it's  a Control or Behavior, sets the properties as described by the specified JSON object,  then calls initialize.</summary>
    /// <param name="type" type="Type">The type of the component to create.</param>
    /// <param name="properties" optional="true" mayBeNull="true">A JSON object that describes the properties and their values.</param>
    /// <param name="events" optional="true" mayBeNull="true">A JSON object that describes the events and their handlers.</param>
    /// <param name="references" optional="true" mayBeNull="true">A JSON object that describes the properties that are references to other components.  The contents of this object consists of name/id pairs.  If in a two-pass creation, the setting of these properties will be delayed until the second pass.</param>
    /// <param name="element" domElement="true" optional="true" mayBeNull="true">The DOM element the component must be attached to.</param>
    /// <returns type="Object">The component instance.</returns>
    var e = Function._validateParams(arguments, [
        {name: "type", type: Type},
        {name: "properties", mayBeNull: true, optional: true},
        {name: "events", mayBeNull: true, optional: true},
        {name: "references", mayBeNull: true, optional: true},
        {name: "element", mayBeNull: true, domElement: true, optional: true}
    ]);
    if (e) throw e;
    if (type.inheritsFrom(Sys.UI.Behavior) || type.inheritsFrom(Sys.UI.Control)) {
        if (!element) throw Error.argument('element', Sys.Res.createNoDom);
    }
    else if (element) throw Error.argument('element', Sys.Res.createComponentOnDom);
    var component = (element ? new type(element): new type());
    callIf(component, "beginUpdate");
    if (properties) {
        Sys.Component._setProperties(component, properties);
    }
    if (events) {
        for (var name in events) {
            if (!(component["add_" + name] instanceof Function)) throw new Error.invalidOperation(String.format(Sys.Res.undefinedEvent, name));
            if (!(events[name] instanceof Function)) throw new Error.invalidOperation(Sys.Res.eventHandlerNotFunction);
            component["add_" + name](events[name]);
        }
    }
    Sys.Component._register(component, references);
    return component;
}
$type._register = function Component$_register(component, references, dontUpdate) {
    var ret;
    if (Sys.Component.isInstanceOfType(component)) {
        ret = true;
        var app = Sys.Application;
        if (component.get_id()) {
            app.addComponent(component);
        }
        if (app.get_isCreatingComponents()) {
            app._createdComponents.push(component);
            if (references) {
                app._addComponentToSecondPass(component, references);
            }
            else if (!dontUpdate) {
                component.endUpdate();
            }
        }
        else {
            if (references) {
                Sys.Component._setReferences(component, references);
            }
            if (!dontUpdate) {
                component.endUpdate();
            }
        }
    }
    return ret;
}

Sys._getComponent = function _getComponent(found, selector, context) {
    var component = Sys.Application.findComponent(selector);
    if (component) {
        found.push(component);
    }
}

Sys._2Pass = function _2Pass(callback) {
    var app = Sys.Application,
        useTwoPass = !app.get_isCreatingComponents();
    if (useTwoPass) app.beginCreateComponents();
    foreach(callback, function(c) { c() });
    if (useTwoPass) app.endCreateComponents();
}
$type = Sys.UI.MouseButton = function MouseButton() {
    /// <summary locid="M:J#Sys.UI.MouseButton.#ctor">Describes mouse buttons. The values are those from the DOM standard, which are different from the IE values.</summary>
    /// <field name="leftButton" type="Number" integer="true" static="true" locid="F:J#Sys.UI.MouseButton.leftButton"></field>
    /// <field name="middleButton" type="Number" integer="true" static="true" locid="F:J#Sys.UI.MouseButton.middleButton"></field>
    /// <field name="rightButton" type="Number" integer="true" static="true" locid="F:J#Sys.UI.MouseButton.rightButton"></field>
    if (arguments.length !== 0) throw Error.parameterCount();
    throw Error.notImplemented();
}
$type.prototype = {
    leftButton: 0,
    middleButton: 1,
    rightButton: 2
}
$type.registerEnum("Sys.UI.MouseButton");
$type = Sys.UI.Key = function Key() {
    /// <summary locid="M:J#Sys.UI.Key.#ctor">Describes key codes.</summary>
    /// <field name="backspace" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.backspace"></field>
    /// <field name="tab" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.tab"></field>
    /// <field name="enter" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.enter"></field>
    /// <field name="esc" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.esc"></field>
    /// <field name="space" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.space"></field>
    /// <field name="pageUp" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.pageUp"></field>
    /// <field name="pageDown" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.pageDown"></field>
    /// <field name="end" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.end"></field>
    /// <field name="home" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.home"></field>
    /// <field name="left" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.left"></field>
    /// <field name="up" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.up"></field>
    /// <field name="right" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.right"></field>
    /// <field name="down" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.down"></field>
    /// <field name="del" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.del"></field>
    if (arguments.length !== 0) throw Error.parameterCount();
    throw Error.notImplemented();
}
$type.prototype = {
    backspace: 8,
    tab: 9,
    enter: 13,
    esc: 27,
    space: 32,
    pageUp: 33,
    pageDown: 34,
    end: 35,
    home: 36,
    left: 37,
    up: 38,
    right: 39,
    down: 40,
    del: 127
}
$type.registerEnum("Sys.UI.Key");
$type = Sys.UI.Point = function Point(x, y) {
    /// <summary locid="M:J#Sys.UI.Point.#ctor"></summary>
    /// <param name="x" type="Number" integer="true"></param>
    /// <param name="y" type="Number" integer="true"></param>
    /// <field name="x" type="Number" integer="true" locid="F:J#Sys.UI.Point.x"></field>
    /// <field name="y" type="Number" integer="true" locid="F:J#Sys.UI.Point.y"></field>
    var e = Function._validateParams(arguments, [
        {name: "x", type: Number, integer: true},
        {name: "y", type: Number, integer: true}
    ]);
    if (e) throw e;
    this.x = x;
    this.y = y;
}
$type.registerClass('Sys.UI.Point');
$type = Sys.UI.Bounds = function Bounds(x, y, width, height) {
    /// <summary locid="M:J#Sys.UI.Bounds.#ctor"></summary>
    /// <param name="x" type="Number" integer="true"></param>
    /// <param name="y" type="Number" integer="true"></param>
    /// <param name="width" type="Number" integer="true"></param>
    /// <param name="height" type="Number" integer="true"></param>
    /// <field name="x" type="Number" integer="true" locid="F:J#Sys.UI.Bounds.x"></field>
    /// <field name="y" type="Number" integer="true" locid="F:J#Sys.UI.Bounds.y"></field>
    /// <field name="width" type="Number" integer="true" locid="F:J#Sys.UI.Bounds.width"></field>
    /// <field name="height" type="Number" integer="true" locid="F:J#Sys.UI.Bounds.height"></field>
    var e = Function._validateParams(arguments, [
        {name: "x", type: Number, integer: true},
        {name: "y", type: Number, integer: true},
        {name: "width", type: Number, integer: true},
        {name: "height", type: Number, integer: true}
    ]);
    if (e) throw e;
    this.x = x;
    this.y = y;
    this.height = height;
    this.width = width;
}
$type.registerClass('Sys.UI.Bounds');
$type = Sys.UI.DomEvent = function DomEvent(eventObject) {
    /// <summary locid="M:J#Sys.UI.DomEvent.#ctor">A cross-browser object that represents event properties.</summary>
    /// <param name="eventObject">The browser-specific event object (window.event for IE).</param>
    /// <field name="altKey" type="Boolean" locid="F:J#Sys.UI.DomEvent.altKey"></field>
    /// <field name="button" type="Sys.UI.MouseButton" locid="F:J#Sys.UI.DomEvent.button"></field>
    /// <field name="charCode" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.charCode">The character code for the pressed key.</field>
    /// <field name="clientX" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.clientX"></field>
    /// <field name="clientY" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.clientY"></field>
    /// <field name="ctrlKey" type="Boolean" locid="F:J#Sys.UI.DomEvent.ctrlKey"></field>
    /// <field name="keyCode" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.keyCode">The key code for the pressed key.</field>
    /// <field name="offsetX" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.offsetX"></field>
    /// <field name="offsetY" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.offsetY"></field>
    /// <field name="screenX" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.screenX"></field>
    /// <field name="screenY" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.screenY"></field>
    /// <field name="shiftKey" type="Boolean" locid="F:J#Sys.UI.DomEvent.shiftKey"></field>
    /// <field name="target" locid="F:J#Sys.UI.DomEvent.target"></field>
    /// <field name="type" type="String" locid="F:J#Sys.UI.DomEvent.type"></field>
    var e = Function._validateParams(arguments, [
        {name: "eventObject"}
    ]);
    if (e) throw e;
    var ev = eventObject;
    var etype = this.type = ev.type.toLowerCase();
    this.rawEvent = ev;
    this.altKey = ev.altKey;
    if (typeof(ev.button) !== 'undefined') {
        this.button = (typeof(ev.which) !== 'undefined') ? ev.button :
            (ev.button === 4) ? Sys.UI.MouseButton.middleButton :
            (ev.button === 2) ? Sys.UI.MouseButton.rightButton :
            Sys.UI.MouseButton.leftButton;
    }
    if (etype === 'keypress') {
        this.charCode = ev.charCode || ev.keyCode;
    }
    else if (ev.keyCode && (ev.keyCode === 46)) {
        this.keyCode = 127;
    }
    else {
        this.keyCode = ev.keyCode;
    }
    this.clientX = ev.clientX;
    this.clientY = ev.clientY;
    this.ctrlKey = ev.ctrlKey;
    this.target = ev.target || ev.srcElement;
    if (!etype.startsWith('key')) {
        if ((typeof(ev.offsetX) !== 'undefined') && (typeof(ev.offsetY) !== 'undefined')) {
            this.offsetX = ev.offsetX;
            this.offsetY = ev.offsetY;
        }
        else if (this.target && (this.target.nodeType !== 3) && (typeof(ev.clientX) === 'number')) {
            var loc = Sys.UI.DomElement.getLocation(this.target);
            var w = Sys.UI.DomElement._getWindow(this.target);
            this.offsetX = (w.pageXOffset || 0) + ev.clientX - loc.x;
            this.offsetY = (w.pageYOffset || 0) + ev.clientY - loc.y;
        }
    }
    this.screenX = ev.screenX;
    this.screenY = ev.screenY;
    this.shiftKey = ev.shiftKey;
}
$type.prototype = {
    preventDefault: function DomEvent$preventDefault() {
        /// <summary locid="M:J#Sys.UI.DomEvent.preventDefault">Prevents the default event action from happening. For example, a textbox keydown event,  if suppressed, will prevent the character from being appended to the textbox.</summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        var raw = this.rawEvent;
        if (raw.preventDefault) {
            raw.preventDefault();
        }
        else if (window.event) {
            raw.returnValue = false;
        }
    },
    stopPropagation: function DomEvent$stopPropagation() {
        /// <summary locid="M:J#Sys.UI.DomEvent.stopPropagation">Prevents the event from being propagated to parent elements.</summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        var raw = this.rawEvent;
        if (raw.stopPropagation) {
            raw.stopPropagation();
        }
        else if (window.event) {
            raw.cancelBubble = true;
        }
    }
}
$type.registerClass('Sys.UI.DomEvent');

$addHandler = $type.addHandler = function DomEvent$addHandler(elements, eventName, handler, autoRemove) {
    /// <summary locid="M:J#Sys.UI.DomEvent.addHandler">A cross-browser way to add a DOM event handler to an element.</summary>
    /// <param name="elements">The element or text node, or array of elements or text nodes, that exposes the event. You may also pass a DOM selector or array of DOM selectors.</param>
    /// <param name="eventName" type="String">The name of the event. Do not include the 'on' prefix, for example, 'click' instead of 'onclick'.</param>
    /// <param name="handler" type="Function">The event handler to add.</param>
    /// <param name="autoRemove" type="Boolean" optional="true" mayBeNull="true">Whether the handler should be removed automatically when the element is disposed of, such as when an UpdatePanel refreshes, or Sys.Application.disposeElement is called.</param>
    var e = Function._validateParams(arguments, [
        {name: "elements"},
        {name: "eventName", type: String},
        {name: "handler", type: Function},
        {name: "autoRemove", type: Boolean, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    if (eventName === "error") throw Error.invalidOperation(Sys.Res.addHandlerCantBeUsedForError);
    Sys.query(elements).each(function() {
        var nodeType = this.nodeType;
        if (nodeType === 3 || nodeType === 2 || nodeType === 8) return;
        Sys.UI.DomEvent._ensureDomNode(this);
        if (!this._events) {
            this._events = {};
        }
        var eventCache = this._events[eventName];
        if (!eventCache) {
            this._events[eventName] = eventCache = [];
        }
        var element = this, 
            browserHandler;
        if (this.addEventListener) {
            browserHandler = function(e) {
                return handler.call(element, new Sys.UI.DomEvent(e));
            }
            this.addEventListener(eventName, browserHandler, false);
        }
        else if (this.attachEvent) {
            browserHandler = function() {
                var ex, ev = {};
                try {ev = Sys.UI.DomElement._getWindow(element).event} catch(ex) {}
                return handler.call(element, new Sys.UI.DomEvent(ev));
            }
            this.attachEvent('on' + eventName, browserHandler);
        }
        eventCache.push({handler: handler, browserHandler: browserHandler, autoRemove: autoRemove });
        if (autoRemove) {
            Sys.UI.DomElement._onDispose(this, Sys.UI.DomEvent._disposeHandlers);
        }
    });
}

Sys.registerPlugin({
    name: "addHandler",
    dom: true,
    returnType: "Sys.ElementSet",
    description: "A cross-browser way to add a DOM event handler to an element.",
    parameters: [
        {name: "eventName", type: "String", description: "The name of the event. Do not include the 'on' prefix, for example, 'click' instead of 'onclick'."},
        {name: "handler", type: "Function", description: "The event handler to add."},
        {name: "autoRemove", type: "Boolean", description: "Whether the handler should be removed automatically when the element is disposed of, such as when an UpdatePanel refreshes, or Sys.Application.disposeElement is called."}
    ],
    plugin: function (eventName, handler, autoRemove) {
        Sys.UI.DomEvent.addHandler(this.get(), eventName, handler, autoRemove);
        return this;
    }
});

$addHandlers = $type.addHandlers = function DomEvent$addHandlers(elements, events, handlerOwner, autoRemove) {
    /// <summary locid="M:J#Sys.UI.DomEvent.addHandlers">Adds a list of event handlers to an element.  If a handlerOwner is specified, delegates are created with each of the handlers.</summary>
    /// <param name="elements">The element or text node, or array of element or text nodes, that exposes the event. You may also pass a DOM selector or array of DOM selectors.</param>
    /// <param name="events" type="Object">A dictionary of event handlers.</param>
    /// <param name="handlerOwner" optional="true" mayBeNull="true">The owner of the event handlers that will be the this pointer  for the delegates that will be created from the handlers.</param>
    /// <param name="autoRemove" type="Boolean" optional="true" mayBeNull="true">Whether the handler should be removed automatically when the element is disposed of, such as when an UpdatePanel refreshes, or when Sys.Application.disposeElement is called.</param>
    var e = Function._validateParams(arguments, [
        {name: "elements"},
        {name: "events", type: Object},
        {name: "handlerOwner", mayBeNull: true, optional: true},
        {name: "autoRemove", type: Boolean, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    Sys.query(elements).each(function() {
        var nodeType = this.nodeType;
        if (nodeType === 3 || nodeType === 2 || nodeType === 8) return;
        Sys.UI.DomEvent._ensureDomNode(this);
        for (var name in events) {
            var handler = events[name];
            if (typeof(handler) !== 'function') throw Error.invalidOperation(Sys.Res.cantAddNonFunctionhandler);
            if (handlerOwner) {
                handler = Function.createDelegate(handlerOwner, handler);
            }
            $addHandler(this, name, handler, autoRemove || false);
        }
    });
}

Sys.registerPlugin({
    name: "addHandlers",
    dom: true,
    returnType: "Sys.ElementSet",
    description: "Adds a list of event handlers to an element. If a handlerOwner is specified, delegates are created with each of the handlers.",
    parameters: [
        {name: "events", type: "Object", description: "A dictionary of event handlers."},
        {name: "handlerOwner", description: "The owner of the event handlers that will be the this pointer for the delegates that will be created from the handlers."},
        {name: "autoRemove", type: "Boolean", description: "Whether the handler should be removed automatically when the element is disposed of, such as when an UpdatePanel refreshes, or Sys.Application.disposeElement is called."}
    ],
    plugin: function (events, handlerOwner, autoRemove) {
        Sys.UI.DomEvent.addHandlers(this.get(), events, handlerOwner, autoRemove);
        return this;
    }
});

$clearHandlers = $type.clearHandlers = function DomEvent$clearHandlers(elements) {
    /// <summary locid="M:J#Sys.UI.DomEvent.clearHandlers">Clears all the event handlers that were added to the element or array of elements.</summary>
    /// <param name="elements">The element or text node, or an array of elements or text nodes. You may also pass a DOM selector or array of DOM selectors.</param>
    var e = Function._validateParams(arguments, [
        {name: "elements"}
    ]);
    if (e) throw e;
    Sys.query(elements).each(function() {
        var nodeType = this.nodeType;
        if (nodeType === 3 || nodeType === 2 || nodeType === 8) return;
        Sys.UI.DomEvent._ensureDomNode(this);
        Sys.UI.DomEvent._clearHandlers(this, false);
    });
}

Sys.registerPlugin({
    name: "clearHandlers",
    dom: true,
    returnType: "Sys.ElementSet",
    description: "Clears all the event handlers that were added to the element or array of elements.",
    plugin: function() {
        Sys.UI.DomEvent.clearHandlers(this.get());
        return this;
    }
});

$type._clearHandlers = function DomEvent$_clearHandlers(elements, autoRemoving) {
    Sys.query(elements).each(function() {
        var nodeType = this.nodeType;
        if (nodeType === 3 || nodeType === 2 || nodeType === 8) return;
        Sys.UI.DomEvent._ensureDomNode(this);
        var cache = this._events;
        if (cache) {
            for (var name in cache) {
                var handlers = cache[name];
                for (var i = handlers.length - 1; i >= 0; i--) {
                    var entry = handlers[i];
                    if (!autoRemoving || entry.autoRemove) {
                        $removeHandler(this, name, entry.handler);
                    }
                }
            }
        }
    });
}

$type._disposeHandlers = function DomEvent$_disposeHandlers() {
    Sys.UI.DomEvent._clearHandlers(this, true);
}

$removeHandler = $type.removeHandler = function DomEvent$removeHandler(elements, eventName, handler) {
    /// <summary locid="M:J#Sys.UI.DomEvent.removeHandler">A cross-browser way to remove a DOM event handler from an element.</summary>
    /// <param name="elements">The element or text node, or array of elements or text nodes, that exposes the event. You may also pass a DOM selector or array of DOM selectors.</param>
    /// <param name="eventName" type="String">The name of the event. Do not include the 'on' prefix, for example, 'click' instead of 'onclick'.</param>
    /// <param name="handler" type="Function">The event handler to remove.</param>
    var e = Function._validateParams(arguments, [
        {name: "elements"},
        {name: "eventName", type: String},
        {name: "handler", type: Function}
    ]);
    if (e) throw e;
    Sys.UI.DomEvent._removeHandler(elements, eventName, handler);
}
$type._removeHandler = function DomEvent$_removeHandler(elements, eventName, handler) {
    Sys.query(elements).each(function() {
        var nodeType = this.nodeType;
        if (nodeType === 3 || nodeType === 2 || nodeType === 8) return;
        Sys.UI.DomEvent._ensureDomNode(this);
        var browserHandler = null;
        if ((typeof(this._events) !== 'object') || !this._events) throw Error.invalidOperation(Sys.Res.eventHandlerInvalid);
        var cache = this._events[eventName];
        if (!(cache instanceof Array)) throw Error.invalidOperation(Sys.Res.eventHandlerInvalid);
        for (var i = 0, l = cache.length; i < l; i++) {
            if (cache[i].handler === handler) {
                browserHandler = cache[i].browserHandler;
                break;
            }
        }
        if (typeof(browserHandler) !== 'function') throw Error.invalidOperation(Sys.Res.eventHandlerInvalid);
        if (this.removeEventListener) {
            this.removeEventListener(eventName, browserHandler, false);
        }
        else if (this.detachEvent) {
            this.detachEvent('on' + eventName, browserHandler);
        }
        cache.splice(i, 1);
    });
}

Sys.registerPlugin({
    name: "removeHandler",
    dom: true,
    returnType: "Sys.ElementSet",
    description: "A cross-browser way to remove a DOM event handler from an element.",
    parameters: [
        {name: "eventName", type: "String", description: "The name of the event. Do not include the 'on' prefix, for example, 'click' instead of 'onclick'."},
        {name: "handler", type: "Function", description: "The event handler to remove."}
    ],
    plugin: function (eventName, handler) {
        Sys.UI.DomEvent.removeHandler(this.get(), eventName, handler);
        return this;
    }
});


$type._ensureDomNode = function DomEvent$_ensureDomNode(element) {
    if (element && element.tagName && (element.tagName.toUpperCase() === "SCRIPT")) return;
    
    var doc = element ? (element.ownerDocument || element.document || element) : null;
    if (!element ||
        ((typeof(element.document) !== 'object') && (element != doc) && (typeof(element.nodeType) !== 'number'))) {
        throw Error.argument("element", Sys.Res.argumentDomNode);
    }
}
$type = Sys.UI.DomElement = function DomElement() {
    /// <summary locid="M:J#Sys.UI.DomElement.#ctor">This static class provides helpers to work with DOM elements.</summary>
    if (arguments.length !== 0) throw Error.parameterCount();
    throw Error.notImplemented();
}
$type.registerClass('Sys.UI.DomElement');

$type.addCssClass = function DomElement$addCssClass(element, className) {
    /// <summary locid="M:J#Sys.UI.DomElement.addCssClass">Adds a CSS class to an element if it doesn't already have it.</summary>
    /// <param name="element" domElement="true"></param>
    /// <param name="className" type="String">The name of the CSS class to add.</param>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "className", type: String}
    ]);
    if (e) throw e;
    if (!Sys.UI.DomElement.containsCssClass(element, className)) {
        if (element.className === '') {
            element.className = className;
        }
        else {
            element.className += ' ' + className;
        }
    }
}

$type.containsCssClass = function DomElement$containsCssClass(element, className) {
    /// <summary locid="M:J#Sys.UI.DomElement.containsCssClass">Determines if an element has the specified CSS class.</summary>
    /// <param name="element" domElement="true"></param>
    /// <param name="className" type="String">The name of the CSS class to test.</param>
    /// <returns type="Boolean">True if the CSS class was found on the element.</returns>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "className", type: String}
    ]);
    if (e) throw e;
    return Array.contains(element.className.split(' '), className);
}

$type.getBounds = function DomElement$getBounds(element) {
    /// <summary locid="M:J#Sys.UI.DomElement.getBounds">Gets the coordinates, width and height of an element.</summary>
    /// <param name="element" domElement="true"></param>
    /// <returns type="Sys.UI.Bounds">A Bounds object with four fields, x, y, width and height, which contain the pixel coordinates,  width and height of the element.</returns>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true}
    ]);
    if (e) throw e;
    var offset = Sys.UI.DomElement.getLocation(element);

    return new Sys.UI.Bounds(offset.x, offset.y, element.offsetWidth || 0, element.offsetHeight || 0);
}

$get = $type.getElementById = function DomElement$getElementById(id, element) {
    /// <summary locid="M:J#Sys.UI.DomElement.getElementById">Finds an element by id.</summary>
    /// <param name="id" type="String">The id of the element to find.</param>
    /// <param name="element" domElement="true" optional="true" mayBeNull="true"></param>
    /// <returns domElement="true" mayBeNull="true">The element, or null if it was not found.</returns>
    var e = Function._validateParams(arguments, [
        {name: "id", type: String},
        {name: "element", mayBeNull: true, domElement: true, optional: true}
    ]);
    if (e) throw e;
    return Sys.get("#" + id, element || null);
}

if (document.documentElement.getBoundingClientRect) {
    $type.getLocation = function DomElement$getLocation(element) {
        /// <summary locid="M:J#Sys.UI.DomElement.getLocation">Gets the coordinates of a DOM element.</summary>
        /// <param name="element" domElement="true"></param>
        /// <returns type="Sys.UI.Point">A Point object with two fields, x and y, which contain the pixel coordinates of the element.</returns>
        var e = Function._validateParams(arguments, [
            {name: "element", domElement: true}
        ]);
        if (e) throw e;
        
        if (element.self || element.nodeType === 9 ||
            (element === document.documentElement) ||
            (element.parentNode === element.ownerDocument.documentElement)) {
            return new Sys.UI.Point(0, 0);
        }        
        
        var clientRect = element.getBoundingClientRect();
        if (!clientRect) {
            return new Sys.UI.Point(0,0);
        }
        var ex, ownerDoc = element.ownerDocument, documentElement = ownerDoc.documentElement,
            offsetX = Math.round(clientRect.left) + (documentElement.scrollLeft || (ownerDoc.body ? ownerDoc.body.scrollLeft : 0)),
            offsetY = Math.round(clientRect.top) + (documentElement.scrollTop || (ownerDoc.body ? ownerDoc.body.scrollTop : 0));
        if (isBrowser("InternetExplorer")) {
            try {
                var f = element.ownerDocument.parentWindow.frameElement || null;
                if (f) {
                    f = f.frameBorder;
                    var offset = (f === "0" || f === "no") ? 2 : 0;
                    offsetX += offset;
                    offsetY += offset;
                }
            }
            catch(ex) {
            }
            if (Sys.Browser.version === 7 && !document.documentMode) {
                var body = document.body,
                    rect = body.getBoundingClientRect(),
                    zoom = (rect.right-rect.left) / body.clientWidth;
                zoom = Math.round(zoom * 100);
                zoom = (zoom - zoom % 5) / 100;
                if (!isNaN(zoom) && (zoom !== 1)) {
                    offsetX = Math.round(offsetX / zoom);
                    offsetY = Math.round(offsetY / zoom);
                }
            }        
            if ((document.documentMode || 0) < 8) {
                offsetX -= documentElement.clientLeft;
                offsetY -= documentElement.clientTop;
            }
        }
        return new Sys.UI.Point(offsetX, offsetY);
    }
}
else if (isBrowser("Safari")) {
    $type.getLocation = function DomElement$getLocation_Safari(element) {
        /// <summary locid="M:J#Sys.UI.DomElement.getLocation">Gets the coordinates of a DOM element.</summary>
        /// <param name="element" domElement="true"></param>
        /// <returns type="Sys.UI.Point">A Point object with two fields, x and y, which contain the pixel coordinates of the element.</returns>
        var e = Function._validateParams(arguments, [
            {name: "element", domElement: true}
        ]);
        if (e) throw e;
        if ((element.window && (element.window === element)) || element.nodeType === 9) return new Sys.UI.Point(0,0);

        var offsetX = 0, offsetY = 0,
            parent,
            previous = null,
            previousStyle = null,
            currentStyle;
        for (parent = element; parent; previous = parent, previousStyle = currentStyle, parent = parent.offsetParent) {
            currentStyle = Sys.UI.DomElement._getCurrentStyle(parent);
            var tagName = parent.tagName ? parent.tagName.toUpperCase() : null;

            if ((parent.offsetLeft || parent.offsetTop) &&
                ((tagName !== "BODY") || (!previousStyle || previousStyle.position !== "absolute"))) {
                offsetX += parent.offsetLeft;
                offsetY += parent.offsetTop;
            }

            if (previous && Sys.Browser.version >= 3) {
                offsetX += parseInt(currentStyle.borderLeftWidth);
                offsetY += parseInt(currentStyle.borderTopWidth);
            }
        }

        currentStyle = Sys.UI.DomElement._getCurrentStyle(element);
        var elementPosition = currentStyle ? currentStyle.position : null;
        if (elementPosition !== "absolute") {
            for (parent = element.parentNode; parent; parent = parent.parentNode) {
                tagName = parent.tagName ? parent.tagName.toUpperCase() : null;

                if ((tagName !== "BODY") && (tagName !== "HTML") && (parent.scrollLeft || parent.scrollTop)) {
                    offsetX -= (parent.scrollLeft || 0);
                    offsetY -= (parent.scrollTop || 0);
                }
                currentStyle = Sys.UI.DomElement._getCurrentStyle(parent);
                var parentPosition = currentStyle ? currentStyle.position : null;

                if (parentPosition && (parentPosition === "absolute")) break;
            }
        }
        return new Sys.UI.Point(offsetX, offsetY);
    }
}
else {
    $type.getLocation = function DomElement$getLocation_Generic(element) {
        /// <summary locid="M:J#Sys.UI.DomElement.getLocation">Gets the coordinates of a DOM element.</summary>
        /// <param name="element" domElement="true"></param>
        /// <returns type="Sys.UI.Point">A Point object with two fields, x and y, which contain the pixel coordinates of the element.</returns>
        var e = Function._validateParams(arguments, [
            {name: "element", domElement: true}
        ]);
        if (e) throw e;
        if ((element.window && (element.window === element)) || element.nodeType === 9) return new Sys.UI.Point(0,0);

        var offsetX = 0, offsetY = 0,
            parent,
            previous = null,
            previousStyle = null,
            currentStyle = null;
        for (parent = element; parent; previous = parent, previousStyle = currentStyle, parent = parent.offsetParent) {
            var tagName = parent.tagName ? parent.tagName.toUpperCase() : null;
            currentStyle = Sys.UI.DomElement._getCurrentStyle(parent);

            if ((parent.offsetLeft || parent.offsetTop) &&
                !((tagName === "BODY") &&
                (!previousStyle || previousStyle.position !== "absolute"))) {

                offsetX += parent.offsetLeft;
                offsetY += parent.offsetTop;
            }

            if (previous !== null && currentStyle) {
                if ((tagName !== "TABLE") && (tagName !== "TD") && (tagName !== "HTML")) {
                    offsetX += parseInt(currentStyle.borderLeftWidth) || 0;
                    offsetY += parseInt(currentStyle.borderTopWidth) || 0;
                }
                if (tagName === "TABLE" &&
                    (currentStyle.position === "relative" || currentStyle.position === "absolute")) {
                    offsetX += parseInt(currentStyle.marginLeft) || 0;
                    offsetY += parseInt(currentStyle.marginTop) || 0;
                }
            }
        }

        currentStyle = Sys.UI.DomElement._getCurrentStyle(element);
        var elementPosition = currentStyle ? currentStyle.position : null;
        if (elementPosition !== "absolute") {
            for (parent = element.parentNode; parent; parent = parent.parentNode) {
                tagName = parent.tagName ? parent.tagName.toUpperCase() : null;

                if ((tagName !== "BODY") && (tagName !== "HTML") && (parent.scrollLeft || parent.scrollTop)) {

                    offsetX -= (parent.scrollLeft || 0);
                    offsetY -= (parent.scrollTop || 0);

                    currentStyle = Sys.UI.DomElement._getCurrentStyle(parent);
                    if (currentStyle) {
                        offsetX += parseInt(currentStyle.borderLeftWidth) || 0;
                        offsetY += parseInt(currentStyle.borderTopWidth) || 0;
                    }
                }
            }
        }
        return new Sys.UI.Point(offsetX, offsetY);
    }
}

$type.isDomElement = function DomElement$isDomElement(obj) {
    /// <summary locid="M:J#Sys.UI.DomElement.isDomElement">Determines if the given argument is a DOM element.</summary>
    /// <param name="obj"></param>
    /// <returns type="Boolean">True if the object is a DOM element, otherwise false.</returns>
    var e = Function._validateParams(arguments, [
        {name: "obj"}
    ]);
    if (e) throw e;
    return Sys._isDomElement(obj);
}

$type.removeCssClass = function DomElement$removeCssClass(element, className) {
    /// <summary locid="M:J#Sys.UI.DomElement.removeCssClass">Removes a CSS class from an element.</summary>
    /// <param name="element" domElement="true"></param>
    /// <param name="className" type="String">The name of the CSS class to remove.</param>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "className", type: String}
    ]);
    if (e) throw e;
    var currentClassName = ' ' + element.className + ' ';
    var index = currentClassName.indexOf(' ' + className + ' ');
    if (index >= 0) {
        element.className = (currentClassName.substr(0, index) + ' ' +
            currentClassName.substring(index + className.length + 1, currentClassName.length)).trim();
    }
}

$type.resolveElement = function DomElement$resolveElement(elementOrElementId, containerElement) {
    /// <summary locid="M:J#Sys.UI.DomElement.resolveElement">Returns the element with the specified Id in the specified container, or the element if it is already an element.</summary>
    /// <param name="elementOrElementId" mayBeNull="true"></param>
    /// <param name="containerElement" domElement="true" optional="true" mayBeNull="true"></param>
    /// <returns domElement="true"></returns>
    var e = Function._validateParams(arguments, [
        {name: "elementOrElementId", mayBeNull: true},
        {name: "containerElement", mayBeNull: true, domElement: true, optional: true}
    ]);
    if (e) throw e;
    var el = elementOrElementId;
    if (!el) return null;
    if (typeof(el) === "string") {
        el = Sys.get("#" + el, containerElement);
        if (!el) {
            throw Error.argument("elementOrElementId", String.format(Sys.Res.elementNotFound, elementOrElementId));
        }
    }
    else if(!Sys.UI.DomElement.isDomElement(el)) {
        throw Error.argument("elementOrElementId", Sys.Res.expectedElementOrId);
    }
    return el;
}

$type.raiseBubbleEvent = function DomElement$raiseBubbleEvent(source, args) {
    /// <summary locid="M:J#Sys.UI.DomElement.raiseBubbleEvent">Raises a bubble event.</summary>
    /// <param name="source" domElement="true">The DOM element that triggers the event.</param>
    /// <param name="args" type="Sys.EventArgs">The event arguments.</param>
    var e = Function._validateParams(arguments, [
        {name: "source", domElement: true},
        {name: "args", type: Sys.EventArgs}
    ]);
    if (e) throw e;
    var target = source;
    while (target) {
        var control = target.control;
        if (control && control.onBubbleEvent && control.raiseBubbleEvent) {
            if (!control.onBubbleEvent(source, args)) {
                control._raiseBubbleEvent(source, args);
            }
            return;
        }
        target = target.parentNode;
    }
}

$type._ensureGet = function DomElement$_ensureGet(selector, context, arg) {
    var ret = Sys.get(selector, context);
    if (!ret && typeof(selector) === "string") {
        throw Error.invalidOperation(String.format(Sys.Res.selectorNotFound, selector));
    }
    else if (ret && !this.isDomElement(ret)) {
        throw Error.invalidOperation(String.format(Sys.Res.expectedDomElementOrSelector, arg));
    }
    return ret;
}

$type.setLocation = function DomElement$setLocation(element, x, y) {
    /// <summary locid="M:J#Sys.UI.DomElement.setLocation">Sets the position of an element.</summary>
    /// <param name="element" domElement="true"></param>
    /// <param name="x" type="Number" integer="true"></param>
    /// <param name="y" type="Number" integer="true"></param>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "x", type: Number, integer: true},
        {name: "y", type: Number, integer: true}
    ]);
    if (e) throw e;
    var style = element.style;
    style.position = 'absolute';
    style.left = x + "px";
    style.top = y + "px";
}

$type.toggleCssClass = function DomElement$toggleCssClass(element, className) {
    /// <summary locid="M:J#Sys.UI.DomElement.toggleCssClass">Toggles a CSS class on and off o an element.</summary>
    /// <param name="element" domElement="true"></param>
    /// <param name="className" type="String">The name of the CSS class to toggle.</param>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "className", type: String}
    ]);
    if (e) throw e;
    if (Sys.UI.DomElement.containsCssClass(element, className)) {
        Sys.UI.DomElement.removeCssClass(element, className);
    }
    else {
        Sys.UI.DomElement.addCssClass(element, className);
    }
}

$type.getVisibilityMode = function DomElement$getVisibilityMode(element) {
    /// <summary locid="M:J#Sys.UI.DomElement.getVisibilityMode"></summary>
    /// <param name="element" domElement="true"></param>
    /// <returns type="Sys.UI.VisibilityMode"></returns>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true}
    ]);
    if (e) throw e;
    return (element._visibilityMode === Sys.UI.VisibilityMode.hide) ?
        Sys.UI.VisibilityMode.hide :
        Sys.UI.VisibilityMode.collapse;
}
$type.setVisibilityMode = function DomElement$setVisibilityMode(element, value) {
    /// <summary locid="M:J#Sys.UI.DomElement.setVisibilityMode"></summary>
    /// <param name="element" domElement="true"></param>
    /// <param name="value" type="Sys.UI.VisibilityMode"></param>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "value", type: Sys.UI.VisibilityMode}
    ]);
    if (e) throw e;
    Sys.UI.DomElement._ensureOldDisplayMode(element);
    if (element._visibilityMode !== value) {
        element._visibilityMode = value;
        if (Sys.UI.DomElement.getVisible(element) === false) {
            element.style.display = (value === Sys.UI.VisibilityMode.hide) ? element._oldDisplayMode : 'none';
        }
    }
}

$type.getVisible = function DomElement$getVisible(element) {
    /// <summary locid="M:J#Sys.UI.DomElement.getVisible"></summary>
    /// <param name="element" domElement="true"></param>
    /// <returns type="Boolean"></returns>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true}
    ]);
    if (e) throw e;
    var style = element.currentStyle || Sys.UI.DomElement._getCurrentStyle(element);
    return style ? (style.visibility !== 'hidden') && (style.display !== 'none') : true;
}
$type.setVisible = function DomElement$setVisible(element, value) {
    /// <summary locid="M:J#Sys.UI.DomElement.setVisible"></summary>
    /// <param name="element" domElement="true"></param>
    /// <param name="value" type="Boolean"></param>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "value", type: Boolean}
    ]);
    if (e) throw e;
    if (value !== Sys.UI.DomElement.getVisible(element)) {
        Sys.UI.DomElement._ensureOldDisplayMode(element);
        var style = element.style;
        style.visibility = value ? 'visible' : 'hidden';
        style.display = (value || (element._visibilityMode === Sys.UI.VisibilityMode.hide)) ? element._oldDisplayMode : 'none';
    }
}

$type.setCommand = function DomElement$setCommand(commandSource, commandName, commandArgument, commandTarget) {
    /// <summary locid="M:J#Sys.UI.DomElement.setCommand">Causes a DOM element to raise a bubble event when clicked.</summary>
    /// <param name="commandSource">The DOM element, array of DOM elements, or DOM element selectors that causes the event when clicked.</param>
    /// <param name="commandName" type="String" mayBeNull="true">The name of the command to raise.</param>
    /// <param name="commandArgument" mayBeNull="true" optional="true">Optional command argument.</param>
    /// <param name="commandTarget" optional="true" mayBeNull="true">DOM element from which the command should start bubbling up.</param>
    var e = Function._validateParams(arguments, [
        {name: "commandSource"},
        {name: "commandName", type: String, mayBeNull: true},
        {name: "commandArgument", mayBeNull: true, optional: true},
        {name: "commandTarget", mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    Sys.UI.DomEvent.addHandler(commandSource, 'click', function(ev) {
        var source = commandTarget || this;
        Sys.UI.DomElement.raiseBubbleEvent(source, new Sys.CommandEventArgs(commandName, commandArgument, this, ev)); 
    }, true /*autoRemove*/);
}

Sys.registerPlugin({
    name: "setCommand",
    dom: true,
    returnType: "Sys.ElementSet",
    description: "Causes a DOM element to raise a bubble event when clicked.",
    parameters: [
        {name: "commandName", type:"String", description: "The name of the command to raise."},
        {name: "commandArgument", description: "Optional command argument."},
        {name: "commandTarget", description: "DOM element from which the command should start bubbling up."}
    ],
    plugin: function(commandName, commandArgument, commandTarget) {
        var e = Function._validateParams(arguments, [
            {name: "commandName", type: String, mayBeNull: true},
            {name: "commandArgument", mayBeNull: true, optional: true},
            {name: "commandTarget", mayBeNull: true, optional: true}
        ]);
        if (e) throw e;
        return this.addHandler('click', function(ev) {
            var source = commandTarget || this;
            Sys.UI.DomElement.raiseBubbleEvent(source, new Sys.CommandEventArgs(commandName, commandArgument, this, ev)); 
        }, true /*autoRemove*/);
    }
});

$type._ensureOldDisplayMode = function DomElement$_ensureOldDisplayMode(element) {
    if (!element._oldDisplayMode) {
        var style = element.currentStyle || this._getCurrentStyle(element);
        element._oldDisplayMode = style ? style.display : null;
        if (!element._oldDisplayMode || element._oldDisplayMode === 'none') {
            var tagName = element.tagName,
                mode = 'inline';
            if (/^(DIV|P|ADDRESS|BLOCKQUOTE|BODY|COL|COLGROUP|DD|DL|DT|FIELDSET|FORM|H1|H2|H3|H4|H5|H6|HR|IFRAME|LEGEND|OL|PRE|TABLE|TD|TH|TR|UL)$/i.test(tagName)) {
                mode = 'block';
            }
            else if (tagName.toUpperCase() === "LI") {
                mode = 'list-item';
            }
            element._oldDisplayMode = mode;
        }
    }
}

$type._getWindow = function DomElement$_getWindow(element) {
    var doc = element.ownerDocument || element.document || element;
    return doc.defaultView || doc.parentWindow;
}

$type._getCurrentStyle = function DomElement$_getCurrentStyle(element) {
    if (element.nodeType === 3) return null;
    var w = this._getWindow(element);
    if (element.documentElement) element = element.documentElement;
    var computedStyle = (w && (element !== w) && w.getComputedStyle) ?
        w.getComputedStyle(element, null) :
        element.currentStyle || element.style;
    return computedStyle;
}

$type._onDispose = function DomElement$_onDispose(element, fn) {
    var queue, d = element.dispose;
    if (d !== Sys.UI.DomElement._dispose) {
        element.dispose = Sys.UI.DomElement._dispose;
        element.__msajaxdispose = queue = [];
        if (typeof(d) === "function") {
            queue.push(d);
        }
    }
    else {
        queue = element.__msajaxdispose;
    }
    queue.push(fn);
}

$type._dispose = function DomElement$_dispose() {
    var queue = this.__msajaxdispose;
    if (queue) {
        for (var i = 0, l = queue.length; i < l; i++) {
            queue[i].apply(this);
        }
    }
    if (this.control && typeof(this.control.dispose) === "function") {
        this.control.dispose();
    }
    this.__msajaxdispose = null;
    this.dispose = null;
}
$type = Sys.IContainer = function IContainer() {
    throw Error.notImplemented();
}
$type.prototype = {
    addComponent: function IContainer$addComponent(component) {
        /// <summary locid="M:J#Sys.IContainer.addComponent"></summary>
        /// <param name="component" type="Sys.Component"></param>
        var e = Function._validateParams(arguments, [
            {name: "component", type: Sys.Component}
        ]);
        if (e) throw e;
        throw Error.notImplemented();
    },
    removeComponent: function IContainer$removeComponent(component) {
        /// <summary locid="M:J#Sys.IContainer.removeComponent"></summary>
        /// <param name="component" type="Sys.Component"></param>
        var e = Function._validateParams(arguments, [
            {name: "component", type: Sys.Component}
        ]);
        if (e) throw e;
        throw Error.notImplemented();
    },
    findComponent: function IContainer$findComponent(id) {
        /// <summary locid="M:J#Sys.IContainer.findComponent"></summary>
        /// <param name="id" type="String"></param>
        /// <returns type="Sys.Component"></returns>
        var e = Function._validateParams(arguments, [
            {name: "id", type: String}
        ]);
        if (e) throw e;
        throw Error.notImplemented();
    },
    getComponents: function IContainer$getComponents() {
        /// <summary locid="M:J#Sys.IContainer.getComponents"></summary>
        /// <returns type="Array" elementType="Sys.Component"></returns>
        if (arguments.length !== 0) throw Error.parameterCount();
        throw Error.notImplemented();
    }
}
$type.registerInterface("Sys.IContainer");

$type = Sys.ApplicationLoadEventArgs = function ApplicationLoadEventArgs(components, isPartialLoad) {
    /// <summary locid="M:J#Sys.ApplicationLoadEventArgs.#ctor"></summary>
    /// <param name="components" type="Array" elementType="Sys.Component">The list of components that were created since the last time the load event was raised.</param>
    /// <param name="isPartialLoad" type="Boolean">True if the page is partially loading.</param>
    var e = Function._validateParams(arguments, [
        {name: "components", type: Array, elementType: Sys.Component},
        {name: "isPartialLoad", type: Boolean}
    ]);
    if (e) throw e;
    Sys.ApplicationLoadEventArgs.initializeBase(this);
    this._components = components;
    this._isPartialLoad = isPartialLoad;
}
$type.prototype = {
    get_components: function ApplicationLoadEventArgs$get_components() {
        /// <value type="Array" elementType="Sys.Component" locid="P:J#Sys.ApplicationLoadEventArgs.components">The list of components that were created since the last time the load event was raised.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._components;
    },
    get_isPartialLoad: function ApplicationLoadEventArgs$get_isPartialLoad() {
        /// <value type="Boolean" locid="P:J#Sys.ApplicationLoadEventArgs.isPartialLoad">True if the page is partially loading.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._isPartialLoad;
    }
}
$type.registerClass('Sys.ApplicationLoadEventArgs', Sys.EventArgs);
$type = Sys._Application = function _Application() {
    /// <summary locid="M:J#Sys.Application.#ctor"></summary>
    if (arguments.length !== 0) throw Error.parameterCount();
    Sys._Application.initializeBase(this);

    this._disposableObjects = [];
    this._components = {};
    this._createdComponents = [];
    this._secondPassComponents = [];

    this._unloadHandlerDelegate = Function.createDelegate(this, this._unloadHandler);
    Sys.UI.DomEvent.addHandler(window, "unload", this._unloadHandlerDelegate);
}
$type.prototype = {
    _deleteCount: 0,

    get_isCreatingComponents: function _Application$get_isCreatingComponents() {
        /// <value type="Boolean" locid="P:J#Sys.Application.isCreatingComponents"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return !!this._creatingComponents;
    },
    get_isDisposing: function _Application$get_isDisposing() {
        /// <value type="Boolean" locid="P:J#Sys.Application.isDisposing"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return !!this._disposing;
    },
    add_init: function _Application$add_init(handler) {
        /// <summary locid="E:J#Sys.Application.init"></summary>
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        if (this._initialized) {
            handler(this, Sys.EventArgs.Empty);
        }
        else {
            this._addHandler("init", handler);
        }
    },
    remove_init: function _Application$remove_init(handler) {
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        this._removeHandler("init", handler);
    },
    add_load: function _Application$add_load(handler) {
        /// <summary locid="E:J#Sys.Application.load"></summary>
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        this._addHandler("load", handler);
    },
    remove_load: function _Application$remove_load(handler) {
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        this._removeHandler("load", handler);
    },
    add_unload: function _Application$add_unload(handler) {
        /// <summary locid="E:J#Sys.Application.unload"></summary>
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        this._addHandler("unload", handler);
    },
    remove_unload: function _Application$remove_unload(handler) {
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        this._removeHandler("unload", handler);
    },
    addComponent: function _Application$addComponent(component) {
        /// <summary locid="M:J#Sys.Application.addComponent">Adds a top-level component to the application.</summary>
        /// <param name="component" type="Sys.Component">The component to add.</param>
        var e = Function._validateParams(arguments, [
            {name: "component", type: Sys.Component}
        ]);
        if (e) throw e;
        var id = component.get_id();
        if (!id) throw Error.invalidOperation(Sys.Res.cantAddWithoutId);
        if (typeof(this._components[id]) !== 'undefined') throw Error.invalidOperation(String.format(Sys.Res.appDuplicateComponent, id));
        this._components[id] = component;
    },
    beginCreateComponents: function _Application$beginCreateComponents() {
        /// <summary locid="M:J#Sys.Application.beginCreateComponents"></summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        this._creatingComponents = true;
    },
    dispose: function _Application$dispose() {
        /// <summary locid="M:J#Sys.Application.dispose"></summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        if (!this._disposing) {
            this._disposing = true;
            if (this._timerCookie) {
                window.clearTimeout(this._timerCookie);
                delete this._timerCookie;
            }
            var endHandler = this._endRequestHandler;
            var beginHandler = this._beginRequestHandler;
            if (endHandler || beginHandler) {
                var prm = Sys.WebForms.PageRequestManager.getInstance();
                if (endHandler) prm.remove_endRequest(endHandler);
                if (beginHandler) prm.remove_beginRequest(beginHandler);
                delete this._endRequestHandler;
                delete this._beginRequestHandler;
            }
            if (window.pageUnload) {
                window.pageUnload(this, Sys.EventArgs.Empty);
            }
            Sys.Observer.raiseEvent(this, "unload");
            var disposableObjects = Array.clone(this._disposableObjects);
            for (var i = 0, l = disposableObjects.length; i < l; i++) {
                var object = disposableObjects[i];
                if (typeof(object) !== "undefined") {
                    object.dispose();
                }
            }
            this._disposableObjects.length = 0;

            Sys.UI.DomEvent.removeHandler(window, "unload", this._unloadHandlerDelegate);

            if (Sys._ScriptLoader) {
                var sl = Sys._ScriptLoader.getInstance();
                if (sl) {
                    sl.dispose();
                }
            }

            Sys._Application.callBaseMethod(this, 'dispose');
        }
    },
    disposeElement: function _Application$disposeElement(element, childNodesOnly) {
        /// <summary locid="M:J#Sys._Application.disposeElement">Disposes of control and behavior resources associated with an element and its child nodes.</summary>
        /// <param name="element">The element to dispose.</param>
        /// <param name="childNodesOnly" type="Boolean">Whether to dispose of the element and its child nodes or only its child nodes.</param>
        var e = Function._validateParams(arguments, [
            {name: "element"},
            {name: "childNodesOnly", type: Boolean}
        ]);
        if (e) throw e;
        if (element.nodeType === 1) {
            var d, c, i, list,
                allElements = element.getElementsByTagName("*"),
                length = allElements.length,
                children = new Array(length);
            for (i = 0; i < length; i++) {
                children[i] = allElements[i];
            }
            for (i = length - 1; i >= 0; i--) {
                var child = children[i];
                d = child.dispose;
                if (d && typeof(d) === "function") {
                    child.dispose();
                }
                else {
                    c = child.control;
                    if (c && typeof(c.dispose) === "function") {
                        c.dispose();
                    }
                }
                list = child._behaviors;
                if (list) {
                    this._disposeComponents(list);
                }
                list = child._components;
                if (list) {
                    this._disposeComponents(list);
                    child._components = null;
                }
            }
            if (!childNodesOnly) {
                d = element.dispose;
                if (d && typeof(d) === "function") {
                    element.dispose();
                }
                else {
                    c = element.control;
                    if (c && typeof(c.dispose) === "function") {
                        c.dispose();
                    }
                }
                list = element._behaviors;
                if (list) {
                    this._disposeComponents(list);
                }
                list = element._components;
                if (list) {
                    this._disposeComponents(list);
                    element._components = null;
                }
            }
        }
    },    
    endCreateComponents: function _Application$endCreateComponents() {
        /// <summary locid="M:J#Sys.Application.endCreateComponents"></summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        var components = this._secondPassComponents;
        for (var i = 0, l = components.length; i < l; i++) {
            var entry = components[i],
                component = entry.component;
            Sys.Component._setReferences(component, entry.references);
            component.endUpdate();
        }
        this._secondPassComponents = [];
        this._creatingComponents = false;
    },
    findComponent: function _Application$findComponent(id, parent) {
        /// <summary locid="M:J#Sys.Application.findComponent">Finds top-level components that were added through addComponent if no parent is specified  or children of the specified parent. If parent is a component</summary>
        /// <param name="id" type="String">The id of the component to find.</param>
        /// <param name="parent" optional="true" mayBeNull="true">The component or element that contains the component to find.  If not specified or null, the search is made on Application.</param>
        /// <returns type="Sys.Component" mayBeNull="true">The component, or null if it wasn't found.</returns>
        var e = Function._validateParams(arguments, [
            {name: "id", type: String},
            {name: "parent", mayBeNull: true, optional: true}
        ]);
        if (e) throw e;
        return (parent ?
            ((Sys.IContainer.isInstanceOfType(parent)) ?
                parent.findComponent(id) :
                parent[id] || null) :
            Sys.Application._components[id] || null);
    },
    getComponents: function _Application$getComponents() {
        /// <summary locid="M:J#Sys.Application.getComponents"></summary>
        /// <returns type="Array" elementType="Sys.Component"></returns>
        if (arguments.length !== 0) throw Error.parameterCount();
        var res = [];
        var components = this._components;
        for (var name in components) {
            if (components.hasOwnProperty(name)) {
                res.push(components[name]);
            }
        }
        return res;
    },
    initialize: function _Application$initialize() {
        /// <summary locid="M:J#Sys.Application.initialize"></summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        window.setTimeout(Function.createDelegate(this, this._doInitialize), 0);
    },
    _doInitialize: function _Application$_doInitialize() {
        if(!this.get_isInitialized() && !this._disposing) {
            Sys._Application.callBaseMethod(this, 'initialize');
            this._raiseInit();
            if (this.get_stateString) {
                if (Sys.WebForms && Sys.WebForms.PageRequestManager) {
                    var prm = Sys.WebForms.PageRequestManager.getInstance();
                    this._beginRequestHandler = Function.createDelegate(this, this._onPageRequestManagerBeginRequest);
                    prm.add_beginRequest(this._beginRequestHandler);
                    this._endRequestHandler = Function.createDelegate(this, this._onPageRequestManagerEndRequest);
                    prm.add_endRequest(this._endRequestHandler);
                }
                var loadedEntry = this.get_stateString();
                if (loadedEntry !== this._currentEntry) {
                    this._navigate(loadedEntry);
                }
                else {
                    this._ensureHistory();
                }
            }
            this.raiseLoad();
        }
    },
    notifyScriptLoaded: function _Application$notifyScriptLoaded() {
        /// <summary locid="M:J#Sys.Application.notifyScriptLoaded">Called by referenced scripts to indicate that they have completed loading. [Obsolete]</summary>
        if (arguments.length !== 0) throw Error.parameterCount();
    },
    registerDisposableObject: function _Application$registerDisposableObject(object) {
        /// <summary locid="M:J#Sys.Application.registerDisposableObject">Registers a disposable object with the application.</summary>
        /// <param name="object" type="Sys.IDisposable">The object to register.</param>
        var e = Function._validateParams(arguments, [
            {name: "object", type: Sys.IDisposable}
        ]);
        if (e) throw e;
        if (!this._disposing) {
            var objects = this._disposableObjects,
                i = objects.length;
            objects[i] = object;
            object.__msdisposeindex = i;
        }
    },
    raiseLoad: function _Application$raiseLoad() {
        /// <summary locid="M:J#Sys.Application.raiseLoad"></summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        var args = new Sys.ApplicationLoadEventArgs(Array.clone(this._createdComponents), !!this._loaded);
        this._loaded = true;
        Sys.Observer.raiseEvent(this, "load", args);
        if (window.pageLoad) {
            window.pageLoad(this, args);
        }
        this._createdComponents = [];
    },
    removeComponent: function _Application$removeComponent(component) {
        /// <summary locid="M:J#Sys.Application.removeComponent">Removes a top-level component from the application.</summary>
        /// <param name="component" type="Sys.Component">The component to remove.</param>
        var e = Function._validateParams(arguments, [
            {name: "component", type: Sys.Component}
        ]);
        if (e) throw e;
        var id = component.get_id();
        if (id) delete this._components[id];
    },
    unregisterDisposableObject: function _Application$unregisterDisposableObject(object) {
        /// <summary locid="M:J#Sys.Application.unregisterDisposableObject">Unregisters a disposable object from the application.</summary>
        /// <param name="object" type="Sys.IDisposable">The object to unregister.</param>
        var e = Function._validateParams(arguments, [
            {name: "object", type: Sys.IDisposable}
        ]);
        if (e) throw e;
        if (!this._disposing) {
            var i = object.__msdisposeindex;
            if (typeof(i) === "number") {
                var disposableObjects = this._disposableObjects;
                delete disposableObjects[i];
                delete object.__msdisposeindex;
                if (++this._deleteCount > 1000) {
                    var newArray = [];
                    for (var j = 0, l = disposableObjects.length; j < l; j++) {
                        object = disposableObjects[j];
                        if (typeof(object) !== "undefined") {
                            object.__msdisposeindex = newArray.length;
                            newArray.push(object);
                        }
                    }
                    this._disposableObjects = newArray;
                    this._deleteCount = 0;
                }
            }
        }
    },
    _addComponentToSecondPass: function _Application$_addComponentToSecondPass(component, references) {
        this._secondPassComponents.push({component: component, references: references});
    },
    _disposeComponents: function _Application$_disposeComponents(list) {
        if (list) {
            for (var i = list.length - 1; i >= 0; i--) {
                var item = list[i];
                if (typeof(item.dispose) === "function") {
                    item.dispose();
                }
            }
        }
    },
    _raiseInit: function _Application$_raiseInit() {
        this.beginCreateComponents();
        Sys.Observer.raiseEvent(this, "init");
        this.endCreateComponents();
    },
    _unloadHandler: function _Application$_unloadHandler(event) {
        this.dispose();
    }
}
$type.registerClass('Sys._Application', Sys.Component, Sys.IContainer);

Sys.Application = new Sys._Application();
window.$find = Sys.Application.findComponent;

Sys.onReady(function() {
    Sys.Application._doInitialize();
});


$type = Sys.UI.Behavior = function Behavior(element) {
    /// <summary locid="M:J#Sys.UI.Behavior.#ctor"></summary>
    /// <param name="element" domElement="true">The DOM element the behavior is associated with.</param>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true}
    ]);
    if (e) throw e;
    Sys.UI.Behavior.initializeBase(this);
    this._element = element;
    var behaviors = (element._behaviors = element._behaviors || []);
    behaviors.push(this);
}
$type.prototype = {
    get_element: function Behavior$get_element() {
        /// <value domElement="true" locid="P:J#Sys.UI.Behavior.element">The DOM element this behavior is associated with</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._element;
    },
    get_id: function Behavior$get_id() {
        /// <value type="String" locid="P:J#Sys.UI.Behavior.id"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        var baseId = Sys.UI.Behavior.callBaseMethod(this, 'get_id');
        if (baseId) return baseId;
        var element = this._element;
        if (!element || !element.id) return '';
        return element.id + '$' + this.get_name();
    },
    get_name: function Behavior$get_name() {
        /// <value type="String" locid="P:J#Sys.UI.Behavior.name"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        if (this._name) return this._name;
        var name = Object.getTypeName(this);
        var i = name.lastIndexOf('.');
        if (i >= 0) name = name.substr(i + 1);
        if (!this._initialized) this._name = name;
        return name;
    },
    set_name: function Behavior$set_name(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
        if (e) throw e;
        if ((value === '') || (value.charAt(0) === ' ') || (value.charAt(value.length - 1) === ' '))
            throw Error.argument('value', Sys.Res.invalidId);
        if (typeof(this._element[value]) !== 'undefined')
            throw Error.invalidOperation(String.format(Sys.Res.behaviorDuplicateName, value));
        if (this.get_isInitialized()) throw Error.invalidOperation(Sys.Res.cantSetNameAfterInit);
        this._name = value;
    },
    initialize: function Behavior$initialize() {
        Sys.UI.Behavior.callBaseMethod(this, 'initialize');
        var name = this.get_name();
        if (name) this._element[name] = this;
    },
    dispose: function Behavior$dispose() {
        Sys.UI.Behavior.callBaseMethod(this, 'dispose');
        var e = this._element;
        if (e) {
            var name = this.get_name();
            if (name) {
                e[name] = null;
            }
            var behaviors = e._behaviors;
            Array.remove(behaviors, this);
            if (!behaviors.length) {
                e._behaviors = null;
            }
            delete this._element;
        }
    }
}
$type.registerClass('Sys.UI.Behavior', Sys.Component);

$type.getBehaviorByName = function Behavior$getBehaviorByName(element, name) {
    /// <summary locid="M:J#Sys.UI.Behavior.getBehaviorByName">Gets a behavior with the specified name from the dom element.</summary>
    /// <param name="element" domElement="true">The DOM element to inspect.</param>
    /// <param name="name" type="String">The name of the behavior to look for.</param>
    /// <returns type="Sys.UI.Behavior" mayBeNull="true">The behaviors or null if it was not found.</returns>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "name", type: String}
    ]);
    if (e) throw e;
    var b = element[name];
    return (b && Sys.UI.Behavior.isInstanceOfType(b)) ? b : null;
}

$type.getBehaviors = function Behavior$getBehaviors(element) {
    /// <summary locid="M:J#Sys.UI.Behavior.getBehaviors">Gets a collection containing the behaviors associated with an element.</summary>
    /// <param name="element" domElement="true">The DOM element.</param>
    /// <returns type="Array" elementType="Sys.UI.Behavior">An array containing the behaviors associated with the DOM element.</returns>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true}
    ]);
    if (e) throw e;
    var behaviors = element._behaviors;
    return behaviors ? Array.clone(behaviors) : [];
}

Sys.UI.Behavior.getBehaviorsByType = function Behavior$getBehaviorsByType(element, type) {
    /// <summary locid="M:J#Sys.UI.Behavior.getBehaviorsByType">Gets an array of behaviors with the specified type from the dom element.</summary>
    /// <param name="element" domElement="true">The DOM element to inspect.</param>
    /// <param name="type" type="Type">The type of behavior to look for.</param>
    /// <returns type="Array" elementType="Sys.UI.Behavior">An array containing the behaviors of the specified type found on the element.  The array is empty if no behavior of this type was found.</returns>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "type", type: Type}
    ]);
    if (e) throw e;
    var behaviors = element._behaviors;
    var results = [];
    if (behaviors) {
        for (var i = 0, l = behaviors.length; i < l; i++) {
            var behavior = behaviors[i];
            if (type.isInstanceOfType(behavior)) {
                results.push(behavior);
            }
        }
    }
    return results;
}
$type = Sys.UI.VisibilityMode = function VisibilityMode() {
    /// <summary locid="M:J#Sys.UI.VisibilityMode.#ctor">Describes how a DOM element should disappear when its visible property is set to false.</summary>
    /// <field name="hide" type="Number" integer="true" static="true" locid="F:J#Sys.UI.VisibilityMode.hide">The element disappears but its space remains</field>
    /// <field name="collapse" type="Number" integer="true" static="true" locid="F:J#Sys.UI.VisibilityMode.collapse">The element disappears and the space it occupied is collapsed.</field>
    if (arguments.length !== 0) throw Error.parameterCount();
    throw Error.notImplemented();
}
$type.prototype = {
    hide: 0,
    collapse: 1
}
$type.registerEnum("Sys.UI.VisibilityMode");

$type = Sys.UI.Control = function Control(element) {
    /// <summary locid="M:J#Sys.UI.Control.#ctor"></summary>
    /// <param name="element" domElement="true">The DOM element the behavior is associated with.</param>
    var e = Function._validateParams(arguments, [
        {name: "element", domElement: true}
    ]);
    if (e) throw e;
    if (element.control) throw Error.invalidOperation(Sys.Res.controlAlreadyDefined);
    Sys.UI.Control.initializeBase(this);

    this._element = element;
    element.control = this;
    var role = this.get_role();
    if (role) {
        element.setAttribute("role", role);
    }
}
$type.prototype = {
    _parent: null,
    _visibilityMode: Sys.UI.VisibilityMode.hide,

    get_element: function Control$get_element() {
        /// <value domElement="true" locid="P:J#Sys.UI.Control.element">The DOM element this behavior is associated with</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._element;
    },
    get_id: function Control$get_id() {
        /// <value type="String" locid="P:J#Sys.UI.Control.id"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._id || (this._element ? this._element.id : "");
    },
    get_parent: function Control$get_parent() {
        /// <value type="Sys.UI.Control" locid="P:J#Sys.UI.Control.parent"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        if (this._parent) return this._parent;
        if (!this._element) return null;
        
        var parentElement = this._element.parentNode;
        while (parentElement) {
            if (parentElement.control) {
                return parentElement.control;
            }
            parentElement = parentElement.parentNode;
        }
        return null;
    },
    set_parent: function Control$set_parent(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Sys.UI.Control}]);
        if (e) throw e;
        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
        var parents = [this];
        var current = value;
        while (current) {
            if (Array.contains(parents, current)) throw Error.invalidOperation(Sys.Res.circularParentChain);
            parents.push(current);
            current = current.get_parent();
        }
        this._parent = value;
    },
    get_role: function Control$get_role() {
        /// <value type="String" locid="P:J#Sys.UI.Control.role"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return null;
    },
    get_visibilityMode: function Control$get_visibilityMode() {
        /// <value type="Sys.UI.VisibilityMode" locid="P:J#Sys.UI.Control.visibilityMode"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
        return Sys.UI.DomElement.getVisibilityMode(this._element);
    },
    set_visibilityMode: function Control$set_visibilityMode(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Sys.UI.VisibilityMode}]);
        if (e) throw e;
        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
        Sys.UI.DomElement.setVisibilityMode(this._element, value);
    },
    get_visible: function Control$get_visible() {
        /// <value type="Boolean" locid="P:J#Sys.UI.Control.visible"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
        return Sys.UI.DomElement.getVisible(this._element);
    },
    set_visible: function Control$set_visible(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
        if (e) throw e;
        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
        Sys.UI.DomElement.setVisible(this._element, value)
    },
    addCssClass: function Control$addCssClass(className) {
        /// <summary locid="M:J#Sys.UI.Control.addCssClass">Adds a CSS class to the control if it doesn't already have it.</summary>
        /// <param name="className" type="String">The name of the CSS class to add.</param>
        var e = Function._validateParams(arguments, [
            {name: "className", type: String}
        ]);
        if (e) throw e;
        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
        Sys.UI.DomElement.addCssClass(this._element, className);
    },
    dispose: function Control$dispose() {
        Sys.UI.Control.callBaseMethod(this, 'dispose');
        if (this._element) {
            this._element.control = null;
            delete this._element;
        }
        if (this._parent) delete this._parent;
    },
    onBubbleEvent: function Control$onBubbleEvent(source, args) {
        /// <summary locid="M:J#Sys.UI.Control.onBubbleEvent"></summary>
        /// <param name="source">The object that triggered the event.</param>
        /// <param name="args" type="Sys.EventArgs">The event arguments.</param>
        /// <returns type="Boolean">False, because the event was not handled and should bubble up further. Derived classes should override that and return true whenever they handle the event to prevent it from bubbling up.</returns>
        var e = Function._validateParams(arguments, [
            {name: "source"},
            {name: "args", type: Sys.EventArgs}
        ]);
        if (e) throw e;
        return false;
    },
    raiseBubbleEvent: function Control$raiseBubbleEvent(source, args) {
        /// <summary locid="M:J#Sys.UI.Control.raiseBubbleEvent"></summary>
        /// <param name="source">The object that triggered the event.</param>
        /// <param name="args" type="Sys.EventArgs">The event arguments.</param>
        var e = Function._validateParams(arguments, [
            {name: "source"},
            {name: "args", type: Sys.EventArgs}
        ]);
        if (e) throw e;
        this._raiseBubbleEvent(source, args);
    },
    _raiseBubbleEvent: function Control$_raiseBubbleEvent(source, args) {
        var currentTarget = this.get_parent();
        while (currentTarget) {
            if (currentTarget.onBubbleEvent(source, args)) {
                return;
            }
            currentTarget = currentTarget.get_parent();
        }
    },
    removeCssClass: function Control$removeCssClass(className) {
        /// <summary locid="M:J#Sys.UI.Control.removeCssClass">Removes a CSS class from the control.</summary>
        /// <param name="className" type="String">The name of the CSS class to remove.</param>
        var e = Function._validateParams(arguments, [
            {name: "className", type: String}
        ]);
        if (e) throw e;
        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
        Sys.UI.DomElement.removeCssClass(this._element, className);
    },
    toggleCssClass: function Control$toggleCssClass(className) {
        /// <summary locid="M:J#Sys.UI.Control.toggleCssClass">Toggles a CSS class on and off on the control.</summary>
        /// <param name="className" type="String">The name of the CSS class to toggle.</param>
        var e = Function._validateParams(arguments, [
            {name: "className", type: String}
        ]);
        if (e) throw e;
        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
        Sys.UI.DomElement.toggleCssClass(this._element, className);
    }
}
$type.registerClass('Sys.UI.Control', Sys.Component);



$type = Sys.HistoryEventArgs = function HistoryEventArgs(state) {
    /// <summary locid="M:J#Sys.HistoryEventArgs.#ctor"></summary>
    /// <param name="state" type="Object"></param>
    var e = Function._validateParams(arguments, [
        {name: "state", type: Object}
    ]);
    if (e) throw e;
    Sys.HistoryEventArgs.initializeBase(this);
    this._state = state;
}
$type.prototype = {
    get_state: function HistoryEventArgs$get_state() {
        /// <value type="Object" locid="P:J#Sys.HistoryEventArgs.state"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._state;
    }
}
$type.registerClass('Sys.HistoryEventArgs', Sys.EventArgs);
$type = Sys.Application;
$type._currentEntry = '';
$type._initialState = null;
$type._state = {};

$prototype = Sys._Application.prototype;
$prototype.get_stateString = function _Application$get_stateString() {
    /// <summary locid="M:J#Sys._Application.get_stateString"></summary>
    if (arguments.length !== 0) throw Error.parameterCount();
    var hash = null;
    
    if (isBrowser("Firefox")) {
        var href = window.location.href;
        var hashIndex = href.indexOf('#');
        if (hashIndex !== -1) {
            hash = href.substring(hashIndex + 1);
        }
        else {
            hash = "";
        }
        return hash;
    }
    else {
        hash = window.location.hash;
    }
    
    if (hash.length && (hash.charAt(0) === '#')) {
        hash = hash.substring(1);
    }

    return hash;
};

$prototype.get_enableHistory = function _Application$get_enableHistory() {
    /// <summary locid="M:J#Sys._Application.get_enableHistory"></summary>
    if (arguments.length !== 0) throw Error.parameterCount();
    return !!this._enableHistory;
};

$prototype.set_enableHistory = function _Application$set_enableHistory(value) {
    if (this._initialized && !this._initializing) {
        throw Error.invalidOperation(Sys.Res.historyCannotEnableHistory);
    }
    else if (this._historyEnabledInScriptManager && !value) {
        throw Error.invalidOperation(Sys.Res.invalidHistorySettingCombination);
    }
    this._enableHistory = value;
};

$prototype.add_navigate = function _Application$add_navigate(handler) {
    /// <summary locid="E:J#Sys.Application.navigate"></summary>
    /// <param name="handler" type="Function"></param>
    var e = Function._validateParams(arguments, [
        {name: "handler", type: Function}
    ]);
    if (e) throw e;
    this._addHandler("navigate", handler);
};

$prototype.remove_navigate = function _Application$remove_navigate(handler) {
    /// <summary locid="M:J#Sys._Application.remove_navigate"></summary>
    /// <param name="handler" type="Function"></param>
    var e = Function._validateParams(arguments, [
        {name: "handler", type: Function}
    ]);
    if (e) throw e;
    this._removeHandler("navigate", handler);
};

$prototype.addHistoryPoint = function _Application$addHistoryPoint(state, title) {
    /// <summary locid="M:J#Sys.Application.addHistoryPoint"></summary>
    /// <param name="state" type="Object">A dictionary of state bits that will be added to the main state   to form the global state of the new history point.   The state must be a string dictionary. The application is responsible   for converting the state bits from and into the relevant types.</param>
    /// <param name="title" type="String" optional="true" mayBeNull="true">The title for the new history point.</param>
    var e = Function._validateParams(arguments, [
        {name: "state", type: Object},
        {name: "title", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    if (!this._enableHistory) throw Error.invalidOperation(Sys.Res.historyCannotAddHistoryPointWithHistoryDisabled);
    for (var n in state) {
        var v = state[n];
        var t = typeof(v);
        if ((v !== null) && ((t === 'object') || (t === 'function') || (t === 'undefined'))) {
            throw Error.argument('state', Sys.Res.stateMustBeStringDictionary);
        }
    }
    this._ensureHistory();
    var initialState = this._state;
    for (var key in state) {
        var value = state[key];
        if (value === null) {
            if (typeof(initialState[key]) !== 'undefined') {
                delete initialState[key];
            }
        }
        else {
            initialState[key] = value;
        }
    }
    var entry = this._serializeState(initialState);
    this._historyPointIsNew = true;
    this._setState(entry, title);
    this._raiseNavigate();
};

$prototype.setServerId = function _Application$setServerId(clientId, uniqueId) {
    /// <summary locid="M:J#Sys.Application.setServerId"></summary>
    /// <param name="clientId" type="String"></param>
    /// <param name="uniqueId" type="String"></param>
    var e = Function._validateParams(arguments, [
        {name: "clientId", type: String},
        {name: "uniqueId", type: String}
    ]);
    if (e) throw e;
    this._clientId = clientId;
    this._uniqueId = uniqueId;
};

$prototype.setServerState = function _Application$setServerState(value) {
    /// <summary locid="M:J#Sys.Application.setServerState"></summary>
    /// <param name="value" type="String"></param>
    var e = Function._validateParams(arguments, [
        {name: "value", type: String}
    ]);
    if (e) throw e;
    this._ensureHistory();
    this._state.__s = value;
    this._updateHiddenField(value);
};

$prototype._deserializeState = function _Application$_deserializeState(entry) {
    var result = {};
    entry = entry || '';
    var serverSeparator = entry.indexOf('&&');
    if ((serverSeparator !== -1) && (serverSeparator + 2 < entry.length)) {
        result.__s = entry.substr(serverSeparator + 2);
        entry = entry.substr(0, serverSeparator);
    }
    var tokens = entry.split('&');
    for (var i = 0, l = tokens.length; i < l; i++) {
        var token = tokens[i];
        var equal = token.indexOf('=');
        if ((equal !== -1) && (equal + 1 < token.length)) {
            var name = token.substr(0, equal);
            var value = token.substr(equal + 1);
            result[name] = decodeURIComponent(value);
        }
    }
    return result;
};

$prototype._enableHistoryInScriptManager = function _Application$_enableHistoryInScriptManager() {
    this._enableHistory = true;
    this._historyEnabledInScriptManager = true;
};

$prototype._ensureHistory = function _Application$_ensureHistory() {
    if (!this._historyInitialized && this._enableHistory) {
        if (isBrowser("InternetExplorer") && (Sys.Browser.documentMode < 8)) {
            this._historyFrame = Sys.get('#__historyFrame');
            if (!this._historyFrame) throw Error.invalidOperation(Sys.Res.historyMissingFrame);
            this._ignoreIFrame = true;
        }
        this._timerHandler = Function.createDelegate(this, this._onIdle);
        this._timerCookie = window.setTimeout(this._timerHandler, 100);
        
        var e;
        try {
            this._initialState = this._deserializeState(this.get_stateString());
        }
        catch(e) {}
        
        this._historyInitialized = true;
    }
};

$prototype._navigate = function _Application$_navigate(entry) {
    this._ensureHistory();

    var state = this._deserializeState(entry);
    
    if (this._uniqueId) {
        var oldServerEntry = this._state.__s || '';
        var newServerEntry = state.__s || '';
        if (newServerEntry !== oldServerEntry) {
            this._updateHiddenField(newServerEntry);
            __doPostBack(this._uniqueId, newServerEntry);
            this._state = state;
            return;
        }
    }
    this._setState(entry);
    this._state = state;
    this._raiseNavigate();
};

$prototype._onIdle = function _Application$_onIdle() {
    delete this._timerCookie;
    
    var entry = this.get_stateString();
    if (entry !== this._currentEntry) {
        if (!this._ignoreTimer) {
            this._historyPointIsNew = false;
            this._navigate(entry);
        }
    }
    else {
        this._ignoreTimer = false;
    }
    this._timerCookie = window.setTimeout(this._timerHandler, 100);
};

$prototype._onIFrameLoad = function _Application$_onIFrameLoad(entry) {
    this._ensureHistory();
    if (!this._ignoreIFrame) {
        this._historyPointIsNew = false;
        this._navigate(entry);
    }
    this._ignoreIFrame = false;
};

$prototype._onPageRequestManagerBeginRequest = function _Application$_onPageRequestManagerBeginRequest(sender, args) {
    this._ignoreTimer = true;
    this._originalTitle = document.title;
};

$prototype._onPageRequestManagerEndRequest = function _Application$_onPageRequestManagerEndRequest(sender, args) {
    var dataItem = args.get_dataItems()[this._clientId];
    var originalTitle = this._originalTitle;
    this._originalTitle = null;

    var eventTarget = Sys.get("#__EVENTTARGET");
    if (eventTarget && eventTarget.value === this._uniqueId) {
        eventTarget.value = '';
    }
    if (typeof(dataItem) !== 'undefined') {
        this.setServerState(dataItem);
        this._historyPointIsNew = true;
    }
    else {
        this._ignoreTimer = false;
    }
    var entry = this._serializeState(this._state);
    if (entry !== this._currentEntry) {
        this._ignoreTimer = true;
        if (typeof(originalTitle) === "string") {
            if (!isBrowser("InternetExplorer") || Sys.Browser.version > 7) {
                var newTitle = document.title;
                document.title = originalTitle;
                this._setState(entry);
                document.title = newTitle;
            }
            else {
                this._setState(entry);
            }
            this._raiseNavigate();
        }
        else {
            this._setState(entry);
            this._raiseNavigate();
        }
    }
};

$prototype._raiseNavigate = function _Application$_raiseNavigate() {
    var isNew = this._historyPointIsNew;
    var stateClone = {};
    for (var key in this._state) {
        if (key !== '__s') {
            stateClone[key] = this._state[key];
        }
    }
    var args = new Sys.HistoryEventArgs(stateClone);
    Sys.Observer.raiseEvent(this, "navigate", args);
    if (!isNew) {
        var err;
        try {
            if (isBrowser("Firefox") && window.location.hash &&
                (!window.frameElement || window.top.location.hash)) {
                (Sys.Browser.version < 3.5) ?
                    window.history.go(0) :
                    location.hash = this.get_stateString();
            }
        }
        catch(err) {
        }
    }
};

$prototype._serializeState = function _Application$_serializeState(state) {
    var serialized = [];
    for (var key in state) {
        var value = state[key];
        if (key === '__s') {
            var serverState = value;
        }
        else {
            if (key.indexOf('=') !== -1) throw Error.argument('state', Sys.Res.stateFieldNameInvalid);
            serialized.push(key + '=' + encodeURIComponent(value));
        }
    }
    return serialized.join('&') + (serverState ? '&&' + serverState : '');
};

$prototype._setState = function _Application$_setState(entry, title) {
    if (this._enableHistory) {
        entry = entry || '';
        if (entry !== this._currentEntry) {
            if (window.theForm) {
                var action = window.theForm.action;
                var hashIndex = action.indexOf('#');
                window.theForm.action = ((hashIndex !== -1) ? action.substring(0, hashIndex) : action) + '#' + entry;
            }
        
            if (this._historyFrame && this._historyPointIsNew) {
                this._ignoreIFrame = true;
                var frameDoc = this._historyFrame.contentWindow.document;
                frameDoc.open("javascript:'<html></html>'");
                frameDoc.write("<html><head><title>" + (title || document.title) +
                    "</title><scri" + "pt type=\"text/javascript\">parent.Sys.Application._onIFrameLoad(" + 
                    Sys.Serialization.JavaScriptSerializer.serialize(entry) +
                    ");</scri" + "pt></head><body></body></html>");
                frameDoc.close();
            }
            this._ignoreTimer = false;
            this._currentEntry = entry;
            if (this._historyFrame || this._historyPointIsNew) {
                var currentHash = this.get_stateString();
                if (entry !== currentHash) {
                    var loc = document.location;
                    if (loc.href.length - loc.hash.length + entry.length > 2048) {
                        throw Error.invalidOperation(String.format(Sys.Res.urlTooLong, 2048));
                    }
                    window.location.hash = entry;
                    this._currentEntry = this.get_stateString();
                    if ((typeof(title) !== 'undefined') && (title !== null)) {
                        document.title = title;
                    }
                }
            }
            this._historyPointIsNew = false;
        }
    }
};

$prototype._updateHiddenField = function _Application$_updateHiddenField(value) {
    if (this._clientId) {
        var serverStateField = document.getElementById(this._clientId);
        if (serverStateField) {
            serverStateField.value = value;
        }
    }
};



if (!window.XMLHttpRequest) {
    window.XMLHttpRequest = function window$XMLHttpRequest() {
        var ex, progIDs = [ 'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP' ];
        for (var i = 0, l = progIDs.length; i < l; i++) {
            try {
                return new ActiveXObject(progIDs[i]);
            }
            catch (ex) {
            }
        }
        return null;
    }
}

Type.registerNamespace('Sys.Net');

$type = Sys.Net.WebRequestExecutor = function WebRequestExecutor() {
    /// <summary locid="M:J#Sys.Net.WebRequestExecutor.#ctor">Base class for WebRequestExecutors which handle the actual execution of a WebRequest</summary>
    if (arguments.length !== 0) throw Error.parameterCount();
    this._webRequest = null;
    this._resultObject = null;
}


$type.prototype = {
    get_started: function WebRequestExecutor$get_started() {
        /// <value type="Boolean" locid="P:J#Sys.Net.WebRequestExecutor.started"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        throw Error.notImplemented();
    },
    get_responseAvailable: function WebRequestExecutor$get_responseAvailable() {
        /// <value type="Boolean" locid="P:J#Sys.Net.WebRequestExecutor.responseAvailable"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        throw Error.notImplemented();
    },
    get_timedOut: function WebRequestExecutor$get_timedOut() {
        /// <value type="Boolean" locid="P:J#Sys.Net.WebRequestExecutor.timedOut"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        throw Error.notImplemented();
    },
    get_aborted: function WebRequestExecutor$get_aborted() {
        /// <value type="Boolean" locid="P:J#Sys.Net.WebRequestExecutor.aborted"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        throw Error.notImplemented();
    },
    get_responseData: function WebRequestExecutor$get_responseData() {
        /// <value type="String" locid="P:J#Sys.Net.WebRequestExecutor.responseData"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        throw Error.notImplemented();
    },
    get_statusCode: function WebRequestExecutor$get_statusCode() {
        /// <value type="Number" locid="P:J#Sys.Net.WebRequestExecutor.statusCode"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        throw Error.notImplemented();
    },
    get_statusText: function WebRequestExecutor$get_statusText() {
        /// <value type="String" locid="P:J#Sys.Net.WebRequestExecutor.statusText"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        throw Error.notImplemented();
    },
    get_xml: function WebRequestExecutor$get_xml() {
        /// <value locid="P:J#Sys.Net.WebRequestExecutor.xml"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        throw Error.notImplemented();
    },
    executeRequest: function WebRequestExecutor$executeRequest() {
        /// <summary locid="M:J#Sys.Net.WebRequestExecutor.executeRequest">Begins execution of the request.</summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        throw Error.notImplemented();
    },
    abort: function WebRequestExecutor$abort() {
        /// <summary locid="M:J#Sys.Net.WebRequestExecutor.abort">Aborts the request.</summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        throw Error.notImplemented();
    },
    getAllResponseHeaders: function WebRequestExecutor$getAllResponseHeaders() {
        /// <summary locid="M:J#Sys.Net.WebRequestExecutor.getAllResponseHeaders">Returns all the responses header.</summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        throw Error.notImplemented();
    },
    getResponseHeader: function WebRequestExecutor$getResponseHeader(header) {
        /// <summary locid="M:J#Sys.Net.WebRequestExecutor.getResponseHeader">Returns a response header.</summary>
        /// <param name="header" type="String">The requested header.</param>
        var e = Function._validateParams(arguments, [
            {name: "header", type: String}
        ]);
        if (e) throw e;
        throw Error.notImplemented();
    },
    get_webRequest: function WebRequestExecutor$get_webRequest() {
        /// <value type="Sys.Net.WebRequest" locid="P:J#Sys.Net.WebRequestExecutor.webRequest"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._webRequest;
    },
    _set_webRequest: function WebRequestExecutor$_set_webRequest(value) {
        if (this.get_started()) {
            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOnceStarted, 'set_webRequest'));
        }
        this._webRequest = value;
    },
    get_object: function WebRequestExecutor$get_object() {
        /// <value locid="P:J#Sys.Net.WebRequestExecutor.object">The JSON eval'd response.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        var result = this._resultObject;
        if (!result) {
            this._resultObject = result = Sys.Serialization.JavaScriptSerializer.deserialize(this.get_responseData());
        }
        return result;
    }
}
$type.registerClass('Sys.Net.WebRequestExecutor');
Sys.Net.XMLDOM = function XMLDOM(markup) {
    /// <summary locid="M:J#Sys.Net.XMLDOM.#ctor">Creates an XML document from an XML string.</summary>
    /// <param name="markup" type="String">The XML string to parse.</param>
    var e = Function._validateParams(arguments, [
        {name: "markup", type: String}
    ]);
    if (e) throw e;
    if (!window.DOMParser) {
        var ex, progIDs = [ 'Msxml2.DOMDocument.3.0', 'Msxml2.DOMDocument' ];
        for (var i = 0, l = progIDs.length; i < l; i++) {
            try {
                var xmlDOM = new ActiveXObject(progIDs[i]);
                xmlDOM.async = false;
                xmlDOM.loadXML(markup);
                xmlDOM.setProperty('SelectionLanguage', 'XPath');
                return xmlDOM;
            }
            catch (ex) {
            }
        }
    }
    else {
        try {
            var domParser = new window.DOMParser();
            return domParser.parseFromString(markup, 'text/xml');
        }
        catch (ex) {
        }
    }
    return null;
}

$type = Sys.Net.XMLHttpExecutor = function XMLHttpExecutor() {
    /// <summary locid="M:J#Sys.Net.XMLHttpExecutor.#ctor">XMLHttpExecutor</summary>
    if (arguments.length !== 0) throw Error.parameterCount();

    Sys.Net.XMLHttpExecutor.initializeBase(this);

    var _this = this;

    this._onReadyStateChange = (function () {
        /*
            readyState values:
            0 = uninitialized
            1 = loading
            2 = loaded
            3 = interactive
            4 = complete
        */
        if (_this._xmlHttpRequest.readyState === 4 /*complete*/) {
            try {
                if (typeof(_this._xmlHttpRequest.status) === "undefined") {
                    return;
                }
            }
            catch(ex) {
                return;
            }
            
            _this._clearTimer();
            _this._responseAvailable = true;
                _this._webRequest.completed(Sys.EventArgs.Empty);
                if (_this._xmlHttpRequest) {
                    _this._xmlHttpRequest.onreadystatechange = Function.emptyMethod;
                    _this._xmlHttpRequest = null;
                }
        }
    });

    this._clearTimer = (function() {
        if (_this._timer) {
            window.clearTimeout(_this._timer);
            _this._timer = null;
        }
    });

    this._onTimeout = (function() {
        if (!_this._responseAvailable) {
            _this._clearTimer();
            _this._timedOut = true;
            var xhr = _this._xmlHttpRequest;
            xhr.onreadystatechange = Function.emptyMethod;
            xhr.abort();
            _this._webRequest.completed(Sys.EventArgs.Empty);
            _this._xmlHttpRequest = null;
        }
    });

}

$type.prototype = {

    get_timedOut: function XMLHttpExecutor$get_timedOut() {
        /// <value type="Boolean" locid="P:J#Sys.Net.XMLHttpExecutor.timedOut">True if the executor has timed out.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return !!this._timedOut;
    },

    get_started: function XMLHttpExecutor$get_started() {
        /// <value type="Boolean" locid="P:J#Sys.Net.XMLHttpExecutor.started">True if the executor has started.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return !!this._started;
    },

    get_responseAvailable: function XMLHttpExecutor$get_responseAvailable() {
        /// <value type="Boolean" locid="P:J#Sys.Net.XMLHttpExecutor.responseAvailable">True if a response is available.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return !!this._responseAvailable;
    },

    get_aborted: function XMLHttpExecutor$get_aborted() {
        /// <value type="Boolean" locid="P:J#Sys.Net.XMLHttpExecutor.aborted">True if the executor has been aborted.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return !!this._aborted;
    },

    executeRequest: function XMLHttpExecutor$executeRequest() {
        /// <summary locid="M:J#Sys.Net.XMLHttpExecutor.executeRequest">Invokes the request.</summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        var request = this.get_webRequest();
        this._webRequest = request;

        if (this._started) {
            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOnceStarted, 'executeRequest'));
        }
        if (!this._webRequest) {
            throw Error.invalidOperation(Sys.Res.nullWebRequest);
        }

        var body = request.get_body();
        var headers = request.get_headers();
        var xhr = new XMLHttpRequest();
        this._xmlHttpRequest = xhr;
        xhr.onreadystatechange = this._onReadyStateChange;
        var verb = request.get_httpVerb();
        xhr.open(verb, request.getResolvedUrl(), true /*async*/);
        xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
        if (headers) {
            for (var header in headers) {
                var val = headers[header];
                if (typeof(val) !== "function")
                    xhr.setRequestHeader(header, val);
            }
        }

        if (verb.toLowerCase() === "post") {
            if ((headers === null) || !headers['Content-Type']) {
                xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
            }

            if (!body) {
                body = "";
            }
        }

        var timeout = request.get_timeout();
        if (timeout > 0) {
            this._timer = window.setTimeout(Function.createDelegate(this, this._onTimeout), timeout);
        }
        xhr.send(body);
        this._started = true;
    },

    getResponseHeader: function XMLHttpExecutor$getResponseHeader(header) {
        /// <summary locid="M:J#Sys.Net.XMLHttpExecutor.getResponseHeader">Returns a response header.</summary>
        /// <param name="header" type="String">The requested header.</param>
        /// <returns type="String">The value of the header.</returns>
        var e = Function._validateParams(arguments, [
            {name: "header", type: String}
        ]);
        if (e) throw e;
        if (!this._responseAvailable) {
            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'getResponseHeader'));
        }
        if (!this._xmlHttpRequest) {
            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'getResponseHeader'));
        }

        var er, result;
        try {
            result = this._xmlHttpRequest.getResponseHeader(header);
        } catch (er) {
        }
        if (!result) result = "";
        return result;
    },

    getAllResponseHeaders: function XMLHttpExecutor$getAllResponseHeaders() {
        /// <summary locid="M:J#Sys.Net.XMLHttpExecutor.getAllResponseHeaders">Returns all the responses header.</summary>
        /// <returns type="String">The text of all the headers.</returns>
        if (arguments.length !== 0) throw Error.parameterCount();
        if (!this._responseAvailable) {
            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'getAllResponseHeaders'));
        }
        if (!this._xmlHttpRequest) {
            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'getAllResponseHeaders'));
        }

        return this._xmlHttpRequest.getAllResponseHeaders();
    },

    get_responseData: function XMLHttpExecutor$get_responseData() {
        /// <value type="String" locid="P:J#Sys.Net.XMLHttpExecutor.responseData">The text of the response.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        if (!this._responseAvailable) {
            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_responseData'));
        }
        if (!this._xmlHttpRequest) {
            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_responseData'));
        }

        return this._xmlHttpRequest.responseText;
    },

    get_statusCode: function XMLHttpExecutor$get_statusCode() {
        /// <value type="Number" locid="P:J#Sys.Net.XMLHttpExecutor.statusCode">The status code of the response.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        if (!this._responseAvailable) {
            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_statusCode'));
        }
        if (!this._xmlHttpRequest) {
            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_statusCode'));
        }
        var ex, result = 0;
        try {
            result = this._xmlHttpRequest.status;
        }
        catch(ex) {
        }
        return result;
    },

    get_statusText: function XMLHttpExecutor$get_statusText() {
        /// <value type="String" locid="P:J#Sys.Net.XMLHttpExecutor.statusText">The status text of the repsonse.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        if (!this._responseAvailable) {
            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_statusText'));
        }
        if (!this._xmlHttpRequest) {
            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_statusText'));
        }

        return this._xmlHttpRequest.statusText;
    },

    get_xml: function XMLHttpExecutor$get_xml() {
        /// <value locid="P:J#Sys.Net.XMLHttpExecutor.xml">The response in xml format.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        if (!this._responseAvailable) {
            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_xml'));
        }
        if (!this._xmlHttpRequest) {
            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_xml'));
        }
        var xhr = this._xmlHttpRequest;
        var xml = xhr.responseXML;
        if (!xml || !xml.documentElement) {

            xml = Sys.Net.XMLDOM(xhr.responseText);

            if (!xml || !xml.documentElement)
                return null;
        }
        else if (navigator.userAgent.indexOf('MSIE') !== -1) {
            xml.setProperty('SelectionLanguage', 'XPath');
        }

        if (xml.documentElement.namespaceURI === "http://www.mozilla.org/newlayout/xml/parsererror.xml" &&
            xml.documentElement.tagName === "parsererror") {
            return null;
        }
        
        if (xml.documentElement.firstChild && xml.documentElement.firstChild.tagName === "parsererror") {
            return null;
        }
        
        return xml;
    },

    abort: function XMLHttpExecutor$abort() {
        /// <summary locid="M:J#Sys.Net.XMLHttpExecutor.abort">Aborts the request.</summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        if (!this._started) {
            throw Error.invalidOperation(Sys.Res.cannotAbortBeforeStart);
        }

        if (this._aborted || this._responseAvailable || this._timedOut)
            return;

        this._aborted = true;

        this._clearTimer();
        var xhr = this._xmlHttpRequest;
        if (xhr && !this._responseAvailable) {

            xhr.onreadystatechange = Function.emptyMethod;
            xhr.abort();
            
            this._xmlHttpRequest = null;            

            this._webRequest.completed(Sys.EventArgs.Empty);
        }
    }
}
$type.registerClass('Sys.Net.XMLHttpExecutor', Sys.Net.WebRequestExecutor);
$type = Sys.Net._WebRequestManager = function _WebRequestManager() {
    /// <summary locid="P:J#Sys.Net.WebRequestManager.#ctor"></summary>
    if (arguments.length !== 0) throw Error.parameterCount();
    this._defaultExecutorType = "Sys.Net.XMLHttpExecutor";
}

$type.prototype = {
    add_invokingRequest: function _WebRequestManager$add_invokingRequest(handler) {
        /// <summary locid="E:J#Sys.Net.WebRequestManager.invokingRequest"></summary>
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        Sys.Observer.addEventHandler(this, "invokingRequest", handler);
    },
    remove_invokingRequest: function _WebRequestManager$remove_invokingRequest(handler) {
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        Sys.Observer.removeEventHandler(this, "invokingRequest", handler);
    },

    add_completedRequest: function _WebRequestManager$add_completedRequest(handler) {
        /// <summary locid="E:J#Sys.Net.WebRequestManager.completedRequest"></summary>
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        Sys.Observer.addEventHandler(this, "completedRequest", handler);
    },
    remove_completedRequest: function _WebRequestManager$remove_completedRequest(handler) {
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        Sys.Observer.removeEventHandler(this, "completedRequest", handler);
    },
    get_defaultTimeout: function _WebRequestManager$get_defaultTimeout() {
        /// <value type="Number" locid="P:J#Sys.Net.WebRequestManager.defaultTimeout">The default timeout for requests in milliseconds.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._defaultTimeout || 0;
    },
    set_defaultTimeout: function _WebRequestManager$set_defaultTimeout(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
        if (e) throw e;
        if (value < 0) {
            throw Error.argumentOutOfRange("value", value, Sys.Res.invalidTimeout);
        }

        this._defaultTimeout = value;
    },

    get_defaultExecutorType: function _WebRequestManager$get_defaultExecutorType() {
        /// <value type="String" locid="P:J#Sys.Net.WebRequestManager.defaultExecutorType">The default executor type name.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._defaultExecutorType;
    },
    set_defaultExecutorType: function _WebRequestManager$set_defaultExecutorType(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
        if (e) throw e;
        this._defaultExecutorType = value;
    },

    executeRequest: function _WebRequestManager$executeRequest(webRequest) {
        /// <summary locid="M:J#Sys.Net.WebRequestManager.executeRequest">Executes a request.</summary>
        /// <param name="webRequest" type="Sys.Net.WebRequest">The webRequest to execute.</param>
        var e = Function._validateParams(arguments, [
            {name: "webRequest", type: Sys.Net.WebRequest}
        ]);
        if (e) throw e;
        var executor = webRequest.get_executor();
        if (!executor) {
            var er, failed;
            try {
                var executorType = window.eval(this._defaultExecutorType);
                executor = new executorType();
            }
            catch (er) {
                failed = true;
            }

            if (failed  || !Sys.Net.WebRequestExecutor.isInstanceOfType(executor) || !executor) {
                throw Error.argument("defaultExecutorType", String.format(Sys.Res.invalidExecutorType, this._defaultExecutorType));
            }

            webRequest.set_executor(executor);
        }

        if (!executor.get_aborted()) {
            var evArgs = new Sys.Net.NetworkRequestEventArgs(webRequest);
            Sys.Observer.raiseEvent(this, "invokingRequest", evArgs);
            if (!evArgs.get_cancel()) {
                executor.executeRequest();
            }
        }
    }
}

$type.registerClass('Sys.Net._WebRequestManager');

Sys.Net.WebRequestManager = new Sys.Net._WebRequestManager();
$type = Sys.Net.NetworkRequestEventArgs = function NetworkRequestEventArgs(webRequest) {
    /// <summary locid="M:J#Sys.Net.NetworkRequestEventArgs.#ctor">This class is raised by the WebRequestManager when a WebRequest is about to be executed.</summary>
    /// <param name="webRequest" type="Sys.Net.WebRequest">The identifier for the event.</param>
    var e = Function._validateParams(arguments, [
        {name: "webRequest", type: Sys.Net.WebRequest}
    ]);
    if (e) throw e;
    Sys.Net.NetworkRequestEventArgs.initializeBase(this);
    this._webRequest = webRequest;
}

$type.prototype = {
    get_webRequest: function NetworkRequestEventArgs$get_webRequest() {
        /// <value type="Sys.Net.WebRequest" locid="P:J#Sys.Net.NetworkRequestEventArgs.webRequest">The request about to be executed.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._webRequest;
    }
}

$type.registerClass('Sys.Net.NetworkRequestEventArgs', Sys.CancelEventArgs);
$type = Sys.Net.WebRequest = function WebRequest() {
    /// <summary locid="M:J#Sys.Net.WebRequest.#ctor">WebRequest class</summary>
    if (arguments.length !== 0) throw Error.parameterCount();
    this._url = "";
    this._headers = { };
    this._body = null;
    this._userContext = null;
    this._httpVerb = null;
}

$type.prototype = {
    add_completed: function WebRequest$add_completed(handler) {
        /// <summary locid="E:J#Sys.Net.WebRequest.completed"></summary>
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        Sys.Observer.addEventHandler(this, "completed", handler);
    },
    remove_completed: function WebRequest$remove_completed(handler) {
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        Sys.Observer.removeEventHandler(this, "completed", handler);
    },

    completed: function WebRequest$completed(eventArgs) {
        /// <summary locid="M:J#Sys.Net.WebRequest.completed">The completed method should be called when the request is completed.</summary>
        /// <param name="eventArgs" type="Sys.EventArgs">The event args to raise the event with.</param>
        var e = Function._validateParams(arguments, [
            {name: "eventArgs", type: Sys.EventArgs}
        ]);
        if (e) throw e;
        function raise(source, sender, eventName) {
            var handler = Sys.Observer._getContext(source, true).events.getHandler(eventName);
            if (handler) {
                handler(sender, eventArgs);
            }
        }
        raise(Sys.Net.WebRequestManager, this._executor, "completedRequest");
        raise(this, this._executor, "completed");
        Sys.Observer.clearEventHandlers(this, "completed");
    },

    get_url: function WebRequest$get_url() {
        /// <value type="String" locid="P:J#Sys.Net.WebRequest.url">The url.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._url;
    },
    set_url: function WebRequest$set_url(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
        if (e) throw e;
        this._url = value;
    },

    get_headers: function WebRequest$get_headers() {
        /// <value locid="P:J#Sys.Net.WebRequest.headers">The headers dictionary for the request.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._headers;
    },

    get_httpVerb: function WebRequest$get_httpVerb() {
        /// <value type="String" locid="P:J#Sys.Net.WebRequest.httpVerb">The httpVerb for the request.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        if (this._httpVerb === null) {
            if (this._body === null) {
                return "GET";
            }
            return "POST";
        }
        return this._httpVerb;
    },
    set_httpVerb: function WebRequest$set_httpVerb(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
        if (e) throw e;
        if (value.length === 0) {
            throw Error.argument('value', Sys.Res.invalidHttpVerb);
        }
        this._httpVerb = value;
    },

    get_body: function WebRequest$get_body() {
        /// <value mayBeNull="true" locid="P:J#Sys.Net.WebRequest.body">The body of the request.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._body;
    },
    set_body: function WebRequest$set_body(value) {
        var e = Function._validateParams(arguments, [{name: "value", mayBeNull: true}]);
        if (e) throw e;
        this._body = value;
    },

    get_userContext: function WebRequest$get_userContext() {
        /// <value mayBeNull="true" locid="P:J#Sys.Net.WebRequest.userContext">The userContext of the request.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._userContext;
    },
    set_userContext: function WebRequest$set_userContext(value) {
        var e = Function._validateParams(arguments, [{name: "value", mayBeNull: true}]);
        if (e) throw e;
        this._userContext = value;
    },

    get_executor: function WebRequest$get_executor() {
        /// <value type="Sys.Net.WebRequestExecutor" locid="P:J#Sys.Net.WebRequest.executor">The executor for the request.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._executor || null;
    },
    set_executor: function WebRequest$set_executor(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Sys.Net.WebRequestExecutor}]);
        if (e) throw e;
        if (this._executor && this._executor.get_started()) {
            throw Error.invalidOperation(Sys.Res.setExecutorAfterActive);
        }
        this._executor = value;
        value._set_webRequest(this);
    },

    get_timeout: function WebRequest$get_timeout() {
        /// <value type="Number" locid="P:J#Sys.Net.WebRequest.timeout">The timeout in milliseconds for the request.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._timeout || Sys.Net.WebRequestManager.get_defaultTimeout();
    },
    set_timeout: function WebRequest$set_timeout(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
        if (e) throw e;
        if (value < 0) {
            throw Error.argumentOutOfRange("value", value, Sys.Res.invalidTimeout);
        }
        this._timeout = value;
    },

    getResolvedUrl: function WebRequest$getResolvedUrl() {
        /// <summary locid="M:J#raise">The getResolvedUrl method returns the url resolved against the base url of the page if set.</summary>
        /// <returns type="String">The resolved url for the request.</returns>
        if (arguments.length !== 0) throw Error.parameterCount();
        return Sys.Net.WebRequest._resolveUrl(this._url);
    },

    invoke: function WebRequest$invoke() {
        /// <summary locid="M:J#raise">Invokes the request</summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        if (this._invokeCalled) {
            throw Error.invalidOperation(Sys.Res.invokeCalledTwice);
        }
        Sys.Net.WebRequestManager.executeRequest(this);
        this._invokeCalled = true;
    }
}

$type._resolveUrl = function WebRequest$_resolveUrl(url, baseUrl) {
    if (url && url.indexOf('://') > 0) {
        return url;
    }

    if (!baseUrl || !baseUrl.length) {
        var baseElement = Sys.get('base');
        if (baseElement && baseElement.href && baseElement.href.length) {
            baseUrl = baseElement.href;
        }
        else {
            baseUrl = document.URL;
        }
    }

    var qsStart = baseUrl.indexOf('?');
    if (qsStart > 0) {
        baseUrl = baseUrl.substr(0, qsStart);
    }
    qsStart = baseUrl.indexOf('#');
    if (qsStart > 0) {
        baseUrl = baseUrl.substr(0, qsStart);
    }
    baseUrl = baseUrl.substr(0, baseUrl.lastIndexOf('/') + 1);

    if (!url || !url.length) {
        return baseUrl;
    }

    if (url.charAt(0) === '/') {
        var slashslash = baseUrl.indexOf('://');
        if (slashslash === -1) {
            throw Error.argument("baseUrl", Sys.Res.badBaseUrl1);
        }

        var nextSlash = baseUrl.indexOf('/', slashslash + 3);
        if (nextSlash === -1) {
            throw Error.argument("baseUrl", Sys.Res.badBaseUrl2);
        }

        return baseUrl.substr(0, nextSlash) + url;
    }
    else {
        var lastSlash = baseUrl.lastIndexOf('/');
        if (lastSlash === -1) {
            throw Error.argument("baseUrl", Sys.Res.badBaseUrl3);
        }

        return baseUrl.substr(0, lastSlash+1) + url;
    }
}

$type._createQueryString = function WebRequest$_createQueryString(queryString, encodeMethod, addParams) {
    encodeMethod = encodeMethod || encodeURIComponent;
    var i = 0, obj, val, arg, sb = new Sys.StringBuilder();
    if (queryString) {
        for (arg in queryString) {
            obj = queryString[arg];
            if (typeof(obj) === "function") continue;
            val = Sys.Serialization.JavaScriptSerializer.serialize(obj);
            if (i++) {
                sb.append('&');
            }
            sb.append(arg);
            sb.append('=');
            sb.append(encodeMethod(val));
        }
    }
    if (addParams) {
        if (i) {
            sb.append('&');
        }
        sb.append(addParams);
    }
    return sb.toString();
}

$type._createUrl = function WebRequest$_createUrl(url, queryString, addParams) {
    if (!queryString && !addParams) {
        return url;
    }
    var qs = Sys.Net.WebRequest._createQueryString(queryString, null, addParams);
    return qs.length
        ? url + ((url && url.indexOf('?') >= 0) ? "&" : "?") + qs
        : url;
}

$type.registerClass('Sys.Net.WebRequest');



Type.registerNamespace('Sys.Net');

$type = Sys.Net.WebServiceProxy = function WebServiceProxy() {
    var type = Object.getType(this);
    
    if (type._staticInstance && (typeof(type._staticInstance.get_enableJsonp) === "function")) {
        this._jsonp = (type._staticInstance.get_enableJsonp());
    }
}
$type.prototype = {
    get_timeout: function WebServiceProxy$get_timeout() {
        /// <value type="Number" locid="P:J#Sys.Net.WebServiceProxy.timeout">The timeout in milliseconds for the service.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._timeout || 0;
    },
    set_timeout: function WebServiceProxy$set_timeout(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
        if (e) throw e;
        if (value < 0) {
            throw Error.argumentOutOfRange('value', value, Sys.Res.invalidTimeout);
        }
        this._timeout = value;
    },
    get_defaultUserContext: function WebServiceProxy$get_defaultUserContext() {
        /// <value mayBeNull="true" locid="P:J#Sys.Net.WebServiceProxy.defaultUserContext">The default userContext for this service.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return (typeof(this._userContext) === "undefined") ? null : this._userContext;
    },
    set_defaultUserContext: function WebServiceProxy$set_defaultUserContext(value) {
        var e = Function._validateParams(arguments, [{name: "value", mayBeNull: true}]);
        if (e) throw e;
        this._userContext = value;
    },
    get_defaultSucceededCallback: function WebServiceProxy$get_defaultSucceededCallback() {
        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Net.WebServiceProxy.defaultSucceededCallback">Returns the default succeededCallback for this service.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._succeeded || null;
    },
    set_defaultSucceededCallback: function WebServiceProxy$set_defaultSucceededCallback(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
        if (e) throw e;
        this._succeeded = value;
    },
    get_defaultFailedCallback: function WebServiceProxy$get_defaultFailedCallback() {
        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Net.WebServiceProxy.defaultFailedCallback">Returns the default failedCallback for this service.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._failed || null;
    },
    set_defaultFailedCallback: function WebServiceProxy$set_defaultFailedCallback(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
        if (e) throw e;
        this._failed = value;
    },
    get_enableJsonp: function WebServiceProxy$get_enableJsonp() {
        /// <value type="Boolean" locid="P:J#Sys.Net.WebServiceProxy.enableJsonp">Specifies whether the service supports JSONP for cross domain calling.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return !!this._jsonp;
    },
    set_enableJsonp: function WebServiceProxy$set_enableJsonp(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
        if (e) throw e;
        this._jsonp = value;
    },
    get_path: function WebServiceProxy$get_path() {
        /// <value type="String" locid="P:J#Sys.Net.WebServiceProxy.path">The path to this service.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._path || null;
    },
    set_path: function WebServiceProxy$set_path(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
        if (e) throw e;
        this._path = value;
    },
    get_jsonpCallbackParameter: function WebServiceProxy$get_jsonpCallbackParameter() {
        /// <value type="String" locid="P:J#Sys.Net.WebServiceProxy.jsonpCallbackParameter">Specifies the parameter name that contains the callback function name for a JSONP request.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._callbackParameter || "callback";
    },
    set_jsonpCallbackParameter: function WebServiceProxy$set_jsonpCallbackParameter(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
        if (e) throw e;
        this._callbackParameter = value;
    },
    _invoke: function WebServiceProxy$_invoke(servicePath, methodName, useGet, params, onSuccess, onFailure, userContext) {
        /// <summary locid="M:J#Sys.Net.WebServiceProxy._invoke"></summary>
        /// <param name="servicePath" type="String">Path to the webservice</param>
        /// <param name="methodName" type="String">Method to invoke</param>
        /// <param name="useGet" type="Boolean">Controls whether requests use HttpGet</param>
        /// <param name="params">Method args.</param>
        /// <param name="onSuccess" type="Function" mayBeNull="true" optional="true">Success callback</param>
        /// <param name="onFailure" type="Function" mayBeNull="true" optional="true">Failure callback</param>
        /// <param name="userContext" mayBeNull="true" optional="true">Success callback</param>
        /// <returns type="Sys.Net.WebRequest" mayBeNull="true">Returns the request that was sent</returns>
        var e = Function._validateParams(arguments, [
            {name: "servicePath", type: String},
            {name: "methodName", type: String},
            {name: "useGet", type: Boolean},
            {name: "params"},
            {name: "onSuccess", type: Function, mayBeNull: true, optional: true},
            {name: "onFailure", type: Function, mayBeNull: true, optional: true},
            {name: "userContext", mayBeNull: true, optional: true}
        ]);
        if (e) throw e;

        onSuccess = onSuccess || this.get_defaultSucceededCallback();
        onFailure = onFailure || this.get_defaultFailedCallback();
        if (userContext === null || typeof userContext === 'undefined') userContext = this.get_defaultUserContext();
        return Sys.Net.WebServiceProxy.invoke(servicePath, methodName, useGet, params, onSuccess, onFailure, userContext, this.get_timeout(), this.get_enableJsonp(), this.get_jsonpCallbackParameter());
    }
}
$type.registerClass('Sys.Net.WebServiceProxy');

$type.invoke = function WebServiceProxy$invoke(servicePath, methodName, useGet, params, onSuccess, onFailure, userContext, timeout, enableJsonp, jsonpCallbackParameter) {
    /// <summary locid="M:J#Sys.Net.WebServiceProxy.invoke"></summary>
    /// <param name="servicePath" type="String">Path to the webservice</param>
    /// <param name="methodName" type="String" mayBeNull="true" optional="true">Method to invoke</param>
    /// <param name="useGet" type="Boolean" optional="true" mayBeNull="true">Controls whether requests use HttpGet</param>
    /// <param name="params" mayBeNull="true" optional="true">Method args.</param>
    /// <param name="onSuccess" type="Function" mayBeNull="true" optional="true">Success callback</param>
    /// <param name="onFailure" type="Function" mayBeNull="true" optional="true">Failure callback</param>
    /// <param name="userContext" mayBeNull="true" optional="true">Success callback</param>
    /// <param name="timeout" type="Number" optional="true" mayBeNull="true">Timeout in milliseconds</param>
    /// <param name="enableJsonp" type="Boolean" optional="true" mayBeNull="true">Whether to use JSONP if the servicePath is for a different domain (default is true).</param>
    /// <param name="jsonpCallbackParameter" type="String" optional="true" mayBeNull="true">The name of the callback parameter for JSONP request (default is callback).</param>
    /// <returns type="Sys.Net.WebRequest" mayBeNull="true">Returns the request that was sent (null for JSONP requests).</returns>
    var e = Function._validateParams(arguments, [
        {name: "servicePath", type: String},
        {name: "methodName", type: String, mayBeNull: true, optional: true},
        {name: "useGet", type: Boolean, mayBeNull: true, optional: true},
        {name: "params", mayBeNull: true, optional: true},
        {name: "onSuccess", type: Function, mayBeNull: true, optional: true},
        {name: "onFailure", type: Function, mayBeNull: true, optional: true},
        {name: "userContext", mayBeNull: true, optional: true},
        {name: "timeout", type: Number, mayBeNull: true, optional: true},
        {name: "enableJsonp", type: Boolean, mayBeNull: true, optional: true},
        {name: "jsonpCallbackParameter", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    var schemeHost = (enableJsonp !== false) ? Sys.Net.WebServiceProxy._xdomain.exec(servicePath) : null,
        tempCallback, jsonp = schemeHost && (schemeHost.length === 3) && 
            ((schemeHost[1] !== location.protocol) || (schemeHost[2] !== location.host));
    useGet = jsonp || useGet;
    if (jsonp) {
        jsonpCallbackParameter = jsonpCallbackParameter || "callback";
        tempCallback = "_jsonp" + Sys._jsonp++;
    }
    if (!params) params = {};
    var urlParams = params;
    if (!useGet || !urlParams) urlParams = {};
    var error, timeoutcookie = null, body = null,
        url = Sys.Net.WebRequest._createUrl(methodName
            ? (servicePath+"/"+encodeURIComponent(methodName))
            : servicePath, urlParams, jsonp ? (jsonpCallbackParameter + "=Sys." + tempCallback) : null);
    if (jsonp) {
        function jsonpComplete(data, statusCode) {
            if (timeoutcookie !== null) {
                window.clearTimeout(timeoutcookie);
                timeoutcookie = null;
            }
            delete Sys[tempCallback];
            tempCallback = null; 
            if ((typeof(statusCode) !== "undefined") && (statusCode !== 200)) {
                if (onFailure) {
                    error = new Sys.Net.WebServiceError(false,
                            data.Message || String.format(Sys.Res.webServiceFailedNoMsg, methodName),
                            data.StackTrace || null,
                            data.ExceptionType || null,
                            data);
                    error._statusCode = statusCode;
                    onFailure(error, userContext, methodName);
                }
                else {
                    if (data.StackTrace && data.Message) {
                        error = data.StackTrace + "-- " + data.Message;
                    }
                    else {
                        error = data.StackTrace || data.Message;
                    }
                    error = String.format(error ? Sys.Res.webServiceFailed : Sys.Res.webServiceFailedNoMsg, methodName, error);
                    throw Sys.Net.WebServiceProxy._createFailedError(methodName, String.format(Sys.Res.webServiceFailed, methodName, error));
                }
            }
            else if (onSuccess) {
                onSuccess(data, userContext, methodName);
            }
        }
        Sys[tempCallback] = jsonpComplete;
        Sys._loadJsonp(url, function() {
            if (tempCallback) {
                jsonpComplete({ Message: String.format(Sys.Res.webServiceFailedNoMsg, methodName) }, -1);
            }
        });
        return null;
    }
    var request = new Sys.Net.WebRequest();
    request.set_url(url);
    request.get_headers()['Content-Type'] = 'application/json; charset=utf-8';
    if (!useGet) {
        body = Sys.Serialization.JavaScriptSerializer.serialize(params);
        if (body === "{}") body = "";
    }
    request.set_body(body);
    request.add_completed(onComplete);
    if (timeout > 0) request.set_timeout(timeout);
    request.invoke();
    
    function onComplete(response, eventArgs) {
        if (response.get_responseAvailable()) {
            var ex, statusCode = response.get_statusCode();
            var result = null;
            var isJson;

            try {
                var contentType = response.getResponseHeader("Content-Type");
                isJson = contentType.startsWith("application/json");
                result = isJson ? response.get_object() :
                    (contentType.startsWith("text/xml") ? response.get_xml() : response.get_responseData());
            }
            catch (ex) {
            }

            var error = response.getResponseHeader("jsonerror");
            var errorObj = (error === "true");
            if (errorObj) {
                if (result) {
                    result = new Sys.Net.WebServiceError(false, result.Message, result.StackTrace, result.ExceptionType, result);
                }
            }
            else if (isJson) {
                result = (!result || (typeof(result.d) === "undefined")) ? result : result.d;
            }
            if (((statusCode < 200) || (statusCode >= 300)) || errorObj) {
                if (onFailure) {
                    if (!result || !errorObj) {
                        result = new Sys.Net.WebServiceError(false /*timedout*/, String.format(Sys.Res.webServiceFailedNoMsg, methodName));
                    }
                    result._statusCode = statusCode;
                    onFailure(result, userContext, methodName);
                }
                else {
                    if (result && errorObj) {
                        error = result.get_exceptionType() + "-- " + result.get_message();
                    }
                    else {
                        error = response.get_responseData();
                    }
                    throw Sys.Net.WebServiceProxy._createFailedError(methodName, String.format(Sys.Res.webServiceFailed, methodName, error));
                }
            }
            else if (onSuccess) {
                onSuccess(result, userContext, methodName);
            }
        }
        else {
            var timedOut = response.get_timedOut(),
                msg = String.format((timedOut ? Sys.Res.webServiceTimedOut : Sys.Res.webServiceFailedNoMsg), methodName);
            if (onFailure) {
                onFailure(new Sys.Net.WebServiceError(timedOut, msg, "", ""), userContext, methodName);
            }
            else {
                throw Sys.Net.WebServiceProxy._createFailedError(methodName, msg);
            }
        }
    }

    return request;
}

$type._createFailedError = function WebServiceProxy$_createFailedError(methodName, errorMessage) {
    var displayMessage = "Sys.Net.WebServiceFailedException: " + errorMessage;
    var e = Error.create(displayMessage, { 'name': 'Sys.Net.WebServiceFailedException', 'methodName': methodName });
    e.popStackFrame();
    return e;
}

$type._defaultFailedCallback = function WebServiceProxy$_defaultFailedCallback(err, methodName) {
    var error = err.get_exceptionType() + "-- " + err.get_message();
    throw Sys.Net.WebServiceProxy._createFailedError(methodName, String.format(Sys.Res.webServiceFailed, methodName, error));
}

$type._generateTypedConstructor = function WebServiceProxy$_generateTypedConstructor(type) {
    return function(properties) {
        if (properties) {
            for (var name in properties) {
                this[name] = properties[name];
            }
        }
        this.__type = type;
    }
}

Sys._jsonp = 0;

$type._xdomain = /^\s*([a-zA-Z0-9\+\-\.]+\:)\/\/([^?#\/]+)/;

Sys._loadJsonp = function _loadJsonp(src, callback) {
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = src;
    var attachEvent = script.attachEvent;
    function onEvent() {
        if (!attachEvent || /loaded|complete/.test(script.readyState)) {
            if (attachEvent) {
                script.detachEvent("onreadystatechange", onEvent);
            }
            else {
                script.removeEventListener("load", onEvent, false);
                script.removeEventListener("error", onEvent, false);
            }
            callback.apply(script);
            script = null;
        }
    }
    if (attachEvent) {
        script.attachEvent("onreadystatechange", onEvent);
    }
    else {
        script.addEventListener("load", onEvent, false);
        script.addEventListener("error", onEvent, false);
    }    
    Sys.get("head").appendChild(script);
}
$type = Sys.Net.WebServiceError = function WebServiceError(timedOut, message, stackTrace, exceptionType, errorObject) {
    /// <summary locid="M:J#Sys.Net.WebServiceError.#ctor">Represents a webservice error</summary>
    /// <param name="timedOut" type="Boolean">Whether the service timed out.</param>
    /// <param name="message" type="String" mayBeNull="true">The error message.</param>
    /// <param name="stackTrace" type="String" mayBeNull="true" optional="true">The stack trace of the error.</param>
    /// <param name="exceptionType" type="String" mayBeNull="true" optional="true">The server exception type.</param>
    /// <param name="errorObject" type="Object" mayBeNull="true" optional="true">The raw error information.</param>
    var e = Function._validateParams(arguments, [
        {name: "timedOut", type: Boolean},
        {name: "message", type: String, mayBeNull: true},
        {name: "stackTrace", type: String, mayBeNull: true, optional: true},
        {name: "exceptionType", type: String, mayBeNull: true, optional: true},
        {name: "errorObject", type: Object, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    this._timedOut = timedOut;
    this._message = message;
    this._stackTrace = stackTrace;
    this._exceptionType = exceptionType;
    this._errorObject = errorObject;
    this._statusCode = -1;
}

$type.prototype = {
    get_timedOut: function WebServiceError$get_timedOut() {
        /// <value type="Boolean" locid="P:J#Sys.Net.WebServiceError.timedOut">Whether the service failed due to timeout.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._timedOut;
    },

    get_statusCode: function WebServiceError$get_statusCode() {
        /// <value type="Number" locid="P:J#Sys.Net.WebServiceError.statusCode">Int representing the status of the response.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._statusCode;
    },

    get_message: function WebServiceError$get_message() {
        /// <value type="String" locid="P:J#Sys.Net.WebServiceError.message">Error message</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._message;
    },

    get_stackTrace: function WebServiceError$get_stackTrace() {
        /// <value type="String" locid="P:J#Sys.Net.WebServiceError.stackTrace">Stack trace of the error.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._stackTrace || "";
    },

    get_exceptionType: function WebServiceError$get_exceptionType() {
        /// <value type="String" locid="P:J#Sys.Net.WebServiceError.exceptionType">Exception type of the error.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._exceptionType || "";
    },
    
    get_errorObject: function WebServiceError$get_errorObject() {
        /// <value type="Object" locid="P:J#Sys.Net.WebServiceError.errorObject">The raw error object returned by the service.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._errorObject || null;
    }
}
$type.registerClass('Sys.Net.WebServiceError');

Type.registerNamespace("Sys.Services");
var ns = Sys.Services;
var service = "Service",
    role = "Role",
    auth = "Authentication",
    profile = "Profile";
function setPath(path) {
    this._path = path;
}
ns[auth+service] = {
    set_path: setPath,
    _setAuthenticated: function(auth) {
        this._auth = auth;
    }
};
ns["_" + auth + service] = {};

ns[profile + service] = { set_path: setPath };
ns["_" + profile + service] = {};
ns.ProfileGroup = function ns$ProfileGroup(properties) {
    this._propertygroup = properties;
}

ns[role + service] = { set_path: setPath };
ns["_" + role + service] = {};



Sys._domLoaded();
}

if (Sys.loader) {
	Sys.loader.registerScript("MicrosoftAjax", null, execute);
}
else {
	execute();
}

})(window, window.Sys);
var $get, $create, $addHandler, $addHandlers, $clearHandlers;
 Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.SubScript=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.SubScript.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.SubScript.prototype={callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.SubScript.callBaseMethod(this,"callMethod"))return false;this._designPanel._execCommand("subScript",false,null)},checkState:function(){return!Sys.Extended.UI.HTMLEditor.ToolbarButton.SubScript.callBaseMethod(this,"checkState")?false:this._designPanel._queryCommandState("subScript")}};Sys.Extended.UI.HTMLEditor.ToolbarButton.SubScript.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.SubScript",Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton);-Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.PasteWord = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.PasteWord.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.PasteWord.prototype = {
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.PasteWord.callBaseMethod(this, "callMethod")) return false;
        var editor = this._designPanel;

        if(Sys.Extended.UI.HTMLEditor.isIE)
        {
            editor._saveContent();
            editor.openWait();
            setTimeout(function(){editor._paste(true,true); editor.closeWait();},0)
        }
        else
        {
            var sel   = editor._getSelection();
            var range = editor._createRange(sel);
            var useVerb = String.format(Sys.Extended.UI.Resources.HTMLEditor_toolbar_button_Use_verb, (Sys.Extended.UI.HTMLEditor.isSafari && navigator.userAgent.indexOf("mac") != -1)?"Apple-V":"Ctrl-V" );
            var mess = String.format(Sys.Extended.UI.Resources.HTMLEditor_toolbar_button_OnPasteFromMSWord, useVerb);

            alert(mess);

            setTimeout(function(){
                editor._removeAllRanges(sel);
                editor._selectRange(sel,range);
            },0);
            editor.isWord = true;
        }
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.PasteWord.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.PasteWord", Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);

Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyLeft=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyLeft.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyLeft.prototype={checkState:function(){return!Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyLeft.callBaseMethod(this,"checkState")?false:this._designPanel._textAlignState("left")},callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyLeft.callBaseMethod(this,"callMethod"))return false;this._designPanel._execCommand("JustifyLeft")}};Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyLeft.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyLeft",Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton);Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.IncreaseIndent=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.IncreaseIndent.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.IncreaseIndent.prototype={callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.IncreaseIndent.callBaseMethod(this,"callMethod"))return false;this._designPanel._execCommand("Indent")}};Sys.Extended.UI.HTMLEditor.ToolbarButton.IncreaseIndent.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.IncreaseIndent",Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton.prototype={onEditPanelActivity:function(){Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton.callBaseMethod(this,"onEditPanelActivity");this.setActivity(this.checkState())},checkState:function(){return!this.checkRangeInDesign()?false:true}};Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton",Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeImageButton);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.Popups");

Sys.Extended.UI.HTMLEditor.Popups.AttachedPopup = function(element) {
    Sys.Extended.UI.HTMLEditor.Popups.AttachedPopup.initializeBase(this, [element]);

    this._relatedElement = null;
}

Sys.Extended.UI.HTMLEditor.Popups.AttachedPopup.prototype = {

    get_relatedElement: function() {
        return this._relatedElement;
    },

    set_relatedElement: function(value) {
        this._relatedElement = value;
    },

    open: function(callback) {
        if (this._relatedElement != null) {
            var popup = this;

            if (!this.checkCorrectLoaded(function() { popup.open(callback); })) {
                return;
            }

            var location = $common.getLocation(this._relatedElement);
            var x = location.x;
            var y = location.y + this._relatedElement.offsetHeight;

            var element = this.get_element().parentNode;
            while (element && element.tagName && element.tagName.toUpperCase() != "BODY") {
                var position = Sys.Extended.UI.HTMLEditor.getStyle(element, "position");
                if (position == "absolute" || position == "fixed") {
                    var top = parseInt(Sys.Extended.UI.HTMLEditor.getStyle(element, "top"));
                    var left = parseInt(Sys.Extended.UI.HTMLEditor.getStyle(element, "left"));
                    if (!isNaN(top) && !isNaN(left)) {
                        x -= left;
                        y -= top;
                    }
                    break;
                } else if (position == "relative") {
                    var relativeLocation = $common.getLocation(element);
                    x -= relativeLocation.x;
                    y -= relativeLocation.y;
                }
                element = element.parentNode;
            }

            var viewportElement = Sys.Extended.UI.HTMLEditor.getClientViewportElement(this._iframe);
            var theVisibleWidth = viewportElement.clientWidth + viewportElement.scrollLeft;
            var theVisibleHeight = viewportElement.clientHeight + viewportElement.scrollTop;

            if (y < viewportElement.scrollTop) y = viewportElement.scrollTop;
            if (x < viewportElement.scrollLeft) x = viewportElement.scrollLeft;

            if (y + this._iframe.offsetHeight > theVisibleHeight) y -= y + this._iframe.offsetHeight - theVisibleHeight;
            if (x + this._iframe.offsetWidth > theVisibleWidth) x -= x + this._iframe.offsetWidth - theVisibleWidth;

            Sys.Extended.UI.HTMLEditor.Popups.AttachedPopup.callBaseMethod(this, "open", [callback, y, x]);
        }
    },

    close: function(callback) {
        Sys.Extended.UI.HTMLEditor.Popups.AttachedPopup.callBaseMethod(this, "close", [callback]);
    },

    initialize: function() {
        Sys.Extended.UI.HTMLEditor.Popups.AttachedPopup.callBaseMethod(this, "initialize");
    },

    dispose: function() {
        Sys.Extended.UI.HTMLEditor.Popups.AttachedPopup.callBaseMethod(this, "dispose");
    }
}

Sys.Extended.UI.HTMLEditor.Popups.AttachedPopup.registerClass("Sys.Extended.UI.HTMLEditor.Popups.AttachedPopup", Sys.Extended.UI.HTMLEditor.Popups.Popup);
�Type.registerNamespace("Sys.Extended.UI.HTMLEditor");Sys.Extended.UI.HTMLEditor.ModePanel=function(b){var a=this;Sys.Extended.UI.HTMLEditor.ModePanel.initializeBase(a,[b]);a._activated=false;a._isActivating=false;a._editPanel=null;a._cachedContent=null;a._onbeforeunload$delegate=Function.createDelegate(a,a._onbeforeunload)};Sys.Extended.UI.HTMLEditor.ModePanel.prototype={set_editPanel:function(a){this._editPanel=a},get_content:function(){var a=this;return a._activated?a._getContent():a._cachedContent!=null?a._cachedContent:""},set_content:function(b){var a=this;a._cachedContent=b;if(!a._activated&&!a._isActivating)a._activate(b);else if(!a._isActivating)a._setContent(b);else{var c=a;setTimeout(function(){c.set_content(b)},10);return false}return true},_activate:function(){this.get_element().style.display="";this._isActivating=true},_activateFinished:function(){var a=this;a._activated=true;a._isActivating=false;a._editPanel._setActive();a._editPanel.get_autofocus()&&a._focus()},_deactivate:function(){this.get_element().style.display="none";this._activated=false;this._isActivating=false},initialize:function(){Sys.Extended.UI.HTMLEditor.ModePanel.callBaseMethod(this,"initialize");Sys.Extended.UI.HTMLEditor.isIE&&$addHandlers(window,{beforeunload:this._onbeforeunload$delegate})},dispose:function(){var a=this;Sys.Extended.UI.HTMLEditor.isIE&&$common.removeHandlers(window,{beforeunload:a._onbeforeunload$delegate});if(a._activated){Sys.Extended.UI.HTMLEditor.isIE&&a._onbeforeunload();a._deactivate()}Sys.Extended.UI.HTMLEditor.ModePanel.callBaseMethod(a,"dispose")},_onbeforeunload:function(){var a=this;if(a._activated)if(!a._editPanel._contentPrepared){a._editPanel._prepareContentForPostback(a.get_content());a._editPanel._contentPrepared=true}},_getContent:function(){return this._cachedContent!=null?this._cachedContent:""},_setContent:function(){},_focus:function(){this._focused()},_focused:function(a){this._editPanel._focused(a);this._editPanel.set_autofocus(true)},_really_focused:function(){this._editPanel._really_focused();this._editPanel.set_autofocus(true)}};Sys.Extended.UI.HTMLEditor.ModePanel.registerClass("Sys.Extended.UI.HTMLEditor.ModePanel",Sys.UI.Control);yXType.registerNamespace("Sys.Extended.UI.HTMLEditor");
Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel = null;

Sys.Extended.UI.HTMLEditor.EditPanel = function(element) {
    Sys.Extended.UI.HTMLEditor.EditPanel.initializeBase(this, [element]);

    this._loaded = false;
    this._eAfter = null;
    this._toolbars = null;
    this._modePanels = null;
    this._contentChangedElement = null;
    this._contentElement = null;
    this._contentForceElement = null;
    this._activeModeElement = null;
    this._suppressTabInDesignMode = false;
    this._keyboardEnabled = true;
    this._noPaste = false;
    this._hotkeys = null;
    this._showAnchors = false;
    this._showPlaceHolders = false;
    this._startEnd = true;
    this._relativeImages = true;
    
    this._documentCssPath = null;
    this._designPanelCssPath = null;
    this._imagePath_1x1 = null;
    this._imagePath_flash = null;
    this._imagePath_media = null;
    this._imagePath_anchor = null;
    this._imagePath_placeHolder = null;
    this._autofocus = true;
    this._initialCleanUp = false;
    this._noScript = false;
    this._noUnicode = false;
    this._cachedToolbarIds = null;
    this._contentPrepared = false;    
    this._activeMode = null;
    this._pageRequestManager = null;
    this._formOnSubmitSaved = null;
    this._validators = null;

    this._app_onload$delegate = Function.createDelegate(this, this._app_onload);
    this._onsubmit$delegate = Function.createDelegate(this, this._onsubmit);
    this._disposed = true;
}

Sys.Extended.UI.HTMLEditor.EditPanel.prototype = {

    get_relativeImages: function() {
        return this._relativeImages;
    },
    set_relativeImages: function(value) {
        this._relativeImages = value;
        if (this._loaded) {
            this.raisePropertyChanged("relativeImages");
        }
    },

    get_startEnd: function() {
        return this._startEnd;
    },
    set_startEnd: function(value) {
        this._startEnd = value;
        if (this._loaded) {
            this.raisePropertyChanged("startEnd");
        }
    },

    get_showPlaceHolders: function() {
        return this._showPlaceHolders;
    },
    set_showPlaceHolders: function(value) {
        this._showPlaceHolders = value;
        if (this._loaded) {
            this.raisePropertyChanged("showPlaceHolders");
        }
    },

    get_showAnchors: function() {
        return this._showAnchors;
    },
    set_showAnchors: function(value) {
        this._showAnchors = value;
        if (this._loaded) {
            this.raisePropertyChanged("showAnchors");
        }
    },

    get_hotkeys: function() {
        return this._hotkeys;
    },
    set_hotkeys: function(value) {
        this._hotkeys = value;
        if (this._loaded) {
            this.raisePropertyChanged("noPaste");
        }
    },

    get_noPaste: function() {
        return this._noPaste;
    },
    set_noPaste: function(value) {
        this._noPaste = value;
        if (this._loaded) {
            this.raisePropertyChanged("noPaste");
        }
    },

    get_suppressTabInDesignMode: function() {
        return this._suppressTabInDesignMode;
    },
    set_suppressTabInDesignMode: function(value) {
        this._suppressTabInDesignMode = value;
        if (this._loaded) {
            this.raisePropertyChanged("suppressTabInDesignMode");
        }
    },

    get_keyboardEnabled: function() {
        return this._keyboardEnabled;
    },
    set_keyboardEnabled: function(value) {
        this._keyboardEnabled = value;
        if (this._loaded) {
            this.raisePropertyChanged("keyboardEnabled");
        }
    },

    get_noUnicode: function() {
        return this._noUnicode;
    },
    set_noUnicode: function(value) {
        this._noUnicode = value;
        if (this._loaded) {
            this.raisePropertyChanged("noUnicode");
        }
    },

    get_noScript: function() {
        return this._noScript;
    },
    set_noScript: function(value) {
        this._noScript = value;
        if (this._loaded) {
            this.raisePropertyChanged("noScript");
        }
    },

    get_initialCleanUp: function() {
        return this._initialCleanUp;
    },
    set_initialCleanUp: function(value) {
        this._initialCleanUp = value;
        if (this._loaded) {
            this.raisePropertyChanged("initialCleanUp");
        }
    },

    get_imagePath_1x1: function() {
        return this._imagePath_1x1;
    },
    set_imagePath_1x1: function(value) {
        this._imagePath_1x1 = value;
    },
    get_imagePath_flash: function() {
        return this._imagePath_flash;
    },
    set_imagePath_flash: function(value) {
        this._imagePath_flash = value;
    },
    get_imagePath_media: function() {
        return this._imagePath_media;
    },
    set_imagePath_media: function(value) {
        this._imagePath_media = value;
    },
    get_imagePath_anchor: function() {
        return this._imagePath_anchor;
    },
    set_imagePath_anchor: function(value) {
        this._imagePath_anchor = value;
    },
    get_imagePath_placeHolder: function() {
        return this._imagePath_placeHolder;
    },
    set_imagePath_placeHolder: function(value) {
        this._imagePath_placeHolder = value;
    },

    get_documentCssPath: function() {
        return this._documentCssPath;
    },
    set_documentCssPath: function(value) {
        this._documentCssPath = value;
        if (this._loaded) {
            this.raisePropertyChanged("documentCssPath");
        }
    },

    get_designPanelCssPath: function() {
        return this._designPanelCssPath;
    },
    set_designPanelCssPath: function(value) {
        this._designPanelCssPath = value;
        if (this._loaded) {
            this.raisePropertyChanged("designPanelCssPath");
        }
    },

    get_autofocus: function() {
        return this._autofocus;
    },
    set_autofocus: function(value) {
        this._autofocus = value;
        if (this._loaded) {
            this.raisePropertyChanged("autofocus");
        }
    },

    get_content: function() {
        if (this._activeMode == null) {
            if (this.get_contentElement() != null) {
                return this._getContentForPostback();
            }
            return "";
        }
        return this.getContent();
    },
    set_content: function(value) {
        if (!this.get_isInitialized() || !this._loaded) {
            if (this.get_contentElement() != null) {
                this.get_contentElement().value = value.replace(/\"/g, "&quot;");
            }
            return;
        }
        this.setContent(value);
        this._contentPrepared = false;
        if (this._loaded) {
            this.raisePropertyChanged("content");
        }
    },

    get_activeMode: function() {
        if (this._activeMode == null) {
            return Sys.Extended.UI.HTMLEditor.ActiveModeType.Design;
        }
        return this._activeMode;
    },
    set_activeMode: function(value) {
        if (!Sys.Extended.UI.HTMLEditor.ActiveModeType_checkValue(value)) {
            throw Error.argumentOutOfRange("value, function: Sys.Extended.UI.HTMLEditor.EditPanel.set_activeMode");
        }

        var oldMode = this._activeMode;
        var retval = true;
        if (this._loaded && oldMode != null && oldMode != value) {
            var eBefore = new Sys.Extended.UI.HTMLEditor.ActiveModeChangedArgs(oldMode, value, this);
            this.raiseBeforeActiveModeChanged(eBefore);

            this._eAfter = new Sys.Extended.UI.HTMLEditor.ActiveModeChangedArgs(oldMode, value, this);
            retval = this._setMode(value);
        } else {
            this._activeMode = value;
        }
        this.get_activeModeElement().value = value;
        return retval;
    },

    get_contentChangedElement: function() {
        return this._contentChangedElement;
    },
    set_contentChangedElement: function(value) {
        this._contentChangedElement = value;
    },

    get_contentElement: function() {
        return this._contentElement;
    },
    set_contentElement: function(value) {
        this._contentElement = value;
    },

    get_contentForceElement: function() {
        return this._contentForceElement;
    },
    set_contentForceElement: function(value) {
        this._contentForceElement = value;
    },

    get_activeModeElement: function() {
        return this._activeModeElement;
    },
    set_activeModeElement: function(value) {
        this._activeModeElement = value;
    },

    setCancelOnPostback: function() {
        if (this._loaded) {
            this.get_contentForceElement().value = "";
        }
    },
    setAcceptOnPostback: function() {
        if (this._loaded) {
            this.get_contentForceElement().value = "1";
        }
    },

    get_toolbars: function() {
        if (this._toolbars == null) {
            this._toolbars = [];
        }
        return this._toolbars;
    },
    set_toolbars: function(value) {
        this.get_toolbars().push(value);
    },

    get_toolbarIds: function() {
    },
    set_toolbarIds: function(value) {
        if (!this.get_isInitialized()) {
            this._cachedToolbarIds = value;
            return;
        }
        var arr = value.split(";");
        for (var i = 0; i < arr.length; i++) {
            if (arr[i].length > 0) {
                this.set_toolbars($find(arr[i]));
            }
        }
    },

    get_modePanels: function() {
        if (this._modePanels == null) {
            this._modePanels = [];
        }
        return this._modePanels;
    },
    set_modePanel: function(value) {
        this.get_modePanels().push(value);
    },

    get_modePanelIds: function() {
    },
    set_modePanelIds: function(value) {
        var arr = value.split(";");
        for (var i = 0; i < arr.length; i++) {
            this.set_modePanel($find(arr[i]));
        }
    },

    add_focused: function(handler) {
        this.get_events().addHandler("focused", handler);
    },
    remove_focused: function(handler) {
        this.get_events().removeHandler("focused", handler);
    },
    raiseFocused: function(e) {
        var eh = this.get_events().getHandler("focused");
        if (eh) {
            eh(this, e);
        }
    },

    add_activeModeChanged: function(handler) {
        this.get_events().addHandler("activeModeChanged", handler);
    },
    remove_activeModeChanged: function(handler) {
        this.get_events().removeHandler("activeModeChanged", handler);
    },
    raiseActiveModeChanged: function(e) {
        var eh = this.get_events().getHandler("activeModeChanged");
        if (eh) {
            eh(this, e);
        }
    },

    add_beforeActiveModeChanged: function(handler) {
        this.get_events().addHandler("beforeActiveModeChanged", handler);
    },
    remove_beforeActiveModeChanged: function(handler) {
        this.get_events().removeHandler("beforeActiveModeChanged", handler);
    },
    raiseBeforeActiveModeChanged: function(e) {
        var eh = this.get_events().getHandler("beforeActiveModeChanged");
        if (eh) {
            eh(this, e);
        }
    },

    get_activePanel: function() {
        var modePanel = this.get_modePanels()[this.get_activeMode()];
        if (modePanel == null || typeof modePanel == "undefined") {
            throw Error.argumentOutOfRange("activeMode, function: Sys.Extended.UI.HTMLEditor.EditPanel.get_activePanel");
        }
        return modePanel;
    },

    initialize: function() {
        this.__appLoaded__ = false;
        Sys.Extended.UI.HTMLEditor.EditPanel.callBaseMethod(this, "initialize");
        this._disposed = false;
        Sys.Application.add_load(this._app_onload$delegate);
        if (Sys && Sys.WebForms && Sys.WebForms.PageRequestManager) {
            this._pageRequestManager = Sys.WebForms.PageRequestManager.getInstance();
            if (this._pageRequestManager) {
                this._partialUpdateEndRequestHandler = Function.createDelegate(this, this._partialUpdateEndRequest);
                this._pageRequestManager.add_endRequest(this._partialUpdateEndRequestHandler);

                this._invokingRequestHandler = Function.createDelegate(this, this._invokingRequest);
                Sys.Net.WebRequestManager.add_invokingRequest(this._invokingRequestHandler);
                this._completedRequestHandler = Function.createDelegate(this, this._completedRequest);
                Sys.Net.WebRequestManager.add_completedRequest(this._completedRequestHandler);
            }
        }
        Sys.Extended.UI.HTMLEditor.addFormOnSubmit(this._onsubmit$delegate, this);
    },

    dispose: function() {
        this._loaded = false;
        this._disposed = true;
        if (this._pageRequestManager) {
            if (this._invokingRequestHandler) {
                this._pageRequestManager.remove_endRequest(this._partialUpdateEndRequestHandler);
                this._partialUpdateEndRequestHandler = null;

                Sys.Net.WebRequestManager.remove_invokingRequest(this._invokingRequestHandler);
                this._invokingRequestHandler = null;
                Sys.Net.WebRequestManager.remove_completedRequest(this._completedRequestHandler);
                this._completedRequestHandler = null;
            }
            this._pageRequestManager = null;
        }

        Sys.Extended.UI.HTMLEditor.removeFormOnSubmit(this._onsubmit$delegate);

        Sys.Application.remove_load(this._app_onload$delegate);
        this.disableToolbars();
        Sys.Extended.UI.HTMLEditor.EditPanel.callBaseMethod(this, "dispose");
    },

    _onsubmit: function(e) {
        if (!this._contentPrepared) {
            this._prepareContentForPostback(this.get_content());
            this._contentPrepared = true;
        }
        return true;
    },

    _invokingRequest: function(sender, args) {
        if (this._contentPrepared) {
            return;
        }

        var webRequest = args.get_webRequest();
        var body = webRequest.get_body();

        var reg = new RegExp("([\\?&])(" + this.get_contentElement().name + "=)([^&$]*)([&$])", "g");
        this._prepareContentForPostback(this.get_content());
        body = body.replace(reg, "$1$2" + escape(this.get_contentElement().value) + "$4");

        this._contentPrepared = true;
        webRequest.set_body(body);
    },

    _completedRequest: function(sender, args) {
        this._contentPrepared = false;
    },

    _partialUpdateEndRequest: function(sender, args) {
        this._contentPrepared = false;
        if (Sys.Extended.UI.HTMLEditor.isIE && this.__blured) {
            this.__blured = false;
            this.get_activePanel()._focus();
        }
    },

    _app_onload: function(sender, e) {
        if (this.__appLoaded__) return;
        this.__appLoaded__ = true;
        if (this._disposed) {
            return;
        }

        var editPanel = this;
        this._loaded = true;

        this.set_activeMode(parseInt(this.get_activeModeElement().value));

        if (this._cachedToolbarIds != null) {
            this.set_toolbarIds(this._cachedToolbarIds);
            this._cachedToolbarIds = null;
        }

        this._validators = this.get_modePanels()[Sys.Extended.UI.HTMLEditor.ActiveModeType.Html].get_element().Validators;
        this._shouldResize = false;
        if (Sys.Extended.UI.HTMLEditor.isIE && document.compatMode != "BackCompat") {
            this._shouldResize = true;
        }
        if (this._shouldResize) {
            var modePanels = this.get_modePanels();
            var iframePanel = modePanels[Sys.Extended.UI.HTMLEditor.ActiveModeType.Design];
            if (iframePanel == null) {
                iframePanel = modePanels[Sys.Extended.UI.HTMLEditor.ActiveModeType.Preview];
            }
            var htmlPanel = modePanels[Sys.Extended.UI.HTMLEditor.ActiveModeType.Html];
            if (iframePanel != null && htmlPanel != null) {
                var iframePanelElement = iframePanel.get_element();
                iframePanelElement.style.display = "";
                var height = iframePanelElement.offsetHeight;
                var invisible = false;
                var save;
                if (height == 0) {
                    invisible = true;
                    save = Sys.Extended.UI.HTMLEditor.setElementVisibility(iframePanelElement.parentNode);
                    height = iframePanelElement.offsetHeight;
                }
                htmlPanel.get_element().style.height = height + "px";
                if (invisible) {
                    Sys.Extended.UI.HTMLEditor.restoreElementVisibility(save);
                    delete save;
                }
                iframePanelElement.style.display = "none";
            }
        }

        var content = this.get_contentElement().value.replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&quot;/g, "\"").replace(/&amp;/g, "&");
        this.setContent(this._initialCleanUp ? Sys.Extended.UI.HTMLEditor.cleanUp(content.replace(/[\n\r]+/g, " ")) : content);

        this.setAcceptOnPostback();
    },

    _setActive: function() {
        for (var i = 0; i < this.get_toolbars().length; i++) {
            this.get_toolbars()[i].set_activeEditPanel(this, true);
        }
        if (this._eAfter != null) {
            this.raisePropertyChanged("activeMode");
            this.raiseActiveModeChanged(this._eAfter);
            this._eAfter = null;
        }
    },

    _focused: function(prize) {
        if (!(typeof prize != "undefined" && prize)) {
            for (var i = 0; i < this.get_toolbars().length; i++) {
                this.get_toolbars()[i].set_activeEditPanel(this);
            }
        }
        Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel = this;
    },

    _really_focused: function() {
        this._focused();
        this.raiseFocused(new Sys.EventArgs());
    },

    updateToolbar: function() {
        this._focused();
    },

    getContent: function() {
        var ret = this.get_activePanel().get_content()
            .replace(/<\/?html(?=\s|>)(?:[^>]*?)>/gi, "")
            .replace(/<\/?head(?=\s|>)(?:[^>]*?)>/gi, "")
            .replace(/<\/?body(?=\s|>)(?:[^>]*?)>/gi, "")
            .replace(/^([\n\r]+)/, "").replace(/([\n\r]+)$/, "");

        if (!Sys.Extended.UI.HTMLEditor.isIE) {
            ret = ret.replace(/^<br\s*[\/]*>$/, "");
        }
        return ret;
    },

    setContent: function(content) {
        var temptext = content;
        if (this.get_noScript()) {
            temptext = temptext.replace(/(<script(?:[^>]*?)>(?:[^<]*?)<\/script(?:[^>]*?)>)/ig, "");
        }

        temptext = temptext.replace(/<\/?html(?=\s|>)(?:[^>]*?)>/gi, "")
            .replace(/<\/?head(?=\s|>)(?:[^>]*?)>/gi, "")
            .replace(/<\/?body(?=\s|>)(?:[^>]*?)>/gi, "")
            .replace(/^([\n\r]+)/, "").replace(/([\n\r]+)$/, "");

        this._prepareContentForPostback(temptext);

        this.get_activePanel().set_content(temptext);
        this._validate(null, temptext);
    },

    _validate: function(event, content) {
        var validators = this._validators;
        if (validators != null && typeof validators != "undefined") {
            this._contentForValidation = content;
            try {
                for (var i = 0; i < validators.length; i++) {
                    window.ValidatorValidate(validators[i], null, event);
                }
                window.ValidatorUpdateIsValid();
            } catch (ex) { }
            this._contentForValidation = null;
        }
    },

    _prepareContentForPostback: function(value) {
        this.get_contentElement().value = value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/\"/g, "&quot;");
    },

    _getContentForPostback: function() {
        return this.get_contentElement().value.replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&quot;/g, "\"").replace(/&amp;/g, "&");
    },
    
    _setMode: function(mode) {
        var activePanel = this.get_activePanel();
        if (!activePanel._activated) {
            var editPanel = this;
            setTimeout(function() { editPanel._setMode(mode); }, 10);
            return false;
        }
        var content = this.get_content();
        if (Sys.Extended.UI.HTMLEditor.isOpera) {
            content = content.replace(/\r/ig, "");
        }

        if (this._shouldResize && mode == Sys.Extended.UI.HTMLEditor.ActiveModeType.Html) {
            var iframePanel = this.get_activePanel();
            var htmlPanel = this.get_modePanels()[Sys.Extended.UI.HTMLEditor.ActiveModeType.Html];
            if (iframePanel != null && htmlPanel != null) {
                var iframePanelElement = iframePanel.get_element();
                var height = iframePanelElement.offsetHeight;
                var invisible = false;
                var save;
                if (height == 0) {
                    invisible = true;
                    save = Sys.Extended.UI.HTMLEditor.setElementVisibility(iframePanelElement.parentNode);
                    height = iframePanelElement.offsetHeight;
                }
                htmlPanel.get_element().style.height = height + "px";
                if (invisible) {
                    Sys.Extended.UI.HTMLEditor.restoreElementVisibility(save);
                    delete save;
                }
            }
        }

        this.disableToolbars(mode);

        activePanel._deactivate();

        this._activeMode = mode;

        this.setContent(content);
        return true;
    },

    disableToolbars: function(mode) {
        for (var i = 0; i < this.get_toolbars().length; i++) {
            var toolbar = this.get_toolbars()[i];
            if (toolbar._loaded) {
                toolbar.disable(mode);
            }
        }
    },

    openWait: function() {
    },

    closeWait: function() {
    }
}

Sys.Extended.UI.HTMLEditor.EditPanel.registerClass("Sys.Extended.UI.HTMLEditor.EditPanel", Sys.UI.Control);
�// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedHover";function a(){var e="unhover",d="hover",f="unhoverDelay",c=true,b=false,a=null;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.HoverBehavior=function(d){var c=this;Sys.Extended.UI.HoverBehavior.initializeBase(c,[d]);c._elementHandlers=a;c._hoverElementHandlers=a;c._hoverElement=a;c._hoverCount=0;c._unhoverDelay=0;c._hoverDelay=0;c._hoverScript=a;c._unhoverScript=a;c._hoverFired=b};Sys.Extended.UI.HoverBehavior.prototype={_setupHandlersArray:function(){var a=this,b=[];b[0]=Function.createDelegate(a,a._onHover);b[1]=Function.createDelegate(a,a._onUnhover);return b},get_elementHandlers:function(){var a=this;if(!a._elementHandlers)a._elementHandlers=a._setupHandlersArray();return a._elementHandlers},get_hoverElementHandlers:function(){var a=this;if(!a._hoverElementHandlers)a._hoverElementHandlers=a._setupHandlersArray();return a._hoverElementHandlers},get_hoverElement:function(){return this._hoverElement},set_hoverElement:function(d){var a=this;if(d!=a._hoverElement){a._hoverElement&&a._setupHandlers(a._hoverElement,a.get_hoverElementHandlers(),b);a._hoverElement=d;a._hoverElement&&a._setupHandlers(a._hoverElement,a.get_hoverElementHandlers(),c)}},get_hoverDelay:function(){return this._hoverDelay},set_hoverDelay:function(a){this._hoverDelay=a;this.raisePropertyChanged("hoverDelay")},get_hoverScript:function(){return this._hoverScript},set_hoverScript:function(a){this._hoverScript=a},get_unhoverDelay:function(){return this._unhoverDelay},set_unhoverDelay:function(a){this._unhoverDelay=a;this.raisePropertyChanged(f)},get_unhoverScript:function(){return this._unhoverScript},set_unhoverScript:function(a){this._unhoverScript=a},dispose:function(){var c=this,e=c.get_element();if(c._elementHandlers){var d=c.get_elementHandlers();c._setupHandlers(e,d,b);c._elementHandlers=a}if(c._hoverElement){var d=c.get_hoverElementHandlers();c._setupHandlers(c._hoverElement,d,b);c._hoverElement=a}Sys.Extended.UI.HoverBehavior.callBaseMethod(c,"dispose")},initialize:function(){var a=this;Sys.Extended.UI.HoverBehavior.callBaseMethod(a,"initialize");var b=a.get_elementHandlers();a._setupHandlers(a.get_element(),b,c);if(a._hoverElement){b=a.get_hoverElementHandlers();a._setupHandlers(a._hoverElement,b,c)}},add_hover:function(a){this.get_events().addHandler(d,a)},remove_hover:function(a){this.get_events().removeHandler(d,a)},_fireHover:function(){var a=this;if(!a._hoverCount||a._hoverFired)return;var b=a.get_events().getHandler(d);b&&b(a,Sys.EventArgs.Empty);if(a._hoverScript)eval(a._hoverScript);a._hoverFired=c},_onHover:function(){var a=this;a._hoverCount++;if(!a._hoverDelay)a._fireHover();else window.setTimeout(Function.createDelegate(a,a._fireHover),a._hoverDelay)},add_unhover:function(a){this.get_events().addHandler(e,a)},remove_unhover:function(a){this.get_events().removeHandler(e,a)},_fireUnhover:function(){var a=this;if(a._hoverFired&&!a._hoverCount){a._hoverFired=b;var c=a.get_events().getHandler(e);c&&c(a,Sys.EventArgs.Empty);if(a._unhoverScript)eval(a._unhoverScript)}},_onUnhover:function(){var a=this;a._hoverCount--;if(a._hoverCount<=0){a._hoverCount=0;if(!a._unhoverDelay)a._fireUnhover();else window.setTimeout(Function.createDelegate(a,a._fireUnhover),a._unhoverDelay)}},_setupHandlers:function(a,b,e){var d="mouseout",c="mouseover";if(!this.get_isInitialized()||!a)return;if(e){$addHandler(a,c,b[0]);$addHandler(a,"focus",b[0]);$addHandler(a,d,b[1]);$addHandler(a,"blur",b[1])}else{$removeHandler(a,c,b[0]);$removeHandler(a,"focus",b[0]);$removeHandler(a,d,b[1]);$removeHandler(a,"blur",b[1])}}};Sys.Extended.UI.HoverBehavior.descriptor={properties:[{name:"hoverElement",isDomElement:c},{name:f,type:Number}],events:[{name:d},{name:e}]};Sys.Extended.UI.HoverBehavior.registerClass("Sys.Extended.UI.HoverBehavior",Sys.Extended.UI.BehaviorBase);Sys.registerComponent(Sys.Extended.UI.HoverBehavior,{name:d})}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedBase","ExtendedCommon"],a);else a()})();�
// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedFloating";function a(){Sys.Extended.UI.FloatingBehavior=function(n){var f="_floatingObject",e="location",d="mousedown",b=null,c="move",a=this;Sys.Extended.UI.FloatingBehavior.initializeBase(a,[n]);var h,g,j,l,k,i=Function.createDelegate(a,m);a.add_move=function(a){this.get_events().addHandler(c,a)};a.remove_move=function(a){this.get_events().removeHandler(c,a)};a.get_handle=function(){return h};a.set_handle=function(a){h!=b&&$removeHandler(h,d,i);h=a;$addHandler(h,d,i)};a.get_profileProperty=function(){return l};a.set_profileProperty=function(a){l=a};a.get_profileComponent=function(){return k};a.set_profileComponent=function(a){k=a};a.get_location=function(){return g};a.set_location=function(a){if(g!=a){g=a;this.get_isInitialized()&&$common.setLocation(this.get_element(),g);this.raisePropertyChanged(e)}};a.initialize=function(){Sys.Extended.UI.FloatingBehavior.callBaseMethod(this,"initialize");Sys.Extended.UI.DragDropManager.registerDropTarget(this);var a=this.get_element();if(!g)g=$common.getLocation(a);a.style.position="fixed";$common.setLocation(a,g)};a.dispose=function(){Sys.Extended.UI.DragDropManager.unregisterDropTarget(this);h&&i&&$removeHandler(h,d,i);i=b;Sys.Extended.UI.FloatingBehavior.callBaseMethod(this,"dispose")};a.checkCanDrag=function(a){var d=["input","button","select","textarea","label"],c=a.tagName;return c.toLowerCase()=="a"&&a.href!=b&&a.href.length>0?false:Array.indexOf(d,c.toLowerCase())>-1?false:true};function m(a){window._event=a;var b=this.get_element();if(this.checkCanDrag(a.target)){j=$common.getLocation(b);a.preventDefault();this.startDragDrop(b)}}a.get_dragDataType=function(){return f};a.getDragData=function(){return b};a.get_dragMode=function(){return Sys.Extended.UI.DragMode.Move};a.onDragStart=function(){};a.onDrag=function(){};a.onDragEnd=function(b){var a=this;if(!b){var f=a.get_events().getHandler(c);if(f){var d=new Sys.CancelEventArgs;f(a,d);b=d.get_cancel()}}var h=a.get_element();if(b)$common.setLocation(h,j);else{g=$common.getLocation(h);a.raisePropertyChanged(e)}};a.startDragDrop=function(a){Sys.Extended.UI.DragDropManager.startDragDrop(this,a,b)};a.get_dropTargetElement=function(){return document.body};a.canDrop=function(b,a){return a==f};a.drop=function(){};a.onDragEnterTarget=function(){};a.onDragLeaveTarget=function(){};a.onDragInTarget=function(){}};Sys.Extended.UI.FloatingBehavior.registerClass("Sys.Extended.UI.FloatingBehavior",Sys.Extended.UI.BehaviorBase,Sys.Extended.UI.IDragSource,Sys.Extended.UI.IDropTarget,Sys.IDisposable);Sys.registerComponent(Sys.Extended.UI.FloatingBehavior,{name:"draggable"})}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedBase","ExtendedCommon","ExtendedDragDrop"],a);else a()})();K// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference name="MicrosoftAjaxTimer.debug.js" />
/// <reference name="MicrosoftAjaxWebForms.debug.js" />
/// <reference path="../Common/Common.js" />

(function() {
var scriptName = "ExtendedDateTime";

function execute() {


Type.registerNamespace("Sys.Extended.UI");

Sys.Extended.UI.TimeSpan = function() {
    /// <summary>
    /// Represents a period of time
    /// </summary>
    
    if (arguments.length == 0) this._ctor$0.apply(this, arguments);
    else if (arguments.length == 1) this._ctor$1.apply(this, arguments);
    else if (arguments.length == 3) this._ctor$2.apply(this, arguments);
    else if (arguments.length == 4) this._ctor$3.apply(this, arguments);
    else if (arguments.length == 5) this._ctor$4.apply(this, arguments);
    else throw Error.parameterCount();
}
Sys.Extended.UI.TimeSpan.prototype = {

    _ctor$0 : function() {
        /// <summary>
        /// Initializes a new TimeSpan
        /// </summary>
        
        this._ticks = 0;
    }, 
    _ctor$1 : function(ticks) {
        /// <summary>
        /// Initializes a new TimeSpan
        /// </summary>
        /// <param name="ticks" type="Number" integer="true">The number of ticks in the TimeSpan</param>

        this._ctor$0();
        this._ticks = ticks;
    },
    _ctor$2 : function(hours, minutes, seconds) {
        /// <summary>
        /// Initializes a new TimeSpan
        /// </summary>
        /// <param name="hours" type="Number">The number of hours in the TimeSpan</param>
        /// <param name="minutes" type="Number">The number of minutes in the TimeSpan</param>
        /// <param name="seconds" type="Number">The number of seconds in the TimeSpan</param>
        
        this._ctor$0();
        this._ticks = 
            (hours * Sys.Extended.UI.TimeSpan.TicksPerHour) +
            (minutes * Sys.Extended.UI.TimeSpan.TicksPerMinute) +
            (seconds * Sys.Extended.UI.TimeSpan.TicksPerSecond); 
    },
    _ctor$3 : function(days, hours, minutes, seconds) {
        /// <summary>
        /// Initializes a new TimeSpan
        /// </summary>
        /// <param name="days" type="Number">The number of days in the TimeSpan</param>
        /// <param name="hours" type="Number">The number of hours in the TimeSpan</param>
        /// <param name="minutes" type="Number">The number of minutes in the TimeSpan</param>
        /// <param name="seconds" type="Number">The number of seconds in the TimeSpan</param>

        this._ctor$0();
        this._ticks = 
            (days * Sys.Extended.UI.TimeSpan.TicksPerDay) +
            (hours * Sys.Extended.UI.TimeSpan.TicksPerHour) +
            (minutes * Sys.Extended.UI.TimeSpan.TicksPerMinute) +
            (seconds * Sys.Extended.UI.TimeSpan.TicksPerSecond); 
    },
    _ctor$4 : function(days, hours, minutes, seconds, milliseconds) {
        /// <summary>
        /// Initializes a new TimeSpan
        /// </summary>
        /// <param name="days" type="Number">The number of days in the TimeSpan</param>
        /// <param name="hours" type="Number">The number of hours in the TimeSpan</param>
        /// <param name="minutes" type="Number">The number of minutes in the TimeSpan</param>
        /// <param name="seconds" type="Number">The number of seconds in the TimeSpan</param>
        /// <param name="milliseconds" type="Number">The number of milliseconds in the TimeSpan</param>

        this._ctor$0();
        this._ticks = 
            (days * Sys.Extended.UI.TimeSpan.TicksPerDay) +
            (hours * Sys.Extended.UI.TimeSpan.TicksPerHour) +
            (minutes * Sys.Extended.UI.TimeSpan.TicksPerMinute) +
            (seconds * Sys.Extended.UI.TimeSpan.TicksPerSecond) +
            (milliseconds * Sys.Extended.UI.TimeSpan.TicksPerMillisecond); 
    },

    getDays : function() { 
        /// <summary>
        /// Gets the days part of the TimeSpan
        /// </summary>
        /// <returns type="Number" />
        
        return Math.floor(this._ticks / Sys.Extended.UI.TimeSpan.TicksPerDay); 
    },
    getHours : function() { 
        /// <summary>
        /// Gets the hours part of the TimeSpan
        /// </summary>
        /// <returns type="Number" />

        return Math.floor(this._ticks / Sys.Extended.UI.TimeSpan.TicksPerHour) % 24; 
    },
    getMinutes : function() { 
        /// <summary>
        /// Gets the minutes part of the TimeSpan
        /// </summary>
        /// <returns type="Number" />

        return Math.floor(this._ticks / Sys.Extended.UI.TimeSpan.TicksPerMinute) % 60; 
    },
    getSeconds : function() { 
        /// <summary>
        /// Gets the seconds part of the TimeSpan
        /// </summary>
        /// <returns type="Number" />

        return Math.floor(this._ticks / Sys.Extended.UI.TimeSpan.TicksPerSecond) % 60; 
    },
    getMilliseconds : function() { 
        /// <summary>
        /// Gets the milliseconds part of the TimeSpan
        /// </summary>
        /// <returns type="Number" />

        return Math.floor(this._ticks / Sys.Extended.UI.TimeSpan.TicksPerMillisecond) % 1000; 
    },
    getDuration : function() { 
        /// <summary>
        /// Gets the total duration of a TimeSpan
        /// </summary>
        /// <returns type="Sys.Extended.UI.TimeSpan" />

        return new Sys.Extended.UI.TimeSpan(Math.abs(this._ticks)); 
    },
    getTicks : function() { 
        /// <summary>
        /// Gets the ticks in the TimeSpan
        /// </summary>
        /// <returns type="Number" />
    
        return this._ticks; 
    },
    getTotalDays : function() { 
        /// <summary>
        /// Gets the total number of days in the TimeSpan
        /// </summary>
        /// <returns type="Number" />

        Math.floor(this._ticks / Sys.Extended.UI.TimeSpan.TicksPerDay); 
    },
    getTotalHours : function() { 
        /// <summary>
        /// Gets the total hours in the TimeSpan
        /// </summary>
        /// <returns type="Number" />

        return Math.floor(this._ticks / Sys.Extended.UI.TimeSpan.TicksPerHour); 
    },
    getTotalMinutes : function() { 
        /// <summary>
        /// Gets the total minutes in the TimeSpan
        /// </summary>
        /// <returns type="Number" />

        return Math.floor(this._ticks / Sys.Extended.UI.TimeSpan.TicksPerMinute); 
    },
    getTotalSeconds : function() { 
        /// <summary>
        /// Gets the total seconds in the TimeSpan
        /// </summary>
        /// <returns type="Number" />

        return Math.floor(this._ticks / Sys.Extended.UI.TimeSpan.TicksPerSecond); 
    },
    getTotalMilliseconds : function() { 
        /// <summary>
        /// Gets the total milliseconds in the TimeSpan
        /// </summary>
        /// <returns type="Number" />

        return Math.floor(this._ticks / Sys.Extended.UI.TimeSpan.TicksPerMillisecond); 
    },
    add : function(value) { 
        /// <summary>
        /// Adds the supplied TimeSpan to this TimeSpan
        /// </summary>
        /// <param name="value" type="Sys.Extended.UI.TimeSpan">The TimeSpan to add</param>
        /// <returns type="Sys.Extended.UI.TimeSpan" />

        return new Sys.Extended.UI.TimeSpan(this._ticks + value.getTicks()); 
    },
    subtract : function(value) { 
        /// <summary>
        /// Subtracts the supplied TimeSpan to this TimeSpan
        /// </summary>
        /// <param name="value" type="Sys.Extended.UI.TimeSpan">The TimeSpan to subtract</param>
        /// <returns type="Sys.Extended.UI.TimeSpan" />

        return new Sys.Extended.UI.TimeSpan(this._ticks - value.getTicks()); 
    },
    negate : function() { 
        /// <summary>
        /// Negates the TimeSpan
        /// </summary>
        /// <returns type="Sys.Extended.UI.TimeSpan" />

        return new Sys.Extended.UI.TimeSpan(-this._ticks); 
    },
    equals : function(value) { 
        /// <summary>
        /// Whether this TimeSpan equals another TimeSpan
        /// </summary>
        /// <param name="value" type="Sys.Extended.UI.TimeSpan">The TimeSpan to test</param>
        /// <returns type="Sys.Extended.UI.TimeSpan" />

        return this._ticks == value.getTicks(); 
    },
    compareTo : function(value) { 
        /// <summary>
        /// Whether this TimeSpan greater or less than another TimeSpan
        /// </summary>
        /// <param name="value" type="Sys.Extended.UI.TimeSpan">The TimeSpan to test</param>
        /// <returns type="Sys.Extended.UI.TimeSpan" />

        if(this._ticks > value.getTicks()) 
            return 1; 
        else if(this._ticks < value.getTicks()) 
            return -1; 
        else 
            return 0; 
    },
    toString : function() { 
        /// <summary>
        /// Gets the string representation of the TimeSpan
        /// </summary>
        /// <returns type="String" />

        return this.format("F"); 
    },
    format : function(format) {    
        /// <summary>
        /// Gets the string representation of the TimeSpan
        /// </summary>
        /// <param name="format" type="String" mayBeNull="true">The format specifier used to format the TimeSpan</param>
        /// <returns type="String" />

        if (!format) {
            format = "F";
        }
        if (format.length == 1) {
            switch (format) {
                case "t": format = Sys.Extended.UI.TimeSpan.ShortTimeSpanPattern; break;
                case "T": format = Sys.Extended.UI.TimeSpan.LongTimeSpanPattern; break;
                case "F": format = Sys.Extended.UI.TimeSpan.FullTimeSpanPattern; break;
                default: throw Error.createError(String.format(Sys.Extended.UI.Resources.Common_DateTime_InvalidTimeSpan, format));
            }
        }
        var regex = /dd|d|hh|h|mm|m|ss|s|nnnn|nnn|nn|n/g;
        var builder = new Sys.StringBuilder();
        var ticks = this._ticks;
        if (ticks < 0) {
            builder.append("-");            
            ticks = -ticks;
        }
        for (;;) {
            var index = regex.lastIndex;
            var ar = regex.exec(format);
            builder.append(format.slice(index, ar ? ar.index : format.length));
            if (!ar) break;
            switch (ar[0]) {
                case "dd":
                case "d":
                    builder.append($common.padLeft(Math.floor(ticks / Sys.Extended.UI.TimeSpan.TicksPerDay, ar[0].length, '0')));
                    break;
                case "hh":
                case "h":
                    builder.append($common.padLeft(Math.floor(ticks / Sys.Extended.UI.TimeSpan.TicksPerHour) % 24, ar[0].length, '0'));
                    break;
                case "mm":
                case "m":
                    builder.append($common.padLeft(Math.floor(ticks / Sys.Extended.UI.TimeSpan.TicksPerMinute) % 60, ar[0].length, '0'));
                    break;
                case "ss":
                case "s":
                    builder.append($common.padLeft(Math.floor(ticks / Sys.Extended.UI.TimeSpan.TicksPerSecond) % 60, ar[0].length, '0'));
                    break;
                case "nnnn":
                case "nnn":
                case "nn":
                case "n":
                    builder.append($common.padRight(Math.floor(ticks / Sys.Extended.UI.TimeSpan.TicksPerMillisecond) % 1000, ar[0].length, '0', true));
                    break;
                default:
                    Sys.Debug.assert(false);
            }
        }
        return builder.toString();
    }
}
Sys.Extended.UI.TimeSpan.parse = function(text) {
    /// <summary>
    /// Parses a text value into a TimeSpan
    /// </summary>
    /// <param name="text" type="String">The text to parse</param>
    /// <returns type="Sys.Extended.UI.TimeSpan" />

    var parts = text.split(":");
    var d = 0;
    var h = 0;
    var m = 0;
    var s = 0;
    var n = 0;
    var ticks = 0;    
    switch(parts.length) {
        case 1:
            if (parts[0].indexOf(".") != -1) {
                var parts2 = parts[0].split(".");
                s = parseInt(parts2[0]);
                n = parseInt(parts2[1]);
            } else {
                ticks = parseInt(parts[0]);
            }
            break;
        case 2:
            h = parseInt(parts[0]);
            m = parseInt(parts[1]);
            break;
        case 3:
            h = parseInt(parts[0]);
            m = parseInt(parts[1]);
            if (parts[2].indexOf(".") != -1) {
                var parts2 = parts[2].split(".");
                s = parseInt(parts2[0]);
                n = parseInt(parts2[1]);
            } else {
                s = parseInt(parts[2]);
            }
            break;
        case 4:
            d = parseInt(parts[0]);
            h = parseInt(parts[1]);
            m = parseInt(parts[2]);
            if (parts[3].indexOf(".") != -1) {
                var parts2 = parts[3].split(".");
                s = parseInt(parts2[0]);
                n = parseInt(parts2[1]);
            } else {
                s = parseInt(parts[3]);
            }
            break;
    }
    ticks += (d * Sys.Extended.UI.TimeSpan.TicksPerDay) +
             (h * Sys.Extended.UI.TimeSpan.TicksPerHour) +
             (m * Sys.Extended.UI.TimeSpan.TicksPerMinute) +
             (s * Sys.Extended.UI.TimeSpan.TicksPerSecond) +
             (n * Sys.Extended.UI.TimeSpan.TicksPerMillisecond);
    if(!isNaN(ticks)) {
        return new Sys.Extended.UI.TimeSpan(ticks);
    }    
    throw Error.create(Sys.Extended.UI.Resources.Common_DateTime_InvalidFormat);
}
Sys.Extended.UI.TimeSpan.fromTicks = function(ticks) { 
    /// <summary>
    /// Creates a TimeSpan for the specified number of ticks
    /// </summary>
    /// <param name="ticks" type="Number" integer="true">The ticks for the TimeSpan instance</param>
    /// <returns type="Sys.Extended.UI.TimeSpan" />

    return new Sys.Extended.UI.TimeSpan(ticks); 
}
Sys.Extended.UI.TimeSpan.fromDays = function(days) { 
    /// <summary>
    /// Creates a TimeSpan for the specified number of days
    /// </summary>
    /// <param name="days" type="Number">The days for the TimeSpan instance</param>
    /// <returns type="Sys.Extended.UI.TimeSpan" />

    return new Sys.Extended.UI.TimeSpan(days * Sys.Extended.UI.TimeSpan.TicksPerDay); 
}
Sys.Extended.UI.TimeSpan.fromHours = function(hours) { 
    /// <summary>
    /// Creates a TimeSpan for the specified number of hours
    /// </summary>
    /// <param name="hours" type="Number">The hours for the TimeSpan instance</param>
    /// <returns type="Sys.Extended.UI.TimeSpan" />

    return new Sys.Extended.UI.TimeSpan(hours * Sys.Extended.UI.TimeSpan.TicksPerHour); 
}
Sys.Extended.UI.TimeSpan.fromMinutes = function(minutes) { 
    /// <summary>
    /// Creates a TimeSpan for the specified number of minutes
    /// </summary>
    /// <param name="minutes" type="Number">The minutes for the TimeSpan instance</param>
    /// <returns type="Sys.Extended.UI.TimeSpan" />

    return new Sys.Extended.UI.TimeSpan(minutes * Sys.Extended.UI.TimeSpan.TicksPerMinute); 
}
Sys.Extended.UI.TimeSpan.fromSeconds = function(seconds) { 
    /// <summary>
    /// Creates a TimeSpan for the specified number of seconds
    /// </summary>
    /// <param name="seconds" type="Number">The seconds for the TimeSpan instance</param>
    /// <returns type="Sys.Extended.UI.TimeSpan" />

    return new Sys.Extended.UI.TimeSpan(minutes * Sys.Extended.UI.TimeSpan.TicksPerSecond); 
}
Sys.Extended.UI.TimeSpan.fromMilliseconds = function(milliseconds) { 
    /// <summary>
    /// Creates a TimeSpan for the specified number of milliseconds
    /// </summary>
    /// <param name="days" type="Number">The milliseconds for the TimeSpan instance</param>
    /// <returns type="Sys.Extended.UI.TimeSpan" />

    return new Sys.Extended.UI.TimeSpan(minutes * Sys.Extended.UI.TimeSpan.TicksPerMillisecond); 
}
Sys.Extended.UI.TimeSpan.TicksPerDay = 864000000000;
Sys.Extended.UI.TimeSpan.TicksPerHour = 36000000000;
Sys.Extended.UI.TimeSpan.TicksPerMinute = 600000000;
Sys.Extended.UI.TimeSpan.TicksPerSecond = 10000000;
Sys.Extended.UI.TimeSpan.TicksPerMillisecond = 10000;
Sys.Extended.UI.TimeSpan.FullTimeSpanPattern = "dd:hh:mm:ss.nnnn";
Sys.Extended.UI.TimeSpan.ShortTimeSpanPattern = "hh:mm";
Sys.Extended.UI.TimeSpan.LongTimeSpanPattern = "hh:mm:ss";

Date.prototype.getTimeOfDay = function Date$getTimeOfDay() {
    /// <summary>
    /// Gets a TimeSpan representing the current time of the Date
    /// </summary>
    /// <returns type="Sys.Extended.UI.TimeSpan" />

    return new Sys.Extended.UI.TimeSpan(
        0, 
        this.getHours(), 
        this.getMinutes(), 
        this.getSeconds(), 
        this.getMilliseconds());
}
Date.prototype.getDateOnly = function Date$getDateOnly() {
    /// <summary>
    /// Gets a Date representing the Date only part of the Date and Adjusts for DST switch at midnight.
    /// </summary>
    /// <returns type="Date" />

    var tempDate = new Date(this.getFullYear(), this.getMonth(), this.getDate());

    if (!((this.getMonth() === tempDate.getMonth()) && (this.getDate() === tempDate.getDate()))) {

        tempDate.setMinutes(120);

    }

    return tempDate;
}
Date.prototype.add = function Date$add(span) {
    /// <summary>
    /// Adds a TimeSpan to the current Date
    /// </summary>
    /// <param name="span" type="Sys.Extended.UI.TimeSpan">The amount of time to add to the date</param>
    /// <returns type="Date" />

    return new Date(this.getTime() + span.getTotalMilliseconds());
}
Date.prototype.subtract = function Date$subtract(span) {
    /// <summary>
    /// Subtracts a TimeSpan to the current Date
    /// </summary>
    /// <param name="span" type="Sys.Extended.UI.TimeSpan">The amount of time to subtract from the date</param>
    /// <returns type="Date" />

    return this.add(span.negate());
}
Date.prototype.getTicks = function Date$getTicks() {
    /// <summary>
    /// Gets the number of ticks in the date
    /// </summary>
    /// <returns type="Number" />

    return this.getTime() * Sys.Extended.UI.TimeSpan.TicksPerMillisecond;
}

Sys.Extended.UI.FirstDayOfWeek = function() {
    /// <summary>
    /// Represents the first day of the week in a calendar
    /// </summary>
}
Sys.Extended.UI.FirstDayOfWeek.prototype = {
    Sunday : 0,
    Monday : 1,
    Tuesday : 2,
    Wednesday : 3,
    Thursday : 4,
    Friday : 5,
    Saturday : 6,
    Default : 7
}
Sys.Extended.UI.FirstDayOfWeek.registerEnum("Sys.Extended.UI.FirstDayOfWeek");

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedCommon"], execute);
}
else {
    execute();
}

})();
�F// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedCommon";function a(){var p="WatermarkChanged",l="hiddenInputToUpdateATBuffer_CommonToolkitScripts",g="HTMLEvents",r="mousemove",k="MouseEvents",m="UIEvents",o="display",q="DXImageTransform.Microsoft.Alpha",i="value",h="hidden",n="none",f="px",e="element",d="undefined",c=null,a=false,j="Sys.Extended.UI.BoxSide",b=true,s=Sys.version;if(!s&&!Sys._versionChecked){Sys._versionChecked=b;throw new Error("AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts. Ensure the correct version of the scripts are referenced. If you are using an ASP.NET ScriptManager, switch to the ToolkitScriptManager in AjaxControlToolkit.dll.");}Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.BoxSide=function(){};Sys.Extended.UI.BoxSide.prototype={Top:0,Right:1,Bottom:2,Left:3};Sys.Extended.UI.BoxSide.registerEnum(j,a);Sys.Extended.UI._CommonToolkitScripts=function(){};Sys.Extended.UI._CommonToolkitScripts.prototype={_borderStyleNames:["borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle"],_borderWidthNames:["borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth"],_paddingWidthNames:["paddingTop","paddingRight","paddingBottom","paddingLeft"],_marginWidthNames:["marginTop","marginRight","marginBottom","marginLeft"],getCurrentStyle:function(b,e,f){var a=c;if(b){if(b.currentStyle)a=b.currentStyle[e];else if(document.defaultView&&document.defaultView.getComputedStyle){var g=document.defaultView.getComputedStyle(b,c);if(g)a=g[e]}if(!a&&b.style.getPropertyValue)a=b.style.getPropertyValue(e);else if(!a&&b.style.getAttribute)a=b.style.getAttribute(e)}if(!a||a==""||typeof a===d)if(typeof f!=d)a=f;else a=c;return a},getInheritedBackgroundColor:function(d){var c="backgroundColor",a="#FFFFFF";if(!d)return a;var b=this.getCurrentStyle(d,c);try{while(!b||b==""||b=="transparent"||b=="rgba(0, 0, 0, 0)"){d=d.parentNode;if(!d)b=a;else b=this.getCurrentStyle(d,c)}}catch(e){b=a}return b},getLocation:function(a){return Sys.UI.DomElement.getLocation(a)},setLocation:function(b,a){Sys.UI.DomElement.setLocation(b,a.x,a.y)},getContentSize:function(a){if(!a)throw Error.argumentNull(e);var d=this.getSize(a),c=this.getBorderBox(a),b=this.getPaddingBox(a);return{width:d.width-c.horizontal-b.horizontal,height:d.height-c.vertical-b.vertical}},getSize:function(a){if(!a)throw Error.argumentNull(e);return{width:a.offsetWidth,height:a.offsetHeight}},setContentSize:function(a,c){var b="border-box",d=this;if(!a)throw Error.argumentNull(e);if(!c)throw Error.argumentNull("size");if(d.getCurrentStyle(a,"MozBoxSizing")==b||d.getCurrentStyle(a,"BoxSizing")==b){var h=d.getBorderBox(a),g=d.getPaddingBox(a);c={width:c.width+h.horizontal+g.horizontal,height:c.height+h.vertical+g.vertical}}a.style.width=c.width.toString()+f;a.style.height=c.height.toString()+f},setSize:function(a,b){if(!a)throw Error.argumentNull(e);if(!b)throw Error.argumentNull("size");var d=this.getBorderBox(a),c=this.getPaddingBox(a),f={width:b.width-d.horizontal-c.horizontal,height:b.height-d.vertical-c.vertical};this.setContentSize(a,f)},getBounds:function(a){return Sys.UI.DomElement.getBounds(a)},setBounds:function(a,b){if(!a)throw Error.argumentNull(e);if(!b)throw Error.argumentNull("bounds");this.setSize(a,b);$common.setLocation(a,b)},getClientBounds:function(){var b,a;if(document.compatMode=="CSS1Compat"){b=document.documentElement.clientWidth;a=document.documentElement.clientHeight}else{b=document.body.clientWidth;a=document.body.clientHeight}return new Sys.UI.Bounds(0,0,b,a)},getMarginBox:function(b){var c=this;if(!b)throw Error.argumentNull(e);var a={top:c.getMargin(b,Sys.Extended.UI.BoxSide.Top),right:c.getMargin(b,Sys.Extended.UI.BoxSide.Right),bottom:c.getMargin(b,Sys.Extended.UI.BoxSide.Bottom),left:c.getMargin(b,Sys.Extended.UI.BoxSide.Left)};a.horizontal=a.left+a.right;a.vertical=a.top+a.bottom;return a},getBorderBox:function(b){var c=this;if(!b)throw Error.argumentNull(e);var a={top:c.getBorderWidth(b,Sys.Extended.UI.BoxSide.Top),right:c.getBorderWidth(b,Sys.Extended.UI.BoxSide.Right),bottom:c.getBorderWidth(b,Sys.Extended.UI.BoxSide.Bottom),left:c.getBorderWidth(b,Sys.Extended.UI.BoxSide.Left)};a.horizontal=a.left+a.right;a.vertical=a.top+a.bottom;return a},getPaddingBox:function(b){var c=this;if(!b)throw Error.argumentNull(e);var a={top:c.getPadding(b,Sys.Extended.UI.BoxSide.Top),right:c.getPadding(b,Sys.Extended.UI.BoxSide.Right),bottom:c.getPadding(b,Sys.Extended.UI.BoxSide.Bottom),left:c.getPadding(b,Sys.Extended.UI.BoxSide.Left)};a.horizontal=a.left+a.right;a.vertical=a.top+a.bottom;return a},isBorderVisible:function(b,a){if(!b)throw Error.argumentNull(e);if(a<Sys.Extended.UI.BoxSide.Top||a>Sys.Extended.UI.BoxSide.Left)throw Error.argumentOutOfRange(String.format(Sys.Res.enumInvalidValue,a,j));var d=this._borderStyleNames[a],c=this.getCurrentStyle(b,d);return c!=n},getMargin:function(b,a){if(!b)throw Error.argumentNull(e);if(a<Sys.Extended.UI.BoxSide.Top||a>Sys.Extended.UI.BoxSide.Left)throw Error.argumentOutOfRange(String.format(Sys.Res.enumInvalidValue,a,j));var d=this._marginWidthNames[a],c=this.getCurrentStyle(b,d);try{return this.parsePadding(c)}catch(f){return 0}},getBorderWidth:function(c,a){var b=this;if(!c)throw Error.argumentNull(e);if(a<Sys.Extended.UI.BoxSide.Top||a>Sys.Extended.UI.BoxSide.Left)throw Error.argumentOutOfRange(String.format(Sys.Res.enumInvalidValue,a,j));if(!b.isBorderVisible(c,a))return 0;var f=b._borderWidthNames[a],d=b.getCurrentStyle(c,f);return b.parseBorderWidth(d)},getPadding:function(b,a){if(!b)throw Error.argumentNull(e);if(a<Sys.Extended.UI.BoxSide.Top||a>Sys.Extended.UI.BoxSide.Left)throw Error.argumentOutOfRange(String.format(Sys.Res.enumInvalidValue,a,j));var d=this._paddingWidthNames[a],c=this.getCurrentStyle(b,d);return this.parsePadding(c)},parseBorderWidth:function(d){var e=this;if(!e._borderThicknesses){var c={},a=document.createElement("div");a.style.visibility=h;a.style.position="absolute";a.style.fontSize="1px";document.body.appendChild(a);var b=document.createElement("div");b.style.height="0px";b.style.overflow=h;a.appendChild(b);var g=a.offsetHeight;b.style.borderTop="solid black";b.style.borderTopWidth="thin";c.thin=a.offsetHeight-g;b.style.borderTopWidth="medium";c.medium=a.offsetHeight-g;b.style.borderTopWidth="thick";c.thick=a.offsetHeight-g;a.removeChild(b);document.body.removeChild(a);e._borderThicknesses=c}if(d){switch(d){case"thin":case"medium":case"thick":return e._borderThicknesses[d];case"inherit":return 0}var i=e.parseUnit(d);Sys.Debug.assert(i.type==f,String.format(Sys.Extended.UI.Resources.Common_InvalidBorderWidthUnit,i.type));return i.size}return 0},parsePadding:function(a){if(a){if(a=="inherit")return 0;var b=this.parseUnit(a);b.type!==f&&Sys.Debug.fail(String.format(Sys.Extended.UI.Resources.Common_InvalidPaddingUnit,b.type));return b.size}return 0},parseUnit:function(a){if(!a)throw Error.argumentNull(i);a=a.trim().toLowerCase();for(var h=a.length,c=-1,g=0;g<h;g++){var b=a.substr(g,1);if((b<"0"||b>"9")&&b!="-"&&b!="."&&b!=",")break;c=g}if(c==-1)throw Error.create(Sys.Extended.UI.Resources.Common_UnitHasNoDigits);var e,d;if(c<h-1)e=a.substring(c+1).trim();else e=f;d=parseFloat(a.substr(0,c+1));if(e==f)d=Math.floor(d);return{size:d,type:e}},getElementOpacity:function(c){if(!c)throw Error.argumentNull(e);var d=a,f;if(c.filters){var h=c.filters;if(h.length!==0){var g=h[q];if(g){f=g.opacity/100;d=b}}}else{f=this.getCurrentStyle(c,"opacity",1);d=b}return d===a?1:parseFloat(f)},setElementOpacity:function(c,d){if(!c)throw Error.argumentNull(e);if(c.filters){var h=c.filters,f=b;if(h.length!==0){var g=h[q];if(g){f=a;g.opacity=d*100}}if(f)c.style.filter="progid:DXImageTransform.Microsoft.Alpha(opacity="+d*100+")"}else c.style.opacity=d},getVisible:function(a){return a&&n!=$common.getCurrentStyle(a,o)&&h!=$common.getCurrentStyle(a,"visibility")},setVisible:function(a,b){if(a&&b!=$common.getVisible(a)){if(b)if(a.style.removeAttribute)a.style.removeAttribute(o);else a.style.removeProperty(o);else a.style.display=n;a.style.visibility=b?"visible":h}},resolveFunction:function(a){if(a)if(a instanceof Function)return a;else if(String.isInstanceOfType(a)&&a.length>0){var b;if((b=window[a])instanceof Function)return b;else if((b=eval(a))instanceof Function)return b}return c},addCssClasses:function(c,b){for(var a=0;a<b.length;a++)Sys.UI.DomElement.addCssClass(c,b[a])},removeCssClasses:function(c,b){for(var a=0;a<b.length;a++)Sys.UI.DomElement.removeCssClass(c,b[a])},setStyle:function(a,b){$common.applyProperties(a.style,b)},removeHandlers:function(c,a){for(var b in a)$removeHandler(c,b,a[b])},overlaps:function(a,b){return a.x<b.x+b.width&&b.x<a.x+a.width&&a.y<b.y+b.height&&b.y<a.y+a.height},containsPoint:function(a,b,c){return b>=a.x&&b<a.x+a.width&&c>=a.y&&c<a.y+a.height},isKeyDigit:function(a){return 48<=a&&a<=57},isKeyNavigation:function(a){return Sys.UI.Key.left<=a&&a<=Sys.UI.Key.down},padLeft:function(d,c,e,b){return $common._pad(d,c||2,e||" ","l",b||a)},padRight:function(d,c,e,b){return $common._pad(d,c||2,e||" ","r",b||a)},_pad:function(c,b,h,e,g){c=c.toString();var f=c.length,d=new Sys.StringBuilder;e=="r"&&d.append(c);while(f<b){d.append(h);f++}e=="l"&&d.append(c);var a=d.toString();if(g&&a.length>b)if(e=="l")a=a.substr(a.length-b,b);else a=a.substr(0,b);return a},__DOMEvents:{focusin:{eventGroup:m,init:function(c){c.initUIEvent("focusin",b,a,window,1)}},focusout:{eventGroup:m,init:function(c){c.initUIEvent("focusout",b,a,window,1)}},activate:{eventGroup:m,init:function(a){a.initUIEvent("activate",b,b,window,1)}},focus:{eventGroup:m,init:function(b){b.initUIEvent("focus",a,a,window,1)}},blur:{eventGroup:m,init:function(b){b.initUIEvent("blur",a,a,window,1)}},click:{eventGroup:k,init:function(e,d){e.initMouseEvent("click",b,b,window,1,d.screenX||0,d.screenY||0,d.clientX||0,d.clientY||0,d.ctrlKey||a,d.altKey||a,d.shiftKey||a,d.metaKey||a,d.button||0,d.relatedTarget||c)}},dblclick:{eventGroup:k,init:function(e,d){e.initMouseEvent("click",b,b,window,2,d.screenX||0,d.screenY||0,d.clientX||0,d.clientY||0,d.ctrlKey||a,d.altKey||a,d.shiftKey||a,d.metaKey||a,d.button||0,d.relatedTarget||c)}},mousedown:{eventGroup:k,init:function(e,d){e.initMouseEvent("mousedown",b,b,window,1,d.screenX||0,d.screenY||0,d.clientX||0,d.clientY||0,d.ctrlKey||a,d.altKey||a,d.shiftKey||a,d.metaKey||a,d.button||0,d.relatedTarget||c)}},mouseup:{eventGroup:k,init:function(e,d){e.initMouseEvent("mouseup",b,b,window,1,d.screenX||0,d.screenY||0,d.clientX||0,d.clientY||0,d.ctrlKey||a,d.altKey||a,d.shiftKey||a,d.metaKey||a,d.button||0,d.relatedTarget||c)}},mouseover:{eventGroup:k,init:function(e,d){e.initMouseEvent("mouseover",b,b,window,1,d.screenX||0,d.screenY||0,d.clientX||0,d.clientY||0,d.ctrlKey||a,d.altKey||a,d.shiftKey||a,d.metaKey||a,d.button||0,d.relatedTarget||c)}},mousemove:{eventGroup:k,init:function(e,d){e.initMouseEvent(r,b,b,window,1,d.screenX||0,d.screenY||0,d.clientX||0,d.clientY||0,d.ctrlKey||a,d.altKey||a,d.shiftKey||a,d.metaKey||a,d.button||0,d.relatedTarget||c)}},mouseout:{eventGroup:k,init:function(e,d){e.initMouseEvent(r,b,b,window,1,d.screenX||0,d.screenY||0,d.clientX||0,d.clientY||0,d.ctrlKey||a,d.altKey||a,d.shiftKey||a,d.metaKey||a,d.button||0,d.relatedTarget||c)}},load:{eventGroup:g,init:function(b){b.initEvent("load",a,a)}},unload:{eventGroup:g,init:function(b){b.initEvent("unload",a,a)}},select:{eventGroup:g,init:function(c){c.initEvent("select",b,a)}},change:{eventGroup:g,init:function(c){c.initEvent("change",b,a)}},submit:{eventGroup:g,init:function(a){a.initEvent("submit",b,b)}},reset:{eventGroup:g,init:function(c){c.initEvent("reset",b,a)}},resize:{eventGroup:g,init:function(c){c.initEvent("resize",b,a)}},scroll:{eventGroup:g,init:function(c){c.initEvent("scroll",b,a)}}},tryFireRawEvent:function(c,d){try{if(c.fireEvent){c.fireEvent("on"+d.type,d);return b}else if(c.dispatchEvent){c.dispatchEvent(d);return b}}catch(e){}return a},tryFireEvent:function(g,f,e){try{if(document.createEventObject){var c=document.createEventObject();$common.applyProperties(c,e||{});g.fireEvent("on"+f,c);return b}else if(document.createEvent){var d=$common.__DOMEvents[f];if(d){var c=document.createEvent(d.eventGroup);d.init(c,e||{});g.dispatchEvent(c);return b}}}catch(c){}return a},wrapElement:function(a,b,c){var d=a.parentNode;d.replaceChild(b,a);(c||b).appendChild(a)},unwrapElement:function(b,a){var d=a.parentNode;if(d!=c){$common.removeElement(b);d.replaceChild(b,a)}},removeElement:function(a){var b=a.parentNode;b!=c&&b.removeChild(a)},applyProperties:function(e,d){for(var b in d){var a=d[b];if(a!=c&&Object.getType(a)===Object){var f=e[b];$common.applyProperties(f,a)}else e[b]=a}},createElementFromTemplate:function(a,j,e){if(typeof a.nameTable!=d){var g=a.nameTable;if(String.isInstanceOfType(g))g=e[g];if(g!=c)e=g}var l=c;if(typeof a.name!==d)l=a.name;var b=document.createElement(a.nodeName);if(typeof a.name!==d&&e)e[a.name]=b;if(typeof a.parent!==d&&j==c){var h=a.parent;if(String.isInstanceOfType(h))h=e[h];if(h!=c)j=h}typeof a.properties!==d&&a.properties!=c&&$common.applyProperties(b,a.properties);typeof a.cssClasses!==d&&a.cssClasses!=c&&$common.addCssClasses(b,a.cssClasses);typeof a.events!==d&&a.events!=c&&$addHandlers(b,a.events);typeof a.visible!==d&&a.visible!=c&&this.setVisible(b,a.visible);j&&j.appendChild(b);typeof a.opacity!==d&&a.opacity!=c&&$common.setElementOpacity(b,a.opacity);if(typeof a.children!==d&&a.children!=c)for(var k=0;k<a.children.length;k++){var m=a.children[k];$common.createElementFromTemplate(m,b,e)}var i=b;if(typeof a.contentPresenter!==d&&a.contentPresenter!=c)i=e[i];if(typeof a.content!==d&&a.content!=c){var f=a.content;if(String.isInstanceOfType(f))f=e[f];if(f.parentNode)$common.wrapElement(f,b,i);else i.appendChild(f)}return b},prepareHiddenElementForATDeviceUpdate:function(){var a=document.getElementById(l);if(!a){var a=document.createElement("input");a.setAttribute("type",h);a.setAttribute(i,"1");a.setAttribute("id",l);a.setAttribute("name",l);document.forms[0]&&document.forms[0].appendChild(a)}},updateFormToRefreshATDeviceBuffer:function(){var a=document.getElementById(l);if(a)if(a.getAttribute(i)=="1")a.setAttribute(i,"0");else a.setAttribute(i,"1")},appendElementToFormOrBody:function(a){if(document.forms&&document.forms[0])document.forms[0].appendChild(a);else document.body.appendChild(a)}};CommonToolkitScripts=Sys.Extended.UI.CommonToolkitScripts=new Sys.Extended.UI._CommonToolkitScripts;$common=CommonToolkitScripts;Sys.UI.DomElement.getVisible=$common.getVisible;Sys.UI.DomElement.setVisible=$common.setVisible;Sys.UI.Control.overlaps=$common.overlaps;Sys.Extended.UI._DomUtility=function(){};Sys.Extended.UI._DomUtility.prototype={isDescendant:function(f,e){for(var d=e.parentNode;d!=c;d=d.parentNode)if(d==f)return b;return a},isDescendantOrSelf:function(c,a){return c===a?b:Sys.Extended.UI.DomUtility.isDescendant(c,a)},isAncestor:function(a,b){return Sys.Extended.UI.DomUtility.isDescendant(b,a)},isAncestorOrSelf:function(a,c){return a===c?b:Sys.Extended.UI.DomUtility.isDescendant(c,a)},isSibling:function(f,e){for(var d=f.parentNode,c=0;c<d.childNodes.length;c++)if(d.childNodes[c]==e)return b;return a}};Sys.Extended.UI._DomUtility.registerClass("Sys.Extended.UI._DomUtility");Sys.Extended.UI.DomUtility=new Sys.Extended.UI._DomUtility;Sys.Extended.UI.TextBoxWrapper=function(d){var b=this;Sys.Extended.UI.TextBoxWrapper.initializeBase(b,[d]);b._current=d.value;b._watermark=c;b._isWatermarked=a};Sys.Extended.UI.TextBoxWrapper.prototype={dispose:function(){this.get_element().TextBoxWrapper=c;Sys.Extended.UI.TextBoxWrapper.callBaseMethod(this,"dispose")},get_Current:function(){this._current=this.get_element().value;return this._current},set_Current:function(a){this._current=a;this._updateElement()},get_Value:function(){return this.get_IsWatermarked()?"":this.get_Current()},set_Value:function(e){var d=this;d.set_Current(e);if(!e||0==e.length)c!=d._watermark&&d.set_IsWatermarked(b);else d.set_IsWatermarked(a)},get_Watermark:function(){return this._watermark},set_Watermark:function(a){this._watermark=a;this._updateElement()},get_IsWatermarked:function(){return this._isWatermarked},set_IsWatermarked:function(b){var a=this;if(a._isWatermarked!=b){a._isWatermarked=b;a._updateElement();a._raiseWatermarkChanged()}},_updateElement:function(){var a=this,b=a.get_element();if(a._isWatermarked){if(b.value!=a._watermark)b.value=a._watermark}else if(b.value!=a._current)b.value=a._current},add_WatermarkChanged:function(a){this.get_events().addHandler(p,a)},remove_WatermarkChanged:function(a){this.get_events().removeHandler(p,a)},_raiseWatermarkChanged:function(){var a=this.get_events().getHandler(p);a&&a(this,Sys.EventArgs.Empty)}};Sys.Extended.UI.TextBoxWrapper.get_Wrapper=function(a){if(c==a.TextBoxWrapper)a.TextBoxWrapper=new Sys.Extended.UI.TextBoxWrapper(a);return a.TextBoxWrapper};Sys.Extended.UI.TextBoxWrapper.registerClass("Sys.Extended.UI.TextBoxWrapper",Sys.UI.Behavior);Sys.Extended.UI.TextBoxWrapper.validatorGetValue=function(b){var a=$get(b);return a&&a.TextBoxWrapper?a.TextBoxWrapper.get_Value():Sys.Extended.UI.TextBoxWrapper._originalValidatorGetValue(b)};if(typeof ValidatorGetValue=="function"){Sys.Extended.UI.TextBoxWrapper._originalValidatorGetValue=ValidatorGetValue;ValidatorGetValue=Sys.Extended.UI.TextBoxWrapper.validatorGetValue}if(Sys.CultureInfo&&Sys.CultureInfo.prototype._getAbbrMonthIndex){Sys.CultureInfo.prototype._getAbbrMonthIndex=function(b){var a=this;if(!a._upperAbbrMonths)a._upperAbbrMonths=a._toUpperArray(a.dateTimeFormat.AbbreviatedMonthNames);return Array.indexOf(a._upperAbbrMonths,a._toUpper(b))};Sys.CultureInfo.CurrentCulture._getAbbrMonthIndex=Sys.CultureInfo.prototype._getAbbrMonthIndex;Sys.CultureInfo.InvariantCulture._getAbbrMonthIndex=Sys.CultureInfo.prototype._getAbbrMonthIndex}Sys.Extended.UI.ScrollBars=function(){throw Error.invalidOperation();};Sys.Extended.UI.ScrollBars.prototype={None:0,Horizontal:1,Vertical:2,Both:3,Auto:4};Sys.Extended.UI.ScrollBars.registerEnum("Sys.Extended.UI.ScrollBars",a)}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ComponentModel"],a);else a()})();var $common,CommonToolkitScripts;�// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference name="MicrosoftAjaxTimer.debug.js" />
/// <reference name="MicrosoftAjaxWebForms.debug.js" />

(function() {
var scriptName = "ExtendedCommon";

function execute() {


var version = Sys.version;
if (!version && !Sys._versionChecked) {
    Sys._versionChecked = true;
    throw new Error("AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts. Ensure the correct version of the scripts are referenced. If you are using an ASP.NET ScriptManager, switch to the ToolkitScriptManager in AjaxControlToolkit.dll.");
}

Type.registerNamespace('Sys.Extended.UI');


Sys.Extended.UI.BoxSide = function() {
    /// <summary>
    /// The BoxSide enumeration describes the sides of a DOM element
    /// </summary>
    /// <field name="Top" type="Number" integer="true" static="true" />
    /// <field name="Right" type="Number" integer="true" static="true" />
    /// <field name="Bottom" type="Number" integer="true" static="true" />
    /// <field name="Left" type="Number" integer="true" static="true" />
}
Sys.Extended.UI.BoxSide.prototype = {
    Top : 0,
    Right : 1,
    Bottom : 2,
    Left : 3
}
Sys.Extended.UI.BoxSide.registerEnum("Sys.Extended.UI.BoxSide", false);


Sys.Extended.UI._CommonToolkitScripts = function() {
    /// <summary>
    /// The _CommonToolkitScripts class contains functionality utilized across a number
    /// of controls (but not universally)
    /// </summary>
    /// <remarks>
    /// You should not create new instances of _CommonToolkitScripts.  Instead you should use the shared instance CommonToolkitScripts (or Sys.Extended.UI.CommonToolkitScripts).
    /// </remarks>
}
Sys.Extended.UI._CommonToolkitScripts.prototype = {
    _borderStyleNames: ["borderTopStyle", "borderRightStyle", "borderBottomStyle", "borderLeftStyle"],
    _borderWidthNames: ["borderTopWidth", "borderRightWidth", "borderBottomWidth", "borderLeftWidth"],
    _paddingWidthNames: ["paddingTop", "paddingRight", "paddingBottom", "paddingLeft"],
    _marginWidthNames: ["marginTop", "marginRight", "marginBottom", "marginLeft"],

    getCurrentStyle: function(element, attribute, defaultValue) {
        /// <summary>
        /// CommonToolkitScripts.getCurrentStyle is used to compute the value of a style attribute on an
        /// element that is currently being displayed.  This is especially useful for scenarios where
        /// several CSS classes and style attributes are merged, or when you need information about the
        /// size of an element (such as its padding or margins) that is not exposed in any other fashion.
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// Live DOM element to check style of
        /// </param>
        /// <param name="attribute" type="String">
        /// The style attribute's name is expected to be in a camel-cased form that you would use when
        /// accessing a JavaScript property instead of the hyphenated form you would use in a CSS
        /// stylesheet (i.e. it should be "backgroundColor" and not "background-color").
        /// </param>
        /// <param name="defaultValue" type="Object" mayBeNull="true" optional="true">
        /// In the event of a problem (i.e. a null element or an attribute that cannot be found) we
        /// return this object (or null if none if not specified).
        /// </param>
        /// <returns type="Object">
        /// Current style of the element's attribute
        /// </returns>

        var currentValue = null;
        if (element) {
            if (element.currentStyle) {
                currentValue = element.currentStyle[attribute];
            } else if (document.defaultView && document.defaultView.getComputedStyle) {
                var style = document.defaultView.getComputedStyle(element, null);
                if (style) {
                    currentValue = style[attribute];
                }
            }

            if (!currentValue && element.style.getPropertyValue) {
                currentValue = element.style.getPropertyValue(attribute);
            }
            else if (!currentValue && element.style.getAttribute) {
                currentValue = element.style.getAttribute(attribute);
            }
        }

        if ((!currentValue || currentValue == "" || typeof (currentValue) === 'undefined')) {
            if (typeof (defaultValue) != 'undefined') {
                currentValue = defaultValue;
            }
            else {
                currentValue = null;
            }
        }
        return currentValue;
    },

    getInheritedBackgroundColor: function(element) {
        /// <summary>
        /// CommonToolkitScripts.getInheritedBackgroundColor provides the ability to get the displayed
        /// background-color of an element.  In most cases calling CommonToolkitScripts.getCurrentStyle
        /// won't do the job because it will return "transparent" unless the element has been given a
        /// specific background color.  This function will walk up the element's parents until it finds
        /// a non-transparent color.  If we get all the way to the top of the document or have any other
        /// problem finding a color, we will return the default value '#FFFFFF'.  This function is
        /// especially important when we're using opacity in IE (because ClearType will make text look
        /// horrendous if you fade it with a transparent background color).
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// Live DOM element to get the background color of
        /// </param>
        /// <returns type="String">
        /// Background color of the element
        /// </returns>

        if (!element) return '#FFFFFF';
        var background = this.getCurrentStyle(element, 'backgroundColor');
        try {
            while (!background || background == '' || background == 'transparent' || background == 'rgba(0, 0, 0, 0)') {
                element = element.parentNode;
                if (!element) {
                    background = '#FFFFFF';
                } else {
                    background = this.getCurrentStyle(element, 'backgroundColor');
                }
            }
        } catch (ex) {
            background = '#FFFFFF';
        }
        return background;
    },

    getLocation: function(element) {
        /// <summary>Gets the coordinates of a DOM element.</summary>
        /// <param name="element" domElement="true"/>
        /// <returns type="Sys.UI.Point">
        ///   A Point object with two fields, x and y, which contain the pixel coordinates of the element.
        /// </returns>
        return Sys.UI.DomElement.getLocation(element);
    },

    setLocation: function(element, point) {
        /// <summary>
        /// Sets the current location for an element.
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// DOM element
        /// </param>
        /// <param name="point" type="Object">
        /// Point object (of the form {x,y})
        /// </param>
        /// <remarks>
        /// This method does not attempt to set the positioning mode of an element.
        /// The position is relative from the elements nearest position:relative or
        /// position:absolute element.
        /// </remarks>
        Sys.UI.DomElement.setLocation(element, point.x, point.y);
    },

    getContentSize: function(element) {
        /// <summary>
        /// Gets the "content-box" size of an element.
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// DOM element
        /// </param>
        /// <returns type="Object">
        /// Size of the element (in the form {width,height})
        /// </returns>
        /// <remarks>
        /// The "content-box" is the size of the content area *inside* of the borders and
        /// padding of an element. The "content-box" size does not include the margins around
        /// the element.
        /// </remarks>

        if (!element) {
            throw Error.argumentNull('element');
        }
        var size = this.getSize(element);
        var borderBox = this.getBorderBox(element);
        var paddingBox = this.getPaddingBox(element);
        return {
            width: size.width - borderBox.horizontal - paddingBox.horizontal,
            height: size.height - borderBox.vertical - paddingBox.vertical
        }
    },

    getSize: function(element) {
        /// <summary>
        /// Gets the "border-box" size of an element.
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// DOM element
        /// </param>
        /// <returns type="Object">
        /// Size of the element (in the form {width,height})
        /// </returns>
        /// <remarks>
        /// The "border-box" is the size of the content area *outside* of the borders and
        /// padding of an element.  The "border-box" size does not include the margins around
        /// the element.
        /// </remarks>

        if (!element) {
            throw Error.argumentNull('element');
        }
        return {
            width: element.offsetWidth,
            height: element.offsetHeight
        };
    },

    setContentSize: function(element, size) {
        /// <summary>
        /// Sets the "content-box" size of an element.
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// DOM element
        /// </param>
        /// <param name="size" type="Object">
        /// Size of the element (in the form {width,height})
        /// </param>
        /// <remarks>
        /// The "content-box" is the size of the content area *inside* of the borders and
        /// padding of an element. The "content-box" size does not include the margins around
        /// the element.
        /// </remarks>

        if (!element) {
            throw Error.argumentNull('element');
        }
        if (!size) {
            throw Error.argumentNull('size');
        }
        if (this.getCurrentStyle(element, 'MozBoxSizing') == 'border-box' || this.getCurrentStyle(element, 'BoxSizing') == 'border-box') {
            var borderBox = this.getBorderBox(element);
            var paddingBox = this.getPaddingBox(element);
            size = {
                width: size.width + borderBox.horizontal + paddingBox.horizontal,
                height: size.height + borderBox.vertical + paddingBox.vertical
            };
        }
        element.style.width = size.width.toString() + 'px';
        element.style.height = size.height.toString() + 'px';
    },

    setSize: function(element, size) {
        /// <summary>
        /// Sets the "border-box" size of an element.
        /// </summary>
        /// <remarks>
        /// The "border-box" is the size of the content area *outside* of the borders and 
        /// padding of an element.  The "border-box" size does not include the margins around
        /// the element.
        /// </remarks>
        /// <param name="element" type="Sys.UI.DomElement">DOM element</param>
        /// <param name="size" type="Object">Size of the element (in the form {width,height})</param>
        /// <returns />

        if (!element) {
            throw Error.argumentNull('element');
        }
        if (!size) {
            throw Error.argumentNull('size');
        }
        var borderBox = this.getBorderBox(element);
        var paddingBox = this.getPaddingBox(element);
        var contentSize = {
            width: size.width - borderBox.horizontal - paddingBox.horizontal,
            height: size.height - borderBox.vertical - paddingBox.vertical
        };
        this.setContentSize(element, contentSize);
    },

    getBounds: function(element) {
        /// <summary>Gets the coordinates, width and height of an element.</summary>
        /// <param name="element" domElement="true"/>
        /// <returns type="Sys.UI.Bounds">
        ///   A Bounds object with four fields, x, y, width and height, which contain the pixel coordinates,
        ///   width and height of the element.
        /// </returns>
        return Sys.UI.DomElement.getBounds(element);
    },

    setBounds: function(element, bounds) {
        /// <summary>
        /// Sets the "border-box" bounds of an element
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// DOM element
        /// </param>
        /// <param name="bounds" type="Object">
        /// Bounds of the element (of the form {x,y,width,height})
        /// </param>
        /// <remarks>
        /// The "border-box" is the size of the content area *outside* of the borders and
        /// padding of an element.  The "border-box" size does not include the margins around
        /// the element.
        /// </remarks>

        if (!element) {
            throw Error.argumentNull('element');
        }
        if (!bounds) {
            throw Error.argumentNull('bounds');
        }
        this.setSize(element, bounds);
        $common.setLocation(element, bounds);
    },

    getClientBounds: function() {
        /// <summary>
        /// Gets the width and height of the browser client window (excluding scrollbars)
        /// </summary>
        /// <returns type="Sys.UI.Bounds">
        /// Browser's client width and height
        /// </returns>

        var clientWidth;
        var clientHeight;

        if (document.compatMode == "CSS1Compat") {
            clientWidth = document.documentElement.clientWidth;
            clientHeight = document.documentElement.clientHeight;
        }
        else {
            clientWidth = document.body.clientWidth;
            clientHeight = document.body.clientHeight;
        }
        return new Sys.UI.Bounds(0, 0, clientWidth, clientHeight);
    },

    getMarginBox: function(element) {
        /// <summary>
        /// Gets the entire margin box sizes.
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// DOM element
        /// </param>
        /// <returns type="Object">
        /// Element's margin box sizes (of the form {top,left,bottom,right,horizontal,vertical})
        /// </returns>

        if (!element) {
            throw Error.argumentNull('element');
        }
        var box = {
            top: this.getMargin(element, Sys.Extended.UI.BoxSide.Top),
            right: this.getMargin(element, Sys.Extended.UI.BoxSide.Right),
            bottom: this.getMargin(element, Sys.Extended.UI.BoxSide.Bottom),
            left: this.getMargin(element, Sys.Extended.UI.BoxSide.Left)
        };
        box.horizontal = box.left + box.right;
        box.vertical = box.top + box.bottom;
        return box;
    },

    getBorderBox: function(element) {
        /// <summary>
        /// Gets the entire border box sizes.
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// DOM element
        /// </param>
        /// <returns type="Object">
        /// Element's border box sizes (of the form {top,left,bottom,right,horizontal,vertical})
        /// </returns>

        if (!element) {
            throw Error.argumentNull('element');
        }
        var box = {
            top: this.getBorderWidth(element, Sys.Extended.UI.BoxSide.Top),
            right: this.getBorderWidth(element, Sys.Extended.UI.BoxSide.Right),
            bottom: this.getBorderWidth(element, Sys.Extended.UI.BoxSide.Bottom),
            left: this.getBorderWidth(element, Sys.Extended.UI.BoxSide.Left)
        };
        box.horizontal = box.left + box.right;
        box.vertical = box.top + box.bottom;
        return box;
    },

    getPaddingBox: function(element) {
        /// <summary>
        /// Gets the entire padding box sizes.
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// DOM element
        /// </param>
        /// <returns type="Object">
        /// Element's padding box sizes (of the form {top,left,bottom,right,horizontal,vertical})
        /// </returns>

        if (!element) {
            throw Error.argumentNull('element');
        }
        var box = {
            top: this.getPadding(element, Sys.Extended.UI.BoxSide.Top),
            right: this.getPadding(element, Sys.Extended.UI.BoxSide.Right),
            bottom: this.getPadding(element, Sys.Extended.UI.BoxSide.Bottom),
            left: this.getPadding(element, Sys.Extended.UI.BoxSide.Left)
        };
        box.horizontal = box.left + box.right;
        box.vertical = box.top + box.bottom;
        return box;
    },

    isBorderVisible: function(element, boxSide) {
        /// <summary>
        /// Gets whether the current border style for an element on a specific boxSide is not 'none'.
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// DOM element
        /// </param>
        /// <param name="boxSide" type="Sys.Extended.UI.BoxSide">
        /// Side of the element
        /// </param>
        /// <returns type="Boolean">
        /// Whether the current border style for an element on a specific boxSide is not 'none'.
        /// </returns>

        if (!element) {
            throw Error.argumentNull('element');
        }
        if (boxSide < Sys.Extended.UI.BoxSide.Top || boxSide > Sys.Extended.UI.BoxSide.Left) {
            throw Error.argumentOutOfRange(String.format(Sys.Res.enumInvalidValue, boxSide, 'Sys.Extended.UI.BoxSide'));
        }
        var styleName = this._borderStyleNames[boxSide];
        var styleValue = this.getCurrentStyle(element, styleName);
        return styleValue != "none";
    },

    getMargin: function(element, boxSide) {
        /// <summary>
        /// Gets the margin thickness of an element on a specific boxSide.
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// DOM element
        /// </param>
        /// <param name="boxSide" type="Sys.Extended.UI.BoxSide">
        /// Side of the element
        /// </param>
        /// <returns type="Number" integer="true">
        /// Margin thickness on the element's specified side
        /// </returns>

        if (!element) {
            throw Error.argumentNull('element');
        }
        if (boxSide < Sys.Extended.UI.BoxSide.Top || boxSide > Sys.Extended.UI.BoxSide.Left) {
            throw Error.argumentOutOfRange(String.format(Sys.Res.enumInvalidValue, boxSide, 'Sys.Extended.UI.BoxSide'));
        }
        var styleName = this._marginWidthNames[boxSide];
        var styleValue = this.getCurrentStyle(element, styleName);
        try { return this.parsePadding(styleValue); } catch (ex) { return 0; }
    },

    getBorderWidth: function(element, boxSide) {
        /// <summary>
        /// Gets the border thickness of an element on a specific boxSide.
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// DOM element
        /// </param>
        /// <param name="boxSide" type="Sys.Extended.UI.BoxSide">
        /// Side of the element
        /// </param>
        /// <returns type="Number" integer="true">
        /// Border thickness on the element's specified side
        /// </returns>

        if (!element) {
            throw Error.argumentNull('element');
        }
        if (boxSide < Sys.Extended.UI.BoxSide.Top || boxSide > Sys.Extended.UI.BoxSide.Left) {
            throw Error.argumentOutOfRange(String.format(Sys.Res.enumInvalidValue, boxSide, 'Sys.Extended.UI.BoxSide'));
        }
        if (!this.isBorderVisible(element, boxSide)) {
            return 0;
        }
        var styleName = this._borderWidthNames[boxSide];
        var styleValue = this.getCurrentStyle(element, styleName);
        return this.parseBorderWidth(styleValue);
    },

    getPadding: function(element, boxSide) {
        /// <summary>
        /// Gets the padding thickness of an element on a specific boxSide.
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// DOM element
        /// </param>
        /// <param name="boxSide" type="Sys.Extended.UI.BoxSide">
        /// Side of the element
        /// </param>
        /// <returns type="Number" integer="true">
        /// Padding on the element's specified side
        /// </returns>

        if (!element) {
            throw Error.argumentNull('element');
        }
        if (boxSide < Sys.Extended.UI.BoxSide.Top || boxSide > Sys.Extended.UI.BoxSide.Left) {
            throw Error.argumentOutOfRange(String.format(Sys.Res.enumInvalidValue, boxSide, 'Sys.Extended.UI.BoxSide'));
        }
        var styleName = this._paddingWidthNames[boxSide];
        var styleValue = this.getCurrentStyle(element, styleName);
        return this.parsePadding(styleValue);
    },

    parseBorderWidth: function(borderWidth) {
        /// <summary>
        /// Parses a border-width string into a pixel size
        /// </summary>
        /// <param name="borderWidth" type="String" mayBeNull="true">
        /// Type of border ('thin','medium','thick','inherit',px unit,null,'')
        /// </param>
        /// <returns type="Number" integer="true">
        /// Number of pixels in the border-width
        /// </returns>
        if (!this._borderThicknesses) {

            var borderThicknesses = {};
            var div0 = document.createElement('div');
            div0.style.visibility = 'hidden';
            div0.style.position = 'absolute';
            div0.style.fontSize = '1px';
            document.body.appendChild(div0)
            var div1 = document.createElement('div');
            div1.style.height = '0px';
            div1.style.overflow = 'hidden';
            div0.appendChild(div1);
            var base = div0.offsetHeight;
            div1.style.borderTop = 'solid black';
            div1.style.borderTopWidth = 'thin';
            borderThicknesses['thin'] = div0.offsetHeight - base;
            div1.style.borderTopWidth = 'medium';
            borderThicknesses['medium'] = div0.offsetHeight - base;
            div1.style.borderTopWidth = 'thick';
            borderThicknesses['thick'] = div0.offsetHeight - base;
            div0.removeChild(div1);
            document.body.removeChild(div0);
            this._borderThicknesses = borderThicknesses;
        }

        if (borderWidth) {
            switch (borderWidth) {
                case 'thin':
                case 'medium':
                case 'thick':
                    return this._borderThicknesses[borderWidth];
                case 'inherit':
                    return 0;
            }
            var unit = this.parseUnit(borderWidth);
            Sys.Debug.assert(unit.type == 'px', String.format(Sys.Extended.UI.Resources.Common_InvalidBorderWidthUnit, unit.type));
            return unit.size;
        }
        return 0;
    },

    parsePadding: function(padding) {
        /// <summary>
        /// Parses a padding string into a pixel size
        /// </summary>
        /// <param name="padding" type="String" mayBeNull="true">
        /// Padding to parse ('inherit',px unit,null,'')
        /// </param>
        /// <returns type="Number" integer="true">
        /// Number of pixels in the padding
        /// </returns>

        if (padding) {
            if (padding == 'inherit') {
                return 0;
            }
            var unit = this.parseUnit(padding);
            if (unit.type !== 'px') {
                Sys.Debug.fail(String.format(Sys.Extended.UI.Resources.Common_InvalidPaddingUnit, unit.type));
            }
            return unit.size;
        }
        return 0;
    },

    parseUnit: function(value) {
        /// <summary>
        /// Parses a unit string into a unit object
        /// </summary>
        /// <param name="value" type="String" mayBeNull="true">
        /// Value to parse (of the form px unit,% unit,em unit,...)
        /// </param>
        /// <returns type="Object">
        /// Parsed unit (of the form {size,type})
        /// </returns>

        if (!value) {
            throw Error.argumentNull('value');
        }

        value = value.trim().toLowerCase();
        var l = value.length;
        var s = -1;
        for (var i = 0; i < l; i++) {
            var ch = value.substr(i, 1);
            if ((ch < '0' || ch > '9') && ch != '-' && ch != '.' && ch != ',') {
                break;
            }
            s = i;
        }
        if (s == -1) {
            throw Error.create(Sys.Extended.UI.Resources.Common_UnitHasNoDigits);
        }
        var type;
        var size;
        if (s < (l - 1)) {
            type = value.substring(s + 1).trim();
        } else {
            type = 'px';
        }
        size = parseFloat(value.substr(0, s + 1));
        if (type == 'px') {
            size = Math.floor(size);
        }
        return {
            size: size,
            type: type
        };
    },

    getElementOpacity: function(element) {
        /// <summary>
        /// Get the element's opacity
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// Element
        /// </param>
        /// <returns type="Number">
        /// Opacity of the element
        /// </returns>

        if (!element) {
            throw Error.argumentNull('element');
        }

        var hasOpacity = false;
        var opacity;

        if (element.filters) {
            var filters = element.filters;
            if (filters.length !== 0) {
                var alphaFilter = filters['DXImageTransform.Microsoft.Alpha'];
                if (alphaFilter) {
                    opacity = alphaFilter.opacity / 100.0;
                    hasOpacity = true;
                }
            }
        }
        else {
            opacity = this.getCurrentStyle(element, 'opacity', 1);
            hasOpacity = true;
        }

        if (hasOpacity === false) {
            return 1.0;
        }
        return parseFloat(opacity);
    },

    setElementOpacity: function(element, value) {
        /// <summary>
        /// Set the element's opacity
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// Element
        /// </param>
        /// <param name="value" type="Number">
        /// Opacity of the element
        /// </param>

        if (!element) {
            throw Error.argumentNull('element');
        }

        if (element.filters) {
            var filters = element.filters;
            var createFilter = true;
            if (filters.length !== 0) {
                var alphaFilter = filters['DXImageTransform.Microsoft.Alpha'];
                if (alphaFilter) {
                    createFilter = false;
                    alphaFilter.opacity = value * 100;
                }
            }
            if (createFilter) {
                element.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + (value * 100) + ')';
            }
        }
        else {
            element.style.opacity = value;
        }
    },

    getVisible: function(element) {
        /// <summary>
        /// Check if an element is visible
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// Element
        /// </param>
        /// <returns type="Boolean" mayBeNull="false">
        /// True if the element is visible, false otherwise
        /// </returns>


        return (element &&
                ("none" != $common.getCurrentStyle(element, "display")) &&
                ("hidden" != $common.getCurrentStyle(element, "visibility")));
    },

    setVisible: function(element, value) {
        /// <summary>
        /// Check if an element is visible
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// Element
        /// </param>
        /// <param name="value" type="Boolean" mayBeNull="false">
        /// True to make the element visible, false to hide it
        /// </param>


        if (element && value != $common.getVisible(element)) {
            if (value) {
                if (element.style.removeAttribute) {
                    element.style.removeAttribute("display");
                } else {
                    element.style.removeProperty("display");
                }
            } else {
                element.style.display = 'none';
            }
            element.style.visibility = value ? 'visible' : 'hidden';
        }
    },

    resolveFunction: function(value) {
        /// <summary>
        /// Returns a function reference that corresponds to the provided value
        /// </summary>
        /// <param name="value" type="Object">
        /// The value can either be a Function, the name of a function (that can be found using window['name']),
        /// or an expression that evaluates to a function.
        /// </param>
        /// <returns type="Function">
        /// Reference to the function, or null if not found
        /// </returns>

        if (value) {
            if (value instanceof Function) {
                return value;
            } else if (String.isInstanceOfType(value) && value.length > 0) {
                var func;
                if ((func = window[value]) instanceof Function) {
                    return func;
                } else if ((func = eval(value)) instanceof Function) {
                    return func;
                }
            }
        }
        return null;
    },

    addCssClasses: function(element, classNames) {
        /// <summary>
        /// Adds multiple css classes to a DomElement
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement">The element to modify</param>
        /// <param name="classNames" type="Array">The class names to add</param>

        for (var i = 0; i < classNames.length; i++) {
            Sys.UI.DomElement.addCssClass(element, classNames[i]);
        }
    },
    removeCssClasses: function(element, classNames) {
        /// <summary>
        /// Removes multiple css classes to a DomElement
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement">The element to modify</param>
        /// <param name="classNames" type="Array">The class names to remove</param>

        for (var i = 0; i < classNames.length; i++) {
            Sys.UI.DomElement.removeCssClass(element, classNames[i]);
        }
    },
    setStyle: function(element, style) {
        /// <summary>
        /// Sets the style of the element using the supplied style template object
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement">The element to modify</param>
        /// <param name="style" type="Object">The template</param>

        $common.applyProperties(element.style, style);
    },
    removeHandlers: function(element, events) {
        /// <summary>
        /// Removes a set of event handlers from an element
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement">The element to modify</param>
        /// <param name="events" type="Object">The template object that contains event names and delegates</param>
        /// <remarks>
        /// This is NOT the same as $clearHandlers which removes all delegates from a DomElement.  This rather removes select delegates 
        /// from a specified element and has a matching signature as $addHandlers
        /// </remarks>
        for (var name in events) {
            $removeHandler(element, name, events[name]);
        }
    },

    overlaps: function(r1, r2) {
        /// <summary>
        /// Determine if two rectangles overlap
        /// </summary>
        /// <param name="r1" type="Object">
        /// Rectangle
        /// </param>
        /// <param name="r2" type="Object">
        /// Rectangle
        /// </param>
        /// <returns type="Boolean">
        /// True if the rectangles overlap, false otherwise
        /// </returns>

        return r1.x < (r2.x + r2.width)
                && r2.x < (r1.x + r1.width)
                && r1.y < (r2.y + r2.height)
                && r2.y < (r1.y + r1.height);
    },

    containsPoint: function(rect, x, y) {
        /// <summary>
        /// Tests whether a point (x,y) is contained within a rectangle
        /// </summary>
        /// <param name="rect" type="Object">The rectangle</param>
        /// <param name="x" type="Number">The x coordinate of the point</param>
        /// <param name="y" type="Number">The y coordinate of the point</param>

        return x >= rect.x && x < (rect.x + rect.width) && y >= rect.y && y < (rect.y + rect.height);
    },

    isKeyDigit: function(keyCode) {
        /// <summary>
        /// Gets whether the supplied key-code is a digit
        /// </summary>
        /// <param name="keyCode" type="Number" integer="true">The key code of the event (from Sys.UI.DomEvent)</param>
        /// <returns type="Boolean" />

        return (0x30 <= keyCode && keyCode <= 0x39);
    },

    isKeyNavigation: function(keyCode) {
        /// <summary>
        /// Gets whether the supplied key-code is a navigation key
        /// </summary>
        /// <param name="keyCode" type="Number" integer="true">The key code of the event (from Sys.UI.DomEvent)</param>
        /// <returns type="Boolean" />

        return (Sys.UI.Key.left <= keyCode && keyCode <= Sys.UI.Key.down);
    },

    padLeft: function(text, size, ch, truncate) {
        /// <summary>
        /// Pads the left hand side of the supplied text with the specified pad character up to the requested size
        /// </summary>
        /// <param name="text" type="String">The text to pad</param>
        /// <param name="size" type="Number" integer="true" optional="true">The size to pad the text (default is 2)</param>
        /// <param name="ch" type="String" optional="true">The single character to use as the pad character (default is ' ')</param>
        /// <param name="truncate" type="Boolean" optional="true">Whether to truncate the text to size (default is false)</param>

        return $common._pad(text, size || 2, ch || ' ', 'l', truncate || false);
    },

    padRight: function(text, size, ch, truncate) {
        /// <summary>
        /// Pads the right hand side of the supplied text with the specified pad character up to the requested size
        /// </summary>
        /// <param name="text" type="String">The text to pad</param>
        /// <param name="size" type="Number" integer="true" optional="true">The size to pad the text (default is 2)</param>
        /// <param name="ch" type="String" optional="true">The single character to use as the pad character (default is ' ')</param>
        /// <param name="truncate" type="Boolean" optional="true">Whether to truncate the text to size (default is false)</param>

        return $common._pad(text, size || 2, ch || ' ', 'r', truncate || false);
    },

    _pad: function(text, size, ch, side, truncate) {
        /// <summary>
        /// Pads supplied text with the specified pad character up to the requested size
        /// </summary>
        /// <param name="text" type="String">The text to pad</param>
        /// <param name="size" type="Number" integer="true">The size to pad the text</param>
        /// <param name="ch" type="String">The single character to use as the pad character</param>
        /// <param name="side" type="String">Either 'l' or 'r' to siginfy whether to pad the Left or Right side respectively</param>
        /// <param name="truncate" type="Boolean">Whether to truncate the text to size</param>

        text = text.toString();
        var length = text.length;
        var builder = new Sys.StringBuilder();
        if (side == 'r') {
            builder.append(text);
        }
        while (length < size) {
            builder.append(ch);
            length++;
        }
        if (side == 'l') {
            builder.append(text);
        }
        var result = builder.toString();
        if (truncate && result.length > size) {
            if (side == 'l') {
                result = result.substr(result.length - size, size);
            } else {
                result = result.substr(0, size);
            }
        }
        return result;
    },

    __DOMEvents: {
        focusin: { eventGroup: "UIEvents", init: function(e, p) { e.initUIEvent("focusin", true, false, window, 1); } },
        focusout: { eventGroup: "UIEvents", init: function(e, p) { e.initUIEvent("focusout", true, false, window, 1); } },
        activate: { eventGroup: "UIEvents", init: function(e, p) { e.initUIEvent("activate", true, true, window, 1); } },
        focus: { eventGroup: "UIEvents", init: function(e, p) { e.initUIEvent("focus", false, false, window, 1); } },
        blur: { eventGroup: "UIEvents", init: function(e, p) { e.initUIEvent("blur", false, false, window, 1); } },
        click: { eventGroup: "MouseEvents", init: function(e, p) { e.initMouseEvent("click", true, true, window, 1, p.screenX || 0, p.screenY || 0, p.clientX || 0, p.clientY || 0, p.ctrlKey || false, p.altKey || false, p.shiftKey || false, p.metaKey || false, p.button || 0, p.relatedTarget || null); } },
        dblclick: { eventGroup: "MouseEvents", init: function(e, p) { e.initMouseEvent("click", true, true, window, 2, p.screenX || 0, p.screenY || 0, p.clientX || 0, p.clientY || 0, p.ctrlKey || false, p.altKey || false, p.shiftKey || false, p.metaKey || false, p.button || 0, p.relatedTarget || null); } },
        mousedown: { eventGroup: "MouseEvents", init: function(e, p) { e.initMouseEvent("mousedown", true, true, window, 1, p.screenX || 0, p.screenY || 0, p.clientX || 0, p.clientY || 0, p.ctrlKey || false, p.altKey || false, p.shiftKey || false, p.metaKey || false, p.button || 0, p.relatedTarget || null); } },
        mouseup: { eventGroup: "MouseEvents", init: function(e, p) { e.initMouseEvent("mouseup", true, true, window, 1, p.screenX || 0, p.screenY || 0, p.clientX || 0, p.clientY || 0, p.ctrlKey || false, p.altKey || false, p.shiftKey || false, p.metaKey || false, p.button || 0, p.relatedTarget || null); } },
        mouseover: { eventGroup: "MouseEvents", init: function(e, p) { e.initMouseEvent("mouseover", true, true, window, 1, p.screenX || 0, p.screenY || 0, p.clientX || 0, p.clientY || 0, p.ctrlKey || false, p.altKey || false, p.shiftKey || false, p.metaKey || false, p.button || 0, p.relatedTarget || null); } },
        mousemove: { eventGroup: "MouseEvents", init: function(e, p) { e.initMouseEvent("mousemove", true, true, window, 1, p.screenX || 0, p.screenY || 0, p.clientX || 0, p.clientY || 0, p.ctrlKey || false, p.altKey || false, p.shiftKey || false, p.metaKey || false, p.button || 0, p.relatedTarget || null); } },
        mouseout: { eventGroup: "MouseEvents", init: function(e, p) { e.initMouseEvent("mousemove", true, true, window, 1, p.screenX || 0, p.screenY || 0, p.clientX || 0, p.clientY || 0, p.ctrlKey || false, p.altKey || false, p.shiftKey || false, p.metaKey || false, p.button || 0, p.relatedTarget || null); } },
        load: { eventGroup: "HTMLEvents", init: function(e, p) { e.initEvent("load", false, false); } },
        unload: { eventGroup: "HTMLEvents", init: function(e, p) { e.initEvent("unload", false, false); } },
        select: { eventGroup: "HTMLEvents", init: function(e, p) { e.initEvent("select", true, false); } },
        change: { eventGroup: "HTMLEvents", init: function(e, p) { e.initEvent("change", true, false); } },
        submit: { eventGroup: "HTMLEvents", init: function(e, p) { e.initEvent("submit", true, true); } },
        reset: { eventGroup: "HTMLEvents", init: function(e, p) { e.initEvent("reset", true, false); } },
        resize: { eventGroup: "HTMLEvents", init: function(e, p) { e.initEvent("resize", true, false); } },
        scroll: { eventGroup: "HTMLEvents", init: function(e, p) { e.initEvent("scroll", true, false); } }
    },

    tryFireRawEvent: function(element, rawEvent) {
        /// <summary>
        /// Attempts to fire a raw DOM event on an element
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement">The element to fire the event</param>
        /// <param name="rawEvent" type="Object">The raw DOM event object to fire. Must not be Sys.UI.DomEvent</param>
        /// <returns type="Boolean">True if the event was successfully fired, otherwise false</returns>

        try {
            if (element.fireEvent) {
                element.fireEvent("on" + rawEvent.type, rawEvent);
                return true;
            } else if (element.dispatchEvent) {
                element.dispatchEvent(rawEvent);
                return true;
            }
        } catch (e) {
        }
        return false;
    },

    tryFireEvent: function(element, eventName, properties) {
        /// <summary>
        /// Attempts to fire a DOM event on an element
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement">The element to fire the event</param>
        /// <param name="eventName" type="String">The name of the event to fire (without an 'on' prefix)</param>
        /// <param name="properties" type="Object">Properties to add to the event</param>
        /// <returns type="Boolean">True if the event was successfully fired, otherwise false</returns>

        try {
            if (document.createEventObject) {
                var e = document.createEventObject();
                $common.applyProperties(e, properties || {});
                element.fireEvent("on" + eventName, e);
                return true;
            } else if (document.createEvent) {
                var def = $common.__DOMEvents[eventName];
                if (def) {
                    var e = document.createEvent(def.eventGroup);
                    def.init(e, properties || {});
                    element.dispatchEvent(e);
                    return true;
                }
            }
        } catch (e) {
        }
        return false;
    },

    wrapElement: function(innerElement, newOuterElement, newInnerParentElement) {
        /// <summary>
        /// Wraps an inner element with a new outer element at the same DOM location as the inner element
        /// </summary>
        /// <param name="innerElement" type="Sys.UI.DomElement">The element to be wrapped</param>
        /// <param name="newOuterElement" type="Sys.UI.DomElement">The new parent for the element</param>
        /// <returns />

        var parent = innerElement.parentNode;
        parent.replaceChild(newOuterElement, innerElement);
        (newInnerParentElement || newOuterElement).appendChild(innerElement);
    },

    unwrapElement: function(innerElement, oldOuterElement) {
        /// <summary>
        /// Unwraps an inner element from an outer element at the same DOM location as the outer element
        /// </summary>
        /// <param name="innerElement" type="Sys.UI.DomElement">The element to be wrapped</param>
        /// <param name="newOuterElement" type="Sys.UI.DomElement">The new parent for the element</param>
        /// <returns />

        var parent = oldOuterElement.parentNode;
        if (parent != null) {
            $common.removeElement(innerElement);
            parent.replaceChild(innerElement, oldOuterElement);
        }
    },

    removeElement: function(element) {
        /// <summary>
        /// Removes an element from the DOM tree
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement">The element to be removed</param>
        /// <returns />

        var parent = element.parentNode;
        if (parent != null) {
            parent.removeChild(element);
        }
    },

    applyProperties: function(target, properties) {
        /// <summary>
        /// Quick utility method to copy properties from a template object to a target object
        /// </summary>
        /// <param name="target" type="Object">The object to apply to</param>
        /// <param name="properties" type="Object">The template to copy values from</param>

        for (var p in properties) {
            var pv = properties[p];
            if (pv != null && Object.getType(pv) === Object) {
                var tv = target[p];
                $common.applyProperties(tv, pv);
            } else {
                target[p] = pv;
            }
        }
    },

    createElementFromTemplate: function(template, appendToParent, nameTable) {
        /// <summary>
        /// Creates an element for the current document based on a template object
        /// </summary>
        /// <param name="template" type="Object">The template from which to create the element</param>
        /// <param name="appendToParent" type="Sys.UI.DomElement" optional="true" mayBeNull="true">A DomElement under which to append this element</param>
        /// <param name="nameTable" type="Object" optional="true" mayBeNull="true">An object to use as the storage for the element using template.name as the key</param>
        /// <returns type="Sys.UI.DomElement" />
        /// <remarks>
        /// This method is useful if you find yourself using the same or similar DomElement constructions throughout a class.  You can even set the templates
        /// as static properties for a type to cut down on overhead.  This method is often called with a JSON style template:
        /// <code>
        /// var elt = $common.createElementFromTemplate({
        ///     nodeName : "div",
        ///     properties : {
        ///         style : {
        ///             height : "100px",
        ///             width : "100px",
        ///             backgroundColor : "white"
        ///         },
        ///         expandoAttribute : "foo"
        ///     },
        ///     events : {
        ///         click : function() { alert("foo"); },
        ///         mouseover : function() { elt.backgroundColor = "silver"; },
        ///         mouseout : function() { elt.backgroundColor = "white"; }
        ///     },
        ///     cssClasses : [ "class0", "class1" ],
        ///     visible : true,
        ///     opacity : .5
        /// }, someParent);
        /// </code>
        /// </remarks>

        if (typeof (template.nameTable) != 'undefined') {
            var newNameTable = template.nameTable;
            if (String.isInstanceOfType(newNameTable)) {
                newNameTable = nameTable[newNameTable];
            }
            if (newNameTable != null) {
                nameTable = newNameTable;
            }
        }

        var elementName = null;
        if (typeof (template.name) !== 'undefined') {
            elementName = template.name;
        }

        var elt = document.createElement(template.nodeName);

        if (typeof (template.name) !== 'undefined' && nameTable) {
            nameTable[template.name] = elt;
        }

        if (typeof (template.parent) !== 'undefined' && appendToParent == null) {
            var newParent = template.parent;
            if (String.isInstanceOfType(newParent)) {
                newParent = nameTable[newParent];
            }
            if (newParent != null) {
                appendToParent = newParent;
            }
        }

        if (typeof (template.properties) !== 'undefined' && template.properties != null) {
            $common.applyProperties(elt, template.properties);
        }

        if (typeof (template.cssClasses) !== 'undefined' && template.cssClasses != null) {
            $common.addCssClasses(elt, template.cssClasses);
        }

        if (typeof (template.events) !== 'undefined' && template.events != null) {
            $addHandlers(elt, template.events);
        }

        if (typeof (template.visible) !== 'undefined' && template.visible != null) {
            this.setVisible(elt, template.visible);
        }

        if (appendToParent) {
            appendToParent.appendChild(elt);
        }

        if (typeof (template.opacity) !== 'undefined' && template.opacity != null) {
            $common.setElementOpacity(elt, template.opacity);
        }

        if (typeof (template.children) !== 'undefined' && template.children != null) {
            for (var i = 0; i < template.children.length; i++) {
                var subtemplate = template.children[i];
                $common.createElementFromTemplate(subtemplate, elt, nameTable);
            }
        }

        var contentPresenter = elt;
        if (typeof (template.contentPresenter) !== 'undefined' && template.contentPresenter != null) {
            contentPresenter = nameTable[contentPresenter];
        }

        if (typeof (template.content) !== 'undefined' && template.content != null) {
            var content = template.content;
            if (String.isInstanceOfType(content)) {
                content = nameTable[content];
            }
            if (content.parentNode) {
                $common.wrapElement(content, elt, contentPresenter);
            } else {
                contentPresenter.appendChild(content);
            }
        }

        return elt;
    },

    prepareHiddenElementForATDeviceUpdate: function() {
        /// <summary>
        /// JAWS, an Assistive Technology device responds to updates to form elements 
        /// and refreshes its document buffer to what is showing live
        /// in the browser. To ensure that Toolkit controls that make XmlHttpRequests to
        /// retrieve content are useful to users with visual disabilities, we update a
        /// hidden form element to ensure that JAWS conveys what is in
        /// the browser. See this article for more details: 
        /// http://juicystudio.com/article/improving-ajax-applications-for-jaws-users.php
        /// This method creates a hidden input on the screen for any page that uses a Toolkit
        /// control that will perform an XmlHttpRequest.
        /// </summary>   
        var objHidden = document.getElementById('hiddenInputToUpdateATBuffer_CommonToolkitScripts');
        if (!objHidden) {
            var objHidden = document.createElement('input');
            objHidden.setAttribute('type', 'hidden');
            objHidden.setAttribute('value', '1');
            objHidden.setAttribute('id', 'hiddenInputToUpdateATBuffer_CommonToolkitScripts');
            objHidden.setAttribute('name', 'hiddenInputToUpdateATBuffer_CommonToolkitScripts');
            if (document.forms[0]) {
                document.forms[0].appendChild(objHidden);
            }
        }
    },

    updateFormToRefreshATDeviceBuffer: function() {
        /// <summary>
        /// Updates the hidden buffer to ensure that the latest document stream is picked up
        /// by the screen reader.
        /// </summary>
        var objHidden = document.getElementById('hiddenInputToUpdateATBuffer_CommonToolkitScripts');

        if (objHidden) {
            if (objHidden.getAttribute('value') == '1') {
                objHidden.setAttribute('value', '0');
            } else {
                objHidden.setAttribute('value', '1');
            }
        }
    },

    appendElementToFormOrBody: function(element) {
        /// <summary>
        /// Tries to append an element to the current form. If no form exists, the element will be appended to the body element.
        /// </summary>
        /// <param name="element" type="Object">The element to append.</param>
        if (document.forms && document.forms[0]) {
            document.forms[0].appendChild(element);
        } else {
            document.body.appendChild(element);
        }
    }
}

CommonToolkitScripts = Sys.Extended.UI.CommonToolkitScripts = new Sys.Extended.UI._CommonToolkitScripts();
$common = CommonToolkitScripts;

Sys.UI.DomElement.getVisible = $common.getVisible;
Sys.UI.DomElement.setVisible = $common.setVisible;
Sys.UI.Control.overlaps = $common.overlaps;

Sys.Extended.UI._DomUtility = function() {
    /// <summary>
    /// Utility functions for manipulating the DOM
    /// </summary>
}
Sys.Extended.UI._DomUtility.prototype = {
    isDescendant : function(ancestor, descendant) {
        /// <summary>
        /// Whether the specified element is a descendant of the ancestor
        /// </summary>
        /// <param name="ancestor" type="Sys.UI.DomElement">Ancestor node</param>
        /// <param name="descendant" type="Sys.UI.DomElement">Possible descendant node</param>
        /// <returns type="Boolean" />
        
        for (var n = descendant.parentNode; n != null; n = n.parentNode) {
            if (n == ancestor) return true;
        }
        return false;
    },
    isDescendantOrSelf : function(ancestor, descendant) {
        /// <summary>
        /// Whether the specified element is a descendant of the ancestor or the same as the ancestor
        /// </summary>
        /// <param name="ancestor" type="Sys.UI.DomElement">Ancestor node</param>
        /// <param name="descendant" type="Sys.UI.DomElement">Possible descendant node</param>
        /// <returns type="Boolean" />

        if (ancestor === descendant) 
            return true;
        return Sys.Extended.UI.DomUtility.isDescendant(ancestor, descendant);
    },
    isAncestor : function(descendant, ancestor) {
        /// <summary>
        /// Whether the specified element is an ancestor of the descendant
        /// </summary>
        /// <param name="descendant" type="Sys.UI.DomElement">Descendant node</param>
        /// <param name="ancestor" type="Sys.UI.DomElement">Possible ancestor node</param>
        /// <returns type="Boolean" />

        return Sys.Extended.UI.DomUtility.isDescendant(ancestor, descendant);
    },
    isAncestorOrSelf : function(descendant, ancestor) {
        /// <summary>
        /// Whether the specified element is an ancestor of the descendant or the same as the descendant
        /// </summary>
        /// <param name="descendant" type="Sys.UI.DomElement">Descendant node</param>
        /// <param name="ancestor" type="Sys.UI.DomElement">Possible ancestor node</param>
        /// <returns type="Boolean" />
        
        if (descendant === ancestor)
            return true;
            
        return Sys.Extended.UI.DomUtility.isDescendant(ancestor, descendant);
    },
    isSibling : function(self, sibling) {
        /// <summary>
        /// Whether the specified element is a sibling of the self element
        /// </summary>
        /// <param name="self" type="Sys.UI.DomElement">Self node</param>
        /// <param name="sibling" type="Sys.UI.DomElement">Possible sibling node</param>
        /// <returns type="Boolean" />
        
        var parent = self.parentNode;
        for (var i = 0; i < parent.childNodes.length; i++) {
            if (parent.childNodes[i] == sibling) return true;
        }
        return false;
    }
}
Sys.Extended.UI._DomUtility.registerClass("Sys.Extended.UI._DomUtility");
Sys.Extended.UI.DomUtility = new Sys.Extended.UI._DomUtility();


Sys.Extended.UI.TextBoxWrapper = function(element) {
    /// <summary>
    /// Class that wraps a TextBox (INPUT type="text") to abstract-out the
    /// presence of a watermark (which may be visible to the user but which
    /// should never be read by script.
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// The DOM element the behavior is associated with
    /// </param>
    Sys.Extended.UI.TextBoxWrapper.initializeBase(this, [element]);
    this._current = element.value;
    this._watermark = null;
    this._isWatermarked = false;
}

Sys.Extended.UI.TextBoxWrapper.prototype = {

    dispose : function() {
        /// <summary>
        /// Dispose the behavior
        /// </summary>
        this.get_element().TextBoxWrapper = null;
        Sys.Extended.UI.TextBoxWrapper.callBaseMethod(this, 'dispose');
    },

    get_Current : function() {
        /// <value type="String">
        /// Current value actually in the TextBox (i.e., TextBox.value)
        /// </value>
        this._current = this.get_element().value;
        return this._current;
    },
    set_Current : function(value) {
        this._current = value;
        this._updateElement();
    },

    get_Value : function() {
        /// <value type="String">
        /// Conceptual "value" of the TextBox - its contents if no watermark is present
        /// or "" if one is
        /// </value>
        if (this.get_IsWatermarked()) {
            return "";
        } else {
            return this.get_Current();
        }
    },
    set_Value : function(text) {
        this.set_Current(text);
        if (!text || (0 == text.length)) {
            if (null != this._watermark) {
                this.set_IsWatermarked(true);
            }
        } else {
            this.set_IsWatermarked(false);
        }
    },

    get_Watermark : function() {
        /// <value type="String">
        /// Text of the watermark for the TextBox
        /// </value>
        return this._watermark;
    },
    set_Watermark : function(value) {
        this._watermark = value;
        this._updateElement();
    },

    get_IsWatermarked : function() {
        /// <value type="Boolean">
        /// true iff the TextBox is watermarked
        /// </value>
        return this._isWatermarked;
    },
    set_IsWatermarked : function(isWatermarked) {
        if (this._isWatermarked != isWatermarked) {
            this._isWatermarked = isWatermarked;
            this._updateElement();
            this._raiseWatermarkChanged();
        }
    },

    _updateElement : function() {
        /// <summary>
        /// Updates the actual contents of the TextBox according to what should be there
        /// </summary>
        var element = this.get_element();
        if (this._isWatermarked) {
            if (element.value != this._watermark) {
                element.value = this._watermark;
            }
        } else {
            if (element.value != this._current) {
                element.value = this._current;
            }
        }
    },

    add_WatermarkChanged : function(handler) {
        /// <summary>
        /// Adds a handler for the WatermarkChanged event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        this.get_events().addHandler("WatermarkChanged", handler);
    },
    remove_WatermarkChanged : function(handler) {
        /// <summary>
        /// Removes a handler for the WatermarkChanged event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        this.get_events().removeHandler("WatermarkChanged", handler);
    },
    _raiseWatermarkChanged : function() {
        /// <summary>
        /// Raises the WatermarkChanged event
        /// </summary>
        var onWatermarkChangedHandler = this.get_events().getHandler("WatermarkChanged");
        if (onWatermarkChangedHandler) {
            onWatermarkChangedHandler(this, Sys.EventArgs.Empty);
        }
    }
}
Sys.Extended.UI.TextBoxWrapper.get_Wrapper = function(element) {
    /// <summary>
    /// Gets (creating one if necessary) the TextBoxWrapper for the specified TextBox
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// TextBox for which to get the wrapper
    /// </param>
    /// <returns type="Sys.Extended.UI.TextBoxWrapper">
    /// TextBoxWrapper instance
    /// </returns>
    if (null == element.TextBoxWrapper) {
        element.TextBoxWrapper = new Sys.Extended.UI.TextBoxWrapper(element);
    }
    return element.TextBoxWrapper;
}
Sys.Extended.UI.TextBoxWrapper.registerClass('Sys.Extended.UI.TextBoxWrapper', Sys.UI.Behavior);

Sys.Extended.UI.TextBoxWrapper.validatorGetValue = function(id) {
    /// <summary>
    /// Wrapper for ASP.NET's validatorGetValue to return the value from the wrapper if present
    /// </summary>
    /// <param name="id" type="String">
    /// id of the element
    /// </param>
    /// <returns type="Object">
    /// Value from the wrapper or result of original ValidatorGetValue
    /// </returns>
    var control = $get(id);
    if (control && control.TextBoxWrapper) {
        return control.TextBoxWrapper.get_Value();
    }
    return Sys.Extended.UI.TextBoxWrapper._originalValidatorGetValue(id);
}

if (typeof(ValidatorGetValue) == 'function') {
    Sys.Extended.UI.TextBoxWrapper._originalValidatorGetValue = ValidatorGetValue;
    ValidatorGetValue = Sys.Extended.UI.TextBoxWrapper.validatorGetValue;
}


if (Sys.CultureInfo && Sys.CultureInfo.prototype._getAbbrMonthIndex) {
    Sys.CultureInfo.prototype._getAbbrMonthIndex = function(value) {
        if (!this._upperAbbrMonths) {
            this._upperAbbrMonths = this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames);
        }
        return Array.indexOf(this._upperAbbrMonths, this._toUpper(value));
    }
    Sys.CultureInfo.CurrentCulture._getAbbrMonthIndex = Sys.CultureInfo.prototype._getAbbrMonthIndex;
    Sys.CultureInfo.InvariantCulture._getAbbrMonthIndex = Sys.CultureInfo.prototype._getAbbrMonthIndex;
}

Sys.Extended.UI.ScrollBars = function () { throw Error.invalidOperation(); }
Sys.Extended.UI.ScrollBars.prototype = {
    None: 0x00,
    Horizontal: 0x01,
    Vertical: 0x02,
    Both: 0x03,
    Auto: 0x04
}
Sys.Extended.UI.ScrollBars.registerEnum("Sys.Extended.UI.ScrollBars", false);

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ComponentModel"], execute);
}
else {
    execute();
}

})();

var $common, CommonToolkitScripts;
%// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedColorPicker";function a(){var h="hidden",g="hiding",f="shown",e="showing",d="colorSelectionChanged",b=false,c=true,a=null;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.ColorPickerBehavior=function(e){var d=this;Sys.Extended.UI.ColorPickerBehavior.initializeBase(d,[e]);d._textbox=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(e);d._button=a;d._sample=a;d._cssClass="ajax__colorPicker";d._popupPosition=Sys.Extended.UI.PositioningMode.BottomLeft;d._selectedColor=a;d._enabled=c;d._selectedColorChanging=b;d._popupMouseDown=b;d._isOpen=b;d._blur=new Sys.Extended.UI.DeferredOperation(1,d,d._doBlur);d._popupBehavior=a;d._container=a;d._popupDiv=a;d._colorsTable=a;d._colorsBody=a;d._button$delegates={click:Function.createDelegate(d,d._button_onclick),keypress:Function.createDelegate(d,d._button_onkeypress),blur:Function.createDelegate(d,d._button_onblur)};d._element$delegates={change:Function.createDelegate(d,d._element_onchange),keypress:Function.createDelegate(d,d._element_onkeypress),click:Function.createDelegate(d,d._element_onclick),focus:Function.createDelegate(d,d._element_onfocus),blur:Function.createDelegate(d,d._element_onblur)};d._popup$delegates={mousedown:Function.createDelegate(d,d._popup_onmousedown),mouseup:Function.createDelegate(d,d._popup_onmouseup),drag:Function.createDelegate(d,d._popup_onevent),dragstart:Function.createDelegate(d,d._popup_onevent),select:Function.createDelegate(d,d._popup_onevent)};d._cell$delegates={mouseover:Function.createDelegate(d,d._cell_onmouseover),mouseout:Function.createDelegate(d,d._cell_onmouseout),click:Function.createDelegate(d,d._cell_onclick)}};Sys.Extended.UI.ColorPickerBehavior.prototype={initialize:function(){var a=this;Sys.Extended.UI.ColorPickerBehavior.callBaseMethod(a,"initialize");if(!Sys.Extended.UI.ColorPickerBehavior._colorRegex)Sys.Extended.UI.ColorPickerBehavior._colorRegex=new RegExp("^[A-Fa-f0-9]{6}$");var c=a.get_element();$addHandlers(c,a._element$delegates);a._button&&$addHandlers(a._button,a._button$delegates);var b=a.get_selectedColor();b&&a.set_selectedColor(b);a._restoreSample()},dispose:function(){var b=this;b._sample=a;if(b._button){$clearHandlers(b._button);b._button=a}if(b._popupBehavior){b._popupBehavior.dispose();b._popupBehavior=a}if(b._container){b._container.parentNode&&b._container.parentNode.removeChild(b._container);b._container=a}if(b._popupDiv){$clearHandlers(b._popupDiv);b._popupDiv=a}if(b._colorsBody){for(var c=0;c<b._colorsBody.rows.length;c++)for(var f=b._colorsBody.rows[c],d=0;d<f.cells.length;d++)$clearHandlers(f.cells[d].firstChild);b._colorsBody=a}b._colorsTable=a;var e=b.get_element();e&&$clearHandlers(e);Sys.Extended.UI.ColorPickerBehavior.callBaseMethod(b,"dispose")},get_button:function(){return this._button},set_button:function(b){var a=this;if(a._button!==b){a._button&&a.get_isInitialized()&&$common.removeHandlers(a._button,a._button$delegates);a._button=b;a._button&&a.get_isInitialized()&&$addHandlers(a._button,a._button$delegates);a.raisePropertyChanged("button")}},get_sample:function(){return this._sample},set_sample:function(a){if(this._sample!==a){this._sample=a;this.raisePropertyChanged("sample")}},get_selectedColor:function(){var b=this;if(b._selectedColor===a){var c=b._textbox.get_Value();if(b._validate(c))b._selectedColor=c}return b._selectedColor},set_selectedColor:function(d){var a=this;if(a._selectedColor!==d&&a._validate(d)){a._selectedColor=d;a._selectedColorChanging=c;d!==a._textbox.get_Value()&&a._textbox.set_Value(d);a._showSample(d);a._selectedColorChanging=b;a.raisePropertyChanged("selectedColor")}},get_enabled:function(){return this._enabled},set_enabled:function(a){if(this._enabled!==a){this._enabled=a;this.raisePropertyChanged("enabled")}},get_popupPosition:function(){return this._popupPosition},set_popupPosition:function(a){if(this._popupPosition!==a){this._popupPosition=a;this.raisePropertyChanged("popupPosition")}},add_colorSelectionChanged:function(a){this.get_events().addHandler(d,a)},remove_colorSelectionChanged:function(a){this.get_events().removeHandler(d,a)},raiseColorSelectionChanged:function(){var a=this.get_events().getHandler(d);a&&a(this,Sys.EventArgs.Empty)},add_showing:function(a){this.get_events().addHandler(e,a)},remove_showing:function(a){this.get_events().removeHandler(e,a)},raiseShowing:function(b){var a=this.get_events().getHandler(e);a&&a(this,b)},add_shown:function(a){this.get_events().addHandler(f,a)},remove_shown:function(a){this.get_events().removeHandler(f,a)},raiseShown:function(){var a=this.get_events().getHandler(f);a&&a(this,Sys.EventArgs.Empty)},add_hiding:function(a){this.get_events().addHandler(g,a)},remove_hiding:function(a){this.get_events().removeHandler(g,a)},raiseHiding:function(b){var a=this.get_events().getHandler(g);a&&a(this,b)},add_hidden:function(a){this.get_events().addHandler(h,a)},remove_hidden:function(a){this.get_events().removeHandler(h,a)},raiseHidden:function(){var a=this.get_events().getHandler(h);a&&a(this,Sys.EventArgs.Empty)},show:function(){var a=this;a._ensureColorPicker();if(!a._isOpen){var b=new Sys.CancelEventArgs;a.raiseShowing(b);if(b.get_cancel())return;a._isOpen=c;a._popupBehavior.show();a.raiseShown()}},hide:function(){var a=this;if(a._isOpen){var c=new Sys.CancelEventArgs;a.raiseHiding(c);if(c.get_cancel())return;a._container&&a._popupBehavior.hide();a._isOpen=b;a.raiseHidden();a._popupMouseDown=b}},_focus:function(){if(this._button)this._button.focus();else this.get_element().focus()},_doBlur:function(d){var a=this;if(!d&&Sys.Browser.agent===Sys.Browser.Opera)a._blur.post(c);else{!a._popupMouseDown&&a.hide();a._popupMouseDown=b}},_buildColorPicker:function(){var a=this,d=a.get_element(),c=a.get_id();a._container=$common.createElementFromTemplate({nodeName:"div",properties:{id:c+"_container"},cssClasses:[a._cssClass]},d.parentNode);a._popupDiv=$common.createElementFromTemplate({nodeName:"div",events:a._popup$delegates,properties:{id:c+"_popupDiv"},cssClasses:["ajax__colorPicker_container"],visible:b},a._container)},_buildColors:function(){var a=this,f=a.get_id();a._colorsTable=$common.createElementFromTemplate({nodeName:"table",properties:{id:f+"_colorsTable",cellPadding:0,cellSpacing:1,border:0,style:{margin:"auto"}}},a._popupDiv);a._colorsBody=$common.createElementFromTemplate({nodeName:"tbody",properties:{id:f+"_colorsBody"}},a._colorsTable);for(var c=["00","99","33","66","FF","CC"],b,e,h=c.length,i=0;i<h;i++)for(var j=$common.createElementFromTemplate({nodeName:"tr"},a._colorsBody),d=0;d<h;d++){if(d===3)j=$common.createElementFromTemplate({nodeName:"tr"},a._colorsBody);for(var g=0;g<h;g++){b=c[i]+c[d]+c[g];e="#"+b;var k=$common.createElementFromTemplate({nodeName:"td"},j),l=$common.createElementFromTemplate({nodeName:"div",properties:{id:f+"_color_"+b,color:b,title:e,style:{backgroundColor:e},innerHTML:"&nbsp;"},events:a._cell$delegates},k)}}},_ensureColorPicker:function(){var a=this;if(!a._container){var b=a.get_element();a._buildColorPicker();a._buildColors();a._popupBehavior=new $create(Sys.Extended.UI.PopupBehavior,{parentElement:b},{},{},a._popupDiv);a._popupBehavior.set_positioningMode(a._popupPosition)}},_showSample:function(b){if(this._sample){var a="";if(b)a="#"+b;this._sample.style.backgroundColor=a}},_restoreSample:function(){this._showSample(this._selectedColor)},_validate:function(a){return a&&Sys.Extended.UI.ColorPickerBehavior._colorRegex.test(a)},_element_onfocus:function(){var a=this;if(!a._enabled)return;if(!a._button){a.show();a._popupMouseDown=b}},_element_onblur:function(){if(!this._enabled)return;!this._button&&this._doBlur()},_element_onchange:function(){var a=this;if(!a._selectedColorChanging){var b=a._textbox.get_Value();if(a._validate(b)||b===""){a._selectedColor=b;a._restoreSample()}}},_element_onkeypress:function(a){if(!this._enabled)return;if(!this._button&&a.charCode===Sys.UI.Key.esc){a.stopPropagation();a.preventDefault();this.hide()}},_element_onclick:function(){var a=this;if(!a._enabled)return;if(!a._button){a.show();a._popupMouseDown=b}},_popup_onevent:function(a){a.stopPropagation();a.preventDefault()},_popup_onmousedown:function(){this._popupMouseDown=c},_popup_onmouseup:function(){var a=this;Sys.Browser.agent===Sys.Browser.Opera&&a._blur.get_isPending()&&a._blur.cancel();a._popupMouseDown=b;a._focus()},_cell_onmouseover:function(a){a.stopPropagation();var b=a.target;this._showSample(b.color)},_cell_onmouseout:function(a){a.stopPropagation();this._restoreSample()},_cell_onclick:function(b){var a=this;b.stopPropagation();b.preventDefault();if(!a._enabled)return;var d=b.target;a.set_selectedColor(d.color);a._blur.post(c);a.raiseColorSelectionChanged()},_button_onclick:function(c){var a=this;c.preventDefault();c.stopPropagation();if(!a._enabled)return;if(!a._isOpen)a.show();else a.hide();a._focus();a._popupMouseDown=b},_button_onblur:function(){var a=this;if(!a._enabled)return;!a._popupMouseDown&&a.hide();a._popupMouseDown=b},_button_onkeypress:function(a){if(!this._enabled)return;if(a.charCode===Sys.UI.Key.esc){a.stopPropagation();a.preventDefault();this.hide()}this._popupMouseDown=b}};Sys.Extended.UI.ColorPickerBehavior.registerClass("Sys.Extended.UI.ColorPickerBehavior",Sys.Extended.UI.BehaviorBase);Sys.registerComponent(Sys.Extended.UI.ColorPickerBehavior,{name:"colorPicker"})}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedBase","ExtendedCommon","ExtendedThreading","ExtendedPopup"],a);else a()})();��// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />
/// <reference path="../DynamicPopulate/DynamicPopulateBehavior.js" />
/// <reference path="../Animation/Animations.js" />
/// <reference path="../Animation/AnimationBehavior.js" />
/// <reference path="../PopupExtender/PopupBehavior.js" />

(function () {
    var scriptName = "ExtendedBalloonPopupBehavior";

    function execute() {

        Type.registerNamespace("Sys.Extended.UI");

        Sys.Extended.UI.BalloonPopupControlBehavior = function (element) {
            /// <summary>
            /// The BalloonPopupControlBehavior opens a popup window next to the target element
            /// </summary>
            /// <param name="element" type="Sys.UI.DomElement" domElement="true">
            /// DOM element associated with the behavior
            /// </param>
            Sys.Extended.UI.BalloonPopupControlBehavior.initializeBase(this, [element]);

            this._balloonPopupControlID = null;
            this._position = Sys.Extended.UI.BalloonPopupPosition.Auto;
            this._balloonStyle = Sys.Extended.UI.BalloonPopupStyle.Rectangle;
            this._offsetX = 0;
            this._offsetY = 0;
            this._extenderControlID = null;
            this._displayOnMouseOver = false;
            this._displayOnFocus = false;
            this._displayOnClick = true;
            this._balloonSize = "small";
            this._shadow = true;
            this._scrollBars = Sys.Extended.UI.ScrollBars.Auto;

            this._popupElement = null;
            this._styleElement = null;
            this._sizeElement = null;
            this._shadowElement = null;
            this._directionElement = null;
            this._contentElement = null;
            this._popupBehavior = null;
            this._popupVisible = false;
            this._focusHandler = null;
            this._mouseOverHandler = null;
            this._clickHandler = null;
            this._popupClickHandler = null;
            this._bodyClickHandler = null;
            this._onShowJson = null;
            this._onHideJson = null;
            this._popupWidth = 0;
            this._popupHeight = 0;
            this._AutoPosition = null; // to hold correct position when Position mode is auto
            this._directionClassName = null; // temporary store class names for direction and shadow elements
        }
        Sys.Extended.UI.BalloonPopupControlBehavior.prototype = {
            initialize: function () {
                /// <summary>
                /// Initialize the behavior
                /// </summary>
                Sys.Extended.UI.BalloonPopupControlBehavior.callBaseMethod(this, "initialize");

                var e = this.get_element();

                this.createPopupElement();
                this._popupBehavior = $create(Sys.Extended.UI.PopupBehavior, { "id": this.get_id() + "BalloonPopupBehavior", "parentElement": e }, null, null, this._popupElement);

                if (this._onShowJson) {
                    this._popupBehavior.set_onShow(this._onShowJson);
                }
                if (this._onHideJson) {
                    this._popupBehavior.set_onHide(this._onHideJson);
                }

                if (this._displayOnFocus) {
                    this._focusHandler = Function.createDelegate(this, this._onFocus);
                }
                if (this._displayOnMouseOver) {
                    this._mouseOverHandler = Function.createDelegate(this, this._onMouseOver);
                }
                if (this._displayOnClick) {
                    this._clickHandler = Function.createDelegate(this, this._onFocus);
                }

                this._popupClickHandler = Function.createDelegate(this, this._onPopupClick);
                this._bodyClickHandler = Function.createDelegate(this, this._onBodyClick);

                if (this._displayOnFocus) {
                    $addHandler(e, "focus", this._focusHandler);
                }
                if (this._displayOnMouseOver) {
                    $addHandler(e, "mouseover", this._mouseOverHandler);
                }
                if (this._displayOnClick) {
                    $addHandler(e, "click", this._clickHandler);
                }
                $addHandler(document, "click", this._bodyClickHandler);
                $addHandler(this._popupElement, "click", this._popupClickHandler);
            },

            dispose: function () {
                /// <summary>
                /// Dispose the behavior
                /// </summary>

                var e = this.get_element();

                this._onShowJson = null;
                this._onHideJson = null;

                if (this._popupBehavior) {
                    this._popupBehavior.dispose();
                    this._popupBehavior = null;
                }
                if (this._focusHandler) {
                    $removeHandler(e, "focus", this._focusHandler);
                    this._focusHandler = null;
                }
                if (this._mouseOverHandler) {
                    $removeHandler(e, "mouseover", this._mouseOverHandler);
                    this._mouseOverHandler = null;
                }
                if (this._clickHandler) {
                    $removeHandler(e, "click", this._clickHandler);
                    this._clickHandler = null;
                }

                if (this._bodyClickHandler) {
                    $removeHandler(document, "click", this._bodyClickHandler);
                    this._bodyClickHandler = null;
                }
                if (this._popupClickHandler) {
                    $removeHandler(this._popupElement, "click", this._popupClickHandler);
                    this._popupClickHandler = null;
                }

                Sys.Extended.UI.BalloonPopupControlBehavior.callBaseMethod(this, "dispose");
            },

            createPopupElement: function () {
                var e = this.get_element();

                this._popupElement = $common.createElementFromTemplate({
                    nodeName: "div",
                    properties: {
                        id: this.get_id() + "_balloonPopup",
                        style: {
                            display: "block",
                            position: "absolute"
                        }
                    },
                    cssClasses: ["ajax__balloon_popup"]
                }, e.parentNode);

                this._styleElement = $common.createElementFromTemplate({
                    nodeName: "span",
                    Properties: {
                        id: "ajax__style_wrapper"
                    }
                }, this._popupElement);

                this._sizeElement = $common.createElementFromTemplate({
                    nodeName: "span",
                    Properties: {
                        id: "ajax__size_wrapper"
                    }
                }, this._styleElement);

                this._shadowElement = $common.createElementFromTemplate({
                    nodeName: "div",
                    Properties: {
                        id: "ajax__shadow_wrapper"
                    }
                }, this._sizeElement);

                this._directionElement = $common.createElementFromTemplate({
                    nodeName: "div",
                    Properties: {
                        id: "ajax__direction_wrapper"
                    }
                }, this._shadowElement);

                this._contentElement = $common.createElementFromTemplate({
                    nodeName: "div",
                    Properties: {
                        id: "ajax__content"
                    },
                    cssClasses: ["ajax__content"]
                }, this._directionElement);

                if ($get(this._balloonPopupControlID) == null)
                    throw "Referred BalloonPopupControlId did not find.";
                $get(this._balloonPopupControlID).style.display = 'none';
                                

                this.setStyle();
                this.setSize();
                this._directionElement.className = this._directionClassName;

                this._popupWidth = this._directionElement.offsetWidth;
                this._popupHeight = this._directionElement.offsetHeight;

                if (this.get_balloonPopupPosition() != Sys.Extended.UI.BalloonPopupPosition.Auto) {
                    this.setPosition();
                    this.setContentPadding();
                    this.setScrollBar();
                }

            },

            setStyle: function () {
                /// <summary>
                /// Set theme for balloon popup control. 
                /// </summary>
                switch (this.get_balloonPopupStyle()) {
                    case Sys.Extended.UI.BalloonPopupStyle.Rectangle:
                        this._styleElement.className = "rect";
                        this._directionClassName = "rect";
                        break;
                    case Sys.Extended.UI.BalloonPopupStyle.Cloud:
                        this._styleElement.className = "cloud";
                        this._directionClassName = "cloud";
                        break;
                    case Sys.Extended.UI.BalloonPopupStyle.Custom:
                        this._styleElement.className = this.get_customClassName();
                        this._directionClassName = this.get_customClassName();
                        break;
                    default:
                        this._styleElement.className = "rect";
                        this._directionClassName = "rect";
                        break;
                }
            },

            setSize: function () {
                /// <summary>
                /// Set size of balloon popup control. 
                /// </summary>
                switch (this.get_balloonSize()) {
                    case Sys.Extended.UI.BalloonPopupSize.Small:
                        this._sizeElement.className += " small";
                        this._directionClassName += " small";
                        break;
                    case Sys.Extended.UI.BalloonPopupSize.Medium:
                        this._sizeElement.className += " medium";
                        this._directionClassName += " medium";
                        break;
                    case Sys.Extended.UI.BalloonPopupSize.Large:
                        this._sizeElement.className += " large";
                        this._directionClassName += " large";
                        break;
                    default:
                        this._sizeElement.className += " small";
                        this._directionClassName += " small";
                        break;
                }
            },

            setPosition: function () {
                /// <summary>
                /// Set position of balloon popup control. 
                /// </summary>
                var currentPosition = null;
                if (this.get_balloonPopupPosition() == Sys.Extended.UI.BalloonPopupPosition.Auto) {
                    currentPosition = this._autoPosition;
                }
                else {
                    currentPosition = this.get_balloonPopupPosition();
                }

                switch (currentPosition) {
                    case Sys.Extended.UI.BalloonPopupPosition.TopLeft:
                        this._directionElement.className = this._directionClassName + " top_left";
                        this._shadowElement.className = this._directionClassName + " top_left_shadow";
                        break;
                    case Sys.Extended.UI.BalloonPopupPosition.TopRight:
                        this._directionElement.className = this._directionClassName + " top_right";
                        this._shadowElement.className = this._directionClassName + " top_right_shadow";
                        break;
                    case Sys.Extended.UI.BalloonPopupPosition.BottomLeft:
                        this._directionElement.className = this._directionClassName + " bottom_left";
                        this._shadowElement.className = this._directionClassName + " bottom_left_shadow";
                        break;
                    case Sys.Extended.UI.BalloonPopupPosition.BottomRight:
                        this._directionElement.className = this._directionClassName + " bottom_right";
                        this._shadowElement.className = this._directionClassName + " bottom_right_shadow";
                        break;
                    default:
                        this._directionElement.className = this._directionClassName + " top_right";
                        this._shadowElement.className = this._directionClassName + " top_right_shadow";
                        break;
                }

            },

            setContentPadding: function () {
                /// <summary>
                /// Set padding style for balloon popup contents 
                /// </summary>
                var contentPadding = $common.getPaddingBox(this._contentElement);
                var content = $get(this._balloonPopupControlID);
                $common.setBounds(content,
                {
                    x: this._offsetX + contentPadding.left,
                    y: this._offsetY + contentPadding.top,
                    width: this._popupWidth - contentPadding.left - contentPadding.right,
                    height: this._popupHeight - contentPadding.top - contentPadding.bottom
                });
            },

            setScrollBar: function () {
                /// <summary>
                /// Set overflow style for balloon popup contents 
                /// </summary>
                var content = $get(this._balloonPopupControlID);
                switch (this.get_scrollBars()) {
                    case Sys.Extended.UI.ScrollBars.Horizontal:
                        $common.setStyle(content, { overflowX: "scroll", overflowY: "hidden" });
                        break;
                    case Sys.Extended.UI.ScrollBars.Vertical:
                        $common.setStyle(content, { overflowY: "scroll", overflowX: "hidden" });
                        break;
                    case Sys.Extended.UI.ScrollBars.Both:
                        $common.setStyle(content, { overflow: "scroll" });
                        break;
                    case Sys.Extended.UI.ScrollBars.None:
                        $common.setStyle(content, { overflow: "hidden" });
                        break;
                    default:
                        $common.setStyle(content, { overflow: "auto" });
                        break;
                }
            },



            showPopup: function () {
                /// <summary>
                /// Display the ballon popup
                /// </summary>                
                                
                this._contentElement.appendChild($get(this._balloonPopupControlID));
                $get(this._balloonPopupControlID).style.display = 'block';
                                
                if (Sys.Extended.UI.BalloonPopupPosition.Auto == this._position) {
                    this._setAutoPosition();
                    this.setPosition();
                    this.setContentPadding();
                    this.setScrollBar();
                }

                if (!this._shadow) {
                    this._shadowElement.className = "";
                }

                var old = Sys.Extended.UI.BalloonPopupControlBehavior.__VisiblePopup;
                if (old && old._popupBehavior) {
                    old.hidePopup();
                }

                Sys.Extended.UI.BalloonPopupControlBehavior.callBaseMethod(this, "populate");

                this._popupBehavior.set_x(this._getLeftOffset());
                this._popupBehavior.set_y(this._getTopOffset());
                this._popupBehavior.show();

                this._popupVisible = true;
                Sys.Extended.UI.BalloonPopupControlBehavior.__VisiblePopup = this;

                var bgPosX = $common.getCurrentStyle(this._directionElement, "backgroundPositionX");
                var bgPosY = $common.getCurrentStyle(this._directionElement, "backgroundPositionY");
                $common.setStyle(this._styleElement, { backgroundPositionX: bgPosX, backgroundPositionY: bgPosY });
            },

            hidePopup: function () {
                /// <summary>
                /// Hide the popup
                /// </summary>

                this._popupBehavior.hide();
                this._popupVisible = false;
                Sys.Extended.UI.BalloonPopupControlBehavior.__VisiblePopup = null;
            },

            _onFocus: function (e) {
                /// <summary>
                /// Show the balloon popup when its control is focused
                /// </summary>
                /// <param name="e" type="Sys.UI.DomEvent" mayBeNull="true">
                /// Event info
                /// </param>

                if (!this._popupVisible) {
                    this.showPopup();
                }
                if (e) {
                    e.stopPropagation();
                }
            },

            _onMouseOver: function (e) {
                /// <summary>
                /// Show the balloon popup when its control is mouse over
                /// </summary>
                /// <param name="e" type="Sys.UI.DomEvent" mayBeNull="true">
                /// Event info
                /// </param>

                if (!this._popupVisible) {
                    this.showPopup();
                }
                if (e) {
                    e.stopPropagation();
                }
            },

            _onPopupClick: function (e) {
                /// <summary>
                /// Click handler for the popup
                /// </summary>
                /// <param name="e" type="Sys.UI.DomEvent">
                /// Event info
                /// </param>
                e.stopPropagation();
            },

            _onBodyClick: function () {
                /// <summary>
                /// Handler for the HTML body tag's click event
                /// </summary>

                if (this._popupVisible) {
                    this.hidePopup();
                }
            },

            _onPopulated: function (sender, eventArgs) {
                /// <summary>
                /// Handler for DynamicPopulate completion
                /// </summary>
                /// <param name="sender" type="Object">
                /// Sender
                /// </param>
                /// <param name="eventArgs" type="Sys.EventArgs">
                /// Event arguments
                /// </param>
                Sys.Extended.UI.BalloonPopupControlBehavior.callBaseMethod(this, "_onPopulated", [sender, eventArgs]);

                if (this._popupVisible) {
                    this._popupBehavior.show();
                }
            },

            _getLeftOffset: function () {
                /// <summary>
                /// Get the left offset for the balloon popup
                /// </summary>
                /// <returns type="Number" integer="true">
                /// Left offset for the balloon popup
                /// </returns>

                var xoffSet = 0;
                var currentPosition = Sys.Extended.UI.BalloonPopupPosition.Auto == this._position ? this._autoPosition : this._position;
                if (Sys.Extended.UI.BalloonPopupPosition.BottomLeft == currentPosition || Sys.Extended.UI.BalloonPopupPosition.TopLeft == currentPosition) {
                    xoffSet = (-1 * (this._popupWidth)) + this._offsetX;
                } else if (Sys.Extended.UI.BalloonPopupPosition.BottomRight == currentPosition || Sys.Extended.UI.BalloonPopupPosition.TopRight == currentPosition) {
                    xoffSet = this.get_element().offsetWidth + this._offsetX;
                } else {
                    xoffSet = this._offsetX;
                }
                return xoffSet;
            },

            _getTopOffset: function () {
                /// <summary>
                /// Get the top offset for the balloon popup
                /// </summary>
                /// <returns type="Number" integer="true">
                /// Top offset for the balloon popup
                /// </returns>

                var yoffSet = 0;
                var currentPosition = Sys.Extended.UI.BalloonPopupPosition.Auto == this._position ? this._autoPosition : this._position;
                if (Sys.Extended.UI.BalloonPopupPosition.TopLeft == currentPosition || Sys.Extended.UI.BalloonPopupPosition.TopRight == currentPosition) {
                    yoffSet = (-1 * (this._popupHeight)) + this._offsetY;
                } else if (Sys.Extended.UI.BalloonPopupPosition.BottomLeft == currentPosition || Sys.Extended.UI.BalloonPopupPosition.BottomRight == currentPosition) {
                    yoffSet = (this.get_element().offsetHeight) + this._offsetY;
                } else {
                    yoffSet = this._offsetY;
                }
                return yoffSet;
            },

            _setAutoPosition: function () {
                var _elementTopPosition = 0;
                var _elementLeftPosition = 0;
                var e = this.get_element();
                if (e.offsetParent) {
                    do {
                        _elementLeftPosition += e.offsetLeft;
                        _elementTopPosition += e.offsetTop;
                    } while (e = e.offsetParent);
                }

                var _pageTopPosition = this.posTop();
                var _pageLeftPosition = this.posLeft();
                var _pagewidth = this.pageWidth();
                var _pageHeight = this.pageHeight();
                var _pageBottom = _pageTopPosition + _pageHeight;
                var _pageRight = _pageLeftPosition + _pagewidth;

                var _popTopPosition = _elementTopPosition - this._popupHeight;
                var _popLeftPosition = _elementLeftPosition - this._popupWidth;
                var _popBottomPosition = _elementTopPosition + this.get_element().offsetHeight + this._popupHeight;
                var _popRightPosition = _elementLeftPosition + this.get_element().offsetWidth + this._popupWidth;

                if ((_popTopPosition - _pageTopPosition) > 0 && ((_popTopPosition - _pageTopPosition) > (_pageBottom - _popBottomPosition))) {
                    if (_pageRight < _popRightPosition) {
                        this._autoPosition = Sys.Extended.UI.BalloonPopupPosition.TopLeft;
                    }
                    else {
                        this._autoPosition = Sys.Extended.UI.BalloonPopupPosition.TopRight;
                    }
                }
                else {
                    if (_pageRight < _popRightPosition) {
                        this._autoPosition = Sys.Extended.UI.BalloonPopupPosition.BottomLeft;
                    }
                    else {
                        this._autoPosition = Sys.Extended.UI.BalloonPopupPosition.BottomRight;
                    }
                }
            },

            get_onShow: function () {
                /// <value type="String" mayBeNull="true">
                /// Generic OnShow Animation's JSON definition
                /// </value>
                return this._popupBehavior ? this._popupBehavior.get_onShow() : this._onShowJson;
            },
            set_onShow: function (value) {
                if (this._popupBehavior) {
                    this._popupBehavior.set_onShow(value)
                } else {
                    this._onShowJson = value;
                }
                this.raisePropertyChanged("onShow");
            },
            get_onShowBehavior: function () {
                /// <value type="Sys.Extended.UI.Animation.GenericAnimationBehavior">
                /// Generic OnShow Animation's behavior
                /// </value>
                return this._popupBehavior ? this._popupBehavior.get_onShowBehavior() : null;
            },
            onShow: function () {
                /// <summary>
                /// Play the OnShow animation
                /// </summary>
                /// <returns />
                if (this._popupBehavior) {
                    this._popupBehavior.onShow();
                }
            },

            get_onHide: function () {
                /// <value type="String" mayBeNull="true">
                /// Generic OnHide Animation's JSON definition
                /// </value>
                return this._popupBehavior ? this._popupBehavior.get_onHide() : this._onHideJson;
            },
            set_onHide: function (value) {
                if (this._popupBehavior) {
                    this._popupBehavior.set_onHide(value)
                } else {
                    this._onHideJson = value;
                }
                this.raisePropertyChanged("onHide");
            },
            get_onHideBehavior: function () {
                /// <value type="Sys.Extended.UI.Animation.GenericAnimationBehavior">
                /// Generic OnHide Animation's behavior
                /// </value>
                return this._popupBehavior ? this._popupBehavior.get_onHideBehavior() : null;
            },
            onHide: function () {
                /// <summary>
                /// Play the OnHide animation
                /// </summary>
                /// <returns />
                if (this._popupBehavior) {
                    this._popupBehavior.onHide();
                }
            },

            get_BalloonPopupControlID: function () {
                /// <value type="String">
                /// The ID of the control to display
                /// </value>
                return this._balloonPopupControlID;
            },
            set_BalloonPopupControlID: function (value) {
                if (this._balloonPopupControlID != value) {
                    this._balloonPopupControlID = value;
                    this.raisePropertyChanged("BalloonPopupControlID");
                }
            },

            get_balloonPopupPosition: function () {
                /// <value type="Sys.Extended.UI.BalloonPopupPosition">
                /// Where the balloon popup should be positioned relative to the target control. (Left, Right, Top, Bottom)
                /// </value>
                return this._position;
            },
            set_balloonPopupPosition: function (value) {
                if (this._position != value) {
                    this._position = value;
                    this.raisePropertyChanged("Position");
                }
            },

            get_balloonPopupStyle: function () {
                /// <value type="Sys.Extended.UI.BalloonPopupStyle">
                /// Theme/style of balloon popup control (Rectangle, Cloud)
                /// </value>
                return this._balloonStyle;
            },

            set_balloonPopupStyle: function (value) {
                if (this._balloonStyle != value) {
                    this._balloonStyle = value;
                    this.raisePropertyChanged("BalloonStyle");
                }
            },

            get_ExtenderControlID: function () {
                /// <value type="String">
                /// ID of the extender control
                /// </value>
                return this._extenderControlID;
            },
            set_ExtenderControlID: function (value) {
                if (this._extenderControlID != value) {
                    this._extenderControlID = value;
                    this.raisePropertyChanged("ExtenderControlID");
                }
            },

            get_OffsetX: function () {
                /// <value type="Number" integer="true">
                /// The number of pixels to horizontally offset the balloon Popup from its default position
                /// </value>
                return this._offsetX;
            },
            set_OffsetX: function (value) {
                if (this._offsetX != value) {
                    this._offsetX = value;
                    this.raisePropertyChanged("OffsetX");
                }
            },

            get_OffsetY: function () {
                /// <value type="Number" integer="true">
                /// The number of pixels to vertically offset the balloon Popup from its default position
                /// </value>
                return this._offsetY;
            },
            set_OffsetY: function (value) {
                if (this._offsetY != value) {
                    this._offsetY = value;
                    this.raisePropertyChanged("OffsetY");
                }
            },

            get_displayOnMouseOver: function () {
                /// <value type="bool">
                /// get whether to display balloon popup onmouseover or not
                /// </value>
                return this._displayOnMouseOver;
            },

            set_displayOnMouseOver: function (value) {
                if (this._displayOnMouseOver != value) {
                    this._displayOnMouseOver = value;
                    this.raisePropertyChanged("DisplayOnMouseOver");
                }
            },

            get_displayOnFocus: function () {
                /// <value type="bool">
                /// get whether to display balloon popup onfocus or not
                /// </value>
                return this._displayOnFocus;
            },

            set_displayOnFocus: function (value) {
                if (this._displayOnFocus != value) {
                    this._displayOnFocus = value;
                    this.raisePropertyChanged("DisplayOnFocus");
                }
            },

            get_displayOnClick: function () {
                /// <value type="bool">
                /// get whether to display balloon popup onClick or not
                /// </value>
                return this._displayOnClick;
            },

            set_displayOnClick: function (value) {
                if (this.displayOnClick != value) {
                    this.displayOnClick = value;
                    this.raisePropertyChanged("DisplayOnClick");
                }
            },

            get_balloonSize: function () {
                /// <value type="Sys.Extended.UI.BalloonPopupSize">
                /// get the size of balloon popup whether small, medium or large
                /// </value>
                return this._balloonSize;
            },

            set_balloonSize: function (value) {
                if (this._balloonSize != value) {
                    this._balloonSize = value;
                    this.raisePropertyChanged("BalloonSize");
                }
            },

            get_useShadow: function () {
                /// <value type="bool">
                /// get whether to display shadow or not
                /// </value>
                return this._shadow;
            },

            set_useShadow: function (value) {
                if (this._shadow != value) {
                    this._shadow = value;
                    this.raisePropertyChanged("UseShadow");
                }
            },

            get_scrollBars: function () {
                /// <value type="Sys.Extended.UI.ScrollBars">
                /// get scroll bars behavior when content is overflow
                /// </value>
                return this._scrollBars;
            },

            set_scrollBars: function (value) {
                if (this._scrollBars != value) {
                    this._scrollBars = value;
                    this.raisePropertyChanged('ScrollBars');
                }
            },

            get_PopupVisible: function () {
                /// <value type="Boolean">
                /// Whether the popup control is currently visible
                /// </value>
                return this._popupVisible;
            },

            get_customClassName: function () {
                /// <value type="bool">
                /// Name of the css class that will be used for the custom theme.
                /// </value>
                return this._customClassName;
            },

            set_customClassName: function (value) {
                if (this._customClassName != value) {
                    this._customClassName = value;
                    this.raisePropertyChanged("CustomClassName");
                }
            },

            add_showing: function (handler) {
                /// <summary>
                /// Add an event handler for the showing event
                /// </summary>
                /// <param name="handler" type="Function" mayBeNull="false">
                /// Event handler
                /// </param>
                /// <returns />

                if (this._popupBehavior) {
                    this._popupBehavior.add_showing(handler);
                }
            },
            remove_showing: function (handler) {
                /// <summary>
                /// Remove an event handler from the showing event
                /// </summary>
                /// <param name="handler" type="Function" mayBeNull="false">
                /// Event handler
                /// </param>
                /// <returns />

                if (this._popupBehavior) {
                    this._popupBehavior.remove_showing(handler);
                }
            },
            raiseShowing: function (eventArgs) {
                /// <summary>
                /// Raise the showing event
                /// </summary>
                /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
                /// Event arguments for the showing event
                /// </param>
                /// <returns />

                if (this._popupBehavior) {
                    this._popupBehavior.raiseShowing(eventArgs);
                }
            },

            add_shown: function (handler) {
                /// <summary>
                /// Add an event handler for the shown event
                /// </summary>
                /// <param name="handler" type="Function" mayBeNull="false">
                /// Event handler
                /// </param>
                /// <returns />

                if (this._popupBehavior) {
                    this._popupBehavior.add_shown(handler);
                }
            },
            remove_shown: function (handler) {
                /// <summary>
                /// Remove an event handler from the shown event
                /// </summary>
                /// <param name="handler" type="Function" mayBeNull="false">
                /// Event handler
                /// </param>
                /// <returns />

                if (this._popupBehavior) {
                    this._popupBehavior.remove_shown(handler);
                }
            },
            raiseShown: function (eventArgs) {
                /// <summary>
                /// Raise the shown event
                /// </summary>
                /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="false">
                /// Event arguments for the shown event
                /// </param>
                /// <returns />

                if (this._popupBehavior) {
                    this._popupBehavior.raiseShown(eventArgs);
                }
            },

            add_hiding: function (handler) {
                /// <summary>
                /// Add an event handler for the hiding event
                /// </summary>
                /// <param name="handler" type="Function" mayBeNull="false">
                /// Event handler
                /// </param>
                /// <returns />

                if (this._popupBehavior) {
                    this._popupBehavior.add_hiding(handler);
                }
            },
            remove_hiding: function (handler) {
                /// <summary>
                /// Remove an event handler from the hiding event
                /// </summary>
                /// <param name="handler" type="Function" mayBeNull="false">
                /// Event handler
                /// </param>
                /// <returns />

                if (this._popupBehavior) {
                    this._popupBehavior.remove_hiding(handler);
                }
            },
            raiseHiding: function (eventArgs) {
                /// <summary>
                /// Raise the hiding event
                /// </summary>
                /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
                /// Event arguments for the hiding event
                /// </param>
                /// <returns />

                if (this._popupBehavior) {
                    this._popupBehavior.raiseHiding(eventArgs);
                }
            },

            add_hidden: function (handler) {
                /// <summary>
                /// Add an event handler for the hidden event
                /// </summary>
                /// <param name="handler" type="Function" mayBeNull="false">
                /// Event handler
                /// </param>
                /// <returns />

                if (this._popupBehavior) {
                    this._popupBehavior.add_hidden(handler);
                }
            },
            remove_hidden: function (handler) {
                /// <summary>
                /// Remove an event handler from the hidden event
                /// </summary>
                /// <param name="handler" type="Function" mayBeNull="false">
                /// Event handler
                /// </param>
                /// <returns />

                if (this._popupBehavior) {
                    this._popupBehavior.remove_hidden(handler);
                }
            },
            raiseHidden: function (eventArgs) {
                /// <summary>
                /// Raise the hidden event
                /// </summary>
                /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="false">
                /// Event arguments for the hidden event
                /// </param>
                /// <returns />

                if (this._popupBehavior) {
                    this._popupBehavior.raiseHidden(eventArgs);
                }
            },

            posTop: function () {
                var winTopPosition = 0;

                if (typeof window.pageYOffset != "undefined") {
                    winTopPosition = window.pageYOffset;
                }
                else if (document.documentElement && document.documentElement.scrollTop) {
                    winTopPosition = document.documentElement.scrollTop;
                }
                else if (document.body.scrollTop) {
                    winTopPosition = document.body.scrollTop;
                }
                return winTopPosition;
            },

            posLeft: function () {
                var winLeftPosition = 0;

                if (typeof window.pageXOffset != "undefined") {
                    winLeftPosition = window.pageXOffset;
                }
                else if (document.documentElement && document.documentElement.scrollLeft) {
                    winLeftPosition = document.documentElement.scrollLeft;
                }
                else if (document.body.scrollLeft) {
                    winLeftPosition = document.body.scrollLeft;
                }
                return winLeftPosition;
            },

            pageHeight: function () {
                var _height = null;

                if (window.innerHeight != null) {
                    _height = window.innerHeight;
                }
                else if (document.documentElement && document.documentElement.clientHeight) {
                    _height = document.documentElement.clientHeight;
                }
                else if (document.body != null) {
                    _height = document.body.clientHeight;
                }
                return _height;
            },

            pageWidth: function () {
                var _width = null;

                if (window.innerWidth != null) {
                    _width = window.innerWidth;
                }
                else if (document.documentElement && document.documentElement.clientWidth) {
                    _width = document.documentElement.clientWidth;
                }
                else if (document.body != null) {
                    _width = document.body.clientWidth;
                }
                return _width;
            }
        }
        Sys.Extended.UI.BalloonPopupControlBehavior.registerClass("Sys.Extended.UI.BalloonPopupControlBehavior", Sys.Extended.UI.DynamicPopulateBehaviorBase);
        Sys.registerComponent(Sys.Extended.UI.BalloonPopupControlBehavior, { name: "balloonPopupBehavior" });

        Sys.Extended.UI.BalloonPopupControlBehavior.__VisiblePopup = null;


        Sys.Extended.UI.BalloonPopupPosition = function () {
            /// <summary>
            /// Position of the popup relative to the target control
            /// </summary>            
            /// <field name="TopRight" type="Number" integer="true" />
            /// <field name="TopLeft" type="Number" integer="true" />
            /// <field name="BottomRight" type="Number" integer="true" />
            /// <field name="BottomLeft" type="Number" integer="true" />
            throw Error.invalidOperation();
        }
        Sys.Extended.UI.BalloonPopupPosition.prototype = {
            Auto: 0,
            TopRight: 1,
            TopLeft: 2,
            BottomRight: 3,
            BottomLeft: 4
        }

        Sys.Extended.UI.BalloonPopupPosition.registerEnum("Sys.Extended.UI.BalloonPopupPosition", false);

        Sys.Extended.UI.BalloonPopupStyle = function () {
            /// <summary>
            /// Position of the popup relative to the target control
            /// </summary>            
            /// <field name="Rectangle" type="Number" integer="true" />
            /// <field name="Cloud" type="Number" integer="true" />            
            throw Error.invalidOperation();
        }
        Sys.Extended.UI.BalloonPopupStyle.prototype = {
            Rectangle: 0,
            Cloud: 1,
            Custom: 2
        }

        Sys.Extended.UI.BalloonPopupStyle.registerEnum("Sys.Extended.UI.BalloonPopupStyle", false);

        Sys.Extended.UI.BalloonPopupSize = function () {
            /// <summary>
            /// Size of the popup 
            /// </summary>            
            /// <field name="Small" type="Number" integer="true" />
            /// <field name="Medium" type="Number" integer="true" />
            /// <field name="Large" type="Number" integer="true" />            
            throw Error.invalidOperation();
        }
        Sys.Extended.UI.BalloonPopupSize.prototype = {
            Small: 0,
            Medium: 1,
            Large: 2
        }

        Sys.Extended.UI.BalloonPopupSize.registerEnum("Sys.Extended.UI.BalloonPopupSize", false);

    } // execute

    if (window.Sys && Sys.loader) {
        Sys.loader.registerScript(scriptName, ["ExtendedDynamicPopulate", "ExtendedPopup", "ExtendedAnimationBehavior"], execute);
    }
    else {
        execute();
    }

})();
6   �& h�( @ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������g��g��g��g��g��g��g��g��g��g��g��g��g�������������������������������������������������������������������������������������������������(  ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������g��g��g��g��g��g���������������������������������������������������������������������������������������6   �& h�( @ 


 !""""""""""""""! 

$.59;;;;;;;;;;;;;;;;95.$

%:IT[]^^^^^^^^^^^^^^][TI:%
.I]kswwwwwwwwwwwwwwwwsk]I.5Tk|������������������|kT5���{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN��s[: ��������������������������������������������������������������������Ⱦ�{bN��v];"������������������������������������������������������������������������ɿ�{bN��w^;"�����������������������������������������������������������������������{bN��w^;"����������������������������������������������������������������������������{bN��w^;"����������������������������������������������������������������������������{bN��w^;"������������������������������������������������������������������������������{bN��w^;"����������������������������������������������������������������������������{bN��w^;"������������������������������������������������������������������������������{bN��w^;"��������������������������������������������������������������������������������{bN��w^;"����������������������������������������������������������������������������������{bN��w^;"���������������������������������������������������������������������������������{bN��v];"�������������������������������������������������������������������������������������{bN��s[: ���������������������������������������������������������������������������������������{bN�|kT5��������������������������������������������������������������������������������������{bN�k]I.�����������������������������������������������������������������������������������������{bN�TI:%
������������������������������������������������������������������������������������������{bN�5.$
�������������������������������������������������������������������������������������������{bN�
������������������������������������������������������������������������
��������������������(  !,/0000000/,!!HahiiiiiiihaH!,a�����������a,��}�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN��gT�x^F��h0��������������������������������Ⱦ��Ⱦ�x^F��j2�����������������������������������������x^F��m7������������������������������������������x^F��q>��������������������������������������������x^F��tA����������������������������������������������x^F�ooo�r>�����������������������������������������������x^F�����e4�����������������������������������������������x^F�����J#������������������������������������������������x^F�@@@8!����������������������������������������������������5Tk|���������iGIF89a��1�<��8��9��<ݡS��������Ǝ������������������������������������!� ,FA4 ��
Xh��C"B��
T�h��GB�@�@�� �4𠥁0
0�i`�M
rع3 ;�GIF89a
�d�ml�un�wn�wr�zp�ys�|w�w��{��|������������������������������Ě�Ɯ�ĝ�Ɵ�ɠ�ơ�ɣ�̢�̥�Χ�Ω�ѫ�ӭ�֯�ر�س�۵��»�Ŀ��������!��,
�K|�a�.���!��
&<X !D�"Nt@"E
'N�0A��� E�� eȑ#X�TIbB��#k��Ir��$$����ĈCS����B
���V��|����Za:� ��@`��]k@�
  ��;GIF89a����������������������������������������������������������������������������������������������������������������������������������������������������ݳ��������������8i�At�c��c��s�Ɇ�̌�Ӛ�ܞ��������������)^�+`�2e�4g�7j�6h�?o�Eu�Z��f��l��q����ڪ�������Ҡ�ک�߫��������������������!�y,��y������������ #&'������$)-/������(.3������378��86UTH���/;��FN]]^V�Â39??>K?I^��bl�܂=
AAeL`]gorf]q���BB@]_^nws\j]m\����xS�	�S��قA
D�@��12h<d��$�"$D� �
2tq�Κ+"�tICG�(�0A�)XP�J�;E<p�0R�
GU|��u��,XL��AD��"F
p^�(��
'J��2h��Gj̀ᢅ�L��1�@;z�ء��
h̐!����{;p`X͝
�Ǝ��]kf��;\GIF89a�"�������������������������������������������������������������!�",y@�pH^�H��l6���T*�X�W�g��
?�pX�)��z�f�p��b	�핊P���B �!�B���B

		��P�
BBB`as��yE�"A;$GIF89a��������`x�@`����`p����bw�Rcs���v�����p������t��`x����:Iv��������������333���������!�,�`'�di�\��l+�p�ƴ:�V�����p��,��r�tlR7q*4�,��i�=S�2���`�ns�A0IgDl
�ZQ	zx�mn��zx�|���x��l���x�T���x���O��x�����x�����x���'��!;GIF89a�?zwp�������������������s#R}���������E�������Ϗ���E��E��?���������������������)��d�ڮ��@����O����X���ŝt�฽�f�����������v�}M����������������������!�?,���pH,��l:�M!f��Y���U80�v�xP��z�N$�j�#p���6��;>���+n�B:6��6
,#-2�6B=7��
#���>5���&��B >:�6.����B�

����
���-!)/����?�0%!08���B
<'J�@�`�
�qO<8p"
��AÀ$H��`=<�X� ��@����
4�`�2�%X�8pf9t�$ԡC!?�2`�KP�_��5-t��� ;�GIF89a������������������ڤ�����=x�=x�=t�=t�>r�@r�Ar�Dr�Cr�Dr�Fs�Lt�Mu�u�ą�ő�ɕ�ʖ�ʸ�ݲ�խ�ν�׺������������������������������������������������������ⱱ�������ooo>>>333���!�8,�@�pH,���r�l
���3JUN��+�FHr���-������m&�����Mp���d�6�����7���+B1��1
����1	"
��0��	�%	,���/��	'&��/��/�.�í.	 �Ì-��-$(�Ҍ+��)##)�((��*��������G��A;�GIF89a�������������������������������333���!�,���I��"�ͻ�`���6�K���-A/�ɐp�-�+��� ���8�Y�f$΢�([F��� �]���4�(�V��\���KHn3�|��+�zP�9*���P�0U���P�s*��P��UU��P�����c�����;�GIF89a�?�����������������������������������������������������������������������������������������������������������������������������)^��������!�?,�pH,��f�l:�M!�#Y���U*�T�x�R��`�n�p!����|>��4>����=<B.26z�x6�B5
78::��87��9��9�B,<�����B��B
�ȳB�zBS#��B#&�y#!!B#+-��'B"(-02345443dĀ1 �-��h�_�E,*P�_�Y��X	B��+��#(S;;GIF89a����!��,(�A��8��B
*�;I?(function(){var b="ExtendedSlider";function a(){var m="valueChanged",l="slideStart",k="slideEnd",o="selectstart",n="keypress",j="change",i="INPUT",h="sliderInitialized",e="1px",d="0px",g="absolute",f="hidden",b=true,c=false,a=null;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI._SliderDragDropManagerInternal=function(){Sys.Extended.UI._SliderDragDropManagerInternal.initializeBase(this);this._instance=a};Sys.Extended.UI._SliderDragDropManagerInternal.prototype={_getInstance:function(){var a=this;a._instance=new Sys.Extended.UI.GenericDragDropManager;a._instance.initialize();a._instance.add_dragStart(Function.createDelegate(a,a._raiseDragStart));a._instance.add_dragStop(Function.createDelegate(a,a._raiseDragStop));return a._instance}};Sys.Extended.UI._SliderDragDropManagerInternal.registerClass("Sys.Extended.UI._SliderDragDropManagerInternal",Sys.Extended.UI._DragDropManager);Sys.Extended.UI.SliderDragDropManagerInternal=new Sys.Extended.UI._SliderDragDropManagerInternal;Sys.Extended.UI.SliderOrientation=function(){};Sys.Extended.UI.SliderOrientation.prototype={Horizontal:0,Vertical:1};Sys.Extended.UI.SliderOrientation.registerEnum("Sys.Extended.UI.SliderOrientation",c);Sys.Extended.UI.SliderBehavior=function(e){var d=this;Sys.Extended.UI.SliderBehavior.initializeBase(d,[e]);d._minimum=0;d._maximum=100;d._value=a;d._steps=0;d._decimals=0;d._orientation=Sys.Extended.UI.SliderOrientation.Horizontal;d._railElement=a;d._railCssClass=a;d._isHorizontal=b;d._isUpdatingInternal=c;d._isInitializedInternal=c;d._enableHandleAnimation=c;d._handle=a;d._handleImage=a;d._handleAnimation=a;d._handleAnimationDuration=.1;d._handleImageUrl=a;d._handleCssClass=a;d._dragHandle=a;d._mouseupHandler=a;d._selectstartHandler=a;d._boundControlChangeHandler=a;d._boundControlKeyPressHandler=a;d._boundControlID=a;d._boundControl=a;d._length=a;d._raiseChangeOnlyOnMouseUp=b;d._animationPending=c;d._selectstartPending=c;d._tooltipText="";d._enableKeyboard=b;d._keyDownHandler=a};Sys.Extended.UI.SliderBehavior.prototype={initialize:function(){Sys.Extended.UI.SliderBehavior.callBaseMethod(this,"initialize");this._initializeLayout()},dispose:function(){var a=this;a._disposeHandlers();a._disposeBoundControl();a._enableHandleAnimation&&a._handleAnimation&&a._handleAnimation.dispose();Sys.Extended.UI.SliderBehavior.callBaseMethod(a,"dispose")},_initializeLayout:function(){var a=this;a._railElement=document.createElement("DIV");a._railElement.id=a.get_id()+"_railElement";a._railElement.tabIndex=-1;a._railElement.innerHTML="<div></div>";a._handle=a._railElement.childNodes[0];a._handle.style.overflow=f;a._handle.style.position=g;if(Sys.Browser.agent==Sys.Browser.Opera){a._handle.style.left=d;a._handle.style.top=d}var b=a.get_element(),i=$common.getBounds(b);b.parentNode.insertBefore(a._railElement,b);a._isHorizontal=a._orientation==Sys.Extended.UI.SliderOrientation.Horizontal;var h=a._isHorizontal?"ajax__slider_h_rail":"ajax__slider_v_rail",c=a._isHorizontal?"ajax__slider_h_handle":"ajax__slider_v_handle",e=a._isHorizontal?'<%= WebResource("Slider.Images.slider_h_handle.gif") %>':'<%= WebResource("Slider.Images.slider_v_handle.gif") %>';a._railElement.className=a._railCssClass?a._railCssClass:h;a._handle.className=a._handleCssClass?a._handleCssClass:c;if(!a._handleImageUrl)a._handleImageUrl=e;if(a._isHorizontal){if(a._length)a._railElement.style.width=a._length}else if(a._length)a._railElement.style.height=a._length;a._loadHandleImage();a._enforceTextBoxElementPositioning();a._hideTextBoxElement();a._initializeSlider()},_enforceTextBoxElementPositioning:function(){var b=this,a={position:b.get_element().style.position,top:b.get_element().style.top,right:b.get_element().style.right,bottom:b.get_element().style.bottom,left:b.get_element().style.left};if(a.position!="")b._railElement.style.position=a.position;if(a.top!="")b._railElement.style.top=a.top;if(a.right!="")b._railElement.style.right=a.right;if(a.bottom!="")b._railElement.style.bottom=a.bottom;if(a.left!="")b._railElement.style.left=a.left},_hideTextBoxElement:function(){var a=this.get_element();a.readOnly=b;var c=d;if(Sys.Browser.agent==Sys.Browser.Safari)c=e;a.style.width=c;a.style.height=c;a.style.border=d;a.style.padding=d;a.style.margin=d;a.style.fontSize=e;a.style.lineHeight=e;a.style.outline="0";a.style.position=g},_loadHandleImage:function(){var a=this;a._handleImage=document.createElement("IMG");a._handleImage.id=a.get_id()+"_handleImage";a._handle.appendChild(a._handleImage);a._handleImage.src=a._handleImageUrl},_initializeSlider:function(){var a=this;a._initializeBoundControl();var c;try{c=parseFloat(a.get_element().value)}catch(d){c=Number.NaN}a.set_Value(c);a._setHandleOffset(a._value);a._initializeDragHandle();Sys.Extended.UI.SliderDragDropManagerInternal.registerDropTarget(a);a._initializeHandlers();a._initializeHandleAnimation();a._isInitializedInternal=b;a._raiseEvent(h)},_initializeBoundControl:function(){var a=this;if(a._boundControl){var b=a._boundControl.nodeName==i;if(b){a._boundControlChangeHandler=Function.createDelegate(a,a._onBoundControlChange);a._boundControlKeyPressHandler=Function.createDelegate(a,a._onBoundControlKeyPress);$addHandler(a._boundControl,j,a._boundControlChangeHandler);$addHandler(a._boundControl,n,a._boundControlKeyPressHandler)}}},_disposeBoundControl:function(){var a=this;if(a._boundControl){var b=a._boundControl.nodeName==i;if(b){$removeHandler(a._boundControl,j,a._boundControlChangeHandler);$removeHandler(a._boundControl,n,a._boundControlKeyPressHandler)}}},_onBoundControlChange:function(){this._animationPending=b;this._setValueFromBoundControl()},_onBoundControlKeyPress:function(a){if(a.charCode==13){this._animationPending=b;this._setValueFromBoundControl();a.preventDefault()}},_setValueFromBoundControl:function(){var a=this;a._isUpdatingInternal=b;a._boundControlID&&a._calcValue($get(a._boundControlID).value);a._isUpdatingInternal=c},_initializeHandleAnimation:function(){var a=this;if(a._steps>0){a._enableHandleAnimation=c;return}if(a._enableHandleAnimation)a._handleAnimation=new Sys.Extended.UI.Animation.LengthAnimation(a._handle,a._handleAnimationDuration,100,"style")},_ensureBinding:function(){var a=this;if(a._boundControl){var b=a._value;if(b>=a._minimum||b<=a._maximum){var c=a._boundControl.nodeName==i;if(c)a._boundControl.value=b;else if(a._boundControl)a._boundControl.innerHTML=b}}},_getBoundsInternal:function(d){var a=$common.getBounds(d);function e(){return a.width>0&&a.height>0}if(!e()){a.width=parseInt($common.getCurrentStyle(d,"width"));a.height=parseInt($common.getCurrentStyle(d,"height"));if(!e()){var c=d.cloneNode(b);c.visibility=f;document.body.appendChild(c);a.width=parseInt($common.getCurrentStyle(c,"width"));a.height=parseInt($common.getCurrentStyle(c,"height"));document.body.removeChild(c);if(!e())throw Error.argument("element size",Sys.Extended.UI.Resources.Slider_NoSizeProvided);}}if(this._orientation==Sys.Extended.UI.SliderOrientation.Vertical)a={x:a.y,y:a.x,height:a.width,width:a.height,right:a.right,bottom:a.bottom,location:{x:a.y,y:a.x},size:{width:a.height,height:a.width}};return a},_getRailBounds:function(){return this._getBoundsInternal(this._railElement)},_getHandleBounds:function(){return this._getBoundsInternal(this._handle)},_initializeDragHandle:function(){var a=this._dragHandle=document.createElement("DIV");a.style.position=g;a.style.width=e;a.style.height=e;a.style.overflow=f;a.style.zIndex="999";a.style.background="none";document.body.appendChild(this._dragHandle)},_resetDragHandle:function(){var a=$common.getBounds(this._handle);$common.setLocation(this._dragHandle,{x:a.x,y:a.y})},_initializeHandlers:function(){var a=this;a._selectstartHandler=Function.createDelegate(a,a._onSelectStart);a._mouseupHandler=Function.createDelegate(a,a._onMouseUp);a._keyDownHandler=Function.createDelegate(a,a._onKeyDown);$addHandler(document,"mouseup",a._mouseupHandler);$addHandler(a.get_element(),"keydown",a._keyDownHandler);$addHandlers(a._handle,{mousedown:a._onMouseDown,dragstart:a._IEDragDropHandler,drag:a._IEDragDropHandler,dragend:a._IEDragDropHandler},a);$addHandlers(a._railElement,{click:a._onRailClick},a)},_disposeHandlers:function(){var b=this;$clearHandlers(b._handle);$clearHandlers(b._railElement);$removeHandler(b.get_element(),"keydown",b._keyDownHandler);$removeHandler(document,"mouseup",b._mouseupHandler);b._keyDownHandler=a;b._mouseupHandler=a;b._selectstartHandler=a},startDragDrop:function(b){this._resetDragHandle();Sys.Extended.UI.SliderDragDropManagerInternal.startDragDrop(this,b,a)},_onMouseDown:function(c){var a=this;window._event=c;c.preventDefault();if(!Sys.Extended.UI.SliderBehavior.DropPending){Sys.Extended.UI.SliderBehavior.DropPending=a;$addHandler(document,o,a._selectstartHandler);a._selectstartPending=b;a.startDragDrop(a._dragHandle)}},_onMouseUp:function(b){var c=b.target;if(Sys.Extended.UI.SliderBehavior.DropPending==this){Sys.Extended.UI.SliderBehavior.DropPending=a;this._selectstartPending&&$removeHandler(document,o,this._selectstartHandler)}},_onKeyDown:function(d){if(this._enableKeyboard){var a=new Sys.UI.DomEvent(d);switch(a.keyCode||a.rawEvent.keyCode){case Sys.UI.Key.up:case Sys.UI.Key.left:this._handleSlide(b);a.preventDefault();return;case Sys.UI.Key.down:case Sys.UI.Key.right:this._handleSlide(c);a.preventDefault();return c;default:return c}}},_handleSlide:function(f){var a=this;a._animationPending=b;a._isUpdatingInternal=b;var e=a.get_Value(),d;if(a._steps>0){var g=a._maximum-a._minimum,h=(g/(a._steps-1)).toFixed(a._decimals);d=h}else d=a._decimals==0?1:1/Math.pow(10,a._decimals);if(f)d=0-d;a._calcValue(parseFloat(e)+parseFloat(d));a._isUpdatingInternal=c;a._fireTextBoxChangeEvent()},_onRailClick:function(a){if(a.target==this._railElement){this._animationPending=b;this._onRailClicked(a)}},_IEDragDropHandler:function(a){a.preventDefault()},_onSelectStart:function(a){a.preventDefault()},_calcValue:function(e,k){var d=this,f;if(e!=a){if(!Number.isInstanceOfType(e))try{e=parseFloat(e)}catch(o){e=Number.NaN}if(isNaN(e))e=d._minimum;f=e<d._minimum?d._minimum:e>d._maximum?d._maximum:e}else{var i=d._minimum,l=d._maximum,g=d._getHandleBounds(),h=d._getRailBounds(),j=k?k-g.width/2:g.x-h.x,n=h.width-g.width,m=j/n;f=j==0?i:j==h.width-g.width?l:i+m*(l-i)}if(d._steps>0)f=d._getNearestStepValue(f);f=f<d._minimum?d._minimum:f>d._maximum?d._maximum:f;d._isUpdatingInternal=b;d.set_Value(f);d._isUpdatingInternal=c;return f},_setHandleOffset:function(g,i){var a=this,e=a._minimum,h=a._maximum,b=a._getHandleBounds(),d=a._getRailBounds(),l=h-e,k=(g-e)/l,j=Math.round(k*(d.width-b.width)),f=g==e?0:g==h?d.width-b.width:j;if(i){a._handleAnimation.set_startValue(b.x-d.x);a._handleAnimation.set_endValue(f);a._handleAnimation.set_propertyKey(a._isHorizontal?"left":"top");a._handleAnimation.play();a._animationPending=c}else if(a._isHorizontal)a._handle.style.left=f+"px";else a._handle.style.top=f+"px"},_getNearestStepValue:function(b){var a=this;if(a._steps==0)return b;var c=a._maximum-a._minimum;if(c==0)return b;var d=c/(a._steps-1);return Math.round(b/d)*d},_onHandleReleased:function(){this._raiseChangeOnlyOnMouseUp&&this._fireTextBoxChangeEvent();this._raiseEvent(k)},_onRailClicked:function(g){var c=this,h=c._getHandleBounds(),i=c._getRailBounds(),d=c._isHorizontal?g.offsetX:g.offsetY,e=h.width/2,f=i.width-e;d=d<e?e:d>f?f:d;c._calcValue(a,d,b);c.get_element().focus();c._fireTextBoxChangeEvent()},_fireTextBoxChangeEvent:function(){if(document.createEvent){var a=document.createEvent("HTMLEvents");a.initEvent(j,b,c);this.get_element().dispatchEvent(a)}else document.createEventObject&&this.get_element().fireEvent("onchange")},get_dragDataType:function(){return"HTML"},getDragData:function(){return this._handle},get_dragMode:function(){return Sys.Extended.UI.DragMode.Move},onDragStart:function(){this.get_element().focus();this._resetDragHandle();this._raiseEvent(l)},onDrag:function(){var b=this,e=b._getBoundsInternal(b._dragHandle),g=b._getHandleBounds(),f=b._getRailBounds(),d;if(b._isHorizontal)d={x:e.x-f.x,y:0};else d={y:e.x-f.x,x:0};$common.setLocation(b._handle,d);b._calcValue(a,a);b._steps>1&&b._setHandleOffset(b.get_Value(),c)},onDragEnd:function(){this._onHandleReleased()},get_dropTargetElement:function(){return document.body},canDrop:function(b,a){return a=="HTML"},drop:Function.emptyMethod,onDragEnterTarget:Function.emptyMethod,onDragLeaveTarget:Function.emptyMethod,onDragInTarget:Function.emptyMethod,add_sliderInitialized:function(a){this.get_events().addHandler(h,a)},remove_sliderInitialized:function(a){this.get_events().removeHandler(h,a)},add_valueChanged:function(a){this.get_events().addHandler(m,a)},remove_valueChanged:function(a){this.get_events().removeHandler(m,a)},add_slideStart:function(a){this.get_events().addHandler(l,a)},remove_slideStart:function(a){this.get_events().removeHandler(l,a)},add_slideEnd:function(a){this.get_events().addHandler(k,a)},remove_slideEnd:function(a){this.get_events().removeHandler(k,a)},_raiseEvent:function(c,a){var b=this.get_events().getHandler(c);if(b){if(!a)a=Sys.EventArgs.Empty;b(this,a)}},get_Value:function(){return this._value},set_Value:function(c){var a=this,d=a._value,b=c;if(!a._isUpdatingInternal)b=a._calcValue(c);a.get_element().value=a._value=b.toFixed(a._decimals);a._ensureBinding();if(!Number.isInstanceOfType(a._value))try{a._value=parseFloat(a._value)}catch(e){a._value=Number.NaN}if(a._tooltipText)a._handle.alt=a._handle.title=String.format(a._tooltipText,a._value);if(a._isInitializedInternal){a._setHandleOffset(b,a._enableHandleAnimation&&a._animationPending);if(a._isUpdatingInternal)!a._raiseChangeOnlyOnMouseUp&&a._fireTextBoxChangeEvent();a._value!=d&&a._raiseEvent(m)}},get_RailCssClass:function(){return this._railCssClass},set_RailCssClass:function(a){this._railCssClass=a},get_HandleImageUrl:function(){return this._handleImageUrl},set_HandleImageUrl:function(a){this._handleImageUrl=a},get_HandleCssClass:function(){return this._handleCssClass},set_HandleCssClass:function(a){this._handleCssClass=a},get_Minimum:function(){return this._minimum},set_Minimum:function(a){this._minimum=a},get_Maximum:function(){return this._maximum},set_Maximum:function(a){this._maximum=a},get_Orientation:function(){return this._orientation},set_Orientation:function(a){this._orientation=a},get_Steps:function(){return this._steps},set_Steps:function(b){var a=this;a._steps=Math.abs(b);a._steps=a._steps==1?2:a._steps},get_Decimals:function(){return this._decimals},set_Decimals:function(a){this._decimals=Math.abs(a)},get_EnableHandleAnimation:function(){return this._enableHandleAnimation},set_EnableHandleAnimation:function(a){this._enableHandleAnimation=a},get_HandleAnimationDuration:function(){return this._handleAnimationDuration},set_HandleAnimationDuration:function(a){this._handleAnimationDuration=a},get_BoundControlID:function(){return this._boundControlID},set_BoundControlID:function(c){var b=this;b._boundControlID=c;if(b._boundControlID)b._boundControl=$get(b._boundControlID);else b._boundControl=a},get_Length:function(){return this._length},set_Length:function(a){this._length=a+"px"},get_SliderInitialized:function(){return this._isInitializedInternal},get_RaiseChangeOnlyOnMouseUp:function(){return this._raiseChangeOnlyOnMouseUp},set_RaiseChangeOnlyOnMouseUp:function(a){this._raiseChangeOnlyOnMouseUp=a},get_TooltipText:function(){return this._tooltipText},set_TooltipText:function(a){this._tooltipText=a},get_enableKeyboard:function(){return this._enableKeyboard},set_enableKeyboard:function(a){if(a!==this._enableKeyboard){this._enableKeyboard=a;this.raisePropertyChanged("enableKeyboard")}},getClientState:function(){var b=Sys.Extended.UI.SliderBehavior.callBaseMethod(this,"get_ClientState");if(b=="")b=a;return b},setClientState:function(a){return Sys.Extended.UI.SliderBehavior.callBaseMethod(this,"set_ClientState",[a])}};Sys.Extended.UI.SliderBehavior.DropPending=a;Sys.Extended.UI.SliderBehavior.registerClass("Sys.Extended.UI.SliderBehavior",Sys.Extended.UI.BehaviorBase,Sys.Extended.UI.IDragSource,Sys.Extended.UI.IDropTarget)}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedBase","ExtendedDragDrop","ExendedAnimations"],a);else a()})();�// (c) 2010 CodePlex Foundation
Type.registerNamespace('Sys.Extended.UI');
Type.registerNamespace('Seadragon');
Sys.Extended.UI.Seadragon.Strings = {
    Errors: {
        Failure: "Sorry, but Seadragon Ajax can't run on your browser!\n" +
                    "Please try using IE 7 or Firefox 3.\n",
        Dzc: "Sorry, we don't support Deep Zoom Collections!",
        Dzi: "Hmm, this doesn't appear to be a valid Deep Zoom Image.",
        Xml: "Hmm, this doesn't appear to be a valid Deep Zoom Image.",
        Empty: "You asked us to open nothing, so we did just that.",
        ImageFormat: "Sorry, we don't support {0}-based Deep Zoom Images.",
        Security: "It looks like a security restriction stopped us from " +
                    "loading this Deep Zoom Image.",
        Status: "This space unintentionally left blank ({0} {1}).",
        Unknown: "Whoops, something inexplicably went wrong. Sorry!"
    },

    Messages: {
        Loading: "Loading..."
    },

    Tooltips: {
        FullPage: "Toggle full page",
        Home: "Go home",
        ZoomIn: "Zoom in",
        ZoomOut: "Zoom out"
    },
    getString: function(prop) {
        var props = prop.split('.');
        var string = Sys.Extended.UI.Seadragon.Strings;

        for (var i = 0; i < props.length; i++) {
            string = string[props[i]] || {};    // in case not a subproperty
        }

        if (typeof (string) != "string") {
            string = "";
        }

        var args = arguments;
        return string.replace(/\{\d+\}/g, function(capture) {
            var i = parseInt(capture.match(/\d+/)) + 1;
            return i < args.length ? args[i] : "";
        });
    },

    setString: function(prop, value) {
        var props = prop.split('.');
        var container = Seadragon.Strings;

        for (var i = 0; i < props.length - 1; i++) {
            if (!container[props[i]]) {
                container[props[i]] = {};
            }
            container = container[props[i]];
        }

        container[props[i]] = value;
    }

}
Seadragon.Strings = Sys.Extended.UI.Seadragon.Strings;


// (c) 2010 CodePlex Foundation
Type.registerNamespace("Sys.Extended.UI.Seadragon");Type.registerNamespace("Seadragon");Sys.Extended.UI.Seadragon.Config=function(){var c=false,b=true,a=this;a.debugMode=b;a.animationTime=1.5;a.blendTime=.5;a.alwaysBlend=c;a.autoHideControls=b;a.immediateRender=c;a.wrapHorizontal=c;a.wrapVertical=c;a.minZoomDimension=.8;a.maxZoomPixelRatio=2;a.visibilityRatio=.5;a.springStiffness=5;a.imageLoaderLimit=2;a.clickTimeThreshold=200;a.clickDistThreshold=5;a.zoomPerClick=2;a.zoomPerSecond=2;a.showNavigationControl=b;a.maxImageCacheCount=100;a.minPixelRatio=.5;a.mouseNavEnabled=b;a.navImages={zoomIn:{REST:'<%= WebResource("Seadragon.images.zoomin_rest.png") %>',GROUP:'<%= WebResource("Seadragon.images.zoomin_grouphover.png") %>',HOVER:'<%= WebResource("Seadragon.images.zoomin_hover.png") %>',DOWN:'<%= WebResource("Seadragon.images.zoomin_pressed.png") %>'},zoomOut:{REST:'<%= WebResource("Seadragon.images.zoomout_rest.png") %>',GROUP:'<%= WebResource("Seadragon.images.zoomout_grouphover.png") %>',HOVER:'<%= WebResource("Seadragon.images.zoomout_hover.png") %>',DOWN:'<%= WebResource("Seadragon.images.zoomout_pressed.png") %>'},home:{REST:'<%= WebResource("Seadragon.images.home_rest.png") %>',GROUP:'<%= WebResource("Seadragon.images.home_grouphover.png") %>',HOVER:'<%= WebResource("Seadragon.images.home_hover.png") %>',DOWN:'<%= WebResource("Seadragon.images.home_pressed.png") %>'},fullpage:{REST:'<%= WebResource("Seadragon.images.fullpage_rest.png") %>',GROUP:'<%= WebResource("Seadragon.images.fullpage_grouphover.png") %>',HOVER:'<%= WebResource("Seadragon.images.fullpage_hover.png") %>',DOWN:'<%= WebResource("Seadragon.images.fullpage_pressed.png") %>'}}};Sys.Extended.UI.Seadragon.Config.registerClass("Sys.Extended.UI.Seadragon.Config",null,Sys.IDisposable);�l


/// <reference name="MicrosoftAjax.debug.js" />
/// <reference name="MicrosoftAjaxTimer.debug.js" />
/// <reference name="MicrosoftAjaxWebForms.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />
/// <reference path="../Compat/Timer/Timer.js" />
/// <reference path="../Compat/DragDrop/DragDropScripts.js" />



Type.registerNamespace('Sys.Extended.UI');


Sys.Extended.UI.RepeatDirection = function() {
    throw Error.invalidOperation();
}
Sys.Extended.UI.RepeatDirection.prototype = {
    Vertical: 0,
    Horizontal: 1
}
Sys.Extended.UI.RepeatDirection.registerEnum('Sys.Extended.UI.RepeatDirection');



Sys.Extended.UI.DragDropList = function(associatedElement) {
    Sys.Extended.UI.DragDropList.initializeBase(this, [associatedElement]);
    
    this._acceptedDataTypes = [];
    
    this._isDragging = null;
    
    this._dataType = null;
    this._dragMode = Sys.Extended.UI.DragMode.Move;
    this._dragVisual = null;
    this._direction = Sys.Extended.UI.RepeatDirection.Vertical;
    
    this._emptyTemplate = null;
    this._emptyTemplateInstance = null;
    this._dropCueTemplate = null;
    this._dropCueTemplateInstance = null;
    this._floatContainerInstance = null;
    
    this._originalParent = null;
    this._originalNextSibling = null;
    this._originalZIndex = null;
    
    this._currentContext = null;
    this._data = null;   
    
}

Sys.Extended.UI.DragDropList.IsValidDataType = function(dataType) {
    if (dataType && typeof(dataType) == 'string' && dataType.length >= 4) {
        return dataType.substring(0, 4) === "HTML";                        
    }
    return false;
}    

Sys.Extended.UI.DragDropList.prototype = {
    get_data: function() {
        return this._data;
    },
    
    set_data: function(value) {
        this._data = value;
    },
    
    initialize: function() {
        Sys.Extended.UI.DragDropList.callBaseMethod(this, 'initialize');
        this.get_element().__dragDropList = this;
        Sys.Extended.UI.DragDropManager.registerDropTarget(this);
    },
    
    
    startDragDrop: function(dragObject, context, dragVisual) {
        if (!this._isDragging) {
            this._isDragging = true;
            this._currentContext = context;
            if (!dragVisual) {
                dragVisual = this.createDragVisual(dragObject);
            }
            else {
                this._dragVisual = dragVisual;
            }
            Sys.Extended.UI.DragDropManager.startDragDrop(this, dragVisual, context, !(Sys.Browser.agent == Sys.Browser.InternetExplorer && Sys.Browser.version > 7 && Sys.Browser.documentMode != 0));
        }
        
    },
    
    createDragVisual: function(dragObject) {
        if (this._dragMode === Sys.Extended.UI.DragMode.Copy) {
            this._dragVisual = dragObject.cloneNode(true);
        }
        else {
            this._dragVisual = dragObject;
        }
        
        var oldOffset = Sys.Extended.UI.DragDropManager._getInstance().getScrollOffset(dragObject, true);
                
        this._dragVisual.preDragWidth = this._dragVisual.style.width;
        this._dragVisual.preDragHeight = this._dragVisual.style.height;
        
        this._dragVisual.style.width = dragObject.offsetWidth + "px";
        this._dragVisual.style.height = dragObject.offsetHeight + "px";
        
        this._dragVisual.style.opacity = "0.4";
        this._dragVisual.style.filter = "progid:DXImageTransform.Microsoft.BasicImage(opacity=0.4);";
        this._originalZIndex = this._dragVisual.style.zIndex;
        this._dragVisual.style.zIndex = 99999;
        
        this._originalParent = this._dragVisual.parentNode;
        this._originalNextSibling = Sys.Extended.UI.DragDropManager._getInstance().getNextSibling(this._dragVisual);
        
        var currentLocation = $common.getLocation(dragObject);
        
        var dragVisualContainer = this._getFloatContainer();
        $common.setLocation(dragVisualContainer, currentLocation);
        
        if (Sys.Extended.UI.DragDropManager._getInstance().hasParent(this._dragVisual)) {
            this._dragVisual.parentNode.removeChild(this._dragVisual);
        }
        dragVisualContainer.appendChild(this._dragVisual);
        
        var newOffset = Sys.Extended.UI.DragDropManager._getInstance().getScrollOffset(dragObject, true);
        if (oldOffset.x !== newOffset.x || oldOffset.y !== newOffset.y) {
            var diff = Sys.Extended.UI.DragDropManager._getInstance().subtractPoints(oldOffset, newOffset);
            var location = Sys.Extended.UI.DragDropManager._getInstance().subtractPoints(currentLocation, diff);
            $common.setLocation(dragVisualContainer, location);
        }
        
        return dragVisualContainer;
    },
    
    get_emptyTemplate: function() {
        return this._emptyTemplate;
    },
    
    set_emptyTemplate: function(value) {
        this._emptyTemplate = value;
    },
    
    get_dragDataType: function() {
        return this._dataType;
    },
    set_dragDataType: function(value) {
        this._dataType = value;
    },
    
    getDragData: function(context) {
        return context;
    },
    
    get_dragMode: function() {
        return this._dragMode;
    },
    set_dragMode: function(value) {
        this._dragMode = value;
    },
    
    dispose: function() {
        Sys.Extended.UI.DragDropManager.unregisterDropTarget(this);
        this.get_element().__dragDropList = null;
        Sys.Extended.UI.DragDropList.callBaseMethod(this, 'dispose');
    },
    
    onDragStart: function() {
        this._validate();
    },
    
    onDrag: function() {
    },
    
    onDragEnd: function(cancelled) {
        if (this._floatContainerInstance) {
            if (this._dragMode === Sys.Extended.UI.DragMode.Copy) {
                this._floatContainerInstance.removeChild(this._dragVisual);
            }
            else {
                this._dragVisual.style.opacity = "0.999";
                this._dragVisual.style.filter = "";
                
                this._dragVisual.style.zIndex = this._originalZIndex ? this._originalZIndex : 0;
                
                if (this._dragVisual.preDragWidth != null) {
                    this._dragVisual.style.width = this._dragVisual.preDragWidth;
                    this._dragVisual.preDragWidth = null;
                }
                
                if (this._dragVisual.preDragHeight != null) {
                    this._dragVisual.style.height = this._dragVisual.preDragHeight;
                    this._dragVisual.preDragHeight = null;
                }        
            
                if (cancelled) {
                    this._dragVisual.parentNode.removeChild(this._dragVisual);
                    if (this._originalNextSibling != null) {
                        this._originalParent.insertBefore(this._dragVisual, this._originalNextSibling);
                    }
                    else {
                        this._originalParent.appendChild(this._dragVisual);
                    }
                }
                else {
                    if (this._dragVisual.parentNode === this._floatContainerInstance) {
                        this._dragVisual.parentNode.removeChild(this._dragVisual);
                    }
                }
            }
            
            document.body.removeChild(this._floatContainerInstance);
        }
        else {
            this._dragVisual.parentNode.removeChild(this._dragVisual);
        }
        
        if (!cancelled && this._data && this._dragMode === Sys.Extended.UI.DragMode.Move) {
            var data = this.getDragData(this._currentContext);
            if (this._data && data) {
                Array.remove(this._data, data);
            }
        }
        
        this._isDragging = false;
        this._validate();
    },
    
    
    get_direction: function() {
        return this._direction;
    },
    
    set_direction: function(value) {
        this._direction = value;
    },
    
    get_acceptedDataTypes: function() {
        return this._acceptedDataTypes;
    },
    
    set_acceptedDataTypes: function(value) {
        
        if (typeof(value) == "string") {
            this._acceptedDataTypes = value.split(",");
        }
        else {
            this._acceptedDataTypes = value;
        }
    },
    
    get_dropCueTemplate: function() {
        return this._dropCueTemplate;
    },
    
    set_dropCueTemplate: function(value) {
        this._dropCueTemplate = value;
    },

    get_dropTargetElement: function() {
        return this.get_element();
    },
    
    canDrop: function(dragMode, dataType, data) {
        for (var i = 0; i < this._acceptedDataTypes.length; i++) {
            if (this._acceptedDataTypes[i] === dataType) {
                return true;
            }
        }
        
        return false;
    },
    
    drop: function(dragMode, dataType, data) {
        if (Sys.Extended.UI.DragDropList.IsValidDataType(dataType) && dragMode === Sys.Extended.UI.DragMode.Move) {
            dragVisual = data;
            
            var potentialNextSibling = this._findPotentialNextSibling(dragVisual);
            this._setDropCueVisible(false, dragVisual);
            dragVisual.parentNode.removeChild(dragVisual);
            if (potentialNextSibling) {
                this.get_element().insertBefore(dragVisual, potentialNextSibling);
            }
            else {
                this.get_element().appendChild(dragVisual);
            }
        }
        else {
            this._setDropCueVisible(false);
        }
    },
    
    onDragEnterTarget: function(dragMode, dataType, data) {
        if (Sys.Extended.UI.DragDropList.IsValidDataType(dataType)) {
            this._setDropCueVisible(true, data);
            this._validate();
        }
    },
    
    onDragLeaveTarget: function(dragMode, dataType, data) {
        if (Sys.Extended.UI.DragDropList.IsValidDataType(dataType)) {
            this._setDropCueVisible(false);
            this._validate();
        }
    },
    
    onDragInTarget: function(dragMode, dataType, data) {
        if (Sys.Extended.UI.DragDropList.IsValidDataType(dataType)) {
            this._setDropCueVisible(true, data);
        }
    },
    
    _setDropCueVisible: function(visible, dragVisual) {
        if (this._dropCueTemplate) {
            if (visible) {
                if (!this._dropCueTemplateInstance) {
                    var documentContext = document.createDocumentFragment();
                    this._dropCueTemplateInstance = this._dropCueTemplate.cloneNode(true);
                }
                
                var potentialNextSibling = this._findPotentialNextSibling(dragVisual);
                
                if (!Sys.Extended.UI.DragDropManager._getInstance().hasParent(this._dropCueTemplateInstance)) {
                    if (potentialNextSibling) {
                        this.get_element().insertBefore(this._dropCueTemplateInstance, potentialNextSibling);
                    }
                    else {
                        this.get_element().appendChild(this._dropCueTemplateInstance);
                    }
                        
                    this._dropCueTemplateInstance.style.width = dragVisual.offsetWidth + "px";
                    this._dropCueTemplateInstance.style.height = dragVisual.offsetHeight + "px";
                }
                else {
                    if (Sys.Extended.UI.DragDropManager._getInstance().getNextSibling(this._dropCueTemplateInstance) !== potentialNextSibling) {
                        this.get_element().removeChild(this._dropCueTemplateInstance);
                        if (potentialNextSibling) {
                            this.get_element().insertBefore(this._dropCueTemplateInstance, potentialNextSibling);
                        }
                        else {
                            this.get_element().appendChild(this._dropCueTemplateInstance);
                        }
                    }
                }
            }
            else {
                if (this._dropCueTemplateInstance && Sys.Extended.UI.DragDropManager._getInstance().hasParent(this._dropCueTemplateInstance)) {
                    this.get_element().removeChild(this._dropCueTemplateInstance);
                }
            }
        }
    },
    
    _findPotentialNextSibling: function(dragVisual) {
        var dragVisualRect = $common.getBounds(dragVisual);
        var isVertical = (this._direction === 0 /*Sys.Extended.UI.RepeatDirection.Vertical*/);
        var nodeRect;
        for (var node = this.get_element().firstChild; node !== null; node = node.nextSibling) {
            if (node.innerHTML && node !== this._dropCueTemplateInstance && node !== this._emptyTemplateInstance) {
                nodeRect = $common.getBounds(node);
                if ((!isVertical && dragVisualRect.x <= nodeRect.x) || (isVertical && dragVisualRect.y <= nodeRect.y)) {
                    return node;
                }
            }
        }
        
        return null;
    },
    
    _validate: function() {
        var visible = (this._dropCueTemplateInstance == null || !Sys.Extended.UI.DragDropManager._getInstance().hasParent(this._dropCueTemplateInstance));

        var count = 0;
        for (var node = this.get_element().firstChild; node !== null; node = node.nextSibling) {
            if (node.innerHTML && node !== this._emptyTemplateInstance && node !== this._dropCueTemplateInstance) {
                count++;
            }
        }
        
        if (count > 0) {
            visible = false;
        }
        this._setEmptyTemplateVisible(visible);
    },
    
    _setEmptyTemplateVisible: function(visible) {
        if (this._emptyTemplate) {
            if (visible) {
                if (!this._emptyTemplateInstance) {
                    this._emptyTemplateInstance = this._emptyTemplate.createInstance(this.get_element()).instanceElement;
                }
                else if (!Sys.Extended.UI.DragDropManager._getInstance().hasParent(this._emptyTemplateInstance)) {
                    this.get_element().appendChild(this._emptyTemplateInstance);
                }
            }
            else {
                if (this._emptyTemplateInstance && Sys.Extended.UI.DragDropManager._getInstance().hasParent(this._emptyTemplateInstance)) {
                    this.get_element().removeChild(this._emptyTemplateInstance);
                }
            }
        }
    },
    
    _getFloatContainer: function() {
        if (!this._floatContainerInstance) {
            this._floatContainerInstance = document.createElement(this.get_element().tagName);
            var none = "0px 0px 0px 0px";
            this._floatContainerInstance.style.position = "absolute";
            this._floatContainerInstance.style.padding = none;
            this._floatContainerInstance.style.margin = none;
            this._floatContainerInstance.className = 'dragVisualContainer';
            document.body.appendChild(this._floatContainerInstance);
        }
        else if (!Sys.Extended.UI.DragDropManager._getInstance().hasParent(this._floatContainerInstance)) {
            document.body.appendChild(this._floatContainerInstance);
        }
        
        return this._floatContainerInstance;
    }
}
Sys.Extended.UI.DragDropList.registerClass('Sys.Extended.UI.DragDropList', Sys.Extended.UI.BehaviorBase, Sys.Extended.UI.IDragSource, Sys.Extended.UI.IDropTarget, Sys.IDisposable);


function callbackSuccessStub(response, context) {

    var contextSplit = context.split(":");

    var id = contextSplit[0];
    var obj = $find(id);      
        
    if (obj) {
        obj._onCallbackSuccess(response, contextSplit[1]);
    }
}

function callbackErrorStub(response, context) {
    
    var contextSplit = context.split(":");

    var id = contextSplit[0];
    var obj = $find(id);      
    alert('error');
    if (obj) {
        obj._onCallbackError(response, contextSplit[1]);
    }
}

Sys.Extended.UI.DragDropWatcher = function(e) {
    Sys.Extended.UI.DragDropWatcher.initializeBase(this, [e]);
    
    this._childList = new Array();
    this._inProgressDrops = new Object();
    
    this._postbackCode = null;
    this._callbackCssStyle = null;

    this._argReplaceString = null;
    this._argContextString = null;
    this._argErrorString = null;
    this._argSuccessString = null;
}
    
Sys.Extended.UI.DragDropWatcher.prototype = {    
    dispose : function() {
        Sys.Extended.UI.DragDropWatcher.callBaseMethod(this, 'dispose');  
        
            },
    
    initialize : function() {
        Sys.Extended.UI.DragDropWatcher.callBaseMethod(this, 'initialize');        
        
        this._saveChildOrder();
    },

    
    add_reorderComplete : function(handler) {
        
        this.get_events().addHandler("reorderComplete", handler);
    },
    
    remove_reorderComplete : function(handler) {
    
        this.get_events().removeHandler("reorderComplete", handler);
    
    },
    
    raiseReorderComplete : function() {
    
        var handler = this.get_events().getHandler("reorderComplete");
        if (handler) {
            handler(this, Sys.EventArgs.Empty);
        }
    },
    
    findChild : function(parent, childId) {
        
        var childIndex = 0;
        var nodes = parent.childNodes;
        for (var i = 0; i < nodes.length; i++) {
            var item = nodes[i];
            if ((item != null) && (item.nodeName == "LI")) {
                if (item.id == childId) {
                    return childIndex;
                }
                childIndex++;
            }
        }
        return -1;
    },
    
    canDrop : function(dragMode, dataType, data) {
    
        if (this._inProgressDrops && this._inProgressDrops.length > 0) {            
            return false;        
        }   
    
        var dropOk = Sys.Extended.UI.DragDropWatcher.callBaseMethod(this, 'canDrop',[dragMode,dataType,data]);
        
        if (dropOk) {
            var dragVisualRect = $common.getBounds(data);
            
            var nodeRect;
            var hitInsertNode = false;
            var e = this.get_element();
            for (var node = e.firstChild; node != null && !hitInsertNode; node = node.nextSibling) {
                
                if (!node.id) continue;
            
                nodeRect = $common.getBounds(node);
                
                if (dragVisualRect.y <= nodeRect.y) {                
                    break;
                }
                
                hitInsertNode = (node.id.lastIndexOf("Insert", node.id.length - 6) != -1);           
            }       
            dropOk = !hitInsertNode;
        }    
        return dropOk;
    },
    
    drop : function(dragMode, dataType, data) {
                
        Sys.Extended.UI.DragDropWatcher.callBaseMethod(this, 'drop',[dragMode,dataType,data]);
        var childId = data.id;
        if (!this._postbackCode || !childId) return;
    
        var newIndex = this.findChild(this.get_element(), childId);
        Sys.Debug.assert(newIndex != -1, String.format(Sys.Extended.UI.Resources.ReorderList_DropWatcherBehavior_NoChild, childId));
        
        var oldIndex = this._getSavedChildIndex(childId);
        if (newIndex != -1 && newIndex != oldIndex) {            
            this._saveChildOrder();
            this.doPostBack(childId, newIndex, oldIndex);              
        }    
    }  ,
    
    _setupDropState : function(childId, newIndex, oldIndex) {
        if (childId) {
            var child = $get(childId);        
            this._inProgressDrops[childId] = {"oldCss": child.className, "newIndex":newIndex, "oldIndex":oldIndex};
            
            if (this._callbackCssStyle) {                 
                   child.className = this._callbackCssStyle;           
            }        
        }
    },
    
    _onDropCallback : function(childId) {
    
        if (childId) {
            
            this.set_ClientState("true");
            
            var item = this._inProgressDrops[childId];
            
            if (item) {
                var child = $get(childId);        
                if (this._callbackCssStyle) {                 
                   child.className = item.oldCss;           
                }    
                delete this._inProgressDrops[childId];
            }
            return item;
        }
    },

    
    doPostBack : function(childId, newIndex, oldIndex) {
        
            var item = this._inProgressDrops[childId];
            
            if (item) {
                return;
            }
        
            var postbackArg = "reorder:" + childId + ":" + oldIndex.toString() + ":" + newIndex.toString();       
            
            var postbackCode = this._postbackCode.replace(this._argReplaceString, postbackArg);            
            
            if (this._argSuccessString) {
                postbackCode = postbackCode.replace(this._argSuccessString, "callbackSuccessStub");
            }
            if (this._argErrorString) {
                postbackCode = postbackCode.replace(this._argErrorString, "callbackErrorStub");
            }
            if (this._argContextString) {
                postbackCode = postbackCode.replace(this._argContextString, this.get_id() + ":" + childId);
            }
            
            this._setupDropState(childId, newIndex, oldIndex);
                                
            window.setTimeout(postbackCode, 0);                    
    } ,
    
    _onCallbackSuccess : function(response, context) {
    
        if (response && response.length > 0) {
            this._onCallbackError(response, context);
        }
        else {    
            this._onDropCallback(context);            
            this.raiseReorderComplete();
        }
        
    },
    
    _onCallbackError : function(response, context) {
    
        var item = this._onDropCallback(context);
        
        if (item.oldIndex || item.newIndex) {
            this._saveChildOrder();
            this.doReorder(item.newIndex, item.oldIndex, true);                                    
        }        
        
        alert(String.format(Sys.Extended.UI.Resources.ReorderList_DropWatcherBehavior_CallbackError, response));
    },
    
    doReorder : function(oldIndex, newIndex, skipPostback) {   
        var e = this.get_element();   
        var children = this._childList;  
        if (oldIndex >= 0 && children.length > oldIndex && oldIndex != newIndex) {
        
            
        
            var child = $get(children[oldIndex]);
            
            var item = this._inProgressDrops[child.id];
            
            if (item) {
                return;
            }           
            
            if (child) {
            
                if (newIndex > oldIndex) {
                    newIndex++;
                }
                                
                var append = newIndex >= children.length;
                
                try {
                   e.removeChild(child);
                }
                catch(e) {
                }               
                
                if (append) {
                    e.appendChild(child);
                }
                else {                
                    var childAtNewIndex = $get(children[newIndex]);                                                   
                    e.insertBefore(child, childAtNewIndex);                            
                }
                if (!skipPostback) {                 
                    this.doPostBack(child.id, newIndex, oldIndex);
                }
                else {
                    this._saveChildOrder();
                    this.raiseReorderComplete();
                }
            }
        }
    }  , 
    
    getItem : function(index) {
        
        if (!this._childList) {
            this._saveChildOrder();
        }
    
        return this._childList[index];
    },
    
    _getSavedChildIndex : function(childId) {
        if (this._childList && childId) {            
            for (var i = 0; i < this._childList.length; i++) {
                if (childId == this._childList[i]) {            
                    return i;
                }
            }
        }
        return -1;
    },
    
    _saveChildOrder : function() {
        var e = this.get_element();
        if (!e) return;
        var children = e.childNodes;
        this._childList = [];
        var childCount = 0;
       
        for (var i = 0; i < children.length; i++) {
            if (children[i] && children[i].parentNode === e && children[i].tagName && children[i].tagName.toLowerCase() == "li") {
                this._childList[childCount++] = children[i].id;                
            }
        }        
    },
    
    
    get_argReplaceString : function() {
        return this._argReplaceString;
    },
    
    set_argReplaceString : function(value) {             
        if (this._argReplaceString != value) {
           this._argReplaceString = value;        
           this.raisePropertyChanged('argReplaceString');
        }
    },
    
    get_argContextString : function() {
        return this._argContextString;
    },
    
    set_argContextString : function(value) {             
        if (this._argContextString != value) {
            this._argContextString = value;        
            this.raisePropertyChanged('argContextString');
        }
    },
    
    get_argErrorString : function() {
        return this._argErrorString;
    },
    
    set_argErrorString : function(value) {             
        if (this._argErrorString != value) {
            this._argErrorString = value;        
            this.raisePropertyChanged('argErrorString');
        }
    },
    
    get_argSuccessString : function() {
        return this._argSuccessString;
    },
    
    set_argSuccessString : function(value) {             
        if (this._argSuccessString != value) {
            this._argSuccessString = value;        
            this.raisePropertyChanged('argSuccessString');
        }
    },
    
    get_postbackCode : function() {
        return this._postbackCode;
    },
    
    set_postbackCode : function(value) {             
        if (this._postbackCode != value) {
            this._postbackCode = value;        
            this.raisePropertyChanged('postbackCode');
        }
    },
    
    get_callbackCssStyle : function() {
        return this._callbackCssStyle;
    },
    
    set_callbackCssStyle : function(value) { 
        if (this._callbackCssStyle != value) {             
            this._callbackCssStyle = value;        
            this.raisePropertyChanged('callbackCssStyle');
        }
    }
     
    
}
Sys.Extended.UI.DragDropWatcher.registerClass('Sys.Extended.UI.DragDropWatcher', Sys.Extended.UI.DragDropList);
c // (c) 2010 CodePlex Foundation
(function(){var b="ExtendedPopupBehavior";function a(){var b="click",c=false,a=null;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.PopupControlBehavior=function(d){var b=this;Sys.Extended.UI.PopupControlBehavior.initializeBase(b,[d]);b._popupControlID=a;b._commitProperty=a;b._commitScript=a;b._position=a;b._offsetX=0;b._offsetY=0;b._extenderControlID=a;b._popupElement=a;b._popupBehavior=a;b._popupVisible=c;b._focusHandler=a;b._popupKeyDownHandler=a;b._popupClickHandler=a;b._bodyClickHandler=a;b._onShowJson=a;b._onHideJson=a};Sys.Extended.UI.PopupControlBehavior.prototype={initialize:function(){var c=this;Sys.Extended.UI.PopupControlBehavior.callBaseMethod(c,"initialize");var d=c.get_element();c._popupElement=$get(c._popupControlID);c._popupBehavior=$create(Sys.Extended.UI.PopupBehavior,{id:c.get_id()+"PopupBehavior",parentElement:d},a,a,c._popupElement);c._onShowJson&&c._popupBehavior.set_onShow(c._onShowJson);c._onHideJson&&c._popupBehavior.set_onHide(c._onHideJson);c._focusHandler=Function.createDelegate(c,c._onFocus);c._popupClickHandler=Function.createDelegate(c,c._onPopupClick);c._bodyClickHandler=Function.createDelegate(c,c._onBodyClick);c._popupKeyDownHandler=Function.createDelegate(c,c._onPopupKeyDown);$addHandler(d,"focus",c._focusHandler);$addHandler(d,b,c._focusHandler);$addHandler(document.body,b,c._bodyClickHandler);$addHandler(c._popupElement,b,c._popupClickHandler);$addHandler(c._popupElement,"keydown",c._popupKeyDownHandler);c.registerPartialUpdateEvents();Sys.Extended.UI.PopupControlBehavior.__VisiblePopup&&c.get_id()==Sys.Extended.UI.PopupControlBehavior.__VisiblePopup.get_id()&&c._onFocus(a)},dispose:function(){var c=this,d=c.get_element();c._onShowJson=a;c._onHideJson=a;if(c._popupBehavior){c._popupBehavior.dispose();c._popupBehavior=a}if(c._focusHandler){$removeHandler(d,"focus",c._focusHandler);$removeHandler(d,b,c._focusHandler);c._focusHandler=a}if(c._bodyClickHandler){$removeHandler(document.body,b,c._bodyClickHandler);c._bodyClickHandler=a}if(c._popupClickHandler){$removeHandler(c._popupElement,b,c._popupClickHandler);c._popupClickHandler=a}if(c._popupKeyDownHandler){$removeHandler(c._popupElement,"keydown",c._popupKeyDownHandler);c._popupKeyDownHandler=a}Sys.Extended.UI.PopupControlBehavior.callBaseMethod(c,"dispose")},showPopup:function(){var a=this,b=Sys.Extended.UI.PopupControlBehavior.__VisiblePopup;b&&b._popupBehavior&&b.hidePopup();Sys.Extended.UI.PopupControlBehavior.callBaseMethod(a,"populate");a._popupBehavior.set_x(a._getLeftOffset());a._popupBehavior.set_y(a._getTopOffset());a._popupBehavior.show();a._popupVisible=true;Sys.Extended.UI.PopupControlBehavior.__VisiblePopup=a},hidePopup:function(){this._popupBehavior.hide();this._popupVisible=c;Sys.Extended.UI.PopupControlBehavior.__VisiblePopup=a},_onFocus:function(a){!this._popupVisible&&this.showPopup();a&&a.stopPropagation()},_onPopupKeyDown:function(a){this._popupVisible&&a.keyCode==27&&this.get_element().focus()},_onPopupClick:function(a){a.stopPropagation()},_onBodyClick:function(){this._popupVisible&&this.hidePopup()},_close:function(e){var b=this,d=b.get_element();if(a!=e){if("$$CANCEL$$"!=e){if(b._commitProperty)d[b._commitProperty]=e;else if("text"==d.type)d.value=e;else Sys.Debug.assert(c,String.format(Sys.Extended.UI.Resources.PopupControl_NoDefaultProperty,d.id,d.type));if(b._commitScript)eval(b._commitScript)}b.hidePopup()}},_partialUpdateEndRequest:function(d,c){var a=this;Sys.Extended.UI.PopupControlBehavior.callBaseMethod(a,"_partialUpdateEndRequest",[d,c]);if(a.get_element()){var b=c.get_dataItems()[a.get_element().id];if(undefined===b&&Sys.Extended.UI.PopupControlBehavior.__VisiblePopup&&a.get_id()==Sys.Extended.UI.PopupControlBehavior.__VisiblePopup.get_id())b=c.get_dataItems()._PopupControl_Proxy_ID_;undefined!==b&&a._close(b)}},_onPopulated:function(b,a){Sys.Extended.UI.PopupControlBehavior.callBaseMethod(this,"_onPopulated",[b,a]);this._popupVisible&&this._popupBehavior.show()},_getLeftOffset:function(){var a=this;return Sys.Extended.UI.PopupControlPopupPosition.Left==a._position?-1*a.get_element().offsetWidth+a._offsetX:Sys.Extended.UI.PopupControlPopupPosition.Right==a._position?a.get_element().offsetWidth+a._offsetX:a._offsetX},_getTopOffset:function(){var a=this,b;if(Sys.Extended.UI.PopupControlPopupPosition.Top==a._position)b=-1*a.get_element().offsetHeight+a._offsetY;else if(Sys.Extended.UI.PopupControlPopupPosition.Bottom==a._position)b=a.get_element().offsetHeight+a._offsetY;else b=a._offsetY;return b},get_onShow:function(){return this._popupBehavior?this._popupBehavior.get_onShow():this._onShowJson},set_onShow:function(b){var a=this;if(a._popupBehavior)a._popupBehavior.set_onShow(b);else a._onShowJson=b;a.raisePropertyChanged("onShow")},get_onShowBehavior:function(){return this._popupBehavior?this._popupBehavior.get_onShowBehavior():a},onShow:function(){this._popupBehavior&&this._popupBehavior.onShow()},get_onHide:function(){return this._popupBehavior?this._popupBehavior.get_onHide():this._onHideJson},set_onHide:function(b){var a=this;if(a._popupBehavior)a._popupBehavior.set_onHide(b);else a._onHideJson=b;a.raisePropertyChanged("onHide")},get_onHideBehavior:function(){return this._popupBehavior?this._popupBehavior.get_onHideBehavior():a},onHide:function(){this._popupBehavior&&this._popupBehavior.onHide()},get_PopupControlID:function(){return this._popupControlID},set_PopupControlID:function(a){if(this._popupControlID!=a){this._popupControlID=a;this.raisePropertyChanged("PopupControlID")}},get_CommitProperty:function(){return this._commitProperty},set_CommitProperty:function(a){if(this._commitProperty!=a){this._commitProperty=a;this.raisePropertyChanged("CommitProperty")}},get_CommitScript:function(){return this._commitScript},set_CommitScript:function(a){if(this._commitScript!=a){this._commitScript=a;this.raisePropertyChanged("CommitScript")}},get_Position:function(){return this._position},set_Position:function(a){if(this._position!=a){this._position=a;this.raisePropertyChanged("Position")}},get_ExtenderControlID:function(){return this._extenderControlID},set_ExtenderControlID:function(a){if(this._extenderControlID!=a){this._extenderControlID=a;this.raisePropertyChanged("ExtenderControlID")}},get_OffsetX:function(){return this._offsetX},set_OffsetX:function(a){if(this._offsetX!=a){this._offsetX=a;this.raisePropertyChanged("OffsetX")}},get_OffsetY:function(){return this._offsetY},set_OffsetY:function(a){if(this._offsetY!=a){this._offsetY=a;this.raisePropertyChanged("OffsetY")}},get_PopupVisible:function(){return this._popupVisible},add_showing:function(a){this._popupBehavior&&this._popupBehavior.add_showing(a)},remove_showing:function(a){this._popupBehavior&&this._popupBehavior.remove_showing(a)},raiseShowing:function(a){this._popupBehavior&&this._popupBehavior.raiseShowing(a)},add_shown:function(a){this._popupBehavior&&this._popupBehavior.add_shown(a)},remove_shown:function(a){this._popupBehavior&&this._popupBehavior.remove_shown(a)},raiseShown:function(a){this._popupBehavior&&this._popupBehavior.raiseShown(a)},add_hiding:function(a){this._popupBehavior&&this._popupBehavior.add_hiding(a)},remove_hiding:function(a){this._popupBehavior&&this._popupBehavior.remove_hiding(a)},raiseHiding:function(a){this._popupBehavior&&this._popupBehavior.raiseHiding(a)},add_hidden:function(a){this._popupBehavior&&this._popupBehavior.add_hidden(a)},remove_hidden:function(a){this._popupBehavior&&this._popupBehavior.remove_hidden(a)},raiseHidden:function(a){this._popupBehavior&&this._popupBehavior.raiseHidden(a)}};Sys.Extended.UI.PopupControlBehavior.registerClass("Sys.Extended.UI.PopupControlBehavior",Sys.Extended.UI.DynamicPopulateBehaviorBase);Sys.registerComponent(Sys.Extended.UI.PopupControlBehavior,{name:"popupBehavior"});Sys.Extended.UI.PopupControlBehavior.__VisiblePopup=a;Sys.Extended.UI.PopupControlPopupPosition=function(){throw Error.invalidOperation();};Sys.Extended.UI.PopupControlPopupPosition.prototype={Center:0,Top:1,Left:2,Bottom:3,Right:4};Sys.Extended.UI.PopupControlPopupPosition.registerEnum("Sys.Extended.UI.PopupControlPopupPosition",c)}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedDynamicPopulate","ExtendedPopup","ExtendedAnimationBehavior"],a);else a()})();�>// (c) 2010 CodePlex Foundation
Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.ModalPopupRepositionMode=function(){throw Error.invalidOperation();};Sys.Extended.UI.ModalPopupRepositionMode.prototype={None:0,RepositionOnWindowResize:1,RepositionOnWindowScroll:2,RepositionOnWindowResizeAndScroll:3};Sys.Extended.UI.ModalPopupRepositionMode.registerEnum("Sys.Extended.UI.ModalPopupRepositionMode");Sys.Extended.UI.ModalPopupBehavior=function(d){var c=false,b=null,a=this;Sys.Extended.UI.ModalPopupBehavior.initializeBase(a,[d]);a._PopupControlID=b;a._PopupDragHandleControlID=b;a._BackgroundCssClass=b;a._DropShadow=c;a._Drag=c;a._OkControlID=b;a._CancelControlID=b;a._OnOkScript=b;a._OnCancelScript=b;a._xCoordinate=-1;a._yCoordinate=-1;a._repositionMode=Sys.Extended.UI.ModalPopupRepositionMode.RepositionOnWindowResizeAndScroll;a._onShown=new Sys.Extended.UI.Animation.GenericAnimationBehavior(d);a._onHidden=new Sys.Extended.UI.Animation.GenericAnimationBehavior(d);a._onShowing=new Sys.Extended.UI.Animation.GenericAnimationBehavior(d);a._onHiding=new Sys.Extended.UI.Animation.GenericAnimationBehavior(d);a._backgroundElement=b;a._foregroundElement=b;a._relativeOrAbsoluteParentElement=b;a._popupElement=b;a._dragHandleElement=b;a._showHandler=b;a._okHandler=b;a._cancelHandler=b;a._scrollHandler=b;a._resizeHandler=b;a._windowHandlersAttached=c;a._dropShadowBehavior=b;a._dragBehavior=b;a._isIE6=c;a._saveTabIndexes=[];a._saveDesableSelect=[];a._tagWithTabIndex=["A","AREA","BUTTON","INPUT","OBJECT","SELECT","TEXTAREA","IFRAME"];a._isAnimationJustEnded=c;a._hidingAnimationEndedHandler=b;a._showingAnimationEndedHandler=b};Sys.Extended.UI.ModalPopupBehavior.prototype={initialize:function(){var b="click",a=this;Sys.Extended.UI.ModalPopupBehavior.callBaseMethod(a,"initialize");a._isIE6=Sys.Browser.agent==Sys.Browser.InternetExplorer&&Sys.Browser.version<7;if(a._PopupDragHandleControlID)a._dragHandleElement=$get(a._PopupDragHandleControlID);a._popupElement=$get(a._PopupControlID);if(a._DropShadow){a._foregroundElement=document.createElement("div");a._foregroundElement.id=a.get_id()+"_foregroundElement";a._popupElement.parentNode.appendChild(a._foregroundElement);a._foregroundElement.appendChild(a._popupElement)}else a._foregroundElement=a._popupElement;a._backgroundElement=document.createElement("div");a._backgroundElement.id=a.get_id()+"_backgroundElement";a._backgroundElement.style.display="none";a._backgroundElement.style.position="fixed";a._backgroundElement.style.left="0px";a._backgroundElement.style.top="0px";a._backgroundElement.style.zIndex=1e4;if(a._BackgroundCssClass)a._backgroundElement.className=a._BackgroundCssClass;a._foregroundElement.parentNode.appendChild(a._backgroundElement);a._foregroundElement.style.display="none";a._foregroundElement.style.position="fixed";a._foregroundElement.style.zIndex=$common.getCurrentStyle(a._backgroundElement,"zIndex",a._backgroundElement.style.zIndex)+1;a._showHandler=Function.createDelegate(a,a._onShow);$addHandler(a.get_element(),b,a._showHandler);if(a._OkControlID){a._okHandler=Function.createDelegate(a,a._onOk);$addHandler($get(a._OkControlID),b,a._okHandler)}if(a._CancelControlID){a._cancelHandler=Function.createDelegate(a,a._onCancel);$addHandler($get(a._CancelControlID),b,a._cancelHandler)}a._scrollHandler=Function.createDelegate(a,a._onLayout);a._resizeHandler=Function.createDelegate(a,a._onLayout);a.registerPartialUpdateEvents();a._resetAnimationsTarget();if(a._onHiding.get_animation()){a._hidingAnimationEndedHandler=Function.createDelegate(a,function(){this._isAnimationJustEnded=true;this.hide()});a._onHiding.get_animation().add_ended(a._hidingAnimationEndedHandler)}if(a._onShowing.get_animation()){a._showingAnimationEndedHandler=Function.createDelegate(a,function(){this._isAnimationJustEnded=true;this.show()});a._onShowing.get_animation().add_ended(a._showingAnimationEndedHandler)}},dispose:function(){var c="click",b=null,a=this;a._hideImplementation();if(a._foregroundElement&&a._foregroundElement.parentNode){a._foregroundElement.parentNode.removeChild(a._backgroundElement);if(a._DropShadow){a._foregroundElement.parentNode.appendChild(a._popupElement);a._foregroundElement.parentNode.removeChild(a._foregroundElement)}}a._scrollHandler=b;a._resizeHandler=b;if(a._cancelHandler&&$get(a._CancelControlID)){$removeHandler($get(a._CancelControlID),c,a._cancelHandler);a._cancelHandler=b}if(a._okHandler&&$get(a._OkControlID)){$removeHandler($get(a._OkControlID),c,a._okHandler);a._okHandler=b}if(a._showHandler){$removeHandler(a.get_element(),c,a._showHandler);a._showHandler=b}a._hidingAnimationEndedHandler&&a._onHiding.get_animation().remove_ended(a._hidingAnimationEndedHandler);a._showingAnimationEndedHandler&&a._onShowing.get_animation().remove_ended(a._showingAnimationEndedHandler);Sys.Extended.UI.ModalPopupBehavior.callBaseMethod(a,"dispose")},_attachPopup:function(){var b=null,a=this;if(a._DropShadow&&!a._dropShadowBehavior)a._dropShadowBehavior=$create(Sys.Extended.UI.DropShadowBehavior,{},b,b,a._popupElement);if(a._dragHandleElement&&!a._dragBehavior)a._dragBehavior=$create(Sys.Extended.UI.FloatingBehavior,{handle:a._dragHandleElement},b,b,a._foregroundElement);$addHandler(window,"resize",a._resizeHandler);$addHandler(window,"scroll",a._scrollHandler);a._windowHandlersAttached=true},_detachPopup:function(){var a=this;if(a._windowHandlersAttached){a._scrollHandler&&$removeHandler(window,"scroll",a._scrollHandler);a._resizeHandler&&$removeHandler(window,"resize",a._resizeHandler);a._windowHandlersAttached=false}if(a._dragBehavior){a._dragBehavior.dispose();a._dragBehavior=null}if(a._dropShadowBehavior){a._dropShadowBehavior.dispose();a._dropShadowBehavior=null}},_onShow:function(a){if(!this.get_element().disabled){this.show();a.preventDefault();return false}},_onOk:function(c){var a=this,b=$get(a._OkControlID);if(b&&!b.disabled){a.hide()&&a._OnOkScript&&window.setTimeout(a._OnOkScript,0);c.preventDefault();return false}},_onCancel:function(c){var a=this,b=$get(a._CancelControlID);if(b&&!b.disabled){a.hide()&&a._OnCancelScript&&window.setTimeout(a._OnCancelScript,0);c.preventDefault();return false}},_onLayout:function(c){var b=this,a=b.get_repositionMode();if((a===Sys.Extended.UI.ModalPopupRepositionMode.RepositionOnWindowScroll||a===Sys.Extended.UI.ModalPopupRepositionMode.RepositionOnWindowResizeAndScroll)&&c.type==="scroll")b._layout();else if((a===Sys.Extended.UI.ModalPopupRepositionMode.RepositionOnWindowResize||a===Sys.Extended.UI.ModalPopupRepositionMode.RepositionOnWindowResizeAndScroll)&&c.type==="resize")b._layout();else b._layoutBackgroundElement()},show:function(){var c="absolute",a=this;if(!a._isAnimationJustEnded){var d=new Sys.CancelEventArgs;a.raiseShowing(d);if(d.get_cancel())return;else if(a._onShowing.get_animation()){a._onShowing.play();return}}else a._isAnimationJustEnded=false;a.populate();a._attachPopup();a._backgroundElement.style.display="";a._foregroundElement.style.display="";a._popupElement.style.display="";if(a._isIE6){a._foregroundElement.style.position=c;a._backgroundElement.style.position=c;var b=a._foregroundElement.parentNode;while(b&&b!=document.documentElement)if(b.style.position!="relative"&&b.style.position!=c)b=b.parentNode;else{a._relativeOrAbsoluteParentElement=b;break}}a.disableTab();a._layout();a._layout();a.raiseShown(Sys.EventArgs.Empty);a._onShown.play()},disableTab:function(){var c=this,d=0,a,f=[];Array.clear(c._saveTabIndexes);for(var e=0;e<c._tagWithTabIndex.length;e++){a=c._foregroundElement.getElementsByTagName(c._tagWithTabIndex[e]);for(var b=0;b<a.length;b++){f[d]=a[b];d++}}d=0;for(var e=0;e<c._tagWithTabIndex.length;e++){a=document.getElementsByTagName(c._tagWithTabIndex[e]);for(var b=0;b<a.length;b++)if(Array.indexOf(f,a[b])==-1){c._saveTabIndexes[d]={tag:a[b],index:a[b].tabIndex};a[b].tabIndex="-1";d++}}d=0;if(Sys.Browser.agent===Sys.Browser.InternetExplorer&&Sys.Browser.version<7){for(var g=[],e=0;e<c._tagWithTabIndex.length;e++){a=c._foregroundElement.getElementsByTagName("SELECT");for(var b=0;b<a.length;b++){g[d]=a[b];d++}}d=0;Array.clear(c._saveDesableSelect);a=document.getElementsByTagName("SELECT");for(var b=0;b<a.length;b++)if(Array.indexOf(g,a[b])==-1){c._saveDesableSelect[d]={tag:a[b],visib:$common.getCurrentStyle(a[b],"visibility")};a[b].style.visibility="hidden";d++}}},restoreTab:function(){var a=this;for(var b=0;b<a._saveTabIndexes.length;b++)a._saveTabIndexes[b].tag.tabIndex=a._saveTabIndexes[b].index;Array.clear(a._saveTabIndexes);if(Sys.Browser.agent===Sys.Browser.InternetExplorer&&Sys.Browser.version<7){for(var c=0;c<a._saveDesableSelect.length;c++)a._saveDesableSelect[c].tag.style.visibility=a._saveDesableSelect[c].visib;Array.clear(a._saveDesableSelect)}},hide:function(){var a=this;if(!a._isAnimationJustEnded){var b=new Sys.CancelEventArgs;a.raiseHiding(b);if(b.get_cancel())return false;else if(a._onHiding.get_animation()){a._onHiding.play();return true}}else a._isAnimationJustEnded=false;a._hideImplementation();a.raiseHidden(Sys.EventArgs.Empty);a._onHidden.play();return true},_hideImplementation:function(){var a=this;a._backgroundElement.style.display="none";a._foregroundElement.style.display="none";a.restoreTab();a._detachPopup()},_layout:function(){var b="px",g="absolute",a=this,e=document.documentElement.scrollLeft?document.documentElement.scrollLeft:document.body.scrollLeft,f=document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop,h=$common.getClientBounds(),l=h.width,k=h.height;a._layoutBackgroundElement();var c=0,d=0;if(a._xCoordinate<0){var j=a._foregroundElement.offsetWidth?a._foregroundElement.offsetWidth:a._foregroundElement.scrollWidth;c=(l-j)/2;if(a._foregroundElement.style.position==g)c+=e;a._foregroundElement.style.left=c+b}else if(a._isIE6){a._foregroundElement.style.left=a._xCoordinate+e+b;c=a._xCoordinate+e}else{a._foregroundElement.style.left=a._xCoordinate+b;c=a._xCoordinate}if(a._yCoordinate<0){var i=a._foregroundElement.offsetHeight?a._foregroundElement.offsetHeight:a._foregroundElement.scrollHeight;d=(k-i)/2;if(a._foregroundElement.style.position==g)d+=f;a._foregroundElement.style.top=d+b}else if(a._isIE6){a._foregroundElement.style.top=a._yCoordinate+f+b;d=a._yCoordinate+f}else{a._foregroundElement.style.top=a._yCoordinate+b;d=a._yCoordinate}a._layoutForegroundElement(c,d);if(a._dropShadowBehavior){a._dropShadowBehavior.setShadow();window.setTimeout(Function.createDelegate(a,a._fixupDropShadowBehavior),0)}a._layoutBackgroundElement()},_layoutForegroundElement:function(d,e){var a=this;if(a._isIE6&&a._relativeOrAbsoluteParentElement){var c=$common.getLocation(a._foregroundElement),b=$common.getLocation(a._relativeOrAbsoluteParentElement),f=c.x;if(f!=d)a._foregroundElement.style.left=d-b.x+"px";var g=c.y;if(g!=e)a._foregroundElement.style.top=e-b.y+"px"}},_layoutBackgroundElement:function(){var b="px",a=this;if(a._isIE6){var c=$common.getLocation(a._backgroundElement),d=c.x;if(d!=0)a._backgroundElement.style.left=-d+b;var e=c.y;if(e!=0)a._backgroundElement.style.top=-e+b}var f=$common.getClientBounds(),h=f.width,g=f.height;a._backgroundElement.style.width=Math.max(Math.max(document.documentElement.scrollWidth,document.body.scrollWidth),h)+b;a._backgroundElement.style.height=Math.max(Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),g)+b},_fixupDropShadowBehavior:function(){this._dropShadowBehavior&&this._dropShadowBehavior.setShadow()},_partialUpdateEndRequest:function(d,b){var a=this;Sys.Extended.UI.ModalPopupBehavior.callBaseMethod(a,"_partialUpdateEndRequest",[d,b]);if(a.get_element()){var c=b.get_dataItems()[a.get_element().id];if("show"==c)a.show();else"hide"==c&&a.hide()}a._layout()},_onPopulated:function(b,a){Sys.Extended.UI.ModalPopupBehavior.callBaseMethod(this,"_onPopulated",[b,a]);this._layout()},_replaceAnimationTarget:function(a,c){var b=this,d=b[a].get_json();b[a]=new Sys.Extended.UI.Animation.GenericAnimationBehavior(c);b[a].set_json(d);b[a].initialize()},_resetAnimationsTarget:function(){var a=this,b=$get(a.get_PopupControlID());a._replaceAnimationTarget("_onShowing",b);a._replaceAnimationTarget("_onShown",b);a._replaceAnimationTarget("_onHiding",b);a._replaceAnimationTarget("_onHidden",b)},get_PopupControlID:function(){return this._PopupControlID},set_PopupControlID:function(a){if(this._PopupControlID!=a){this._PopupControlID=a;this.raisePropertyChanged("PopupControlID")}},get_X:function(){return this._xCoordinate},set_X:function(a){if(this._xCoordinate!=a){this._xCoordinate=a;this.raisePropertyChanged("X")}},get_Y:function(){return this._yCoordinate},set_Y:function(a){if(this._yCoordinate!=a){this._yCoordinate=a;this.raisePropertyChanged("Y")}},get_PopupDragHandleControlID:function(){return this._PopupDragHandleControlID},set_PopupDragHandleControlID:function(a){if(this._PopupDragHandleControlID!=a){this._PopupDragHandleControlID=a;this.raisePropertyChanged("PopupDragHandleControlID")}},get_BackgroundCssClass:function(){return this._BackgroundCssClass},set_BackgroundCssClass:function(a){if(this._BackgroundCssClass!=a){this._BackgroundCssClass=a;this.raisePropertyChanged("BackgroundCssClass")}},get_DropShadow:function(){return this._DropShadow},set_DropShadow:function(a){if(this._DropShadow!=a){this._DropShadow=a;this.raisePropertyChanged("DropShadow")}},get_Drag:function(){return this._Drag},set_Drag:function(a){if(this._Drag!=a){this._Drag=a;this.raisePropertyChanged("Drag")}},get_OkControlID:function(){return this._OkControlID},set_OkControlID:function(a){if(this._OkControlID!=a){this._OkControlID=a;this.raisePropertyChanged("OkControlID")}},get_CancelControlID:function(){return this._CancelControlID},set_CancelControlID:function(a){if(this._CancelControlID!=a){this._CancelControlID=a;this.raisePropertyChanged("CancelControlID")}},get_OnOkScript:function(){return this._OnOkScript},set_OnOkScript:function(a){if(this._OnOkScript!=a){this._OnOkScript=a;this.raisePropertyChanged("OnOkScript")}},get_OnCancelScript:function(){return this._OnCancelScript},set_OnCancelScript:function(a){if(this._OnCancelScript!=a){this._OnCancelScript=a;this.raisePropertyChanged("OnCancelScript")}},get_repositionMode:function(){return this._repositionMode},set_repositionMode:function(a){if(this._repositionMode!==a){this._repositionMode=a;this.raisePropertyChanged("RepositionMode")}},get_OnShowing:function(){return this._onShowing.get_json()},set_OnShowing:function(a){this._onShowing.set_json(a);this.raisePropertyChanged("OnShowing")},get_OnShown:function(){return this._onShown.get_json()},set_OnShown:function(a){this._onShown.set_json(a);this.raisePropertyChanged("OnShown")},get_OnHiding:function(){return this._onHiding.get_json()},set_OnHiding:function(a){this._onHiding.set_json(a);this.raisePropertyChanged("OnHiding")},get_OnHidden:function(){return this._onHidden.get_json()},set_OnHidden:function(a){this._onHidden.set_json(a);this.raisePropertyChanged("OnHidden")},add_showing:function(a){this.get_events().addHandler("showing",a)},remove_showing:function(a){this.get_events().removeHandler("showing",a)},raiseShowing:function(b){var a=this.get_events().getHandler("showing");a&&a(this,b)},add_shown:function(a){this.get_events().addHandler("shown",a)},remove_shown:function(a){this.get_events().removeHandler("shown",a)},raiseShown:function(b){var a=this.get_events().getHandler("shown");a&&a(this,b)},add_hiding:function(a){this.get_events().addHandler("hiding",a)},remove_hiding:function(a){this.get_events().removeHandler("hiding",a)},raiseHiding:function(b){var a=this.get_events().getHandler("hiding");a&&a(this,b)},add_hidden:function(a){this.get_events().addHandler("hidden",a)},remove_hidden:function(a){this.get_events().removeHandler("hidden",a)},raiseHidden:function(b){var a=this.get_events().getHandler("hidden");a&&a(this,b)}};Sys.Extended.UI.ModalPopupBehavior.registerClass("Sys.Extended.UI.ModalPopupBehavior",Sys.Extended.UI.DynamicPopulateBehaviorBase);Sys.Extended.UI.ModalPopupBehavior.invokeViaServer=function(b,c){var a=$find(b);if(a)if(c)a.show();else a.hide()};+"// (c) 2010 CodePlex Foundation
//!/ <reference name="MicrosoftAjaxCore.js" />

(function() {

function execute() {

Type._registerScript("MicrosoftAjaxSerialization.js", ["MicrosoftAjaxCore.js"]);

var $type, $prototype,
    isBrowser = Sys._isBrowser,
	merge = Sys._merge;

Type.registerNamespace('Sys.Serialization');

$type = Sys.Serialization.JavaScriptSerializer = function Serialization$JavaScriptSerializer() {
    /// <summary locid="M:J#Sys.Serialization.JavaScriptSerializer.#ctor">Provides serialization from JavaScript object to JavaScript object notation.</summary>
    if (arguments.length !== 0) throw Error.parameterCount();
}
$type.registerClass('Sys.Serialization.JavaScriptSerializer');

$type._esc = {
    charsRegExs: { '"': /\"/g, '\\': /\\/g }, /*"*/
    chars: ['\\', '"'],
    dateRegEx: /(^|[^\\])\"\\\/Date\((-?[0-9]+)(?:[a-zA-Z]|(?:\+|-)[0-9]{4})?\)\\\/\"/g, /* " */
    escapeChars: {'\\':'\\\\', '"':'\\"', "\b":"\\b", "\t":"\\t", "\n":"\\n", "\f":"\\f", "\r":"\\r"},
    escapeRegExG: /[\"\\\x00-\x1F]/g,
    escapeRegEx: /[\"\\\x00-\x1F]/i,
    jsonRegEx: /[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/g,
    jsonStringRegEx: /\"(\\.|[^\"\\])*\"/g /*"*/
};
$type._init = function() {
    var esc = this._esc,
        toEsc = esc.chars,
        toEscRE = esc.charsRegExs,
        escChars = esc.escapeChars;
    for (var i = 0; i < 32; i++) {
        var c = String.fromCharCode(i);
        toEsc[i+2] = c;
        toEscRE[c] = new RegExp(c, 'g');
        escChars[c] = escChars[c] || ("\\u" + ("000" + i.toString(16)).slice(-4));
    }
    this._load = true;
}
$type._serializeNumberWithBuilder = function(object, stringBuilder) {
    if (!isFinite(object)) {
        throw Error.invalidOperation(Sys.Res.cannotSerializeNonFiniteNumbers);
    }
    stringBuilder.append(String(object));
}
$type._serializeStringWithBuilder = function(string, stringBuilder) {
    stringBuilder.append('"');
    var esc = this._esc;
    if (esc.escapeRegEx.test(string)) {
        if (!this._load) {
            this._init();
        }
        if (string.length < 128) {
            string = string.replace(esc.escapeRegExG,
                function(x) { return esc.escapeChars[x]; });
        }
        else {
            for (var i = 0; i < 34; i++) {
                var c = esc.chars[i];
                if (string.indexOf(c) !== -1) {
                    var escChar = esc.escapeChars[c];
                    string = (isBrowser("Opera") || isBrowser("Firefox")) ?
                        string.split(c).join(escChar) :
                        string.replace(esc.charsRegExs[c], escChar);
                }
            }
       }
    }
    stringBuilder.append(string).append('"');
}
$type._serializeWithBuilder = function(object, stringBuilder, sort, prevObjects) {
    var i;
    switch (typeof object) {
    case 'object':
        if (object) {
            if (prevObjects){
                if (Sys._indexOf(prevObjects, object) !== -1) {
                    throw Error.invalidOperation(Sys.Res.cannotSerializeObjectWithCycle);
                }
            }
            else {
                prevObjects = [];
            }
            try {
                prevObjects.push(object);
                
                if (Number.isInstanceOfType(object)) {
                    this._serializeNumberWithBuilder(object, stringBuilder);
                }
                else if (Boolean.isInstanceOfType(object)) {
                    stringBuilder.append(object);
                }
                else if (String.isInstanceOfType(object)) {
                    this._serializeStringWithBuilder(object, stringBuilder);
                }
            
                else if (object instanceof Array) {
                    stringBuilder.append('[');
                   
                    for (i = 0; i < object.length; ++i) {
                        if (i) {
                            stringBuilder.append(',');
                        }
                        this._serializeWithBuilder(object[i], stringBuilder, false, prevObjects);
                    }
                    stringBuilder.append(']');
                }
                else {
                    if (Date.isInstanceOfType(object)) {
                        stringBuilder.append('"\\/Date(').
                            append(object.getTime()).
                            append(')\\/"');
                        break;
                    }

                    var properties = [],
                        propertyCount = 0;
                    for (var name in object) {
                        if (name.charAt(0) !== '$') {
                            if (name === '__type' && propertyCount) {
                                properties[propertyCount++] = properties[0];
                                properties[0] = name;
                            }
                            else {
                                properties[propertyCount++] = name;
                            }
                        }
                    }
                    if (sort) properties.sort();

                    stringBuilder.append('{');
                     
                    var needComma;
                    for (i=0; i < propertyCount; i++) {
                        var prop = properties[i], value = object[prop],
                            type = typeof(value);
                        if (type !== 'undefined' && type !== 'function') {
                            if (needComma) {
                                stringBuilder.append(',');
                            }
                            this._serializeWithBuilder(prop, stringBuilder, sort, prevObjects);
                            stringBuilder.append(':');
                            this._serializeWithBuilder(value, stringBuilder, sort, prevObjects);
                            needComma = true;
                        }
                    }
                stringBuilder.append('}');
                }
            }
            finally {
                Array.removeAt(prevObjects, prevObjects.length - 1);
            }
        }
        else {
            stringBuilder.append('null');
        }
        break;

    case 'number':
        this._serializeNumberWithBuilder(object, stringBuilder);
        break;

    case 'string':
        this._serializeStringWithBuilder(object, stringBuilder);
        break;

    case 'boolean':
        stringBuilder.append(object);
        break;

    default:
        stringBuilder.append('null');
        break;
    }
}

$type.serialize = function JavaScriptSerializer$serialize(object) {
    /// <summary locid="M:J#Sys.Serialization.JavaScriptSerializer.serialize">Generates a JSON string from an object.</summary>
    /// <param name="object" mayBeNull="true">The object to serialize.</param>
    /// <returns type="String">The JSON string representation of the object.</returns>
    var e = Function._validateParams(arguments, [
        {name: "object", mayBeNull: true}
    ]);
    if (e) throw e;
    var stringBuilder = new Sys.StringBuilder();
    Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(object, stringBuilder, false);
    return stringBuilder.toString();
}

$type.deserialize = function JavaScriptSerializer$deserialize(data, secure) {
    /// <summary locid="M:J#Sys.Serialization.JavaScriptSerializer.deserialize">Deserializes a JSON string.</summary>
    /// <param name="data" type="String">The JSON string to eval.</param>
    /// <param name="secure" type="Boolean" optional="true" mayBeNull="true">True if the method should perform JSON conformance checks before evaluating. False by default.</param>
    /// <returns>The results of eval applied to data.</returns>
    var e = Function._validateParams(arguments, [
        {name: "data", type: String},
        {name: "secure", type: Boolean, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    if (!data.length) throw Error.argument('data', Sys.Res.cannotDeserializeEmptyString);
    var er, esc = Sys.Serialization.JavaScriptSerializer._esc;
    try {    
        var exp = data.replace(esc.dateRegEx, "$1new Date($2)");
        
        if (secure && esc.jsonRegEx.test(exp.replace(esc.jsonStringRegEx, ''))) throw null;

        return window.eval('(' + exp + ')');
    }
    catch (er) {
         throw Error.argument('data', Sys.Res.cannotDeserializeInvalidJson);
    }
}

}

if (window.Sys && Sys.loader) {
	Sys.loader.registerScript("Serialization", null, execute);
}
else {
	execute();
}

})();
yV// (c) 2010 CodePlex Foundation
(function(){var a=null;function b(){var r="initialize",p="dispose",o="load",n="init",i="unload",k="none",m="HTML",g="absolute",j="BODY",f=" ",h="undefined",e="function",d=false,q="propertyChanged",l="disposing",c=true;Type._registerScript("MicrosoftAjaxComponentModel.js",["MicrosoftAjaxCore.js"]);Type.registerNamespace("Sys.UI");var b,w,s=Sys._isBrowser,t=Sys._foreach,v=Sys._forIn,u=Sys._callIf;b=Sys.CommandEventArgs=function(e,b,c,d){var a=this;Sys.CommandEventArgs.initializeBase(a);a._commandName=e;a._commandArgument=b;a._commandSource=c;a._commandEvent=d};b.prototype={get_commandName:function(){return this._commandName||a},get_commandArgument:function(){return this._commandArgument},get_commandSource:function(){return this._commandSource||a},get_commandEvent:function(){return this._commandEvent||a}};b.registerClass("Sys.CommandEventArgs",Sys.CancelEventArgs);b=Sys.INotifyDisposing=function(){};b.registerInterface("Sys.INotifyDisposing");b=Sys.Component=function(){Sys.Application&&Sys.Application.registerDisposableObject(this)};b.prototype={get_events:function(){return Sys.Observer._getContext(this,c).events},get_id:function(){return this._id||a},set_id:function(a){this._id=a},get_isInitialized:function(){return!!this._initialized},get_isUpdating:function(){return!!this._updating},add_disposing:function(a){this._addHandler(l,a)},remove_disposing:function(a){this._removeHandler(l,a)},add_propertyChanged:function(a){this._addHandler(q,a)},remove_propertyChanged:function(a){this._removeHandler(q,a)},_addHandler:function(a,b){Sys.Observer.addEventHandler(this,a,b)},_removeHandler:function(a,b){Sys.Observer.removeEventHandler(this,a,b)},beginUpdate:function(){this._updating=c},dispose:function(){var a=this;Sys.Observer.raiseEvent(a,l);Sys.Observer.clearEventHandlers(a);Sys.Application.unregisterDisposableObject(a);Sys.Application.removeComponent(a)},endUpdate:function(){var a=this;a._updating=d;!a._initialized&&a.initialize();a.updated()},initialize:function(){this._initialized=c},raisePropertyChanged:function(a){Sys.Observer.raisePropertyChanged(this,a)},updated:function(){}};b.registerClass("Sys.Component",a,Sys.IDisposable,Sys.INotifyPropertyChange,Sys.INotifyDisposing);b._setProperties=function(b,k){var d,l=Object.getType(b),g=l===Object||l===Sys.UI.DomElement,j=Sys.Component.isInstanceOfType(b)&&!b.get_isUpdating();j&&b.beginUpdate();for(var f in k){var c=k[f],h=g?a:b["get_"+f];if(g||typeof h!==e){var m=b[f];if(!c||typeof c!=="object"||g&&!m)b[f]=c;else this._setProperties(m,c)}else{var n=b["set_"+f];if(typeof n===e)n.apply(b,[c]);else if(c instanceof Array){d=h.apply(b);for(var i=0,o=d.length,p=c.length;i<p;i++,o++)d[o]=c[i]}else if(typeof c==="object"&&Object.getType(c)===Object){d=h.apply(b);this._setProperties(d,c)}}}j&&b.endUpdate()};b._setReferences=function(d,c){var a,b={};v(c,function(c,d){b[d]=a=$find(c);if(!a)throw Error.invalidOperation(String.format(Sys.Res.referenceNotFound,c));});Sys._set(d,b)};$create=b.create=function(f,c,b,g,d){var a=d?new f(d):new f;u(a,"beginUpdate");c&&Sys.Component._setProperties(a,c);if(b)for(var e in b)a["add_"+e](b[e]);Sys.Component._register(a,g);return a};b._register=function(a,b,e){var f;if(Sys.Component.isInstanceOfType(a)){f=c;var d=Sys.Application;a.get_id()&&d.addComponent(a);if(d.get_isCreatingComponents()){d._createdComponents.push(a);if(b)d._addComponentToSecondPass(a,b);else!e&&a.endUpdate()}else{b&&Sys.Component._setReferences(a,b);!e&&a.endUpdate()}}return f};Sys._getComponent=function(c,b){var a=Sys.Application.findComponent(b);a&&c.push(a)};Sys._2Pass=function(c){var a=Sys.Application,b=!a.get_isCreatingComponents();b&&a.beginCreateComponents();t(c,function(a){a()});b&&a.endCreateComponents()};b=Sys.UI.MouseButton=function(){};b.prototype={leftButton:0,middleButton:1,rightButton:2};b.registerEnum("Sys.UI.MouseButton");b=Sys.UI.Key=function(){};b.prototype={backspace:8,tab:9,enter:13,esc:27,space:32,pageUp:33,pageDown:34,end:35,home:36,left:37,up:38,right:39,down:40,del:127};b.registerEnum("Sys.UI.Key");b=Sys.UI.Point=function(a,b){this.x=a;this.y=b};b.registerClass("Sys.UI.Point");b=Sys.UI.Bounds=function(d,e,c,b){var a=this;a.x=d;a.y=e;a.height=b;a.width=c};b.registerClass("Sys.UI.Bounds");b=Sys.UI.DomEvent=function(f){var b=this,a=f,c=b.type=a.type.toLowerCase();b.rawEvent=a;b.altKey=a.altKey;if(typeof a.button!==h)b.button=typeof a.which!==h?a.button:a.button===4?Sys.UI.MouseButton.middleButton:a.button===2?Sys.UI.MouseButton.rightButton:Sys.UI.MouseButton.leftButton;if(c==="keypress")b.charCode=a.charCode||a.keyCode;else if(a.keyCode&&a.keyCode===46)b.keyCode=127;else b.keyCode=a.keyCode;b.clientX=a.clientX;b.clientY=a.clientY;b.ctrlKey=a.ctrlKey;b.target=a.target||a.srcElement;if(!c.startsWith("key"))if(typeof a.offsetX!==h&&typeof a.offsetY!==h){b.offsetX=a.offsetX;b.offsetY=a.offsetY}else if(b.target&&b.target.nodeType!==3&&typeof a.clientX==="number"){var d=Sys.UI.DomElement.getLocation(b.target),e=Sys.UI.DomElement._getWindow(b.target);b.offsetX=(e.pageXOffset||0)+a.clientX-d.x;b.offsetY=(e.pageYOffset||0)+a.clientY-d.y}b.screenX=a.screenX;b.screenY=a.screenY;b.shiftKey=a.shiftKey};b.prototype={preventDefault:function(){var a=this.rawEvent;if(a.preventDefault)a.preventDefault();else if(window.event)a.returnValue=d},stopPropagation:function(){var a=this.rawEvent;if(a.stopPropagation)a.stopPropagation();else if(window.event)a.cancelBubble=c}};b.registerClass("Sys.UI.DomEvent");$addHandler=b.addHandler=function(e,a,b,c){Sys.query(e).each(function(){var e=this,h=e.nodeType;if(h===3||h===2||h===8)return;if(!e._events)e._events={};var g=e._events[a];if(!g)e._events[a]=g=[];var i=e,f;if(e.addEventListener){f=function(a){return b.call(i,new Sys.UI.DomEvent(a))};e.addEventListener(a,f,d)}else if(e.attachEvent){f=function(){var c,a={};try{a=Sys.UI.DomElement._getWindow(i).event}catch(c){}return b.call(i,new Sys.UI.DomEvent(a))};e.attachEvent("on"+a,f)}g.push({handler:b,browserHandler:f,autoRemove:c});c&&Sys.UI.DomElement._onDispose(e,Sys.UI.DomEvent._disposeHandlers)})};Sys.registerPlugin({name:"addHandler",dom:c,plugin:function(b,c,a){Sys.UI.DomEvent.addHandler(this.get(),b,c,a);return this}});$addHandlers=b.addHandlers=function(e,b,a,c){Sys.query(e).each(function(){var e=this.nodeType;if(e===3||e===2||e===8)return;for(var g in b){var f=b[g];if(a)f=Function.createDelegate(a,f);$addHandler(this,g,f,c||d)}})};Sys.registerPlugin({name:"addHandlers",dom:c,plugin:function(c,a,b){Sys.UI.DomEvent.addHandlers(this.get(),c,a,b);return this}});$clearHandlers=b.clearHandlers=function(a){Sys.query(a).each(function(){var a=this.nodeType;if(a===3||a===2||a===8)return;Sys.UI.DomEvent._clearHandlers(this,d)})};Sys.registerPlugin({name:"clearHandlers",dom:c,plugin:function(){Sys.UI.DomEvent.clearHandlers(this.get());return this}});b._clearHandlers=function(b,a){Sys.query(b).each(function(){var b=this.nodeType;if(b===3||b===2||b===8)return;var c=this._events;if(c)for(var g in c)for(var e=c[g],d=e.length-1;d>=0;d--){var f=e[d];(!a||f.autoRemove)&&$removeHandler(this,g,f.handler)}})};b._disposeHandlers=function(){Sys.UI.DomEvent._clearHandlers(this,c)};$removeHandler=b.removeHandler=function(b,a,c){Sys.UI.DomEvent._removeHandler(b,a,c)};b._removeHandler=function(c,b,e){Sys.query(c).each(function(){var c=this,i=c.nodeType;if(i===3||i===2||i===8)return;for(var h=a,g=c._events[b],f=0,j=g.length;f<j;f++)if(g[f].handler===e){h=g[f].browserHandler;break}if(c.removeEventListener)c.removeEventListener(b,h,d);else c.detachEvent&&c.detachEvent("on"+b,h);g.splice(f,1)})};Sys.registerPlugin({name:"removeHandler",dom:c,plugin:function(a,b){Sys.UI.DomEvent.removeHandler(this.get(),a,b);return this}});b=Sys.UI.DomElement=function(){};b.registerClass("Sys.UI.DomElement");b.addCssClass=function(a,b){if(!Sys.UI.DomElement.containsCssClass(a,b))if(a.className==="")a.className=b;else a.className+=f+b};b.containsCssClass=function(b,a){return Array.contains(b.className.split(f),a)};b.getBounds=function(a){var b=Sys.UI.DomElement.getLocation(a);return new Sys.UI.Bounds(b.x,b.y,a.offsetWidth||0,a.offsetHeight||0)};$get=b.getElementById=function(c,b){return Sys.get("#"+c,b||a)};if(document.documentElement.getBoundingClientRect)b.getLocation=function(c){if(c.self||c.nodeType===9||c===document.documentElement||c.parentNode===c.ownerDocument.documentElement)return new Sys.UI.Point(0,0);var i=c.getBoundingClientRect();if(!i)return new Sys.UI.Point(0,0);var m,d=c.ownerDocument,h=d.documentElement,e=Math.round(i.left)+(h.scrollLeft||(d.body?d.body.scrollLeft:0)),f=Math.round(i.top)+(h.scrollTop||(d.body?d.body.scrollTop:0));if(s("InternetExplorer")){try{var g=c.ownerDocument.parentWindow.frameElement||a;if(g){g=g.frameBorder;var j=g==="0"||g==="no"?2:0;e+=j;f+=j}}catch(m){}if(Sys.Browser.version===7&&!document.documentMode){var k=document.body,l=k.getBoundingClientRect(),b=(l.right-l.left)/k.clientWidth;b=Math.round(b*100);b=(b-b%5)/100;if(!isNaN(b)&&b!==1){e=Math.round(e/b);f=Math.round(f/b)}}if((document.documentMode||0)<8){e-=h.clientLeft;f-=h.clientTop}}return new Sys.UI.Point(e,f)};else if(s("Safari"))b.getLocation=function(d){if(d.window&&d.window===d||d.nodeType===9)return new Sys.UI.Point(0,0);for(var e=0,f=0,l=a,i=a,c,b=d;b;l=b,i=c,b=b.offsetParent){c=Sys.UI.DomElement._getCurrentStyle(b);var h=b.tagName?b.tagName.toUpperCase():a;if((b.offsetLeft||b.offsetTop)&&(h!==j||(!i||i.position!==g))){e+=b.offsetLeft;f+=b.offsetTop}if(l&&Sys.Browser.version>=3){e+=parseInt(c.borderLeftWidth);f+=parseInt(c.borderTopWidth)}}c=Sys.UI.DomElement._getCurrentStyle(d);var n=c?c.position:a;if(n!==g)for(b=d.parentNode;b;b=b.parentNode){h=b.tagName?b.tagName.toUpperCase():a;if(h!==j&&h!==m&&(b.scrollLeft||b.scrollTop)){e-=b.scrollLeft||0;f-=b.scrollTop||0}c=Sys.UI.DomElement._getCurrentStyle(b);var k=c?c.position:a;if(k&&k===g)break}return new Sys.UI.Point(e,f)};else b.getLocation=function(e){if(e.window&&e.window===e||e.nodeType===9)return new Sys.UI.Point(0,0);for(var f=0,h=0,k=a,i=a,c=a,b=e;b;k=b,i=c,b=b.offsetParent){var d=b.tagName?b.tagName.toUpperCase():a;c=Sys.UI.DomElement._getCurrentStyle(b);if((b.offsetLeft||b.offsetTop)&&!(d===j&&(!i||i.position!==g))){f+=b.offsetLeft;h+=b.offsetTop}if(k!==a&&c){if(d!=="TABLE"&&d!=="TD"&&d!==m){f+=parseInt(c.borderLeftWidth)||0;h+=parseInt(c.borderTopWidth)||0}if(d==="TABLE"&&(c.position==="relative"||c.position===g)){f+=parseInt(c.marginLeft)||0;h+=parseInt(c.marginTop)||0}}}c=Sys.UI.DomElement._getCurrentStyle(e);var l=c?c.position:a;if(l!==g)for(b=e.parentNode;b;b=b.parentNode){d=b.tagName?b.tagName.toUpperCase():a;if(d!==j&&d!==m&&(b.scrollLeft||b.scrollTop)){f-=b.scrollLeft||0;h-=b.scrollTop||0;c=Sys.UI.DomElement._getCurrentStyle(b);if(c){f+=parseInt(c.borderLeftWidth)||0;h+=parseInt(c.borderTopWidth)||0}}}return new Sys.UI.Point(f,h)};b.isDomElement=function(a){return Sys._isDomElement(a)};b.removeCssClass=function(d,c){var a=f+d.className+f,b=a.indexOf(f+c+f);if(b>=0)d.className=(a.substr(0,b)+f+a.substring(b+c.length+1,a.length)).trim()};b.resolveElement=function(c,d){var b=c;if(!b)return a;if(typeof b==="string")b=Sys.get("#"+b,d);return b};b.raiseBubbleEvent=function(c,d){var b=c;while(b){var a=b.control;if(a&&a.onBubbleEvent&&a.raiseBubbleEvent){!a.onBubbleEvent(c,d)&&a._raiseBubbleEvent(c,d);return}b=b.parentNode}};b._ensureGet=function(a,b){return Sys.get(a,b)};b.setLocation=function(b,c,d){var a=b.style;a.position=g;a.left=c+"px";a.top=d+"px"};b.toggleCssClass=function(b,a){if(Sys.UI.DomElement.containsCssClass(b,a))Sys.UI.DomElement.removeCssClass(b,a);else Sys.UI.DomElement.addCssClass(b,a)};b.getVisibilityMode=function(a){return a._visibilityMode===Sys.UI.VisibilityMode.hide?Sys.UI.VisibilityMode.hide:Sys.UI.VisibilityMode.collapse};b.setVisibilityMode=function(a,b){Sys.UI.DomElement._ensureOldDisplayMode(a);if(a._visibilityMode!==b){a._visibilityMode=b;if(Sys.UI.DomElement.getVisible(a)===d)a.style.display=b===Sys.UI.VisibilityMode.hide?a._oldDisplayMode:k}};b.getVisible=function(b){var a=b.currentStyle||Sys.UI.DomElement._getCurrentStyle(b);return a?a.visibility!=="hidden"&&a.display!==k:c};b.setVisible=function(a,b){if(b!==Sys.UI.DomElement.getVisible(a)){Sys.UI.DomElement._ensureOldDisplayMode(a);var c=a.style;c.visibility=b?"visible":"hidden";c.display=b||a._visibilityMode===Sys.UI.VisibilityMode.hide?a._oldDisplayMode:k}};b.setCommand=function(b,e,a,d){Sys.UI.DomEvent.addHandler(b,"click",function(c){var b=d||this;Sys.UI.DomElement.raiseBubbleEvent(b,new Sys.CommandEventArgs(e,a,this,c))},c)};Sys.registerPlugin({name:"setCommand",dom:c,plugin:function(d,a,b){return this.addHandler("click",function(e){var c=b||this;Sys.UI.DomElement.raiseBubbleEvent(c,new Sys.CommandEventArgs(d,a,this,e))},c)}});b._ensureOldDisplayMode=function(b){if(!b._oldDisplayMode){var e=b.currentStyle||this._getCurrentStyle(b);b._oldDisplayMode=e?e.display:a;if(!b._oldDisplayMode||b._oldDisplayMode===k){var d=b.tagName,c="inline";if(/^(DIV|P|ADDRESS|BLOCKQUOTE|BODY|COL|COLGROUP|DD|DL|DT|FIELDSET|FORM|H1|H2|H3|H4|H5|H6|HR|IFRAME|LEGEND|OL|PRE|TABLE|TD|TH|TR|UL)$/i.test(d))c="block";else if(d.toUpperCase()==="LI")c="list-item";b._oldDisplayMode=c}}};b._getWindow=function(a){var b=a.ownerDocument||a.document||a;return b.defaultView||b.parentWindow};b._getCurrentStyle=function(b){if(b.nodeType===3)return a;var c=this._getWindow(b);if(b.documentElement)b=b.documentElement;var d=c&&b!==c&&c.getComputedStyle?c.getComputedStyle(b,a):b.currentStyle||b.style;return d};b._onDispose=function(a,d){var b,c=a.dispose;if(c!==Sys.UI.DomElement._dispose){a.dispose=Sys.UI.DomElement._dispose;a.__msajaxdispose=b=[];typeof c===e&&b.push(c)}else b=a.__msajaxdispose;b.push(d)};b._dispose=function(){var b=this,c=b.__msajaxdispose;if(c)for(var d=0,f=c.length;d<f;d++)c[d].apply(b);b.control&&typeof b.control.dispose===e&&b.control.dispose();b.__msajaxdispose=a;b.dispose=a};b=Sys.IContainer=function(){};b.registerInterface("Sys.IContainer");b=Sys.ApplicationLoadEventArgs=function(b,a){Sys.ApplicationLoadEventArgs.initializeBase(this);this._components=b;this._isPartialLoad=a};b.prototype={get_components:function(){return this._components},get_isPartialLoad:function(){return this._isPartialLoad}};b.registerClass("Sys.ApplicationLoadEventArgs",Sys.EventArgs);b=Sys._Application=function(){var a=this;Sys._Application.initializeBase(a);a._disposableObjects=[];a._components={};a._createdComponents=[];a._secondPassComponents=[];a._unloadHandlerDelegate=Function.createDelegate(a,a._unloadHandler);Sys.UI.DomEvent.addHandler(window,i,a._unloadHandlerDelegate)};b.prototype={_deleteCount:0,get_isCreatingComponents:function(){return!!this._creatingComponents},get_isDisposing:function(){return!!this._disposing},add_init:function(a){if(this._initialized)a(this,Sys.EventArgs.Empty);else this._addHandler(n,a)},remove_init:function(a){this._removeHandler(n,a)},add_load:function(a){this._addHandler(o,a)},remove_load:function(a){this._removeHandler(o,a)},add_unload:function(a){this._addHandler(i,a)},remove_unload:function(a){this._removeHandler(i,a)},addComponent:function(a){this._components[a.get_id()]=a},beginCreateComponents:function(){this._creatingComponents=c},dispose:function(){var a=this;if(!a._disposing){a._disposing=c;if(a._timerCookie){window.clearTimeout(a._timerCookie);delete a._timerCookie}var d=a._endRequestHandler,b=a._beginRequestHandler;if(d||b){var j=Sys.WebForms.PageRequestManager.getInstance();d&&j.remove_endRequest(d);b&&j.remove_beginRequest(b);delete a._endRequestHandler;delete a._beginRequestHandler}window.pageUnload&&window.pageUnload(a,Sys.EventArgs.Empty);Sys.Observer.raiseEvent(a,i);for(var f=Array.clone(a._disposableObjects),e=0,l=f.length;e<l;e++){var g=f[e];typeof g!==h&&g.dispose()}a._disposableObjects.length=0;Sys.UI.DomEvent.removeHandler(window,i,a._unloadHandlerDelegate);if(Sys._ScriptLoader){var k=Sys._ScriptLoader.getInstance();k&&k.dispose()}Sys._Application.callBaseMethod(a,p)}},disposeElement:function(c,m){var i=this;if(c.nodeType===1){for(var h,d,b,k=c.getElementsByTagName("*"),j=k.length,l=new Array(j),f=0;f<j;f++)l[f]=k[f];for(f=j-1;f>=0;f--){var g=l[f];h=g.dispose;if(h&&typeof h===e)g.dispose();else{d=g.control;d&&typeof d.dispose===e&&d.dispose()}b=g._behaviors;b&&i._disposeComponents(b);b=g._components;if(b){i._disposeComponents(b);g._components=a}}if(!m){h=c.dispose;if(h&&typeof h===e)c.dispose();else{d=c.control;d&&typeof d.dispose===e&&d.dispose()}b=c._behaviors;b&&i._disposeComponents(b);b=c._components;if(b){i._disposeComponents(b);c._components=a}}}},endCreateComponents:function(){for(var b=this._secondPassComponents,a=0,f=b.length;a<f;a++){var e=b[a],c=e.component;Sys.Component._setReferences(c,e.references);c.endUpdate()}this._secondPassComponents=[];this._creatingComponents=d},findComponent:function(c,b){return b?Sys.IContainer.isInstanceOfType(b)?b.findComponent(c):b[c]||a:Sys.Application._components[c]||a},getComponents:function(){var c=[],a=this._components;for(var b in a)a.hasOwnProperty(b)&&c.push(a[b]);return c},initialize:function(){window.setTimeout(Function.createDelegate(this,this._doInitialize),0)},_doInitialize:function(){var a=this;if(!a.get_isInitialized()&&!a._disposing){Sys._Application.callBaseMethod(a,r);a._raiseInit();if(a.get_stateString){if(Sys.WebForms&&Sys.WebForms.PageRequestManager){var c=Sys.WebForms.PageRequestManager.getInstance();a._beginRequestHandler=Function.createDelegate(a,a._onPageRequestManagerBeginRequest);c.add_beginRequest(a._beginRequestHandler);a._endRequestHandler=Function.createDelegate(a,a._onPageRequestManagerEndRequest);c.add_endRequest(a._endRequestHandler)}var b=a.get_stateString();if(b!==a._currentEntry)a._navigate(b);else a._ensureHistory()}a.raiseLoad()}},notifyScriptLoaded:function(){},registerDisposableObject:function(b){if(!this._disposing){var a=this._disposableObjects,c=a.length;a[c]=b;b.__msdisposeindex=c}},raiseLoad:function(){var a=this,b=new Sys.ApplicationLoadEventArgs(Array.clone(a._createdComponents),!!a._loaded);a._loaded=c;Sys.Observer.raiseEvent(a,o,b);window.pageLoad&&window.pageLoad(a,b);a._createdComponents=[]},removeComponent:function(b){var a=b.get_id();if(a)delete this._components[a]},unregisterDisposableObject:function(a){var b=this;if(!b._disposing){var f=a.__msdisposeindex;if(typeof f==="number"){var c=b._disposableObjects;delete c[f];delete a.__msdisposeindex;if(++b._deleteCount>1e3){for(var d=[],e=0,g=c.length;e<g;e++){a=c[e];if(typeof a!==h){a.__msdisposeindex=d.length;d.push(a)}}b._disposableObjects=d;b._deleteCount=0}}}},_addComponentToSecondPass:function(b,a){this._secondPassComponents.push({component:b,references:a})},_disposeComponents:function(a){if(a)for(var b=a.length-1;b>=0;b--){var c=a[b];typeof c.dispose===e&&c.dispose()}},_raiseInit:function(){this.beginCreateComponents();Sys.Observer.raiseEvent(this,n);this.endCreateComponents()},_unloadHandler:function(){this.dispose()}};b.registerClass("Sys._Application",Sys.Component,Sys.IContainer);Sys.Application=new Sys._Application;window.$find=Sys.Application.findComponent;Sys.onReady(function(){Sys.Application._doInitialize()});b=Sys.UI.Behavior=function(a){Sys.UI.Behavior.initializeBase(this);this._element=a;var b=a._behaviors=a._behaviors||[];b.push(this)};b.prototype={get_element:function(){return this._element},get_id:function(){var b=Sys.UI.Behavior.callBaseMethod(this,"get_id");if(b)return b;var a=this._element;return!a||!a.id?"":a.id+"$"+this.get_name()},get_name:function(){var a=this;if(a._name)return a._name;var b=Object.getTypeName(a),c=b.lastIndexOf(".");if(c>=0)b=b.substr(c+1);if(!a._initialized)a._name=b;return b},set_name:function(a){this._name=a},initialize:function(){var a=this;Sys.UI.Behavior.callBaseMethod(a,r);var b=a.get_name();if(b)a._element[b]=a},dispose:function(){var b=this;Sys.UI.Behavior.callBaseMethod(b,p);var c=b._element;if(c){var e=b.get_name();if(e)c[e]=a;var d=c._behaviors;Array.remove(d,b);if(!d.length)c._behaviors=a;delete b._element}}};b.registerClass("Sys.UI.Behavior",Sys.Component);b.getBehaviorByName=function(c,d){var b=c[d];return b&&Sys.UI.Behavior.isInstanceOfType(b)?b:a};b.getBehaviors=function(b){var a=b._behaviors;return a?Array.clone(a):[]};Sys.UI.Behavior.getBehaviorsByType=function(e,f){var a=e._behaviors,d=[];if(a)for(var b=0,g=a.length;b<g;b++){var c=a[b];f.isInstanceOfType(c)&&d.push(c)}return d};b=Sys.UI.VisibilityMode=function(){};b.prototype={hide:0,collapse:1};b.registerEnum("Sys.UI.VisibilityMode");b=Sys.UI.Control=function(b){var a=this;Sys.UI.Control.initializeBase(a);a._element=b;b.control=a;var c=a.get_role();c&&b.setAttribute("role",c)};b.prototype={_parent:a,_visibilityMode:Sys.UI.VisibilityMode.hide,get_element:function(){return this._element},get_id:function(){return this._id||(this._element?this._element.id:"")},get_parent:function(){var c=this;if(c._parent)return c._parent;if(!c._element)return a;var b=c._element.parentNode;while(b){if(b.control)return b.control;b=b.parentNode}return a},set_parent:function(a){this._parent=a},get_role:function(){return a},get_visibilityMode:function(){return Sys.UI.DomElement.getVisibilityMode(this._element)},set_visibilityMode:function(a){Sys.UI.DomElement.setVisibilityMode(this._element,a)},get_visible:function(){return Sys.UI.DomElement.getVisible(this._element)},set_visible:function(a){Sys.UI.DomElement.setVisible(this._element,a)},addCssClass:function(a){Sys.UI.DomElement.addCssClass(this._element,a)},dispose:function(){var b=this;Sys.UI.Control.callBaseMethod(b,p);if(b._element){b._element.control=a;delete b._element}if(b._parent)delete b._parent},onBubbleEvent:function(){return d},raiseBubbleEvent:function(a,b){this._raiseBubbleEvent(a,b)},_raiseBubbleEvent:function(b,c){var a=this.get_parent();while(a){if(a.onBubbleEvent(b,c))return;a=a.get_parent()}},removeCssClass:function(a){Sys.UI.DomElement.removeCssClass(this._element,a)},toggleCssClass:function(a){Sys.UI.DomElement.toggleCssClass(this._element,a)}};b.registerClass("Sys.UI.Control",Sys.Component)}if(window.Sys&&Sys.loader)Sys.loader.registerScript("ComponentModel",a,b);else b()})();var $get,$create,$addHandler,$addHandlers,$clearHandlers;�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.Selector = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.Selector.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.Selector.prototype = {
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.Selector.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.Selector", Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModePopupImageButton);

aType.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.PasteWord=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.PasteWord.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.PasteWord.prototype={callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.PasteWord.callBaseMethod(this,"callMethod"))return false;var a=this._designPanel;if(Sys.Extended.UI.HTMLEditor.isIE){a._saveContent();a.openWait();setTimeout(function(){a._paste(true,true);a.closeWait()},0)}else{var b=a._getSelection(),d=a._createRange(b),c=String.format(Sys.Extended.UI.Resources.HTMLEditor_toolbar_button_Use_verb,Sys.Extended.UI.HTMLEditor.isSafari&&navigator.userAgent.indexOf("mac")!=-1?"Apple-V":"Ctrl-V"),e=String.format(Sys.Extended.UI.Resources.HTMLEditor_toolbar_button_OnPasteFromMSWord,c);alert(e);setTimeout(function(){a._removeAllRanges(b);a._selectRange(b,d)},0);a.isWord=true}}};Sys.Extended.UI.HTMLEditor.ToolbarButton.PasteWord.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.PasteWord",Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor");
Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.ModeButton = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.ModeButton.initializeBase(this, [element]);
    
    this._activeMode = Sys.Extended.UI.HTMLEditor.ActiveModeType.Design;
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.ModeButton.prototype = {
    get_activeMode : function() {
        return this._activeMode;
    },
    set_activeMode : function(value) {
        this._activeMode = value;
    },
 
    _onclick : function(e) {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.ModeButton.callBaseMethod(this, "_onclick")) return false;
        var modeButton = this;
        setTimeout(function() {
                modeButton._editPanel.set_activeMode(modeButton._activeMode);
            },0);
        return true;
    },
    
    onEditPanelActivity : function() {
        this.setActivity(this._editPanel.get_activeMode() == this._activeMode);
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.ModeButton.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.ModeButton", Sys.Extended.UI.HTMLEditor.ToolbarButton.ImageButton);

rType.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedForeColor = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedForeColor.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedForeColor.prototype = {
    setColor : function(color) {
        this._designPanel._execCommand("forecolor", false, color);
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedForeColor.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedForeColor", Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedColorButton);

aType.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton.prototype = {
    onEditPanelActivity: function() {
        Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton.callBaseMethod(this, "onEditPanelActivity");
        this.setActivity(this.checkState());
    },

    checkState: function() {
        if (!this.checkRangeInDesign()) return false;
        return true;
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton", Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeImageButton);

�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.Cut = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.Cut.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.Cut.prototype = {
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.Cut.callBaseMethod(this, "callMethod")) return false;
        var editor = this._designPanel;

        if(Sys.Extended.UI.HTMLEditor.isIE) {
            editor.openWait();
            setTimeout(function(){editor.isShadowed(); editor._copyCut('x',true); editor.closeWait();},0)
        } else {
            editor._copyCut('x',true);
        }
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.Cut.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.Cut", Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);

�S// (c) 2010 CodePlex Foundation

/// <reference name="MicrosoftAjax.js" />
/// <reference name="MicrosoftAjaxTimer.debug.js" />
/// <reference name="MicrosoftAjaxWebForms.debug.js" />

(function() {
var scriptName = "ExtendedBase";

function execute() {

var version = Sys.version;
if (!version && !Sys._versionChecked) {
    Sys._versionChecked = true;
    throw new Error("AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts. Ensure the correct version of the scripts are referenced. If you are using an ASP.NET ScriptManager, switch to the ToolkitScriptManager in AjaxControlToolkit.dll.");
}

Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.BehaviorBase = function(element) {
    /// <summary>
    /// Base behavior for all extender behaviors
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// Element the behavior is associated with
    /// </param>
    Sys.Extended.UI.BehaviorBase.initializeBase(this,[element]);
    
    this._clientStateFieldID = null;
    this._pageRequestManager = null;
    this._partialUpdateBeginRequestHandler = null;
    this._partialUpdateEndRequestHandler = null;
}
Sys.Extended.UI.BehaviorBase.prototype = {
    initialize : function() {
        /// <summary>
        /// Initialize the behavior
        /// </summary>

        Sys.Extended.UI.BehaviorBase.callBaseMethod(this, 'initialize');
    },

    dispose : function() {
        /// <summary>
        /// Dispose the behavior
        /// </summary>
        Sys.Extended.UI.BehaviorBase.callBaseMethod(this, 'dispose');

        if (this._pageRequestManager) {
            if (this._partialUpdateBeginRequestHandler) {
                this._pageRequestManager.remove_beginRequest(this._partialUpdateBeginRequestHandler);
                this._partialUpdateBeginRequestHandler = null;
            }
            if (this._partialUpdateEndRequestHandler) {
                this._pageRequestManager.remove_endRequest(this._partialUpdateEndRequestHandler);
                this._partialUpdateEndRequestHandler = null;
            }
            this._pageRequestManager = null;
        }
    },

    get_ClientStateFieldID : function() {
        /// <value type="String">
        /// ID of the hidden field used to store client state
        /// </value>
        return this._clientStateFieldID;
    },
    set_ClientStateFieldID : function(value) {
        if (this._clientStateFieldID != value) {
            this._clientStateFieldID = value;
            this.raisePropertyChanged('ClientStateFieldID');
        }
    },

    get_ClientState : function() {
        /// <value type="String">
        /// Client state
        /// </value>
        if (this._clientStateFieldID) {
            var input = document.getElementById(this._clientStateFieldID);
            if (input) {
                return input.value;
            }
        }
        return null;
    },
    set_ClientState : function(value) {
        if (this._clientStateFieldID) {
            var input = document.getElementById(this._clientStateFieldID);
            if (input) {
                input.value = value;
            }
        }
    },

    registerPartialUpdateEvents : function() {
        /// <summary>
        /// Register for beginRequest and endRequest events on the PageRequestManager,
        /// (which cause _partialUpdateBeginRequest and _partialUpdateEndRequest to be
        /// called when an UpdatePanel refreshes)
        /// </summary>

        if (Sys && Sys.WebForms && Sys.WebForms.PageRequestManager){
            this._pageRequestManager = Sys.WebForms.PageRequestManager.getInstance();
            if (this._pageRequestManager) {
                this._partialUpdateBeginRequestHandler = Function.createDelegate(this, this._partialUpdateBeginRequest);
                this._pageRequestManager.add_beginRequest(this._partialUpdateBeginRequestHandler);
                this._partialUpdateEndRequestHandler = Function.createDelegate(this, this._partialUpdateEndRequest);
                this._pageRequestManager.add_endRequest(this._partialUpdateEndRequestHandler);
            }
        }
    },

    _partialUpdateBeginRequest : function(sender, beginRequestEventArgs) {
        /// <summary>
        /// Method that will be called when a partial update (via an UpdatePanel) begins,
        /// if registerPartialUpdateEvents() has been called.
        /// </summary>
        /// <param name="sender" type="Object">
        /// Sender
        /// </param>
        /// <param name="beginRequestEventArgs" type="Sys.WebForms.BeginRequestEventArgs">
        /// Event arguments
        /// </param>

    },
    
    _partialUpdateEndRequest : function(sender, endRequestEventArgs) {
        /// <summary>
        /// Method that will be called when a partial update (via an UpdatePanel) finishes,
        /// if registerPartialUpdateEvents() has been called.
        /// </summary>
        /// <param name="sender" type="Object">
        /// Sender
        /// </param>
        /// <param name="endRequestEventArgs" type="Sys.WebForms.EndRequestEventArgs">
        /// Event arguments
        /// </param>

    }
}
Sys.Extended.UI.BehaviorBase.registerClass('Sys.Extended.UI.BehaviorBase', Sys.UI.Behavior);


Sys.Extended.UI.DynamicPopulateBehaviorBase = function(element) {
    /// <summary>
    /// DynamicPopulateBehaviorBase is used to add DynamicPopulateBehavior funcitonality
    /// to other extenders.  It will dynamically populate the contents of the target element
    /// when its populate method is called.
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// DOM Element the behavior is associated with
    /// </param>
    Sys.Extended.UI.DynamicPopulateBehaviorBase.initializeBase(this, [element]);
    
    this._DynamicControlID = null;
    this._DynamicContextKey = null;
    this._DynamicServicePath = null;
    this._DynamicServiceMethod = null;
    this._cacheDynamicResults = false;
    this._dynamicPopulateBehavior = null;
    this._populatingHandler = null;
    this._populatedHandler = null;
}
Sys.Extended.UI.DynamicPopulateBehaviorBase.prototype = {
    initialize : function() {
        /// <summary>
        /// Initialize the behavior
        /// </summary>

        Sys.Extended.UI.DynamicPopulateBehaviorBase.callBaseMethod(this, 'initialize');

        this._populatingHandler = Function.createDelegate(this, this._onPopulating);
        this._populatedHandler = Function.createDelegate(this, this._onPopulated);
    },

    dispose : function() {
        /// <summary>
        /// Dispose the behavior
        /// </summary>

        if (this._populatedHandler) {
            if (this._dynamicPopulateBehavior) {
                this._dynamicPopulateBehavior.remove_populated(this._populatedHandler);
            }
            this._populatedHandler = null;
        }
        if (this._populatingHandler) {
            if (this._dynamicPopulateBehavior) {
                this._dynamicPopulateBehavior.remove_populating(this._populatingHandler);
            }
            this._populatingHandler = null;
        }

        if (this._dynamicPopulateBehavior) {
            this._dynamicPopulateBehavior.dispose();
            this._dynamicPopulateBehavior = null;
        }
        Sys.Extended.UI.DynamicPopulateBehaviorBase.callBaseMethod(this, 'dispose');
    },

    populate : function(contextKeyOverride) {
        /// <summary>
        /// Demand-create the DynamicPopulateBehavior and use it to populate the target element
        /// </summary>
        /// <param name="contextKeyOverride" type="String" mayBeNull="true" optional="true">
        /// An arbitrary string value to be passed to the web method. For example, if the element to be populated is within a data-bound repeater, this could be the ID of the current row.
        /// </param>

        if (this._dynamicPopulateBehavior && (this._dynamicPopulateBehavior.get_element() != $get(this._DynamicControlID))) {
            this._dynamicPopulateBehavior.dispose();
            this._dynamicPopulateBehavior = null;
        }
        
        if (!this._dynamicPopulateBehavior && this._DynamicControlID && this._DynamicServiceMethod) {
            this._dynamicPopulateBehavior = $create(Sys.Extended.UI.DynamicPopulateBehavior,
                {
                    "id" : this.get_id() + "_DynamicPopulateBehavior",
                    "ContextKey" : this._DynamicContextKey,
                    "ServicePath" : this._DynamicServicePath,
                    "ServiceMethod" : this._DynamicServiceMethod,
                    "cacheDynamicResults" : this._cacheDynamicResults
                }, null, null, $get(this._DynamicControlID));

            this._dynamicPopulateBehavior.add_populating(this._populatingHandler);
            this._dynamicPopulateBehavior.add_populated(this._populatedHandler);
        }
        
        if (this._dynamicPopulateBehavior) {
            this._dynamicPopulateBehavior.populate(contextKeyOverride ? contextKeyOverride : this._DynamicContextKey);
        }
    },

    _onPopulating : function(sender, eventArgs) {
        /// <summary>
        /// Handler for DynamicPopulate behavior's Populating event
        /// </summary>
        /// <param name="sender" type="Object">
        /// DynamicPopulate behavior
        /// </param>
        /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
        /// Event args
        /// </param>
        this.raisePopulating(eventArgs);
    },

    _onPopulated : function(sender, eventArgs) {
        /// <summary>
        /// Handler for DynamicPopulate behavior's Populated event
        /// </summary>
        /// <param name="sender" type="Object">
        /// DynamicPopulate behavior
        /// </param>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="false">
        /// Event args
        /// </param>
        this.raisePopulated(eventArgs);
    },

    get_dynamicControlID : function() {
        /// <value type="String">
        /// ID of the element to populate with dynamic content
        /// </value>
        return this._DynamicControlID;
    },
    get_DynamicControlID : this.get_dynamicControlID,
    set_dynamicControlID : function(value) {
        if (this._DynamicControlID != value) {
            this._DynamicControlID = value;
            this.raisePropertyChanged('dynamicControlID');
            this.raisePropertyChanged('DynamicControlID');
        }
    },
    set_DynamicControlID : this.set_dynamicControlID,

    get_dynamicContextKey : function() {
        /// <value type="String">
        /// An arbitrary string value to be passed to the web method.
        /// For example, if the element to be populated is within a
        /// data-bound repeater, this could be the ID of the current row.
        /// </value>
        return this._DynamicContextKey;
    },
    get_DynamicContextKey : this.get_dynamicContextKey,
    set_dynamicContextKey : function(value) {
        if (this._DynamicContextKey != value) {
            this._DynamicContextKey = value;
            this.raisePropertyChanged('dynamicContextKey');
            this.raisePropertyChanged('DynamicContextKey');
        }
    },
    set_DynamicContextKey : this.set_dynamicContextKey,

    get_dynamicServicePath : function() {
        /// <value type="String" mayBeNull="true" optional="true">
        /// The URL of the web service to call.  If the ServicePath is not defined, then we will invoke a PageMethod instead of a web service.
        /// </value>
        return this._DynamicServicePath;
    },
    get_DynamicServicePath : this.get_dynamicServicePath,
    set_dynamicServicePath : function(value) {
        if (this._DynamicServicePath != value) {
            this._DynamicServicePath = value;
            this.raisePropertyChanged('dynamicServicePath');
            this.raisePropertyChanged('DynamicServicePath');
        }
    },
    set_DynamicServicePath : this.set_dynamicServicePath,

    get_dynamicServiceMethod : function() {
        /// <value type="String">
        /// The name of the method to call on the page or web service
        /// </value>
        /// <remarks>
        /// The signature of the method must exactly match the following:
        ///     [WebMethod]
        ///     string DynamicPopulateMethod(string contextKey)
        ///     {
        ///         ...
        ///     }
        /// </remarks>
        return this._DynamicServiceMethod;
    },
    get_DynamicServiceMethod : this.get_dynamicServiceMethod,
    set_dynamicServiceMethod : function(value) {
        if (this._DynamicServiceMethod != value) {
            this._DynamicServiceMethod = value;
            this.raisePropertyChanged('dynamicServiceMethod');
            this.raisePropertyChanged('DynamicServiceMethod');
        }
    },
    set_DynamicServiceMethod : this.set_dynamicServiceMethod,
    
    get_cacheDynamicResults : function() {
        /// <value type="Boolean" mayBeNull="false">
        /// Whether the results of the dynamic population should be cached and
        /// not fetched again after the first load
        /// </value>
        return this._cacheDynamicResults;
    },
    set_cacheDynamicResults : function(value) {
        if (this._cacheDynamicResults != value) {
            this._cacheDynamicResults = value;
            this.raisePropertyChanged('cacheDynamicResults');
        }
    },
    
    add_populated : function(handler) {
        /// <summary>
        /// Add a handler on the populated event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        this.get_events().addHandler("populated", handler);
    },
    remove_populated : function(handler) {
        /// <summary>
        /// Remove a handler from the populated event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        this.get_events().removeHandler("populated", handler);
    },
    raisePopulated : function(arg) {
        /// <summary>
        /// Raise the populated event
        /// </summary>
        /// <param name="arg" type="Sys.EventArgs">
        /// Event arguments
        /// </param>
        var handler = this.get_events().getHandler("populated");  
        if (handler) handler(this, arg);
    },
    
    add_populating : function(handler) {
        /// <summary>
        /// Add an event handler for the populating event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('populating', handler);
    },
    remove_populating : function(handler) {
        /// <summary>
        /// Remove an event handler from the populating event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('populating', handler);
    },
    raisePopulating : function(eventArgs) {
        /// <summary>
        /// Raise the populating event
        /// </summary>
        /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
        /// Event arguments for the populating event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('populating');
        if (handler) {
            handler(this, eventArgs);
        }
    }
}
Sys.Extended.UI.DynamicPopulateBehaviorBase.registerClass('Sys.Extended.UI.DynamicPopulateBehaviorBase', Sys.Extended.UI.BehaviorBase);


Sys.Extended.UI.ControlBase = function(element) {
    Sys.Extended.UI.ControlBase.initializeBase(this, [element]);
    this._clientStateField = null;
    this._callbackTarget = null;
    this._onsubmit$delegate = Function.createDelegate(this, this._onsubmit);
    this._oncomplete$delegate = Function.createDelegate(this, this._oncomplete);
    this._onerror$delegate = Function.createDelegate(this, this._onerror);
}

Sys.Extended.UI.ControlBase.__doPostBack = function(eventTarget, eventArgument) {
    if (!Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack()) {
        for (var i = 0; i < Sys.Extended.UI.ControlBase.onsubmitCollection.length; i++) {
            Sys.Extended.UI.ControlBase.onsubmitCollection[i]();
        }
    }
    Function.createDelegate(window, Sys.Extended.UI.ControlBase.__doPostBackSaved)(eventTarget, eventArgument);
}

Sys.Extended.UI.ControlBase.prototype = {
    initialize: function() {
        Sys.Extended.UI.ControlBase.callBaseMethod(this, "initialize");
        if (this._clientStateField) {
            this.loadClientState(this._clientStateField.value);
        }
        if (typeof (Sys.WebForms) !== "undefined" && typeof (Sys.WebForms.PageRequestManager) !== "undefined") {
            Array.add(Sys.WebForms.PageRequestManager.getInstance()._onSubmitStatements, this._onsubmit$delegate);
            if (Sys.Extended.UI.ControlBase.__doPostBackSaved == null || typeof Sys.Extended.UI.ControlBase.__doPostBackSaved == "undefined") {
                Sys.Extended.UI.ControlBase.__doPostBackSaved = window.__doPostBack;
                window.__doPostBack = Sys.Extended.UI.ControlBase.__doPostBack;
                Sys.Extended.UI.ControlBase.onsubmitCollection = new Array();
            }
            Array.add(Sys.Extended.UI.ControlBase.onsubmitCollection, this._onsubmit$delegate);
        } else {
            $addHandler(document.forms[0], "submit", this._onsubmit$delegate);
        }
    },
    dispose: function() {
        if (typeof (Sys.WebForms) !== "undefined" && typeof (Sys.WebForms.PageRequestManager) !== "undefined") {
            Array.remove(Sys.Extended.UI.ControlBase.onsubmitCollection, this._onsubmit$delegate);
            Array.remove(Sys.WebForms.PageRequestManager.getInstance()._onSubmitStatements, this._onsubmit$delegate);
        } else {
            $removeHandler(document.forms[0], "submit", this._onsubmit$delegate);
        }
        Sys.Extended.UI.ControlBase.callBaseMethod(this, "dispose");
    },

    findElement: function(id) {
        return $get(this.get_id() + '_' + id.split(':').join('_'));
    },
    get_clientStateField: function() {
        return this._clientStateField;
    },
    set_clientStateField: function(value) {
        if (this.get_isInitialized()) throw Error.invalidOperation(Sys.Extended.UI.Resources.ExtenderBase_CannotSetClientStateField);
        if (this._clientStateField != value) {
            this._clientStateField = value;
            this.raisePropertyChanged('clientStateField');
        }
    },
    loadClientState: function(value) {
        /// <remarks>override this method to intercept client state loading after a callback</remarks>
    },
    saveClientState: function() {
        /// <remarks>override this method to intercept client state acquisition before a callback</remarks>
        return null;
    },
    _invoke: function(name, args, cb) {
        /// <summary>invokes a callback method on the server control</summary>        
        if (!this._callbackTarget) {
            throw Error.invalidOperation(Sys.Extended.UI.Resources.ExtenderBase_ControlNotRegisteredForCallbacks);
        }
        if (typeof (WebForm_DoCallback) === "undefined") {
            throw Error.invalidOperation(Sys.Extended.UI.Resources.ExtenderBase_PageNotRegisteredForCallbacks);
        }
        var ar = [];
        for (var i = 0; i < args.length; i++)
            ar[i] = args[i];
        var clientState = this.saveClientState();
        if (clientState != null && !String.isInstanceOfType(clientState)) {
            throw Error.invalidOperation(Sys.Extended.UI.Resources.ExtenderBase_InvalidClientStateType);
        }
        var payload = Sys.Serialization.JavaScriptSerializer.serialize({ name: name, args: ar, state: this.saveClientState() });
        WebForm_DoCallback(this._callbackTarget, payload, this._oncomplete$delegate, cb, this._onerror$delegate, true);
    },
    _oncomplete: function(result, context) {
        result = Sys.Serialization.JavaScriptSerializer.deserialize(result);
        if (result.error) {
            throw Error.create(result.error);
        }
        this.loadClientState(result.state);
        context(result.result);
    },
    _onerror: function(message, context) {
        throw Error.create(message);
    },
    _onsubmit: function() {
        if (this._clientStateField) {
            this._clientStateField.value = this.saveClientState();
        }
        return true;
    }

}
Sys.Extended.UI.ControlBase.registerClass("Sys.Extended.UI.ControlBase", Sys.UI.Control);

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ComponentModel", "Serialization"], execute);
}
else {
    execute();
}

})();
V// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />
/// <reference path="../Compat/DragDrop/DragDropScripts.js" />

(function() {
var scriptName = "ExtendedFloating";

function execute() {

Sys.Extended.UI.FloatingBehavior = function(element) {
    Sys.Extended.UI.FloatingBehavior.initializeBase(this,[element]);
    
    var _handle;
    var _location;
    var _dragStartLocation;
    var _profileProperty;
    var _profileComponent;
    
    var _mouseDownHandler = Function.createDelegate(this, mouseDownHandler);
    
    this.add_move = function(handler) {
        this.get_events().addHandler('move', handler);
    }
    this.remove_move = function(handler) {
        this.get_events().removeHandler('move', handler);
    }
    
    this.get_handle = function() {
        return _handle;
    }
    this.set_handle = function(value) {
        if (_handle != null) {
            $removeHandler(_handle, "mousedown", _mouseDownHandler);            
        }
    
        _handle = value;
        $addHandler(_handle, "mousedown", _mouseDownHandler);        
    }
    
    this.get_profileProperty = function() {
        return _profileProperty;
    }
    this.set_profileProperty = function(value) {
        _profileProperty = value;
    }
    
    this.get_profileComponent = function() {
        return _profileComponent;
    }
    this.set_profileComponent = function(value) {
        _profileComponent = value;
    }
    
    this.get_location = function() {
        return _location;
    }
    this.set_location = function(value) {
        if (_location != value) {
            _location = value;
            if (this.get_isInitialized()) {                
                $common.setLocation(this.get_element(), _location);
            }
            this.raisePropertyChanged('location');
        }
    }
    
    this.initialize = function() {
        Sys.Extended.UI.FloatingBehavior.callBaseMethod(this, 'initialize');
        Sys.Extended.UI.DragDropManager.registerDropTarget(this);

        var el = this.get_element();
        
        if (!_location) {                       
            _location = $common.getLocation(el);
        }
        
        el.style.position = "fixed";
        $common.setLocation(el, _location);
    }
    
    this.dispose = function() {
        Sys.Extended.UI.DragDropManager.unregisterDropTarget(this);
        if (_handle && _mouseDownHandler) {
            $removeHandler(_handle, "mousedown", _mouseDownHandler);
        }
        _mouseDownHandler = null;
        Sys.Extended.UI.FloatingBehavior.callBaseMethod(this, 'dispose');
    }
    
    this.checkCanDrag = function(element) {
        var undraggableTagNames = ["input", "button", "select", "textarea", "label"];
        var tagName = element.tagName;
        
        if ((tagName.toLowerCase() == "a") && (element.href != null) && (element.href.length > 0)) {
            return false;
        }
        if (Array.indexOf(undraggableTagNames, tagName.toLowerCase()) > -1) {
            return false;
        }
        return true;
    }
    
    function mouseDownHandler(ev) {
        window._event = ev;
        var el = this.get_element();
        
        if (this.checkCanDrag(ev.target)) {
            _dragStartLocation = $common.getLocation(el);
            
            ev.preventDefault();
            
            this.startDragDrop(el);
        }
    }

    this.get_dragDataType = function() {
        return "_floatingObject";
    }
    
    this.getDragData = function(context) {
        return null;
    }
    
    this.get_dragMode = function() {
        return Sys.Extended.UI.DragMode.Move;
    }
    
    this.onDragStart = function() { }
    
    this.onDrag = function() { }
    
    this.onDragEnd = function(canceled) {
        if (!canceled) {
            var handler = this.get_events().getHandler('move');
            if(handler) {
                var cancelArgs = new Sys.CancelEventArgs();
                handler(this, cancelArgs);
                canceled = cancelArgs.get_cancel();
            }            
        }
        
        var el = this.get_element();
        if (canceled) {
            $common.setLocation(el, _dragStartLocation);
        } else {
            _location = $common.getLocation(el);
            this.raisePropertyChanged('location');
        }
    }
    
    this.startDragDrop = function(dragVisual) {
        Sys.Extended.UI.DragDropManager.startDragDrop(this, dragVisual, null);
    }
    
    this.get_dropTargetElement = function() {
        return document.body;
    }
    
    this.canDrop = function(dragMode, dataType, data) {
        return (dataType == "_floatingObject");
    }
    
    this.drop = function(dragMode, dataType, data) {}
    
    this.onDragEnterTarget = function(dragMode, dataType, data) {}
    
    this.onDragLeaveTarget = function(dragMode, dataType, data) {}
    
    this.onDragInTarget = function(dragMode, dataType, data) {}
}
Sys.Extended.UI.FloatingBehavior.registerClass('Sys.Extended.UI.FloatingBehavior', Sys.Extended.UI.BehaviorBase, Sys.Extended.UI.IDragSource, Sys.Extended.UI.IDropTarget, Sys.IDisposable);
Sys.registerComponent(Sys.Extended.UI.FloatingBehavior, { name: "draggable" });

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedBase", "ExtendedCommon", "ExtendedDragDrop"], execute);
}
else {
    execute();
}

})();
6   �& h�( @ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ZZZ�����{((&XXX�WWW�WWW�t$WWW�WWW�WWW�WWW�WWW�t$WWW��`)�ёr�Џp�эl�Њh�ⵠ��������֒p��yO��uI�WWW��m>��i8��f3�㬐�����泙��i4��Y ��Y ��j8��������������������WWW�����������������WWW�����������������\\\�������������Y ��uI����������������WWW�WWW�����������������WWW�����������������WWW�WWW���������Y �ρY������������WWW�WWW�WWW�WWW�WWW�WWW�WWW�WWW�WWW�WWW�WWW�WWW�WWW�WWW�WWW�����Y ���������������������������������Ћh����������������WWW�WWW�����������������WWW�����������������WWW�WWW���������Y ��������������������������ёr��������������������WWW�����������������WWW�����������������WWW�������������Y ��������������������������ёr�ёr�яp�Ўm�Ќi�彩�����亥�΀X��|S����������ো��n?�ᦊ�����尔��m;��]%��Z"�����������������������������������������������������������ooo���������������������������������������������������������WWW�WWW�WWW�WWW�WWW��������������������������������������������������������~~~�WWW�WWW�t$����������������������������������������������������������������������������WWW�����t$�����������������������������������������������������������������������������������������(  ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WWW�����WWW�WWW�WWW��Y ��Y ��Y �ݗt������ʷ����iii�����ν�����ىa��Z"��uI������������XXX���������WWW���������WWW�����~��uI��������WWW�WWW�WWW�WWW�WWW�WWW�WWW�WWW�WWW������uI������������WWW���������WWW���������WWW�����Y �������������ёr�������������������������hhh������������������Z!�����������ёr�ёr�Ўn�Њh�υa�����WWW�WWW�WWW������d1��`*��\$��������������������������������WWW���������������������������������������������������������������������������������������������������������������������������6   �& h�( @ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������h3��X$��Q��O��������������������������������������������������������������������K��Ǯ��N��N��������������������������������������������������������������������K��ǯ��T��N�������������������������������������������������������J��ǭ��^��O���������~I��Ƭ��d��O��}I������h��O��K��ƭ��z��h��^��O��O��Ҿ���{��n��d��[��N��R�����������u��k��a��Y��N��Z�����ɱ��������}��q��g��a��W��N��L
�b��������������Ӿ��̷��é��������z��g��N��g��f��e��a��_��\��W��{I��s?��f1��W"��R��Q��O��l�e
�a
�_	�\߂Q��������������������������������������������?�������������������������(  ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������]0��b2��P��������������������������������������������p����P������������������������������������w������P��������O������p��Z��P��e�Ȱ���n��i��Z��P��i�η����v��i��b��Z��P��y�������̵��Ī���������|��a��P�������s��d�ڂU��tE��j:��P��������������������������e���JFIF,,��
ExifMM*bj(1r2��i��-�'-�'Adobe Photoshop CS4 Windows2011:08:26 14:02:04��P�P&(.�HH���JFIFHH��Adobe_CM��Adobed����			



��PP"����?	
	
3!1AQa"q�2���B#$R�b34r��C%�S���cs5���&D�TdE£t6�U�e���u��F'������������Vfv�������7GWgw�������5!1AQaq"2����B#�R��3$b�r��CScs4�%���&5��D�T�dEU6te����u��F������������Vfv�������'7GWgw������?�2�m�Ʊ��4I�c����;��r|����g�R�ST�EUt�-.��KZ�?�:�#3� "hF-����ܢwP�a��	��J_�.�o��P����t���3�crm{��ε�L��k˾��i���Q�����[}�Ǹ
�?�g�lK��r��8�����f"��~�~��~л�[��_<��u�$�K�-=S�P��e�S�vX�.R}�/��o��_��h]�������B��o��x��Ϭ�n�}���^����]�D�=71ͣ���7;Al�;���g�"�&j�������^ow�B��o��&˞Z�t���5�ak���� �[��;���E�,�H�#���"$�����r�q��IA���X�6;eMam��;�u&�Z�w����k����f�˹���nw�*سc����`�h��%�.W���%��u�n@�o?�T������	%�кm=K7�2�,��-���9jc���F���Ӝ�#�vW%n������k�Hw���Y�+O��֛^�DԴ9�ߕ�!�BF�r��#��-/���+/�S�՞���Ca�Q�����{�=��i�4� ��G H"�oK���;���:n/K�f sh�v�8��w^�:��\��N�z�I^�٘Q]�����m��[���b���X��T�`u�-�A�cj�������+�ƻ�)����T�/H��7��Ĭn��oW�>�W�1��V� ����~��>g��;u��e��W�>��^nsFf_�y!���hw�X��|,S��TH�K#�Q�~�_�o�<�q2�
�o>�.��V�zWS}M���:��k��G�hY�C9���.#���5,��8���p�RS��j1c���G�Lʭ��lsσA?�Z��Z��/]��WQa���-�Gv|~m��5��M�Z�nie�0�A�d�OM֜K�%�,p;�5�����}��o��^=Oo'y�?��֪<�r��Āc���	��g�eR�i��C��T��a��vR�s~�� �����W��;���ge`�e�}�"�e:CObߠ�{��~����;���s/����m/�~�a�	�G�������*���?�o��UV�%�އ�?�^3�oV���~������p��y�O�5�R�ud�3��Cb���>���1��N5x�cd�[M�-�������~��_Sl��,p4�^��?vƏs�+�ù�s�\��x���o��r{������bIy�K���i�h\�o�U�u/�[Q
��@G�ݽ���j��2w�������p�'�������~%N*���������^�=_�~Љ��r�]��d8C���mA���g��^�/N���ȶ�>�c5���g��5�����bׇ�X��F�0~S��w�*_�1��yl2㔿������/9����tS�]?��W����O�q��+#��o�K���2�l��� #Y���~�~��K>\�$I7gŰ2H

�~�~��~ϻ�����W�C��~��y�ϩ�#5��p��y�v��^Ƶɱ~��lG���kơŻ����k���$�dUqJ�q�gzcC�}߼߼�r_�����~���]�ɡ�>��o���^\�"4�e$c�"B� �_���,Photoshop 3.08BIMi8BIM%�
�`P���$�8BIM�,,8BIM&?�8BIM
x8BIM8BIM�	8BIM'
8BIM�H/fflff/ff���2Z5-8BIM�p��������������������������������������������������������������������������������������������8BIM8BIM"8BIM08BIM-58BIM@@�8BIM8BIMMPPgravatar-defPPnullboundsObjcRct1Top longLeftlongBtomlongPRghtlongPslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenumESliceOrigin
autoGeneratedTypeenum
ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongPRghtlongPurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT	horzAlignenumESliceHorzAligndefault	vertAlignenumESliceVertAligndefaultbgColorTypeenumESliceBGColorTypeNone	topOutsetlong
leftOutsetlongbottomOutsetlongrightOutsetlong8BIM(?�8BIM58BIM�PP�K����JFIFHH��Adobe_CM��Adobed����			



��PP"����?	
	
3!1AQa"q�2���B#$R�b34r��C%�S���cs5���&D�TdE£t6�U�e���u��F'������������Vfv�������7GWgw�������5!1AQaq"2����B#�R��3$b�r��CScs4�%���&5��D�T�dEU6te����u��F������������Vfv�������'7GWgw������?�2�m�Ʊ��4I�c����;��r|����g�R�ST�EUt�-.��KZ�?�:�#3� "hF-����ܢwP�a��	��J_�.�o��P����t���3�crm{��ε�L��k˾��i���Q�����[}�Ǹ
�?�g�lK��r��8�����f"��~�~��~л�[��_<��u�$�K�-=S�P��e�S�vX�.R}�/��o��_��h]�������B��o��x��Ϭ�n�}���^����]�D�=71ͣ���7;Al�;���g�"�&j�������^ow�B��o��&˞Z�t���5�ak���� �[��;���E�,�H�#���"$�����r�q��IA���X�6;eMam��;�u&�Z�w����k����f�˹���nw�*سc����`�h��%�.W���%��u�n@�o?�T������	%�кm=K7�2�,��-���9jc���F���Ӝ�#�vW%n������k�Hw���Y�+O��֛^�DԴ9�ߕ�!�BF�r��#��-/���+/�S�՞���Ca�Q�����{�=��i�4� ��G H"�oK���;���:n/K�f sh�v�8��w^�:��\��N�z�I^�٘Q]�����m��[���b���X��T�`u�-�A�cj�������+�ƻ�)����T�/H��7��Ĭn��oW�>�W�1��V� ����~��>g��;u��e��W�>��^nsFf_�y!���hw�X��|,S��TH�K#�Q�~�_�o�<�q2�
�o>�.��V�zWS}M���:��k��G�hY�C9���.#���5,��8���p�RS��j1c���G�Lʭ��lsσA?�Z��Z��/]��WQa���-�Gv|~m��5��M�Z�nie�0�A�d�OM֜K�%�,p;�5�����}��o��^=Oo'y�?��֪<�r��Āc���	��g�eR�i��C��T��a��vR�s~�� �����W��;���ge`�e�}�"�e:CObߠ�{��~����;���s/����m/�~�a�	�G�������*���?�o��UV�%�އ�?�^3�oV���~������p��y�O�5�R�ud�3��Cb���>���1��N5x�cd�[M�-�������~��_Sl��,p4�^��?vƏs�+�ù�s�\��x���o��r{������bIy�K���i�h\�o�U�u/�[Q
��@G�ݽ���j��2w�������p�'�������~%N*���������^�=_�~Љ��r�]��d8C���mA���g��^�/N���ȶ�>�c5���g��5�����bׇ�X��F�0~S��w�*_�1��yl2㔿������/9����tS�]?��W����O�q��+#��o�K���2�l��� #Y���~�~��K>\�$I7gŰ2H

�~�~��~ϻ�����W�C��~��y�ϩ�#5��p��y�v��^Ƶɱ~��lG���kơŻ����k���$�dUqJ�q�gzcC�}߼߼�r_�����~���]�ɡ�>��o���^\�"4�e$c�"B� �_��8BIM!UAdobe PhotoshopAdobe Photoshop CS48BIM��!�http://ns.adobe.com/xap/1.0/<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.2-c063 53.352624, 2008/07/30-18:12:18        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:exif="http://ns.adobe.com/exif/1.0/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmp:CreatorTool="Adobe Photoshop CS4 Windows" xmp:CreateDate="2011-08-23T21:52:04+07:00" xmp:MetadataDate="2011-08-26T14:02:04+07:00" xmp:ModifyDate="2011-08-26T14:02:04+07:00" dc:format="image/jpeg" xmpMM:InstanceID="xmp.iid:BB76304EB1CFE0118EADDB079BF6CD0A" xmpMM:DocumentID="xmp.did:ACDA3B7797CDE0119B3BB1CB33EA20D3" xmpMM:OriginalDocumentID="xmp.did:ACDA3B7797CDE0119B3BB1CB33EA20D3" tiff:Orientation="1" tiff:XResolution="3000000/10000" tiff:YResolution="3000000/10000" tiff:ResolutionUnit="2" tiff:NativeDigest="256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;DBED0E556566C0BD43B85F18EB01787E" exif:PixelXDimension="80" exif:PixelYDimension="80" exif:ColorSpace="1" exif:NativeDigest="36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;EE10C350724BE0305260295EBCF555B9" photoshop:ColorMode="3" photoshop:ICCProfile="sRGB IEC61966-2.1"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:ACDA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T21:52:04+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:ADDA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T21:53:26+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:AEDA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T21:58:18+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:AFDA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:00:42+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:B0DA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:00:54+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:B1DA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:26:40+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:B2DA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:33:16+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:B3DA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:34:30+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:B5DA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:35:36+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:1D2520989DCDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:35:56+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:1E2520989DCDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:38:29+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:1F2520989DCDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:39:01+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:202520989DCDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:39:30+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A1A00195AECFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T13:42:35+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A2A00195AECFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T13:42:35+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A3A00195AECFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T13:49:33+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A4A00195AECFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T13:50:39+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A5A00195AECFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T13:57:23+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A6A00195AECFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T13:59:37+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:BA76304EB1CFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T14:02:04+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="converted" stEvt:parameters="from application/vnd.adobe.photoshop to image/jpeg"/> <rdf:li stEvt:action="derived" stEvt:parameters="converted from application/vnd.adobe.photoshop to image/jpeg"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:BB76304EB1CFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T14:02:04+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:BA76304EB1CFE0118EADDB079BF6CD0A" stRef:documentID="xmp.did:ACDA3B7797CDE0119B3BB1CB33EA20D3" stRef:originalDocumentID="xmp.did:ACDA3B7797CDE0119B3BB1CB33EA20D3"/> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 <?xpacket end="w"?>��XICC_PROFILEHLinomntrRGB XYZ �	1acspMSFTIEC sRGB���-HP  cprtP3desc�lwtpt�bkptrXYZgXYZ,bXYZ@dmndTpdmdd��vuedL�view�$lumi�meas$tech0rTRC<gTRC<bTRC<textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ �Q�XYZ XYZ o�8��XYZ b����XYZ $����descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view��_.���\�XYZ L	VPW�meas�sig CRT curv
#(-27;@EJOTY^chmrw|�������������������������
%+28>ELRY`gnu|����������������&/8AKT]gqz������������!-8COZfr~���������� -;HUcq~���������
+:IXgw��������'7HYj{�������+=Oat�������2FZn�������		%	:	O	d	y	�	�	�	�	�	�

'
=
T
j
�
�
�
�
�
�"9Qi������*C\u�����


&
@
Z
t
�
�
�
�
�.Id����	%A^z����	&Ca~����1Om����&Ed����#Cc����'Ij����4Vx���&Il����Ae����@e���� Ek���*Qw���;c���*R{���Gp���@j���>i���  A l � � �!!H!u!�!�!�"'"U"�"�"�#
#8#f#�#�#�$$M$|$�$�%	%8%h%�%�%�&'&W&�&�&�''I'z'�'�(
(?(q(�(�))8)k)�)�**5*h*�*�++6+i+�+�,,9,n,�,�--A-v-�-�..L.�.�.�/$/Z/�/�/�050l0�0�11J1�1�1�2*2c2�2�3
3F33�3�4+4e4�4�55M5�5�5�676r6�6�7$7`7�7�88P8�8�99B99�9�:6:t:�:�;-;k;�;�<'<e<�<�="=a=�=�> >`>�>�?!?a?�?�@#@d@�@�A)AjA�A�B0BrB�B�C:C}C�DDGD�D�EEUE�E�F"FgF�F�G5G{G�HHKH�H�IIcI�I�J7J}J�KKSK�K�L*LrL�MMJM�M�N%NnN�OOIO�O�P'PqP�QQPQ�Q�R1R|R�SS_S�S�TBT�T�U(UuU�VV\V�V�WDW�W�X/X}X�YYiY�ZZVZ�Z�[E[�[�\5\�\�]']x]�^^l^�__a_�``W`�`�aOa�a�bIb�b�cCc�c�d@d�d�e=e�e�f=f�f�g=g�g�h?h�h�iCi�i�jHj�j�kOk�k�lWl�mm`m�nnkn�ooxo�p+p�p�q:q�q�rKr�ss]s�ttpt�u(u�u�v>v�v�wVw�xxnx�y*y�y�zFz�{{c{�|!|�|�}A}�~~b~�#��G���
�k�͂0����W�������G����r�ׇ;����i�Ή3�����d�ʋ0�����c�ʍ1�����f�Ώ6����n�֑?����z��M��� ����_�ɖ4���
�u��L���$�����h�՛B��������d�Ҟ@��������i�ءG���&����v��V�ǥ8��������n��R�ĩ7�������u��\�ЭD���-�������u��`�ֲK�³8���%�������y��h��Y�ѹJ�º;���.���!������
�����z���p��g���_���X���Q���K���F���Aǿ�=ȼ�:ɹ�8ʷ�6˶�5̵�5͵�6ζ�7ϸ�9к�<Ѿ�?��D���I���N���U���\���d���l���v�ۀ�܊�ݖ�ޢ�)߯�6��D���S���c���s���
����2��F���[���p�����(��@���X���r�����4��P��m��������8��W��w����)���K��m����Adobed@�����PP��
���	
	
	u!"1A2#	QBa$3Rq�b�%C���&4r
��5'�S6��DTsEF7Gc(UVW�����d�t��e�����)8f�u*9:HIJXYZghijvwxyz����������������������������������������������������m!1"AQ2aqB�#�R�b3	�$��Cr��4%�ScD�&5T6Ed'
s��Ft����UeuV7��������)����������(GWf8v�������gw�������HXhx�������9IYiy�������*:JZjz��������?�?�{+rl�Ê��q����(ie��j,�m}M}]}U4��P�Ӵ�3D���3����������y�l�6-��� F
���4�#�r%k�P��V�u<��/m���u}s$b9$2��
�I,������'k�z1_�E�ߔ������d��}�?�ٕ�l�i�,��U��:c�����qPg��ޮ��G��ۏS*��pd24�H�8�r?��m��oq�wX�^[�����-��d�P`|���u�(���-i��"�5�&�!�8��X1�d��"�)�ןe�����nۿ�������)7?�I�Z��?��������߿�כ��ݶ��9��Pv�I��zO��׿���n��<��^}��}y����o���:��g��������}{�?��������߿�כ��ݶ��9��Pv�I��zO��׿���n��<��^}��}y����o���:��g��������}{�?��������߿�כ��ݶ��9��Pv�I��zO��Н�ݗ���l�V�O
&;��l|�H�}�0�sS_V�4�x�}��{����Yn������bY��W:�qJ 
|��G-�얖���+;ɤ�*E(N(��u��ڇ�I�M�>��V{e\�xJ�ll�n��y����"�c�.�?ʝd��y3�H?��b^��Ng>O����7eh�m���oJ������1��cr2�}`����d��$�\y�$��i�;�r�ݲϔ$Q)FyA�>ʡ��	�������{,{/�u6�H`��$vy��"�'���[�������BvN��v��{>�#�?'<\����Yr[��%$�:�<%�r�̹���^j���c�I���$DQ�t��b�jWXE�Ӊ���j�8KJc�b��No�?�$�.<+օ��W���o������M���8������de�{'g��d��骬ٹZZ-�ܹ)�)�$�����I��3~�Q��ܟa��',@��r�+}L*�ą��)1�
�`�Cp��<sm���=�ٺH6ȕPxnB���SF�$R(���گ���B�Z��+j�*f���٪��J�ƦY�yd*�\���6ݺ5	�*���~�:����f�rޥ���v��ߒ}}]Oa�����"����n��CTb3Ԓ��*�H[�u�*����p��	�<D��8�2�C�n���r�������X�G�=��c�U�fN�n��<M>����4��/HZ��x�Ō:\7�5�n�`�w����=9�	-]�#�N�lG�5��\�`��|x��C��l?�a�ǟ	�I_��!��*6��g�9b���1�q�J�B7�榆�pu����W�����Q��}�7=}ع�a�mÔ��zX(��N���PJMA�\�X�R~���~�o����#��)����a�Ș��37���p��-EK��equt��ܞ:������RI--me4�$R������A��r�,��2L�U���
 �pA�=J�"��F��=�������I����a��`޿��'@N��u����[���ڿ~�=g���j�l��+��v?OJ%9'����oy�����2���S��9'~b�~Ռ����t�~?|��.�ܹJ|���xdk�>�q[�qPah㭔�X���u$�ȋ������3Z{���p)-t�e`���	�~]��d��7٤ ���W��%G�֏�𪯉����꿜�JlwnүR��dI!�{l���6Ff��,�W��L5T*�D;v=(	vl��$H�Q>��\�Y�1�=j9�k�{�^��׺��u����o����:����;���L�f�q��o�
�������f�����;+Z^��xb�Jy�`�憝'�@~��|۲��r]���YIU��-L�5VMR(�PI+��GG��k�_o�{ܲ%��Hd Q�è�h���jO_Kύ_���gN�n���3�vy�6�p�L�B�+�#%�k맧�z��$Zj
$%ϊ$��.����npޮ���H�r�N���`�Gj	�Ս2OYQ�mv�5�;}���J�3959b|�@<�G���|y��R�/�S��X7������K���e�5��������:���ST(h�n@�0���e�?��4=�步���_��7Y9�jh��R�q:Ճ�e���7����x6Jl�|w��Ց�s��۱�{+-Pt��r�7O(ԵZH*[؟��g.��7�\
ŷ�K(��`Q���K^=��2X�߁�uO��W?�T~}hM�c�VW�S��K�&�޶�E�ؼ~�ݝ[�g�
�VJ���K]���T���O%%=t`:*O��������"m^���F��[Mi1���Bx��%A���,�H�z�}��@ߢ�G���A�uo���e�h�
T+�J���M͸�S	��[��dj�91���R�(+�j���d4�
`�F@w���X�qş���_Ͷ�r���G##��VSBF1�Ľ�=H���r��;��7X%�����)vVcRd8<Ty�с�+�ج���,}s�TT`�{�hd3�Ɗ^E������Tq4���Vb������kk6�<��@��'��Ί�~H�O	�o������m��	���c'��*��ʠq$�f[��e+��e~3����)����c�X��Y*�:��⩤���J�r*������m�l�&���x��b���]Xe`
�pA��;k�k�xn��[Y2:0ee"��� �24=7}=��}�7�ʟ�_���/�C�>9�SU;K�ݛNj�����g�z��7QA����%����_|��۵�~pkݺ;�h����@+0tTWI�&���3������kDVZv?�@ ����������ړ���}���X7�����׹��I�_�[�}n����#��}���7i��e����}��hڿ����d� ��*�z�q:қ�m���g|%�F�1�ۛ�rUh�ڿ��z\s:��>f�)���ܱ�E�3{�S���������K�aƒ�/1�����=R/��^����Wp���Q�WQmͣ����!���URQd*r��2�W�۴��>8����dk41 i������|��
^[�*�5�!*��H)�+E!݁ʨ���w���<����Nc(�,̠�
�R�V<��5H(�F�	�'_t_M�=T��g�;'bWT���VWm}�����q�T
���U�FQ��T4��~�q�66NO�^Z���_�����J��
@r��jğ�XW��4�$k��w����f��U��(�HLb��t+{t��׺�/������MN��i�ڽߋ�G�dZlV����M>v��,*�4��@i`�Q$!PG��m���I�m";nn�;_�\1��\�¶�����y�o�c�wR��#�'�$�Hk�\�X
�]/]Z�n͙�6&�����m�ӷj�hs8\�
��X̬��)$R��*3E4N�F̌�y߹m[�ϸ��;����01Y#qFR0FAe$z�Vۺ���i��Wiq�N��D5V�� �B�`#���tw�/���4�[��?���WR�7
T;S?iS��v'?Ah6����L���������Zw�E�^}߹sޟly�6��f��#�Ca#%3$RE�"���`SF�a�rO4mMwݶ_�WI�(T�u}5ʴ$T�����o�ԟ�K�=����z��?�ȝH\��$�/���>�_���#��}���7i��e����}��hڿ����d� ��*�z�q:�_��>8|�n�O�;��޲��']A�����J:�>䤣�5�휙�����B#�jX�MP�b��\��܏������{�#i�����֬�F�Fh@�w�6���y����T�M(C�N*<�<�����m���eLKCW�,;c��x�,:�{e�x��XS�E��5���H�F�+�$s���=�ps��	�]���H�bFj���~�=qs��2�>�\\�D[]C�i@Z'd��������[�_j�w���3��P���7^CS�M��|v2��U����T`��}���r-��s�\���x��$e`hP�a�
�@��	 s���o��r��.�2�I�WVR*iS�FC|$d�I��;�j�i�>��;r�YU��arXy�>�
b�SS�f񵅹���"�ܶ�u�_�:z���>����ݸm��h�Dd?���=p��mϹ��ong�
Ab�#!����J�)��/��_{��,,]��0����?k�mv����ce4���b����o��M�?Ǿ�۸j��K-��׎�����g���~.�棤�Y�0�#3���'!�}�9�lk�\"���ij�sF'H$t&�[�|w��v�q!fv��@U-ܢ��*��C�b�vu�Hc�pm{vvu�E��$y�7�jJ<�~�)����9$
hf���$���6n�9�r�T߬�X�R�,rJ��hG�W )�Z{���Ѹs���ܿ4fIc`J��H��.��t���˹f�_S�'\�n��x�հ�8h����	1�Z���mf0YZ�\�;����Z:�9᪁����3V��l���������$:��U�!��R8��]w���Z����@|��H# �0Atu�>��Ǜ��'���=����z��?�ȝ���I�_�[�}n����#��}���7i��e����}��hڿ����d� ��*�z�q:}�=z��u�C���-��҂�Gwnnt�:�ujm��q3��Mv�F��.zY����4��MU�Q�����>H�;�@���{e�:I���ޕ�Z��𦝀>XO����9Uy�g�׻��Y��G�7��_/(�#W[L�)��[�z�m|zݹ�*>��|,X͚**bX��^c�Յ|,�T�v�,-,��wz"�Mc�<9����d�n��i��˻��$���jW��n�~ِӳV6}�=̳޶+NHݦs����'���HW����W��r~񣬔��׺�o��Sm�?Tn�ڙZj���f
q�G4�'g�饢��l�MF���,��țD�,��] !��Ok����l��p�d�	�MDPO4d2D�Ī�4�T4�1�ߟt,�K��9oo�W�k�LzA��^W�e%b���a3����j���;���r�|m�A{i��nH$�ٟ%7mcw>gUqE��u��p�Ex22�T@�f%qg�Ⱦ�[����r��Ud(��C)��dtHc<#��+ ���+�z����|�1�Z\+
P�D��+��8��+�i���@u�.�ߏ�����I����Oa��`޿��'@.��u����[����#��}���7i��e����}��hڿ����d� ��*�z�q:}�=zDvW[l>��[���?j�7���Z�����v��q�|Uji�	UZ9��'U�
�^:�j��h]%Du_�˸Y��U��۸x�CFV~�yA	V:Ouko}m5��+%��U�� ��d���ge|}�Q��������O�?	��r�)�=��*�2� �2��Mya1�O�ܛ?i�D.n����*��a����}�6�f����dBL~}
�#IX�C�X���H���e@�9����&��t��n�6���%C8:����L�2��@i<7,�ݾ-�f�mlu~��>�����i��>��ąH��O��N�*0�Ի���+j��W��%�Nw>L爬ZN�
�*�W��9�m#����?Z{��_# �y˒%�X�&h�Vj�� �au,�OO?%?�F�x�]/xt_A��R�$̮��[��T����T㖠�~���TEo��^�{3Ɍ��9s�W���&�8��
��y?ң� �귞���J�o'r4����U�I]+�
�R��:c�*s�2l���m��-c�h�'�>*n������ñc�c{o���YQ{���rہ�䧛p�T�ֆH���>�S�
��}��
ȏ�#
��R�����EĪt�Y���ؿ�F������t�k�'��ψ5ֺ�޾<��40�
Z�!@ه�zO�~9�^��n�ڔ/�v"<6��dBJ���ڗ��-��WM-UumL�T�U�$һH�Lj[��.�}�owm>�p��ϯUP��
���V�e�0��cZ(̓ĒrI�$�Ы죥�����ړ���}Ξ�����dN�\��$�/���>�_���7�:�=���Y<U^"�
lTT2&B��)��WYPY���z*\�7���r���9�y��v˫H��FD�"���5@H�R�<��q���a��Omu��)a�)ң͗8>]��x���l��fW�������8��o�g�I�~����?�g^�@�v[g�;2��f����8��o�g����Q��S��u����e��+��o~�X�n����9&��~��~����?�gD÷�gĎ��˜�_��wF੔�Y�j�����[�l�p�̐216��Av?��o�r�����h���
���A��E���x�}�̗���)��a��� '�=5�w�Q�g�9T�u�ů�8��2��֓v�1��B�b2{�	���ʥ��HO����r߾[�&�r�	^܊[��Շ�,v���=R�t�K�-�t��D�����S���7����ve�����\�G��rM�l�?��?��\����l���x���l��fW�����\�G��rM�l�{�����5���ν��7����ve��������q��$��׿��?��\����l�N���윶F�+W�������>z�dY>��8���P�c<�M��m=��7t�/wK�Y"��@4�A֭�q ��&�]y��,w�Kx-b�]$�u��#f�z����;�"u�~��{ߺ�^��׽��u�~��{ߺ�^��׽��u�~����4GIF89a��,��<��<���,
0����
;5GIF89a��������!�,��-;�GIF89a
��dg�eh�mp�or�os�ps�sv�qt�tw�ux�x{�x{�x|�{~�|������������������������������������’�Ó�ƒ�Ǔ�Ĕ�ŕ�Ɩ�Ǘ�˗�Ș�ə�˛�͙�̜�͝�Ξ�ϟ�Р�ѡ�ӣ�֦�ק�٩�ڪ�۫�ܬ�꺽켿����������!��,
�k�H��Ĉ"H�`��D8T��FC"Vx0��9p��q�F�:@��a�C��1D��+K~��R&K^��r���$ih8���L}��Тg�XX��uҖT|�Q!�WL��`b+�2h�����A����(0@@��;�GIF89a��������������������������������������������������������������������������������������������������ߓ�η�����������ƿ�����������������������������������������������������������)^��������������!�X,��X������ !������"%()������&,36������+5;������;AC������6F������;D
I��VR��K�I�G
J�JMRVPPQ�W�J�L�L�O�V�S�L�9
��N�VURT��aB���0���m;���r�B�
�$P����G@���#CQ���öw��QE8l��ä�0�����	#D�ԁD���bcƋ)N�4"�<��[	;pԘ1 � 3;tr�H#G�)BdH�z��!(�� w��J��ב�|�8 G#	�-��Y����;�GIF89a����������Ny����������������������333���!�
,|��I��A��{��'z�hn�F�'�
+�1t]�M�a�?�Kl	�FWnK@�h,0�Y�g.�XL��p������h��p8(A���<��"�6| �S�a@� YY?���Z����� �����;�GIF89a����:����������������������������������������������������������������������������������������������������������������������������)^����!�?,���pH,�
��l:�M�GT2Y���U8B�Z�p�'.��'V��n�}�p��j�|���kB-8�>�>���B16	::��}}�B9;;�;�z>����<����B/	�
		
���B
�>B!""!�B�}�yBS&)�/��B �+}yb�h�"�	$H�`b�2�8D`F,VP!��
h�qG�8nبA�1`Q�F�� Pt G��+
��(]�+��B��H�;GIF89a�?������������������������������������������������������������������������������������������������������d������t�E�����Mx�������������!�?,���pH,��F�l:�M!%�Y���U(zt�x~J��z�n���G���u�n3�}9~��~B74�965�4569��B='33�25�352����>*1�51�����1B�6�7��7�9�B,.�	�ǾB0 �
־$$B -�5��9
B!�9+�9�"#�		�a�/$`X���8|���;,P���&x0HѐB�4 �GX0`�<l��0�"
�\��?h��@�*@�*/��h�;�GIF89a���������������֬��������:�L�L�&V�����������������������������������������������������������֭��������yyyvvviii\\\[[[VVVMMMLLLJJJAAA333���!�/,���pH,���r�l
���3JUN��+��2�!!)e_͓Iphi�|Ih�\�9W>�
."~�~B� ,+-�����))%(�	���$,*#�	����	
������
	LJ����҇����ه���������G��A;�GIF89a�g��������������������������������������������������@8@������������������ӫ� ( ��`�д�����DDC H�P�ধ�333fffTTS`��0H������7>6���^c\��ވ���������@p�p��Px�0P�@p�������`��PHP   ��悷������������tsr@h������������������������Ŷ���␿��������������������!�g,��g������a������]$c������ Z^b������(
e������
d������b!ffE����f�
`@M�Y01+/6�ʂeL-FR�WG%._V���f>'D-9O�H_�	f`��q�ǖ%8V|�0`@AJtHx�ʐNzܨ�ˆ/p� A& �b���/��2aÆqx�`G��]�
�B��L�@E��B��_@���� &ƈ�T��)(T� ƋcT:t�a��0��Հ�T0(�����B؛ Bh�́eC��|9p�Ad��p����b�vft�C�s;�GIF89a������������������������������������������������������������������������������������������������������������������������������������������ޓ�����������������[��a��p��l������������������)^�3f�4g�5g�<n�@p�Mz�c��m��n��n�����������װ������������������!�m,��m������������ #&'������$+.0������*/4������478������0<;EUUMMUKG�ɾ�49>�>�fc`UZI�т=
?�?�TPUXj���@�@�R[Xdl��2�	�_�\�rfJ��1pA„
�=qR�J�	$D�AP�,`�b��p�@�„	�H9��4#B̭�aM�P3Ea\�dQ�&
"B�� H��,>�@†��(i��p�Bʼn%�8! ƌIf�Q��4b�p!�� .f�-�C�<x�{���4fj1���H��b�Ÿ�〿�Q#Ԝ��ׁ;N�GIF89al������33-�����������Ǚ��deZ������<<<�í���fff333�̵���--(������;;4������XYO�������������������������������������������������������������������			���DE=MNEJKBBBB!!!''#***GH@efZ'''??8���000EEE~~~���993���STJiii$$$_`Uwxj����սTTT�����ɹ�����������NNN���lll???������ZZZxxxPQH<<5660�������ϷYZP�����}���```bcX������**%666999���KKKAB:���WWW�Һrrr��ƪ��������������]]]��������Ο��������oooQQQ---��è��$$ ���������tuh���\]RVWM��rHHH����ɲ�������ކ�xuuu���00+		���z{m��Ͻ�����cccnob�Ư�ؿ��u�����}~p������qre������!!����������{{{���>>7������UVLhi]��z���
���FG?��[\ROPG���kl`LMDRSJ�����^_T@A:���mna�־������pqdgh\�ӻjk_���CD<abW��������!��,l�@�%=x@A��*\Ȱ�Ç#J�H��ŋ3jT���)�H��ɓ(S�\��N��� ��˛8s��ɳ�ϟ@�
�YC��ʴ�S�X��a���X�jݪЄ�{�� �ʶ�۷p�ʅ�$B���50#�
��jD�]<�_#[K�����{�,�̹ݧf;����ZʨS�^�:���b˞M���ָ��X@��l(r����+_�<���K�N��V`�ѹ����Ë�O��������i��P��04����(�h�&��Ж
I�D#�qf'~Iq�uv��A���o)D��0bo܆�\��4�؛.���<�U�})�Di$yP@D"(GF)�TVi�w����3�F�m��h�h�ł�l���p�)眳���n:`b�|���qzB��j(C?^�袌2��%�褔Vj���I&\�WV\*ꨤ�jꩨ�Z%.��Cd*�謴�j�m�9�����+�!��
��¡�6����F+mz�F��f+m��ZtXچ+��k.�PAI�&����+D��k���n���,pnמk0��Fj�7$�1@Wl��g\i��nT�� ��,�},��(��&�*����0�,��4�� �.���G&�P�<m.�IL��H'���sL��5G-3�
A-��X���F/d��`�-v�'�4�ho�Cg��DSd��t�m��B:���|��K��}���&��'�������k7���DsW���+��F�/.��T3�訿L8F�����l�:wt�9i���].Q�/���~��鲿^�B�'��_���Wo}��N|Ÿ/4�����o��R�Q��#��B�/��[4�����٣�p�
���:'>��o�L�7����o`{_B�
ވ$���7�_�o��`BB��!,�
W�Z�������~ɠ
w��*�,����V� j�I���ķ��"5�!�fE)V�ѡ���
���"	��4$6D�dL�/�ĿukT|��8-��x���x)1��i3#C��B2[m�H�82�|�$'9:~u�8D!��L�=ƒ�9�4A.���L�*7���Q�e�|��(;�򖸜-F�1��a�T*I�bF)��M.�倫�q���%Dl	�jZ�^��%aa�,��p�8JcZ,�	�9���� S���h�䤠L뻦#���~��]ل�S�	݁ 0_�3\�|�:Jъ��e�	z�A�d���Z@B͐��y�����
	�	��hEt�5�i11�ѦԀF!��I@�R���!%-�R�zA�iO��y�	��R�����Epjծ���8S儣�u�*;�B��ֶ���4�j;��60�xͫ^��׾��?�<	W�JX2"��n����X��U!lm�d�	�r�;t�f�8��z����,�k���k6(IdO�ZIV����Lf7O�\�x��0��V��m�HK��:0�Y.0����n._�[��ָ(R�#�r�tf�	����w��������4u`��	A�X_�ڷ��=�ڔĒT@&��L���N����;��
f�2*$�X^�z�����^��'pQO�+���Z���u�
��Õ��!@���ǜ���C�Sg�VX<�&�/�8�1C�� O�Q>����&d'Ϧ�FN	V���0��h�"�a{^)/���[^�;�:ۮ�i�B>�f�v'ga��Y!p�s��|4E;�rxF��i8h}M:%����Wh:!�~t�-�Rs��A��'}�M���(ɴ�gݷN������D�]�m��2�i
/X�D��N��l�f�jD׿�У<�h[i�a�DT��a+{X�6	��Mn��ȸ�����3:�e뎷��1��!��sDZ]n愻$3�g��!����;�����'N�[��ϸ�5�
�d�'Q���s]�@b���7���0���gN���8Ϲ�o�r��oHI�%����'�ї�55����k�[��|jA�
�L��
�9)	`����7��$��[��k���W/��)��2H��P-�<���0^����-v���mvw�}|V0���W*����)xǶ	h�����]�p���W���KH��"���	��ݗ������q���H\�Zu������/|`����Z/��񊥾���<ًɿ����<�ziBH@#���F�������8�X�x���
��؀���8�8���
��u�Ѱp1�M�Q9�{(�}�7'�7~*O�/�t)�~V%
�~�7W�7���b��%{�d&x�q��+���b~�r[!�PE�SU�o'}�@
X���p��}$�tJX 0p60p�r8�tX�vx�x��z��|؇~�����8��X��x�ba|4�uHT�1e�R�ST�fV����A0�����cR�Fx�K��6����/�w��S��h���
���H���(����dG��m�o|&��2+@�XS�j���t���8��ҋ�8d�x�4�o����8"��1�[ͨl�$h_�XU*@�H��8%֘O���5�������.U�L#�8�Y$��@fȏ#�B�����7��%��"y�Y!	�F����q
)�&I'�iQy� ����ёP�}$���
�x'�
�TӍ'�)�+YQ-��2ٔ�A�]��1t"�  �Cy�EyGIQ�x�
�@(
�^`&pL�n�P9!�dv�HY�"Xy����ѕ5Dc�p��A�m����qI�"�&#��Y��y��������ٙ�������Jz)���y�|i:�	�ApaᗿQ���閍�"@��qΤ�%���q�ƙ�ɱ�'� ݁�B0�ɕ������Mٛ�Z�G#0��Y����ʹ����"@pd����k�	��1ّ&0=�,���	��o�ɞ�����k����ًWYi��Xƹ���JqA�P�%����6��؉����M���֡	����f�(*Zj,z�.�����F�7Jn�����*����P��A�J��h����ɹ�Lz�Nj�SzYRʣ�X�q�X:�ZZi\j�_j�a��fJ�J򣢆�
��k��m:ho��I��6�}9��U���	���}
��j*��ڤ������ɨ�ਏ����m�Z�^Z�"i���Ĥ��ȩ���_���.]:���j�J��K�*��:��z�c"�C��j���i��P�*W�J�����z��Jt�
��z��Z���|wڭ���*�@�.f�zY�ٺ��zn?���(��j��*l���Ⱥ�}֮N�n�Z��(���z�'Q�z�#���hƯ?�3����))�{zֈ�}A�L��ǰ�l�S�_����h{F0�(@K����9f4R�Z�t��A��"�d$�#p}<��58x��X[���G����~A
5��UJ+Z�
@#/0"�m�*V�?�Cː0���p�I�� �$p�Dz��XZ�0k��۸���Ms9"$i"�+r�X�<9�f綜;��[��{�X5��:p0`;�\p��+]'�*P��ۻ������1�TLQl{�e��)��"#��� _�h�`	C w�
ϻ�С@��ʫ����9���`��	��1� 0׋��`��{���X����7a���k��`%���	�����+A��g���	,����,��|z|�_�������!�#�v%l�@��
��wI����.��&�S7�4|�6,�8��:l?<��>���H�B<��W�{�C��9��'��%�#�R�vT��V|�X�EZ~\L^,o`�#7��[�&y�u�ƍ������por��t,�v\Kxlvz�lO��~�����;�Y���b��|�n������+�I��t�^������ɞ�k���̐���l�������ʭlj���̏���l�҅�����˽,j�������LR�lt�\�k��̎�̾�8�HU�w��;���lg�ܻ��V�,p�<�k��q���,��*�<ϧU�qϦ���e�L�p�b0-Г���P�ȷ� Qt�П�j��仍��-э҉�~
��
������ ��k,�K#�v���߆�LB�P����Q;H4]Ӿ|�Bm���+��'
�m5�^=Ӎ�6
�_]�L��\=Vf��I��b�h��r=�iMks=�Y���w=�h]�J��l��z}^|-�k�׀�R�mք]��u؍�Պ��&5�_�ؐ�[���B]ٖ�O�=՚�ٟ�٣����^�%��}a`ڢ�c��l-V�=Y6P��m��ps@�@f;����N������-w��(�s�mP�2
|{����������=��]��}�����������WPY��%кs�x���-~�-%��H����;��5���V�(������1�d+���7��n-�� ��*.0
 =0V0p٠='}����+��@| �*��nB40+��A��N��P��ۻ�VX-�]�@ܟ���	���LX�T�-LN�k,�]^�e�l�����T�u����{�w�珤��}������N�yd�����r��~���w$�޻�n�]��~����o��n��.�PE���\��>����9�΄�N�Vd�����.��î���>$��θ�n����N}���<���^��.�E��.|׎�6����������z�N�d��~�������y��$�N��n�ń�.w������/�D��u������
���uO�c�?~����#_b�#�)?}%o��/o\+�����5|1/�D�;�Y7��ף�A�z=��|�G�QCO��c�MyI��j��S�MO��#�YwUo�d��_/0[���eua/�MD�k�,g�����qfm�K�wo(sO��c�}�^y��A���'��#��_\�o�+����&�����Y�/�%D���#�������/P�����#�O��c���K���	���"���#��0�o�����!"��'e��O�*��>��_b `��OI\�Z�=��ebB���K��b���`�	~��|�wp��_���g,�k���$X��A�	.d���C�%N�X�"B�i���G�!E���E�)U�d���K�1eΤY��M�9u�����O�2�#Z��Q�I�.���S�Q�N�Z��U�Y�n�:u��=��$;�Y�te���[�q�Υ[�nV'���4��w&\��aĉ/�j����SIWُ�N�!FcСE�&]����j��^7J�\���QXH��A�ԡM���G�v�:������q�`�> ?5��m�d3�0i\�y���ր�ą��
�0�7�
 ������<ʁlpa�TpA�D �-l#�,av��3�pC;��CCqDK4��b�40s��,�`pƈL�B�)0ӑ93	�rȂdP�P 2.$��d�Bp����a6)��R�G0EG2�4�L4�TsM6�OBĶ@i�N<��sO>�4���H�'M��?-I�!���QH+A,�!aL3�tSN;��SPCuTRK5uTj�K"]�U+�5)�t�V\k*���W`���
PH�vYf�u�ُ�@�TH�zQ#�:��[p��!g#�\t�Uw]v�u�]x�w^z�^|��w_~����l�3*�ɆYVxa�vX�*Ba��+��b�3�؝jx
�6���\K6y�]{�ve�[&�XcJ�e�k���
�@�8E���zh��6�h�� �PjMd�����`j���z�Iv*d�#>yl��i��&f��V�m�[�yg�� ����{o����M;�����6�pīN�p�w�q������r�3�|s�7���Ar�oҟe[f^KW}���~�`}v�k���4-�`�;����G�r�7^j�/��x�w�y�oU��q�����z�v�!�e�~|��7�f�y����ۗZ���w~��J~"������ߨl�|�˞�R7@��{
	_�@Fp$髈��wA�� �`3w�?�P̃#$a	M(2P��+�AT�B�i�i`mxC����;a����pЇCDaEDHD$&Q�%L�sH��O��Hf��VQ�[�"�v��%��b�8+F�gdc��&����"A�8�'^Q!Y�c�����o��RFB&)i���HHF�bq���8�;Vr�zL5�IP��A�$�gH��Ҕnd�C�JX�R���d(ovI�9і6�$B<�K`����*g�9T�Ø�Lb+�JfFS����0Y��w�TӚ���A~�Mp��{Ą�2�y�d��&tfC��NxƓ��粰I�zڮ��f>��Ͼ��!����Y�6��!�DhC�>�)�Y .�6]R��:{]�4�Q��M�!�C5vP�*Q�ahJ]��͵�'�iMmzS��T�R�2R�� �jQ����6$0u�~RR��o�
iiT�zU�M�lS��Q�&T�իc%랒
�@�}qH�V&�s�k��6�A#G��GFa!#�Ԁr,+�:�V��-�Y�Z���J}Q@�,�ֺ�N��jf=��,5D^��d�!ԦV��emk]�Z��V���mmm[�X�L�pj����?el�+��W��m�c���5!��K0Z�m� ��nw��Ю2W$03f!^���Eo{����R�}
�fr]�BN��n~�[W�׽eʞ�É��hux�`��W���c1�������/��[��vX�V
0a)��b�wF>q����#�xa@	
d���;�k�]L��xA,�q�w	c'��+�!A�;7�����S>���\l
y0�B$c*pa��g��z��k'��|�%k4 ���+�Z�D�o�,���dY�\�(��`x0�hH��}~M�-x�an�ɞ)�iH�9���|�Wdg�²�F���G�Z��4�as�\Ma�0N<mk`'�&�t��ZX��lhK��>��qm��ʊɬɯ���f[��6���,�=�����k'1~7��_�[߉���]s�;X鎵��
.mA*���7A4�o�y�&ކx���bY"?��.���܁�w�i񭙜%Gy�=,�Y�� ��>^s�����V�2]������?'��0i���9o�͙�����=�p�t=[]�<:��.��C=Ml3�!v���X1����M��o�(z��A�(�4��� �iWS���Ă�'��XT�!n/�B�~���%K�|�n_+ag<f�.zԧ^&���6�i�%�<�m��{��.�/��4��{��%Hx�@�<�t@�\��^�P�.`ߓߞa�~������$P����W�}�����d�0Di�J�6��
CЈ'��������>�;�.���Ah�.0e� �h?���C@

����<-h�� �C��3�
l�Ҡ�;�����/�����tA��RЈ��W��	\+HB�;�|B���y�ЫAc�<6��AI:��D�B2\>،.���%Ծ��B8,���·�����r��2	A#�� �>Dh�0
�6tC�q�8|Ĩ��+���C��C��CB��,���MŖi`��RD&�:G��<F|E�q�x	Kl/L�9M�N�DQ��g!ES,&6LŢ3��Ed�(��ZD�[T�\�]E_�Fa�S�ELF8(n�F��D����@؁jt,O�Fk|G?�FaDEpt�#�z�G��Br�Bs��V`���,H�<H�LH�\H�lH�|H��H��H��ȉă��G��v�G��y,�a��J�F�<ɌG�hF�zFH|���H����4Im�D��DI�t���d.�|ɶ�ə<�4�I�bC�h2�$�D�I�\�����\��$ʮ0J��J2Qʆ�G�گ&�JK�>�LK,�ʇ�J��J��
��J�	�|*�d�R��K��=�t�,�,c��x�7�JT���K��l��4N˿����L�̆@e�5f��G�Z��|LnjL���I�?��9xM͌;Ό��ȑ�P� �M�N��N�,N�<N�LN�\�℀8�J���P,M�8MԤK�t���H�͖���O��M�@l��h�OX'�#(��̧�΄���������p��K��L�$O�4Ou	�d:�D��ϣ�IpE*#�Q	�D�5��DP�P&�@�Q-Q=QM�E��"���=��P���۷����
����P��,P�XМ�Q��Q�H`��`[����ѿR�|Q#�$�9%-&m�w|Ҋ��-�3�R��R����"�R7��/%�0�j$S�3SͬR5MK6m�8u18���䨔�S;�E<�7=%�4��z���$�+ԏ�Ӂ@�D
�EշF��G�Tp�Ԇ�Ҳ�T��T���M%�Ne8��PUj#U�0U�BU�4T�`�V��W}�XuTZUK[�@m1]}GU}_�U2���0b-V�<��\�e��f}Vh�Ai�aUk�VZL���j�V^�֏ש׿��r%IlEJ��b�ՐcWwt�1-E(�O��Y�WJ�W�AW
SW_�W�uR�-Ӌ8F���EX>S��}e��؈
X�}��X��M�<CK���s��7-=D�H5��8�v�;-ł����7;�•���M�HШ|Y}�X�H�0T�D���4�P�����(X�X���d)��DU��D@@���Ò���!��ڼM�����`>�(8r!�N�����
V85�؁:ҵ=����GX�GdM���LÒY�\�`���F;D]�x9�?��"��0�4�V��8�i��,8��t]�=^�>����=���Lޜ���յ��[�
_�_�-߇��EI�u�H��m9]�_��_����Q�p��=h���(���9`N`^�}��1���Є�؄Q�����x4��	��_�����j̃C��t�`Q�`0�
a�a�8n�B���M���a*�F�f���Ab�%�y5�#~�$^�%��&v�2���b���F�b+����M�b�.�B/_0VK1v%2fD3>��E5^�l��}㴌�g�c7�c��b��c=�=>�^?6K@v'A�>B��;��bQ�DƹEN�F��G^�H��I��J��K�L.�MF�N��Of�P��Q��RN�S�Tv�U>�V��W��X��Y��Z&DD���e��e����`�a��b�cFf�Sf�ef�tfΊ�Λf�Ccc�el���an>Io�.p�<q~C�k>g��f�]g�lg�z绋�y.�z�gMNg�g}�g�g�hr�fs&�����E�|Th��f��2���>h�9�����ʜ��޺��F����m_����ֺx��^,R�d��6��g�S�+�����1���
�ap�k ���8H3\�{6�6^�
x
�^����9��-�	A` T�j�j���������;�&���a@p�ӈi�fP0�7�j��:�l��h^��`�(�1�j�~�Q���l���m��lІ4�F�.m��/�g�^m6k�َg؎����a�m۾2��a�m�-�e��"��d�>n�znB^n�v1�n3F�޷�n3���>��oB��2�0�Ivp��8P��eo��@���o��oˎ��o/p?pOp_popp�p	�p
�p�p�p
������k�����0L(%��oq�pJ{�i�q'I�#+x�$X��q �B���� ?r$����L�=	��=D�Nr*�r/�:��q+�r/?
��]0����^�80�/os7�+:+k�>~s;�s<�s=��`���n(x��=7���>�imtGtH�tI�tJ�tK�tL��$��V8��@�x^Og�<�Q+���R�JuP�W��(oPuvk5X��G�^Y�&����V]o��$v�v[vewZc?v
K�g�>`g�cr�j��h�v��m�k�vY�p�n�v��s׽q'wX2�v��tWw�b�yG�w�wS��|�z�w��ǵ}�H�w��x�"������G�GR����wxƂ��W����D�������x�����7�����7��B��/��g�6r����������?���3��׽������ϕ�'�02��G��W��b��w���z%���ǵ���������z$�����"��G�!R��W��w{����'�������������|��/��7�|B��g��g|r��?�ȗ|q���O���|��ϕ�|p�ӗ��'}2��w��W}kb��G�ׇ�������ڷ�`�ߏ��������]"��?��G��Q��'��w�P���'���������O��������g��7�JB��_��g��q��O���v,h� „
2l��!Ĉ'R�h�"ƌ7r�(��F�,i�$ʔ*W�l��%̘2gҬi�&Μ:w���f
wB�-j�(ҤJ�2m��)ԨR�R�j�*֬Z�r���(��bǒ-k�,ڴjײm[��	�ҭk�.޼z����!H�n.l�0�Ċ{��p�1�Ȓ'S�l�2��[	`X�3�ТG�6���W�n�5�ز��4�ܺw��]��
ǚ�/n�8��ʫ� !�7��ҧS��r�;D���;����S�
@)��׳o�=���}���b>�����9��cd�x �	*� �
:� �J8!�Zx!�j�!�F�Jx}�ʃ@<�E���"�-��"�1�$�q&#�9�#�=���K:��\te�$�M:�$�Pʠ�d
�%�Yj�%�]j�A�0��MT4�/hq��m��&�q�yS	$�
�͹'�}��'�>���$h�:	ԑG\A�b�(��Zz)��a0�6x@�V0�-}����!�dZ�Q�ˁsI���D(�)J�����+��v�pE����)��-E�7�0�~x�U
�`�+t�-��ޤ@v;�BPG8��؁LA��A`�x`�|�*n�P8\�"o�J�Q�	[|1I8u��4�M5W���ure�~@r�-Wj�(=!/���.�u(T���p�z0��~L�{�����"���B=ӔP�p�ոu@q0@�e�(�,�j��/��=7�u�}7�y�7�}��7�
����s0�(����m�G(��sH��G�y�D�����T-�j:h&�p�
,�>�u$���.�0�K$��C���KDX�8��;�<��K��!&Qbh�ur,B;�8�0U�囄�Q�`����`�q!�?����»���P�t ;n��[�h|�!��0�Ql�@b��#�-����	�5L�FDDg��.\�����&�T�@��~Vl`����$�wwA��%R��V�"���-r��^�"�(�1���f<#ӨF0�p��>(�9F�V�I��B���0(h�fT��A�%�><d^l�C"����4��<�@h��#3��Mrr<��$�V�ejt<%*�rG����|%,#���|�i!s�Fv��Q�Jx��a�����
�'D���|&4�9�)���Ic��9�R%�&8��(Fc�٣.�IaJ��L	;�)Ͻ3&"�:1�}��$���l�����&J�eЅ24*�	2#DuR�%���&߉��b����K�0����&�`����.�BO�җ�ԥ`�\��
�)P:�� �F=*R��ԥ2��N}*T�*թR��V�*V��խr5���
��G�p�<��I�jֵ�.�a�ֹҵ��	e�j2Ԛ�+15�^�*�X��'P�`���2V2-�]Z�g���$j��Y�������,h)�W����%�_KR�Ӳv8��	���Ҷ��=�/Z�T�$�ݭ?5������h�j�ڦ�$�].t��ښ�6�ֽ.v��������-I��]i
w%�/z�k�����mhsG��ҷ)ӕI
���W9,�z�^�J6�-�J�k�3����|����#���}c��s��Ί���"q�&����.��eb�s�%3��u3�
��>�q��bՔ��CQ��#3��߉qLn���PX�S���_��+s���
����"Y̝L�I�l�5��/P������*��6�r��gӂ��x!s���H4�D͂>4�1���yϔ�����e��9Җ��B��h�zӈ$tI��Q�!��1�=�T/w�-�4�c-k9j�Ԙ�"�lk��$��5�7}�4z�ZY��Y�j��:��~�ej�tz��H~m�m�y�,)6�����p+v�+i6�ӭn�H�����ǃ�wh;�n��W�u;e����U����Hi���{g�f8�ӛo����H��3}�s��CAx�	�����q%9�
<�T��B��˷�<�676�Q>����9Ѝ�r����0��+g���#���9�wt��|�V��e�t�}�sT�I��{�!���R�����Y,٥��/�&;��Nc�G�m���.�� ���{�Q���o|�2�!�{$�|?߮�ǫR�{�?/zG��ǼF,���GS���Q�{�ؽ$x�=�[[�����Q���K��7�/���5S{��>���Tp��$D�<u-����o$�+�|�?�+�I�˯~����#*�'��ӿ������3�ʢ�~Et��_�y���V��;��>`81���V �N�!��=�A d0�� 	���f`;\�
��w��H������,��
�A�`�t@ $�$�`��!l�`Jt�4��>!F�N!V�^!f�n!v���\�
�	���� �!aŏh��H��B@8�o�&��! ��>��@i99�r�.�#&����AB��K0�a Z`$���u�(�� ^��R�="��!+��r,�-֢-�".�.�"/��/�"0�0�h0$1�! �"�X'��
~�K�"4VcG�b��@4
�O 6",�c,P1N� �<b�Z�<j6*KD5�:�8�8��?��-`�ԙ<�;V`<�#CVD=�J~9E"��>�`?�#Fb��%�ِ��BC*
n�Ʌ$Jn����K�$LƤL�$M֤M�$N�N�$NVS�@��4�7f$T\�Q&�
nb��"}��(�<FB&@�5��V*�ĩ�M�@)�}��X��Vl�3���,�$�\ƥ\�%]�
%\�Ld�V�eAx�� ��Y&R&bVZ6eʕXE
_��dz�+�`Sb�af&g:�b^�c>�f[D�d�%e�e�
t&QtLM� k"�gZ]h��Z�fij�i�^j��jr��lƦY���զm�n�&J�&�&O��Wep�N'q��qr&�MT@����$D�k.'s6�s�tzgYt����0�x��e'~\�1�έ�{ڄ|����AA8������dz>(A�'��ք	g��v�gFn'�ug���\B�P�I��B��Zf�Ƅ	�@VOl(����:��(J��+�C`�����胾��Q�����T�T8����(9�hc��M���/X@����)�����)�����)�����)��隚C%DP��:y��fۑ")s*��1i�r�Ut#[T���"���
�D�ь"@z�(
*��{�SU,����.*+6j�i)L��bd�jj'r��y�m�&U�b���:"�����Āp�<�P��* Ҫ���c�bT`߮�*~��Z>�Lk�
б"+*��1�I����RZ�����~�f���ʣ��*��f��jKt���X�Y�k�Z��f��ĻZc���n��"���q��llR��,Kl5&��Nf��ľ֪�'���R,	Z��a�Jh,4rlǚ�ǪD�.���f�
'�v���˪�ˎ"��,�^J���,k��M���>`����DЊ��ms��Ѣ��v&Ӓ��*e���ԒD�v��b�zj-J ��v-g~�k�mb�m���H�m ����c�ꝭVd	�-M8-ݖ�ݺ޾��"��5�m�.ɞ����%.�-n�
!��v@nC���r-�U�bnq�q�lJt.��n5B51hK�-��mf�L\.��^@:�ս�#Ԅ�!Z����,�$AI�.겜ꖅ-oR�9ƅ�B\!T�H�L4��X$�%Q��b�B@J��L���ob
�L`����kL(�0&�/07�?0.foN�o.nI 0g�o0w�0���0	��Y���A����Z���k6����+��0G�7͞��������g�,
g���1���
\�]�*��'��ޝ����61�&�
/���Z��$��(����!h�M��|z�*��1�E	��
[��(S�
Zp��T�lO�8&�@7,�5P��X�D	p^.	�"�2I�	�W��
T�I�����IJ,�2-g�0�`�"g�"�r�ҁx�a'��D8���0Y�2�93C�(��w@l�e��Ĉ����X�2��4��0��@A�\�0��`[<���9����*W��LJ\�9W�9�s]€J/G�Lб[�s���+t���O^���G�ZB��A`Hc��t���A#�EX�E�\L�_4�t�رk)�O|t���ْ1��0M�-j�5R'�R/5S7�S?5TG�TO5UW�U_5Vg�Vo5Ww�W�S����]�Ay2u0�Z̴�Y��ڴmNgf�1Z�4��t���
�Ix�X���.���� ��㹵�µ:Alf��N��]�^3�^�,_S��@��`g ��#�s�qcǭcd_F��aT��]�H`m����oh� 5�.��6[?_M���l�dx`b���vf��
�`�(³��p�3q�O`^�i�vZ^�Ops[-�…\H�(�o/vp;�p�
7s�d�X(w�1w
ux��y�wz��z;^j�M\�5�7:@
x�w�l�Dm�c�7��z[7{c��(�#�wM�7�����_xf�io�E��v{8+�M����x�x\�8 �8�]w����#.����l��Ą_�縎#!�� ��5�9+"�Lи�]�2Y�<V��y7�>��]��o�Sy�����e�T�%��"D�^�ĉ��
��FycO��/���D��ٛ;W�.H@4��?:�G��O:�W��_:�g��o:�w��s�,H��3,A.�D��9����y����D��١g�3��g ��/ݝ9b2m{���:Y���5��D���z�j:��:�#;�*���D�;��A;�.��f�{�����D��٭o{�{�����/�H�;b6�����9��o;N�;����0���te�(���:a��j;����<��<~	1:@pn^��`��ĺ�Y�/{�[<�a<�k|K�kڑ���
����;���Ŀ���|�����J� q��Ӽ��<K���M-8�iԲ�O=�W���|Aw�D�<�<Iđ����#}�)��r���H%4FB�\�Ot���3���{�٣���=S�둿J�.$���}��I���;]
�x������	�~��|��=C��;��A�KjT�@�d�s����\]�$�ࣤ�D�ՙ�J8�S�+���O���~J�@0��q<����C��J��O�T���$��������5$�(<��z�0��q?����_^����4xН
�6t�bD�)V�xcF�9�#�dH�#I�4yeJ�+Y�tɒ�Ǘ3iִygN�;y��hP�:V� ��vK������S�V�zk�0���lX�cɖ5{mZ�kٶu����R0n^�{����p`��	6|�l2�haR�Y)W�|sC�B9w���gLУI�6}ujի	�J���ؑ
`��7�y���[�֮��7~ܯ\�W��E�zt�өW�~=�b�;<I�
�ɗ7�y3k��ٟ�~|����g�|~������R���<�\�A��j�����5ܐ�=��E��M4��ҳ���z��e����Ï�uܑ�2���d� �<�$��Q;��ʠH�j�(��� �ܒ�.��G��̊|\�4�Ҫ��|�8��,�O����<��O�?��Bq
���
�&�|t�Az�M�:�Ld�*75��PE=N;=� �D���m�Xe�ѫt�Qum���t�`�*O�=�d�-uVAU���f����i��[�j�
Xe�<����\�����r�]�] �͖�g���zG���|�ݗ�m���$����
F�ܢ�=��>�]~k��(z%�ߋ5�xc��a9�v�h�U^��:3��)��☯���u���Hn����9J�褕n8�盙����穭��Ϟ��yi���r����>{ٗ��ꍤ^�Ԫល���k���Zoe�֨�<Φ�N�m��>�O�r���(o����]��(��=��A�#?-��K�Q_�u�&ߨr��\�O7Ǩ��u�]:�[�t�N�=JՉ?��^�(v���9o�(��譿>0ߓm���4���Ghy���~0��Osz��_����~����h���_���/#͓Z�7�#��"�3�H?���~���6A
^r��8�v�A��AX��9�*�`E,�B��υ1��-�Az�7D�'BB�t(�aIVH��tGD�9FC3��i�a��C����Yԛ����u�>0���D���S�bu�,��J�"��E:�G�w���84�P�q�N!�FARes�c'��=�$����d��("��#&Cȇ����"��H�8r�;�d*YY�JFd�&�(�5�9���d)�hʈ����f0�٥WB$�%��.	�I�����/��K����f6�i�c>$� \�4�̆@���5�h͇l��*�g<�ɢo:$��:�bN�����;��N�̳�DDhBڞ{6$�ܧ@�eK"ᒢ�A�hP�4x�HS��K]2��([�����A�(=ʐ�(+)Ny
��#�TiLf�6��I��L�Xӆ�f=��R��^�n�	���T���^���l�2(XVO��^��q��O�:���,`E*^�z�&�/H�
��\�L�U,ov*W�ڄ�(��'�-���b����,X,��aJR0&�D���l�X���2@�i�!*@J1ڲ�d����>W@��m��'��<�K[]�~����j~��[�	�|B �\��md���p�����~��_����	�\`����'��$1pt)�M�l�+�����Kh�a�W��U�il����i\c8�(��;L�#l�,o�҈�>��DlE�E���A6`�m��<�$Ŀ�V���t͊������Q�|3���_��
�����)J�D�	]h��@f���hG?ґ��)]iK_��(E�i�� '����2���`<�V�~00�6�z'H��i��2�ٲ���R��	���g0�s`/n�`�Z?�і���]mkS�5�&��ܩ$x��}\��^	���n���WX�l��TA�Ag����	^p��� �N��p�! p��
`&(��9N��QU������)W��Y�r���1�
��n̚L&H��ӽ��\�A�Љ^t��W�2����z�L�zHRPդ_�Y�ֹ�4G}��ny�v��d�^W���R��q����^w���y'p��0���8�A����� q���A���)_y�_���9�y����E��Z� #HXz�*��/��2 ��7Y�/|Fv�x��G����HP�
����"D��/L$lc�o8���=F��{��L�, }�<��x�l���*J�l�?��_�����O�p������	� �O������"�O��9���fQ�;0,8���+B'��F��.0�e=P�E�ˤ��)"U0�nл\0a8p��-jq�vp"z��n	�K�O�	��-�p
�$��	%
���p��P�����
͂�PG�P��0"Ɛ�
S
�O
����
�՚�<��aMka����"�<���"��Lk_�#qɃy�3q�F�L:��>QY�7Jq�N�!RQNj���c�g�3��
Bw�qG~�‚Qِ��2��1ݒ�!���s)L�1���aM߁�Q��q?��Ƒ����*���ֱݑ��1?���e�r*���G!�C �� ��!9B!ٌ!2�.�<"r�&�"
�"=2#2r�6�#_�$$EK$G��J�%-%UL%W��j�7^�bR&��&yr"nr�rR'U�(3�'�
(���r)!�(�)�R���2����*�L*��!��+mK,+�+��+����2-�Ҷ��,+-)c-Ǫ-���R,���.��.�"/�j/�Ҹ�R+ӱs0��0��0�*1S�s*S� 32�j2��2��21��4s)93�<�3y*4�b4��4M�P�(U��X�5I�5�"6�j6iS�l�'q�ts7A�7��7c*8�S���&��39j9��9a�9�����%�S���:�);�b;W�;����$ų�ȳ<��<;"=5j=�S���$C
�8�q>��>9�>3*?�����#1@�@t@%�@5�@)*A4��%׌�B���C@'��*�B�� �5��8t*K�l�f�Fk�FoGsTGw�G{�GH�TH��G�&l�>��cDI4�L4#.T�2�E��E��K�%�nL��I%	K/�܏|eE��/C0L��CU����K�t���"�^�
^�|�!�TM�M��<K�AM"�NG�N�P3��`�R+�Ҧ -p`�b�������Q�t�@tQ�7K�>E`oa��)v�"UT1�TY�K@�R���<UU�HW����ƂǤ@�$�Vo��r�X����$�~CX�����N;@�@6�"�)���2�
""Z�u��\F��J�F��[�u��u^G��`~��
�]�^�J^65W�`>��H`I��_�u��c�5TvZ�cG�72Vcc�dIVaA�;E6e_�2L�dSf9veY�=]�fwcg��xv^og�Sg��h3Bf}����X�vh�h�Vj�Pi�ijK�i�vC��j�������N�Vkթa�J�l�mÔl˖�ζmTm�v|�J�n�In�6;���n��o+To�V��vp_pw{�>�pi	q�0��qi)!7rCir57--�r�(NA�59�s1�sMW,M`t�hOX�7Q7uiue7-��uSh�p�7/��v)*6�w�X��vy�(�x���mx�I0ȢW{��E��{�w���� ����@6�@Q�w{(��}�W~��΀���a�̗�ʡ�L6���7zU�3���X���0�0�� ���+��H�3�Ղ7��ekz� 0F���B��O���
����.�_������B�@6��c؇x�J�H!I��؈��*ʀ؎��vAd$��؊I���'B@���'b�@68A؂6!#L$a}���7P�}s"H`�X��x��`��������n�Π
Lx�ّ��n`y��F����
���j!2��Ky#V@�U�l�>`.ٔg��kٖo#d���yGH�SqY����x������2V���\�;p!
d#��ߚy�7�������	z�������"�7�ȸ�9�T�ܫ��n������0
��Y��l
z�K�����@���(:� :��f�9���*�Ah�E��<��g����K��N��WN�WkBz�e�aڀd:�;��m�jp��_n�yZ~|��
.���i�z�Y~�:����Zg���Sn��}���.���f�z����#��ڬ1�ߚ�֚��G����:��;F�Ϯ�w�����b溰�-�[w{�����"[�۱e�-��&���E�9��0;�?g�E[�<���%�Q{�H��3�]��T{�᥵i�`;�	g�u;�l���%����x��緍̈́{������Ӑ;��ȭ��ٜ��y������l����L��{V�{���;l�;�9��͛��[�֛��ƽ��[�[������&������Q�
|�|����\�<�
e�%����w�1��+�x.�ÿK�7<��:|ě��A|PD<ũ��M<d"���d�Y�O\��e+�e�ah|�y��q<Ot<���}�a���sdȉ�K����$ɕ�`�|��ɡܘ�|����˽�<��˷D��|G�<��e��8�̯$��?ؼ�����7�|Σ��<?�<Ͻe�]E�<����Г���2�\�k$�%8�я%�1+(�ҳ�ӥM�7}�P|���C=F.=�3��M]W:��k��A�֟-�e]Th=ף��q��Wm�yT|}�M'���Փ���������c՗�>�}�;e��}w�=ۍ���ۿ]a���k���=��j�]�����=�P��}���=>ܽ�q'���s�}����ݡ�ˊ����~�	~=���G��޷�=�-��^[.�����d�=�5^5 ��i�?�oB��G��Q��O��R^�ц����_�4b^��k�ln^�s^�I��{��~I��܉��}��3���->����%��e>�I��۝>�;c�O���H�>��~�]������]���+����+��A�~�
��������u?_d����?A��E��e%{��zA���8K�-c��	e�eKX��� y�1C\��>�S@>��k�ɺ!�^�e4k��/^w��?���fx��߾�{�컟2B 
r@6��� 0�5*�
@P6��h_�߾�w�����<�0�B�b��.�ĉ+Z����;z�2�ȑ$K�<�2�ʕ,[�|	3�̙4�kڼ�3�N���	4�СD��؉4�ҥL�:}
5�ԩT�Z��5a 2A�6�D*�tȊ6�ڵlۺ}7�ܹ"A(�7/^+�8��>ܶC"�X��Y� ��9��͜;{�\ƒ�ѤO�:��լ[�~-u����,v2/�{��
<���;A\8A:yQ6D=���ԫ�D�D�C;��=�%X?�>����bp!Z�|�j�h�?������D��m7I5�DVh8�A�a�NHa�g2\�r�%Tb�"�H"kk\�@`$�]��F�2�Hc�6�T�.\`�4(@�|'�p�@���Wt�č7U��v?��$8�Yr���vI�UP�e�f�ԁA9��.�p�L(,T
/�`�sq�A����pA
ܷg�{�`�CS��vJD��+�a�CE���6R���y�ǀ;��u$�]��"��Jk�"��W
$P�I%�'Q�p����UC
�e�
({l������D�&j8$ҊT��vD"Q����m[&�M$h�7v���'^T�n�����h!�P����^�`��U��²���g9��pH��qo�d��	cp�Y��C3x�0�V}��<Cn�����W�Ltp+�T
Etң�4S�JLu
6��h�Z_�j\�G&��#@'`
�1���OU�)s�'Q2�� ��
xghH�,>B�xMKu��ԗu㖻Eր��H1���1a����1^��B8
�YA���PL٬�W	A*G�[���r!�P9�/���T��B��O�	����b=��~��O~�柏�vx�0�J*��a����R��$������@�Ÿт���@irs��w��� a΋�
����d�Ax��p�$,�	O��
K�J��"�w��gB��9A'�D�@&��DT
`0�Pk���UD���i\Vl��(jq!:�
�P�0�q�d����x���R��c��o�t����<z/@�ST�"��	;pHt��D�pC����(*2$�b7��%N��� ��P�r��	`<��8
�!)_	�X�RvV �����~�+9q��<	�����R�2��4�$4�:+�r���fX� p��ў7ω�t��
�fS��I2~�����ώ|�~R5�	Ѐ
tC4�3S"K&�����
�5��@���S�wԉь��(�B�=ht�$-�E,�-)���X�\a��f�"�Ӝ�t��AM����5�H
������E��I�
հpԣ	�,լj���(KS;PF�UxS7����u�l��^2����A[�B����aNݪ_K:U��,-�a�x��%k�T9�C$c��ؖ/���jv���g?��n'>(F�*���u��m�;�j|�GP�m�:��v���o��
w��-�q����*׸p�5�"±u�{m*.z��v3�	�v�^��l�L��ءa�nx���W��h-��Ht��*��k��:`$2�S���E�L�
�J�,V�hޝ��M�]�T����x�[M(�m��B�O���X�a($���LS�4�qr$����<�1[k�>��&نW��d� GN����a��t�|�����,G�%V2c���8戚ƌ�4G4O�@[a[d�^W�H^�A�L�<�1�!�p�yЄ.�v��*�$�jntkˬ�:zҔ������ �rv���k��Ӥ��?r	�i�Ԭn������ѕ��N!��L�z׼.�
��ZG���>֨_��P���n��;2�#4{�Ԯ6
H�Dؽ�vq}�z{ܔ�tT����_̶�I�=�v�{��^p�y�{��Y�`n�{���AN�+x�Ry�Nͺ�hɻ�鄷@&Nq+�[!Q@2��nCmH����A��_�Z��d700�o��$`hG0.�YZ�@z�7���}�L���5��|�,'�ԧ�u�ʼ%@wֿ�������ѡ�F:B��}�t���7�\]쵮�@���'g�)�����ī��f���ݎ*d���w�W~�����u�S�#���	_���o�멦�\�񝇥�i_�_� �Ͻ���ϗ���B���#��}�/ k���n�i��w����2
_�ѧ��ߑ��O�� ������>f�?d�o��#�Ͽ���7�z�f�~�r��q���
�Y�i����]�G�g�ȁ(��;e�!�x
� �~$��+�k �������3����'ǂ
6�=v&�v�Eh���/ȁ2��YU�q�M(���� �GxI?��:'�
�_[�ax`0��ȄShRO�Q��myU�W(�T��s�r]�6g�{ȇ9�eh�g���l8���tp�r؇�Q��Hnx�z��h�󇸇�!���N�w�(�K���w�9����k�x�����k�؉��e���h��hm����A����h�h�H�����}�X��K��y�H���wç�Yh��8i�X�ȍ���X��X��$�税��&��3���c�H�(�����H�渎e�����֎
�����p%a�ɐ���ȏF�(��g�I�ِF���)�����iB��+�d��9�����3���W��x�,)B*�A�b.y0�2��mU��p�I锇���ؓB�7@I�W)_DypOIHɕ<���M��c�uQ錒gv͈�?����k	����-G�@�uQa��{�|��S�`a��I�~5�V��wɗZ��������I�I��iR��w����	��陡y�������`����ꤙ�Ǚ�(���I��f��h�����ɛ�Ԛ��X�y9��i��v��������霱�F	��y�IT�Չ�i������ٜ�	����I��Ozi��)fۉ��Y����9F㉗ԩ�y�����G��瞄	��)�'D�ui��9�����Z�y���:�*BJ�ʠ?��ʡk堃�q)�J��a�c����ʢ:��n�p9�%J�aq�_����-ʣ��m�k9�5J�q�\����=ʤ��h�X9�EJ�G��I��Kڤ[9O:�Qz�SJ�Dj�N�����\��Iԟ��T)�cJ�e��g��i��y:^*�o*�q*�$J�9i����z���Ҧ��A	��:��������������
~�꓏
�*�3I��i����|ڄ�ʒ�����#9��Y������������ڪ�"��9��������������٫�����ʥ�:��j�Ț����
٬���ڤ�6���$NiI��z�������٭�ڣ����	@�����銙느�j��
�-:`]*c�gt���ږ�:��H~�ٙ�z�{�7z�=0/����&�xj��J��	��(��I�ˡ�'w Z9��;+>���*�,۲������9�4�����1�E�;_H��(���L���KIaB��Q�SK��j�"�Lu��/i�K�h�b�D{�X���@cI]�ٱ]��:�*[�d�f{�ᙷ�`N�z���
��[��{���v���d��&aX��
p緕���ˤ`-H�W�1^�7O[���y���z�(p/f)=q�����<���Q0bs�fc�F��i��듋-&�H�'q<h�$!��۴2C��5���mS��l���k�+���"6�[@a����+��;���cpP��&@��K���{�[�U��2cx��S*��2K�\����	�p��A����'����0��!�p<��w�/#�1Cp-a
�-(|� &�-�®ڹ��c�����6,8�Õ�$�Ƴ[��t����%>��sq����y�6��'�Q�7\���#��n�y�BK@fܛh����4r�ѷ.��J�u,�
��
;�� 6i$�Iȅ���,#�p�L��ɱi�-��7���ɜ\���L"�\���ʏ|�V�\ab�hc��˲��,"���,���˞i�Ŝ{S�g�@���X���ȼ��"5 ���RT<�\k���Q��%:���q��p���
�q���*�뼘�,�@*y]4�Ӷ�����K|��ѻh��LХ��)�h��Q�	�!a���]n6�>��s<���]�h)o��
E0����6`�u��������DdId5L��l��a
�:Mk�����_
�a}G3�	�@l��KM��(ic������UM�8��Tqެ�j}����3inR��Lב|� 
�Z��R��|
�~���]����MՅ��������׎��M-=��=�{�GAؘ��)��x��e�ؠ}��]��]�ݢ!��چjכ
۱���Mۏ-�����"qD�۾�ۤ�&������}�-
���
��#A�j�k'1��]���=�؝������$QIL�l��c�ޯ�ޞ
ߡ��1��Y�@�O
p�����l�
��͓��i����Z�h+=�j,ߑ�� +p>"ly��^�.�~V��Y��0�Pa���=�(i�d��g�5���t��*�g��5ed���� �O@O?�h��CΒE>�G�O�������I��w}VeP7;�i��k(�b.�d��fNL&��d�n��8��]S�0b�P`�hF���
�ܽ
~���E @�e����#���=����� ���Fn��n�%~��ڑ��1a�ޑ�~᫾Ep�cb1�u���n�$m-1!վ��٪M]m�'���.��Ε�A2���Cg����)�3N�!AqYb��Yw�8�=w�(+��΋��?"`�˲����.�'a��I\p�8�6��
o��?=�9ӧ�n���I��qA�E���q��n�,�e>IgF5�0��8��Y���9�=�~�A?�C?����J��KύMϝO�g�0���%�����I��~2�a/��H��i�1b�0�mPn����99���z��x��ĸ��A0�SE�����80�,߻�����!��
Q���Q���h���Eė�LA������ة��/��_�_�#![��\ɯ������o[?x��&6�n�������M�/����/��/��^`=�l��۟�QN����O��^����h����@�
D��P�B�
>�Q�D�#�0�N�F�=~�q�E�%M�D�R�J�-]��S�E!�p��N�=}�T�P�E�E�T�R��i3L�^ŚU�V�]�:-�@�e͞E�V�Z�mݾ���
Q�ěW/LQߝ�X�`��E�xdaƍ?�Y�d�5C��W�f�M�&�8�jgҥM�+��i֭]��[�l�s�ڼKY�n�}m�\����{\<\�r�͝?Oi$f�խ{|���ݽ�M=��x��͟GԶ]���!�I�|�Yhמ��~������&��#����@l'���0B	'�p��p0Õ�(
?t����DOD1�Ƥ�h�
_��3������1Gw�q�C�ME!��#�D��+1I'��2ʁX���y<P�����T�2L1�$��A
RJ���H5��kIК��N;�l�ʎ�,��,�۲OA��qPCEԼ3?J����MG'�M���4SM7�IO��L��?�4TS}*�TUWe��E=j�S� �HRYo-�V�K;�W_!O7���F�TcMuYg��V=���=]߱�ZM��U�^�7\G�ը�hiC61e�%�Yv߅��W;�U�����;��[}�XHro�)^��El]��twa�s^��
X2|+Ɠ�]�Ÿc���\�KC�/�G��a�Wf�B�7��c�.�YM�-�f�w�-�[>��NzB��F:��^�(f�����$o�3g���z/�3Sz3�������l�Oc����)j�Q�zI�ߦ�>�@�;o�;p��J{m��7��p�qn��\!�W�됈��;�3�s�
����C��q�'=u�'��+�A¼ut���&d�=�� jUG<�|����Gx�u��bg�5�����םr��Mr���'Q|�W�g�r>��ן
,r���
����
��C>&	ЀX[�<��F�����=ЂH�̀�� ��n8��Pf	�`P����-��b������� �adFx� �_B�l�(�#j�+��wx����,d8RPhzhB �1CD�
̸Fm-�&:'��4�P|���@�� �A�8�CQ���3�����A�_:�HJ�J�69��9>!���HH� lb����
R��G|��p�02����^"��җ�
�_F �8�΅M�%�09�ҕͣ"H*�"\1�X�Ln��(�2qEA̔�-=��_�d�~�@;�&GL�9��O~�ӟ�h@:P��ԠE(?�tZʙ�\�
�с7xAIHhF5�Q�vԣiHE:R��Ԥ'�h �I��i�d�<]�Ҩ``x2�i�B��n�ԧ?jP��ӇB4)jR��T�6թO�jT�:դ�@��^N���S�_
Nj@U��լS-�Q��Գ�խo�k\�:W�&75bqFVwN���k`!s��հ��kZ�Z�"ֱ��ld%;Y� �$�^{�GV�lh)�Pִ��b;�Ƣֵ��mle�Vxx0�dfE;S����4��n�+�,��mr���<�v+�]nt�;]�Rw��nv��]�v׻�ox�;^�׼�~4;܉t6�"@o|�;_��׾��o~��_��׿��niA����6@�
�( �Յ�YU�\�D3��p�5�T6��x��O9��R0@h��Պ�*q�e<cS&�
�ބ8�5�P'LaTY8�GFr�]�
�����$���BT"\�g �tk*6!F4��?$�JFs�՜���0X	ƺf:'���D�
t�g>��#H`�B�Il � GP"PGd �h��l�%g�s�5}���1IAF6��!�y'zu�U
���
���*����� �#�	�^��d�4W=lb��-nD �y φv��=mjW����v���mnw��ަ�SKmjT���v,ΐr��X�*�XD,Ul$��M$t�����[���8e`�Q!�7���x�%>q�W���x�5�񍣂�9`���:n<���'GySG����x��R�������6�p�����?7�
> �8��!
��&L>(���l��W�zRIP
��Z�b@���{:�9I0�u��]#.L`Bp��3�� ����$'���>��B��,�"@��ٓ���Wd��|�K�8��K��@�@`	Rw ��l�̷~�(����O]���G�ʷ���Fj�������
��ԫ�}�~�-�`��� �^�_y���?�$�΃�P��_��k�n?���
�;�,K�(�ܳ�����İ�;�h���s��{?�?�@�"(���1p+�K��@3���x�`6�b�r��s���>����+��胷�@��l�� �, ��c���l�<�<(�?�'���*��+��,��-��[�����=�7������A\ �7D,"�8A�BBRB&$'��-���Cm�P��Bd��U8r�D���J��YC6L7���K�+�G��;|�<4�&��肩��]��PT��ȃ�<��n�DșDJ�9L��+��Ӌ@��D�Ud,>�
��	=bdF��?<���ǩE[̕\���C�p��*�`ğalF2FlQ��qTGΰfC��i\y�-K��{\*�ų��u�	��$5�Dȸ(="01��?z-{�lj*������G�	Ȅ|3�9Hȑ�U�!Z2���j�Ɓ�H��IKY�0����H��27 ɟ�t]�N
���lɗ�ɥ<������Ğ�Hˑ�nʬ\R�3��|��F�dʲ�
�7�J��#�\ǯAM�ʹD�&x��|Ȗ����7�� P@d�9rKu�	��tL��;��5K[�%`�L�J�(̟���I�q\Lh��Dͬ���4�ʤ�!����4�Þ
���f,��L��\��<���dC��T΅�1�<�-�Mf�M�ΤΔ���$�,��N�0B9�M�Nb���DO���΢�N�d�H��@�L�O�)�U<���ϟX�� N
Я����=��ď�̝�T���m��D����A����D�u���"
E�P��PݢL�)��N���<�5D=Q�LѨ`Q����}�Q�;�Q)��B�����+#�Q��R�R�=�%JR=\R&�M'ͪ��)�R�R#� �,Gиʬ��r�
��R���N2-S=��R�[�Đ ������SӜ��S��R������=���>5���3
���0���E��F��G��H��I�T�T��։�tLH_�%;MT�$�/�SքRTm'Vm��|�ĈUω@��?P	G8���X���^�U]eO1�Nb-V�<V�H��YV�Є$��tU�u%)H���VlEMS5<]No���W�W�)W���x�WǤ�6�W���|��}��~͜X�؁�˂����̈́UXkd��IS�ԈE���ج�X�V��֍�͎��?e��Y�"ْ�ɓ3��MP���%qXʁؙu���ّ��J���NXY�]X����Y��,�=Z�LZa���,3�}Z��X����Z��,���u�Z�{�ႁ�|R��E����U��U�tSԶ5�_�S����͌,\�-�	�ڿ%+��f|[���PtH[�A�m�MB��\â��%��mM����Jr��[�ݼ5[R��ӕ��U]Ud](ŏH1[T��ݥDѭ��C�޹��5��-�����L��Z�
!���D�޸�^��C�
"�����9_�= ��F�M߷Z_�mA��!�Ո^�N̪_� �%�
G��߶�_V=6!6��V��a�rq`���6�	�`S��"`�S�`�`�9[$M[V���������am+Ҥ2�&�!vaJʷ�~\�i�}:���+��,��-��.�8��7
�!&b�JZ^��P�1Mb&&'a���2�&NHE���gxEQ�)2.��J�.�9�Q]b7�98�a-}�H�)��H�x;�)?�c�J�w3��B>�CF�`Sd߅>8ǯ��,㟞��K�Lֈ�!�d6�}eBTZ��� J9ieW~&X�����]���6�����A�Z���T�V\bEc�	Y����5�hf�inK�{b���nfo&%p���]�+g3:gt�~0R���{�E�w��]�gz�;���܇x��g#�g������#� ._�NH��f^����n��8����.����͊����-�O����cUDiy��fim��ˈP�}&@�"����i��8��+��S�]0
^�/&�6볆8J ���]�FȢv�F�
n�%����\L�j�ꪶҠ��g��!��x�f��v�Ǟ6�סE�����k)g@c��l�k2
m�~����;���x�# ��\lg��la����3X���o��Ѿ%�&m�1�`�� ���9�"08>\�m���%�lۮ!��^\0�h�G�>��n�n�P#��P���֮S$��������*X�na�n��n���~
��!c��,��$���G��&����o���pg����v2�/8�T�'%�:�옄�g�p��
W 
]�3����������քxF@��d�}qW�qx�mW+�{s�0�MVZ[����u�'7��r��O�� ����?� �rJ��m�V"s�0�3Ǟ�T�GrZY4d9�sq�s��sR�sk�r?����_��x,�CתD?�E'�FG�>�t��Io�%V�4tLo#�r6�v�W�uX'��k��tQ}�Po��lj_�JKfUo��b�:X8�V�egvfcȂ2��Z_�[�U]��:Uf��T�:�"�t�@:��-*�q
jN$k�	P�vى�m'�n��p��q�����;`w=r����x��y�)K��w|7�q_��0�G�9x�(x���V��w�r������ע�����x��_��`��_@�ͧ@y)�Ry�`��������򙯤q�y�9y�/ĝ�y��\�n]x���Wz���gB�?�\�%��J�zT���'y�oЭ�vu�p��7��Wb����g#�o��-�����׈��{���G*�<�z�w�'�W{��w��W���7�z�7"��e��ȟ|�G�7ģz�_#Χf�sxNiџ#�g�7{�����u��gF�{� ��h�G|ۿ���}��w}�Vi�w!�i���7�7Q�u^��o��}��j�GX�~)�~5�~�������?J�]��l���!�h��w"L�p!ÆB�(q"Ŋ+x�q#ǎ5�(r$ɒ&O�L��@H�._Œ)s&͚6o��9s�Ǟ>?p�ѢF�"M�t)ӦN�B�*u*է:�*׮^��
+vl�
4�Lۑ�	d�+w.ݺv��ͫw�@�:�l1�ڟ-#N�81�ŎC�,y2��<cިu/�Ξ�^�*�3�Ҧ;�E��'[��_Î-{6�ڶ��-Xy7Ww�<�{8�ō�#O�|9��/W��6��HCO��}����{��.~<����C��|=�����/����ϯ�!t�=�� ^؍&��"�����B��M����&��|rX\}���#��߂8��Q�Պ/ަ��4��7�#_�F��	e�݆?؇E"���>�8�F)�xc�QR陌'�X��[r�e�K�dtC�Y�KG����kפ�Pv�q�֕fY��{�iޗl�'&pdZ�Dh�������p���R
՝��Y���r�ן��'�j��
*������9z"��r7)��^�^��⚫�Q}�jr�fF����:����ꂯ�j���FZ�w�B[�����,o�b&��e���㒨��^۳��)mtԲ��\fKnd�歽E������g�{��ٺW�.p�"ܰ��p{�+q�[��Ɠ	���u0�7*��#���xo��ja��~��\�̀u��*�%2�����?]�i,�L��iŜ�|4;��)���F��3����[��\HO}�M���i��CU�v��]i=�y]���{�=�n���a�ό6�O
wfr��"V�7�YN��V�c�+���$�O�s��ڡ����A��Ru�N�j�ݺ�b�]��g����n�酥>{Q�?��i�^��<��{C�����I?���.]��KE<��Ϛ�ߓ�u��#�Gգ���ÿj�i_����O������O}a_�p�"pQ�I��w?�ugrN�+�+�O��I��.i�>i��h����<�;!�A�i�= ��gh�RE�k!QL�C���#�!�����p#��J���'rH���!}XD��#C�"�tD�%$PtL
�h�I(Tl���,�e�n�c��8�0�ÉgI��G���#$�]��82H��\��6gF<���$+��@��E?,$#��ȍl���D��IK�,��\�erȑA����t�'5�Y��O��)YiJ�2����+��BY�R)���k���	��wx<�0i�UV3��!�f�yBd>��(˼e8�Y�h��,�fLH�Mv��&�|�7-Ns�S��ܧ.���� �)��;jЗ���T�=˙�f�3��Ag��jt$'cF;�1WvS�U|\=%JK	Έ�&]��Kʡ��A�ejS�$t��kh8�ҟV�//8�
\)�ܔ!
���T����"e#I�
T���Z�M_0PP��QՈ>`,@j�QER�ַ�5�r�+]�j׻�5�z�+_��׽��%��S�����<}fV��X��E#-x���$����,g;�ٯ6�A�U��H��m�6Pʩt���Jd72��.��G&k�����.q�+C�"&��bh�L�6)�@L@9���.^O����k��7��]/{����7���{�:�`�5�F\ ��7��@�ܧ.���y�
����+��Y@8�q�@��835��B����&^1�l�'5�D\�;���b��@��*��X�[�#y�{A�Q|�$9�R��alӄ�8W4��5�x�'�ò]2��̕<`$�2�����`��1L����?��ʂ&IB=0�8��;�	 �9ґN:�…4H:Ӛ�4�;��O�:Ԣ5�Km�SoZMKb-�9�N� \@�z�#��F�ۊ� ��6G0�c[��c�.�p������	�@���o��g���m�Q@!�>7��s�C����mDN�v���D6�#�Ί �>3%`�#<�
_8���C<��8�'^<ej08%"=/�z5��.�"�=@#�7�[�2�y0���	� ��:�IB ��4�H
���8��^�BhP� �R�:իn��c=�Z�:׻�{��;�R���-D����Д&RP����8��A(��i>�0��Z�����}C$4�,<`���g|��.�^O>�	�������3
AP���"�`B�5�(���?s/�Q>D ��3gPH`�F�������
,+�N$PN>�)7T�/���~GF�3OaH!2����{ ;R*��33��ܟ�PG�P���`
�`�"`*`�xA+X���(D��9���D��R`b���[
��R0�����*���f���8�Q�B��0���a�"ar�[�
��@	JD
 �&a	@�	��ܛf�hBD���1�B�̀j�����m�*�C���� �ya���a�a�
�
t�C@���-������j�M��>��}\�EZ*�|A���B����%��*�b+��+r|@���G���
�@�b���M�A�����@ #<�h���� B
�5bc6j�6��|@y��Y��
�@�����"@;��;�c<��<�c=��=�c>��>�c?��?Zb�
��H�0��	,:� 7:�CBdDJ�DR$�]�:U
,���x��""��
�@CV�I�dJ��J����A���dHV�@��N�dO��O%�]��5��	ؤM��NeS:�SBeTJeZd��U��dR:�L�Tz�W�eX��6"%��Vq�@j�S��#��[�e\��\VF�f�ĝ��h]�%�@�@32��"fb*�b2fc:�cB&c*��E�h��a�ҭ���eri_f��@&PC4P�H@D�j�.AC�A5L��=+��pmf�ufa`�g&�F��q��"����@��jY6�™�A�!�X�&��Z�q&^^gGT�'�Zd��y�g��ZT��M�%<g����EA
��d'�mgZؗw�V��fjQ\�OC,��\eGh���|��l��F�~[���aihT���c)��!p��Ph�E�3��{p�y�O�h�>ՍR����hD�Z�(��Z)p䨠�hO�&U�Έ#p�2���rZA��]�	��bƔZY�~ĕb�M�����mW@���]8�~�iG�)���G�i�zԠ�G�qw���A��Ҝ��'��D�ءvD�*jFajt8*�bE6�Ҝ@��Ghjrq*Gx�T��ƨnWh�*�������rī"W�nĬ�j<+f�jt�*�*�ʚ�&�F�h�F뱲Ӵ�Ų�V�>+����rk��ֵ�C�jk6qkZx�l�����N�����
S��Ļ�V��k��k��ka᫾.*����>��
,��S,‚��~�:��>l��E��N�SU���*�z��n�v,w}l��lR�,�"��v�j�ʮlt�l���MŬ�n+�r��^��l�,���M�,в��n����c%-�.�L5���+�j���V�V]�f�Gm-���~-<j������v�휞mG��ڮ۾ز���-Pխ��mF��Z��Jn���ji���"�$)�ےj���F���V�]��2k܆+��+�
����n�n����+gW��.�.�j������
��.���o��Oy.��n<�n�>��~+�>�VE�N/<U����«�n��n�/o!����������o���o���T���3u�~/;�o�~�6����D���6�'o�/0?5�>p6E���_�9ep~np5u��߬�p8�px��0��
����3��u�p0հ
[O��p.�0r��/�;���,%�q.1+5����O�(Uqo^�*e��3�1#��h�1*��������!��h��%űsK���1�qf�q%�� G� ��_�$%�"#�#?2E�_N�U�%�
&�&oru2]~���(�
)��)����\����+O
,��,�rղ\���.G
/��/��	s\�?�1O�b.���2/R3��3�T4K�S��fo�bs'i�[r3�7�2?�2�����X���3;ˌ;;<�3�̳X�3�3>o�>'?�3��sX�

4Ag�A�B'4�,4X6�
=4�DK�D�EW��\�Wf�m4G��G�H���W�4�4J�J�K����T���4M��M�N���T�4�4P��PwQ5�uT&u-5Sk�S3TGu�L5TV5]5V�V/Wwu�|�S�u�5Y�YZ��ެ�S�u��5\��\�]���uS�u�/_�q8Ӯ�63�/���g�/bߌ_�`76�vPv6e#�e�fg6�l6Pv6}6h�hwi�vќ�O�@dw�d�v˸6�vl��l�dU
�u�o�n/�b[3c��??v�~@���f�qG4r3�5/�B7w�.����jS�+[�8cwv[�v'�
br��-�t�7��6sٱygp7��wa�@W�w|��x�/9۷v�.ͺ�Z�
d��x{-�r}�W�7�zrf%|?��̷�Qx����c8]v�D�e�qx��ˇ����4���\�E���8��6[pW@�8���߸\��X��8��-+�$HCt�x(��#�T+���%�$D���Ay�����	�j9�d�w��8��&n�!��9��ʍ_���V�™A�F���x��yf�YE(�/؞󹪀�j
�6$��sz�{���z�����z�����z������8��T�pz6��"tġ#�]����p���Oze��
@ @�+��3{�;��C{�K��S{�[��c{�K;��S�4&{-@��rﺗ+��g���D��{>��q��-��SX�@d������w�_cإD8@@���;��q�@@*TBS��@�G����kv�7|���Eeq)��/J�#'#�(�R�u��Zd�ƛ6Ǜ<\v�d��{{3�kL�#�
<™��|"�/�$<�Gļ��6�<\���WD\<H�<��Ӈ�"\���Q(���)=�3=����f"Ex@����c=��}~~��Y4�0����@)�ҟ=�|�;�
@Ť�w[��W7�kh0�dZ)@��~���G$��
K��{�=�	�� x���p~���~J�#y]@8@ <�~�G�~�־�?��_�������#�(?��e�;��X?�J��L�o�[b�'I��i�{���������������ǿW�����)@0Р]A�&T��aC�!F�8�bE�1fԸ�cG�A��h@�w'Q�T��eK�/aƔ9�fM�7q�Թ�gO�?�:4�wG�&U��iS�O�F�:�jU�W�fպ�kW�_��;�)Q�gѦU��m[�o��HPd]�w��ջ�o_��#i2naÇ'V��qc�F�F�<�r�e˗1gּ��cϟA�=Z���Q�V��uk׭��=�vm۷C漛wo߿�wq�Ǒ'?k�us�ϡG�>=dl�ױg׾������?�|���ѧW��0s���Ǘ?��]����׿߱w�P�	��Lp?��k�!������1dɿ9���A�.�I,�1%LQ�Yl�"
M�Q�q�0�q�Q�������	E�,��#�1�%�l-y�R�)���+��qH$����/�R2�1�,S%(�LS�5�ٴ��7�doK0���;'3�=���6
T�A����Co��Em�K=�TR��$��K1�r�M9MLQGA
UT!���Sm�4�UYm�@Ta�u�OG���[�+U�]y=LUW�
VX�z-�X��U�e�]M�c���_����k#�V[cim��o����m�-&j�MW�u�2�]S�
W�y�Eh�w�-�v���ߨ�W�C����w���߇!���)6�`�1�T�+��T�X䑫�㓛�X�Y�c�a>��i�S�bΙF�[��g_�Yh31 �棑Nӄ���矡������I��Z���|Z�ɞ�j�����n���N[n������λA`���@�	/�7P\��`�!�\:�@��1��B0����j���I�N��@��Y_��(]�&;`���A�]w��a�ف��"�����?�o>N4[�驯���`���#+b@��o]�l(_����	���^��!�%����GD!��@�%�Q�-�~V�P
NA"��eHA
n�ze({��Pr�� ��p����,��ΐ��A"�A�B
	 �$!q�V���D%.��Mt��E)N��U����E-n��]���X	 �#���̰��;�L
0�F9�Qn&���@��}� »�u��!�HE.���t�#!IIN�����%1�IMn�����#�(�Z���<���ę�����>(H�<�	�)]�K]p����.�̓}E]�>�P��t&�zi�մ���>������NqZM����6Nu�SR&�x�Q�;��|]��@	�P�f�`�+"�\d3Ё�Q��j0�LHljn��#B 3a��!
�@+:�R��I���VS�����&F��\@A�w��L������!.'T�.�6"D0�mV�hС�11�n����\?ɒ�$��e5kbH�:�х)��
�A*8��]��h�Yd�W�-`� �#:D��4t�0 @����e3X�+���Yю�&*�� 8�J �
�C�p?��3I�[ݪe$�WR�����5�qO���6f;[-0 
��=��]��D.xg��,�,�@h����r�c)�����}iR�x@40��{_`��IDP`/��
v�!a	O����1�a
o����Ab�8���Q��	��4��`:�R�5��W��=V�
L�c!���������E�4 =@ �ѵ򕱜e-o��]��f1���e6�ќf5���m�2�(&T��N>����$��wv���Ub��AfABE�B$D'�A	�����J^=o��Q�G@�E�âQ=�@<Y��7=N��u�u�ȐZե��x�/��5��P6���}lib�+
D���7_p9xò��?do;��6��	��F��zs P��o_��v���ns}N(�������W�W��N��{[���p�q ���p�km��R�p��M �ŗ��fy�Tjl��P<qr ���5��e�+
D��=oY������67��p>tX�|>wzƀ.t�˨�G����>uS1��]7XԵ��_����z�7�u��=\`G;��^v����o���ٞwf�����������Px��m�w�W��w����=���%���?��k�|��Dy��O��~6�y�O��'��I{0���I��q����K����D{ޫ�7>�v?�&���w��ϝ���J~��|�o?E��~v�_}�������~y��	���?��_F�W����~���p�o�J���C�7���703�
p�!�6�5p3�-D)0Y�=P62pQ�2:�E�O�YP4N0mЯf0�xy��.��op�b�P?\��0/d�C�0
�����=�p	�P$��

����
�0=�0Ͱ#�p���
�B�p;���#�0�
�pyId�0'���-��(�����-1�p'�891!$1Ӣ-�
1qc;1��M�,Dq��[�6PQ9�gQ(^�PsQ6j��'v����Q4�Q���'�oP��3����1'��S���1�Q͐��&�7P�Q1����q&֑���0�Q����&��O2.��y �%� �� �-R!_�!'R%"�O"3r-*�"C#?�$6�#��#K-BR$'�$K�$Q�Tr%͢%]�a�#er&s�&mr(p2'�o'3�'}r��2(�b(�2��r"�2);o)��'��)�/*r*����*{"+����� ��+/,�r'Ȳ,�,2-�r�ز-s�-�2��r�.��.��&�r/G�/��/��s0k�0
���s1��1s& 32o2ӱ2-��033cb393�<�sA34In4I�%L�4�.5�q5Ys�\�5["6e��h�m�6.7us%x�7��7�18��݈�8S�8���s��9��9��$�s:Y�:��:�ٴs;��;5<Q<Ǔ��:�=N=s�=ۓ�޳8�S>�>g�>�S��S7��?��?[@T��5�@�
AMQA��4ByMBA�B+��.433TCQ�C3�C?4�B�1G�D�D'EStwVt0[�EGFQFg4wj/oGHG�G{�s~�-�TH�H��H��p��T,��I��I�J�T�w�JEK�PK��m��*�L�GLՐL�tkΔ)�TM��M��M�4k�4(�NY�N�O�i��&��O%P�PP���3Q!GQ��Q�f
u%#UR�R��R/ud2�$7�S��S�TC5bF�#K�T�UsPUW�aZ5#_V�FVg�Vk��1rUW�WY�W�_nu"��X{�XKY�u]��!��YYZ=PZ�5]�� �[5F[/�[��Z�5 �U\1�\!�\��삕��]e�]^�UX�u��^���5&�u_��_��_�^�U�`[a�QaV^v�bWEbӑb+\.��2Vco`�c?�[B��F�d-�c�eSv��d]�e]vP`�evf�ee�gs6Pv�{�goh�Oh��M�6�ikEi��i���l61�VjE�j��j�6M�v��k/�f�v%�6l�dl��lͶQ�V�֖m��mn�vQ�v���nyosQo��N����pu/m��^����WqqDpg�p�N"�&�r��q
s3�K6��:��s?�r[QtG�KJ�Nu;DuM�u[7��tMRv��vA�vo�H^7�b�w	�w3x��H�W��xy'Qy��E�w�z�Ow�q��?sWw�W{�Cz�z�WE���Ɨ|��|}�WBַ���}�~�P~�B���P	},���"��{���ఫ�A�8���̩��ͮ ؀�n�4|�7�1tx�ق=�>*���l����L�-P8����ͅ�L�c��i8Bmx��F�w'.����v�{-�
��x%@�^�����8��
��8�v�@�[��NJ�fl���bPk�������g�L@�H�������9�y�	��
��9�y�����!9�%���3��o@�V@��1<�� ��ڠ�����-��Ly4D@`DA��G ��V1@�"�ny6 {�d�x,�`��`�2n�m�� �Nm���&��'�.�ɴ�6H 
�z����{�:��Z��e�2���Y6F�&������!���:�z�	��
��:�z�����!:�%z�)��-���>a/>�������y1��+�O�8F`�$!�dz�i��m��q:�uz�y��}���:��z��������:��:���v�.�[!(��ӱt9,h ��ڎG
,�.tb�
��#W`��nҺ��x��	D|J�3RP92N���:�G���D����3��+�
����lx�#
�ڮڱr�X,���	|�v@�6�ª�`�<� W@����9�!�u�.2��*���v�2����-
h�1��a����M�(#@��;k� � 
Va�+B^������> �%C��Y�m�
�@���`"���h��{1�̛,�X��mV�@�`��p� hJ��|K�Z`��b.��#|^���fk��� �B����7< A`F�R@,R����m�4���ʬ���b��ǃ�X�@��+"<�^��u����H���v�ʡ3�
�̏i@�F�;+body {margin:0;padding:0px;color:#404040;background-color:#DFDFDF;}
html, body { border-width: 0px;}

div.ajax__htmleditor_attachedpopup_default
{
	padding: 5px; border-color:#B0B0B0; border-style: solid; border-width: 1px; font-family:Arial;font-size:11px;
}

.ajax__htmleditor_attachedpopup_default label,button, div, input, select, td, fieldset { font-family: Tahoma; font-size: 11px; }
.ajax__htmleditor_attachedpopup_default input { height: 14px; }
.ajax__htmleditor_attachedpopup_default img {border:none;margin:0;padding:0;}

.ajax__htmleditor_attachedpopup_default div.ajax__htmleditor_popup_boxbutton
{
	background-color:#C2C2C2; margin:0; border-width: 0px; padding:0px; border-width: 0px; padding: 1px;
}
.ajax__htmleditor_attachedpopup_default div.ajax__htmleditor_popup_boxbutton_hover
{
	cursor:pointer;background-color:#3C8AFF;
}
.ajax__htmleditor_attachedpopup_default div.ajax__htmleditor_popup_boxbutton_mousedown
{
}
.ajax__htmleditor_attachedpopup_default div.ajax__htmleditor_popup_boxbutton table
{
	border-width: 0px; width: 100%;
}
.ajax__htmleditor_attachedpopup_default td.ajax__htmleditor_popup_bgibutton
{
	border-width: 0px; overflow:hidden; font-weight:bold; vertical-align:middle; text-align: center; height: 19px; width: 100%;
	background: url(<%=WebResource("HTMLEditor.Images.BgiButton.gif")%>) repeat-x;
}
.ajax__htmleditor_attachedpopup_default td.ajax__htmleditor_popup_bgibutton_hover
{
	cursor:pointer;
}
.ajax__htmleditor_attachedpopup_default td.ajax__htmleditor_popup_bgibutton_mousedown
{
}
.ajax__htmleditor_attachedpopup_default div.ajax__htmleditor_popup_confirmbutton
{
	float:right; margin-left: 5px; margin-top:5px; width: 60px;
}
.ajax__htmleditor_attachedpopup_default td.ajax__htmleditor_popup_bgibutton_hover span
{
	cursor:pointer;
}
[body       {
            color:#404040; background-color: #fff;
            border-width: 0px; margin: 0px; padding: 2px;
           }
body,table td
           {
            font-family: verdana,sans-serif; font-size: 10pt;
           }
h1         {
            font-size: 24pt;
           }
h2         {
            font-size: 18pt;
           }
h3         {
            font-size: 14pt;
           }
h4         {
            font-size: 12pt;
           }
h5         {
            font-size: 10pt;
           }
h6         {
            font-size:  8pt;
           }          
�PNG


IHDR#"Յ`�	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�F	1IDATxڬ�[�]U��Z�z.sfNۙ)��Zj�բ�D�	����ƚ6M߈!�G�)}2!K��Z�5�Z(2��t��ҹ�9sn���|�}�{�Ո'����g�~�[�Z�_��,"��{�)/e�%f�Yls���a���wN�qz݆�8����c࿃�@@�m��20����q��������Y�J�`8p�k߾}��8Zk:u���s�=WM�$5��)�J���Ƹ�>-f2 Yw``��������Yf#Z�i���*�o����7���8qb
@��E(<44��s�Εa2 2�pz衾#G��h��h�UA#���$�LB�p2=yJ��ʭ�]꽡��|�ɿ=��cZBq
������={�܀iG����=w��_�����[t�
V�IH�8�
�؎��Z�HbiEM雊�kVc��f��7y���O
���BEY��g��=��s#f�$i�]vj��_���M�G��c^�A��xc���1|_òI���6:R��
z�==�tM
���]q�����G�^Ȭ>����l򒘩�����j{��?~��w�y�os�����7�L�����,�H�(����X'�R!F	��Z]�Q����߲�����=v��?�R/Ei�3^�LE�L�
�ݲe��O�Z�%���&p=�6I"�`i��s�-߲K+��j���rB��av}���{𚵑^��ڵ�>��@�.m�0ۗ�}���}=�+�…ag.))-,f�$'��ad�	\'W�~�Ć����_>��-Ԋ�����ql�$J
���T��Iw{���C�}@����E�E�lذ!��9k֬����b�z���#D��B0� <��N�s<),˂�H���J�`4Hip�p,lQ���-ŷ
�7�^�r��3�-�z�Gns���k�N�%(�%%�MI�
\��'y�Nl)%,˂���]!bW��#���Ц8�--E~����={�l�pR��.ʮ��[���N���R���C[������w��ꠐ[��n����RBZN�8�Ua!��U�y�m��[.E��b-�IPp�߼y�t��0u�@J)?'F�pt�uٗ�'m�f�L���-i�d�YP���`C��z�6����V	�.j�"�\�U�i�jM�׶�^7i�e���$I���T�$����\�%y�x��m��}!�[�!Poz�-(���h�Q�?��j��rY�Wjs1�n�|ݲ��/t�Ч�P�^g���$E��p�#Q�._��,}��y4��e�[�y��hP��ǑlF�n4X!㯜���j=$�.ݲY'B�`k*w���o~����D�$���`d��R�Ư~q��5�j�{�2�d�r����+Y72���J�v�0����6�tś�@�"���LL;�`g��H���ݫ���B#�r��������Ѻ�4�	�z�y:v��`&�K�p�W*���f�.�V�1���.~y}co�6�j	���.@H��˂���|T�y{��R]�fHe`����~Lg����'�i��s��F��z�W��3o~���~,�M$۱�%��)��f������&q�)8n.�P�Kv���s��h�Rɔ�f	L�\��]�v�i��x�VM�����г`�i2�&q���Sk��ѧ�ɔ@���4=:�jbff�B�����Yi���̙3g�vスo�W�t����d���z
�~�
TX�*�O�k�d4�CB��q��WN���;33�&�F
�.I�N�������###/�zp���6��w3�O�%�	�KÈznj�:��Z0]\&�n��	��+�D�����Z��&��&��%�$7e�	�v
���޹::�ǟ�v��l�k�^�t��K�.($v%�H�:����@6��kp�O־�����J�t�PMa��3&��ga8S�GZCCC/
]�����{�ZϘ���ÐL`"�����A2!�1�F���ǿ�;<6�kg̦��VzQo�+�ݻwCk��/f�_@@Ѳ�5�r���K�ރ��W߿-*m/���	l���oO���!Q;�����跕R�2��J�z&�Պ0;v�1�.]�J;Mh>�������{�_d���۝cY��~��z������L���Ҷ==Q�R�M�6-
����N�`�@~ꩶyB�~yf��y63�Qꁶ+I�����׷DnV��N9k����1'�/3�V��w�x�]w�h[�)�J�Dy�+��6��Q��Z[u�[�U�+�,��<o	H�:N�
�_t��!�o
�FJ�(�ovp�#�e�?{$r3�e8��}��{�k�h�IEND�B`���PNG


IHDR#"Յ`�	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�F�IDATxڬ�Kl����ϱ=c��_�5�
Qp�C �e%"y	+.���%r$"@�9�$�%r�x$(H	�0�C�q� [^���=؀������+��jzf��i�S?������h�9�79!��Ǥ��*��(9g2���bq�q��q<�P�}^ �Q��� $4>�k���"a���*�K�i��0�@ȱ(�C���ڵ��})�"r����˗/��@�%��r/
��ΎBjt���>}�;ϟ?��eY_�����m�nY�����Ç/<xp+�nm����$��ӧ���ػaR 
@�ԩSNLL�޶m�.�m;�������w����?������)hdd���_[B8���
��-�G��]�f��$U9_zӈkI�@!��bnnCCC??|��_,�x��B|hh�o۶
��,��_kmdd�'���_�1��!0��abs�K�ɲ�|>�͛7��…?�5�@K�kaa��0��0�M%ʭ[�>Z�bů(��}A$�^u�A�s������ѣǾ#LE������̣�:;;��j����,�R
J)!U��a��!����v�ڽ�v2)����u]��288x(��~�K&L�D����q��	@��D;b|��<�����gˑ#G�h�w��fH.:;;�Mmii9�i\׭"I�@CCè�
��1ض���n���}��@MP"��9�3g�������HDB�iÀ���N�x�0(����lٲ�[)��L�]�jժ�5M�2���BQ(�J)TU����u�RȲ��Q:0��.Z[[�����LjzWզa�^��P.�!�2��,!�}�e%J�J)4M�,�x��u�� ��Q�q�Ĵ��jXZ,7��y�,˂�yx��
ZZZ0::�;w� �ϣ���a�UU�!nܸ�q��������>�ر�b��C�4BAK
y)�ˑ��}��1�r����	\�r�.�����P(�=�f�شi�c�DQ�J����g�R�T����===8~�8E�����/�P(���	ǎK�yX�z5lۆ�y����R��\.�[��ೳ�_���C�!`����۷o��(hllIJe�p��u
���իW�T*�V-�J"q&����$���T��a��D���C����6l���(��p]7پMMM��V��X,bzz�e�Us�$AUUczz��q�#
�Ea"lppp��������K����U�eYu��J�J�nl&�A�T“'O&fgg���EWm�I�����ԟ�߿����D3iq]�e�1�D�R��q��FQ���f\�v
sss��7.%�TIR�3kn�Ν�۷o��(�i�o�C ���fh�� P,I�$aɒ%�,�����5�i��Tb-��f��ٓ֌�����|��%躎���dw���qP,Q(011���I��	۶�1a�����={�e�5�
��F8�>gll����/Ν;EQ���A)���mc~~�ib~~>a��<�N�<	�4�`����0N�ĉ�3mݺ<H��u�lGGǧ���{���nܸ�i�T*�u�*�QJ��:��,ZZZp��=\�z��6�;f����'�򙾾>�a�Ǐ��_=.��dY^�t�ҟf�������ۋ\.���R���������͛0Ms�1�g�L1��r`��5o5�n�:DQ�gϞ���@��}c��0��!��w���!�ɠ\.crra>�E��t����y��j��+W&��˗/k;Ѳ����$���;���"^,vJ���ցT�,_���ݜ���mg�x�k)QS��ho��1����Fݪ�-���ru�뺋��LI����6�io�T�勁T��^נ�t�i���_�I)QM�^�:Ji�6}��|���O"���8�7����EM�Ki�IEND�B`��b�PNG


IHDR�*O�-�	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�FW�IDATx��w|S���M�P���"{#��� ˁ�QpR
��QA(�8p���(���lP��]��mJ�6��7I�6Mn�V���z�����}O��<��<眫�e���$$!	IHB���$$!	IH�M�;^K=F�h�(`J=�u�o�r��!�:�,�2��NB��V=X��Q�!}��e����F�oI�d�F��!�?J��$$!�O�F�	)!t/C���$$!�O�V
BY'�v�p֎N����gr��F���r��!vȾC��w;�U����|���`��6ئMk���w�!���P����'?��[�@����e��	���9+�lH����\/���}��i~������KGOs:-^U�N�ȯ��*t�ҥ�s�$$!�!D�����f�3�.*�(�m߾��N�i��r���i���,��u;����7P����V�#�F�jqD��9��(���e���^;�mڴ����b-Z�*{��ݺu������{�h�,��(Kv���sج���f�fS^�v� (�v��� �8n�*���.Ә'{��lND�x:�в�q��p�o���J�*��|G�.]Bll,ׯ_�nݺ���ζ��g�і|�]� �2�,!K�,"�"�( ��$"�vDQD��2�jx�*'��l��2+��|~͌R���V>��D��U��g����k��\�|�?w�B�7�Խ_p:.�<(F���N�����ܹ���,�6mJ�ƍK��=��ÇIHH�]�vDGG�"����i׮m��;pvXX`cw�Z�b�޽����:7���]���`����Î�"w6�'R6��,�D¨�X��~;j�&�4��?)ݺu��q
�~��=�U�V��>��N
�}�=�%o��z?v�8��V�Zy|6j��m�[6ɟ���FY��B�V�-oB�dD	IFd좌]��2v삄��:z����`0)3�$��Ȃ�́���m�A�+z�(����ۏp��]�D�K�֭
P��wDQ`��=���F�MVV:���}��Y���|�%��7�ӯ*:��Έ2�"�b�v��E%��|;��<���	��q�����!��X�V���t:�Z��U����7J-0}�GM�'=GO��]��>�����1�݉z�@��q�_��5�"w���WUwM�t��s�Ou�k˖_�;w.YYY��y�3g={�
Jy�6��/���|$$$0u�T�u�^������޽{y������1z�
ݺuc��Q4hР�7���T>��CV�^�N?*U��O�	��p�B>��3�T�¨Q�ؾ};;v� 77����駟��47��]�O'@�r꿷��UZ5���G����A�;v�v�G5#�;w�rb�hT���	dп]n�]P���u�nݚ={� I�*v�˞Ng�����)-�� 7���<�u����֪dd۸`���h$A/�ì��s�B��hU�BY��i1���tZ�}2�͔�rf�`��ŽC]�͞�ٸZ�)K�SL��usG�>�38�ۑd�d���^�}k�k6c�C�%� �H�R�۩����-ˠC�,���%p�<<�3@�Y�]�l6���KeNf�֭=�=��F���;Fc8Ǐc�ƍ0���L>��Sl6m۶�J�*A��ҥKiܸ�K{��aժU�ܹ3��ix�_b"BQARH�	Ѐ���'>>�﷝�}=�FT�!(��~������he��,n�_��=��A�H��-�o�7|�Z��uːe<��˧��4Z5�M�ų?r�7_���=;�Q���r��믚.]����v�V+���l۶��{�c
�$I̟?��n��hp�����=xYYY<��s,X���v����F���b���Э[7����ѪU+Z�jɬY�8q��֭/�T�R�I�&�z�j�4i��?Lbb"v���0CP�I�&Q�r%�|�M���O����ׯ?�����'��g��9-�ܽ[�H��!֮��͛73o�|bcc��t�R��;���5� 5X[�A��&�x�v7W(��w�_Eff&�	!W$Ǟ�>J�[v�f�۷��?~���i�_�ȱ���_v8���/�.��'��W�m߾���`PP�I��"I��L��j�eQ�%s�̘:sI�g`:`����Ҙ6��2^;ҥ�V�z�gMd٢1[l�A֋ kH��ȗD��:L�Ȯ�Vj��S�����,����ׯc�֭\�~����aOO'%%������€����*-Gþ�
��
ʒ�@-M{R���\}u��x�g��!�V���N%����ä%3T��׮]f��X/�vX`����T$Zfl�:�@��ͻ�/�
�֠9�y�;	V�'�B��N��܏�WG����Ҵ�m۶q�}�q�=�0m�4j׮͘1O��SOp�}���3��;v,�7.�[~x8111�DQ&L�������d5EgFS��cV���	 �lv[���c~`�#�ҳ}̀ف��SZr螿T�	�n��E�7��
o��ʍY�>�Ζ��֯�y׉��� �0x�jN|�>��y�W�z��iv~�4�zt��#�<y�ǧ�R�Q|ͩ�j��g��^dƌ�H�D߾}�ѣ�^���~��}��ҡC�;8��~�:w�q��s���l޼�
60c�t>��S�̙ͫ�.88-�cT�JU@ɬ�V%��*FѴ)���DGǔJY�3kZZLgpl�.�
f�ڵ<���.MfժU�]���>��������tE��qΚ`�3�1uk)�m�l�F�4L&gMg�;cIc&�d����l��K�R]�s�1��1��r��_v]��Z��Ts�gNe���k7eY���
�j3��΍��I��G�gN۷o��%��j{/@�����ߕ{�)i���y)�*QF*G�!KJg +O�YD�EҲ�\�he���Ȳd{k7W�\�w�s�㌌L:���1��������̙3���K/1a„R�	z���ef3cǕ�@e��e�����8�Z��8�g��kU��=
PmvY�%�:��a��Us*�Պ(*��_>�ä)�2,|�n��zO$�Yfv�=��B�Y.�V�ɤ�W^�T����G��=�h�͊f�S��'�I���#hZwE~tDD|	�i��,a0�S���?�s�N�O�Ι3��zQ?~<-[�d߾}|��<��A�נA�����ϼ�52�$#�A
�G��O(x�9G�1	I��pvw�$Fc��$0U�h:Չ���ӥKE*&xN�X�~?
o�ʂ�+�8�	Q�9y�&�V��=�-e��ᷔe|��n�։��+���Q������ל�޽���baΜ9�����9���姟~��ŋ�&55�޽{ӦMd�t���;2}�tx`(yyy^;�רP�B@׻|9��__HLL'NTiP��}���eM�4q�������Dž|�2w���~��:vTڶm�o��w�}�ܹs��E2�ŕ{ɒ�4�'�Lb׮]|��GT�V-��荭&+��j'�跋ϜzcLJ��ݨ6�W�x���w�Czz�+��C���16쑀ʝ���2x(#Ð�C�Q�}g�|��ڕ��r@}p�6s�fT�p�K3Y�lw��'��/sڪU+�4��q����H��]V�zs�Xl�6v�'�|8�#�h\#�
qaT�� >\���f��C'�ɫ���%��$'/�W�^�|���r��:�j�t:�j}�aÆ������O��C�j��m͜{�$�@�ŵ�-��i��t�%�z�rt��Z��{�����G������b���7@ug[m���{�9��Y, �v
I�h6�	��L��b���WOq��u|UQ%
�}M�Uöj��ڳ�zr:o�ƙț
ص��y{��>��������yq��s����a4��#���&<�g�|����`g���︳�L��Fu��eٲe�/_�3gθ��[���eQVB��TTF���d:���#��.Ȉ���\��:�a�n��>X�L;�x���Q$0u��o�ѝ��C��A\�"�J4+^w_+�ę�\�rM��d!	Ulo��[�2�<tX�s�_-��q3����� �[�z�i��yyyT�\�v��)#
����o�V�
�?&33��ަlT�Z�3g�Э[7�
A�R�bE�\���reffx��%�~�-�,s��e�u�F�V�<~����[
۹�IӦM1�>�Wϖ=*��e��=_l�N�رciҤ	IIIȲ2��x�[t�Ё6mZs��q�Ν��Obb"ӧ�p�5厉���'�2o�\�N�&�Uu�w�����.Y��?\��_+YY�'yo$���d��W� ��uP��z��A�)
�9{��u}��w������p8P�7�ڕ�1]1a����xq�]�v�
r1�$�7$�ڵk>}�,��ˆ��!��;k�V�a�TX;Gv��[�]�v��A�ƒ$�fSǪ�h8uY\�+&h���b�^+��%>�@�z����ZE,�!_"����u���7��˲d��+����hР!� �F��|�
4h�СCY�t)v���`��_0t�|��g~�[n�{g�[�xϞ=�n�Z�
z�ښ.�px���6mZ����ˡ��}��ӗ��qgy��d�r�'�A������jS_j���X��. �2�ū��]�n�ZX5�4oF������>���V���)�N�~d��<~��:4�����n�e/��I,���ɧf�ȉv|�V��;���+
�����E*��
����� ���2�E`�jk����i��
�����KR=�6�j�TS��:v�؁s�_ժU9t�?������;�e˒�-��>����s�@E�����`�.�U(R�M����vIF�Y�������������&��(0�]�S�6ߵ�}�鱡G�h4��?o�V���@Ĵ��;<��N_4�����z�+8
�w���5df�2�oY�z-Ν�b���|Ǜ�^s��h�x���yyy���F#˗/��vM�ۼy3�ʕ�]�vddd�����.ͬV�^����n�ʐ!C\�rV�XQdT���T�����w�~��ѨQ#z��Ʉ	��_X�r��u�Z��.�N�6m
�������T�ű���F�s�����V�A�V+iii�ك
*���?�`�ȣ�>�����m��k׮UU���\�{�]�T��ڵk�ի�����P�F
��S����DR����òe˨Z�
W�\F�g8
�M�����0;�;��X���<�մ�<8l�˶��Xa�M7��3&r)5���V��xg��KX|�����&��Z,�k��^Ý���f͚^�q�1-�>���{	0vY
����V[�.�v�Z(N���S�5�ԑj���qw�Z��zک�:q6��
�=)Oǰ�iY?��="P�J$��i}K4ͫ��˲d��+WҵkW�T�©S'	W:�˗/�M�6t�ܙ�����[o���ytE"Q]7�;L��$Ҧ���D�m��eݔ�,��{Y�܅�Bg �k�nڶm���b�߁�(���	�����5���@�Y��������Ҥ;x2y�p��C�g�o��"�i��k%0�I��M,M��C'N�sg��J�t|�������"譴�И�w![��x�iꋐ�g��ؐ����`�6z�^�;���
����Q����:fbx�щ��nZ*�O"�)��""����%��8�D���W���%��aÆ�r�J233hҤ	���lٲ�+W.�`�~��G�{�b�p}L�|��$���h�PW`�5�:�����kG�uۉ/v���Q2�V{�lwqfJ�R\`��'ğ_Í��|��n�-G	Z��1���˳c�)}�C;7���S�o����5j0s�fΜE�����n<_>�'��iaxdd$�֭�Z�jJt.X,���8w�'O�d�̙h�Z,������y�Gx���IMMu=Bf���$$$�ޱP�=XV�f������KVVU�V���D_�ݡC�eJ�3�d�8v�:u8~���XZZ+V�=j�(y����<x0`ݺuL�2��+2q�D^}u�>�_�5F�����ף�h����=s�L�����O�6m�g�fƌ�Zۤ���igۛ7S��1 �DGG��C���̃>H�6m�z�j@��7���<�;��r�����T
��R�J%b��ظ��ƕ�z~�Jzf>X�����gͩ�_���Ж�5|}V�k�6XR���� !�\�Qr���؅S�5����zK�\��`���˾���$
�u��ǯMa}Z��qsߤQU���=Ǒ�2G5J�4i�$�W����!�����:u��gS�_|�/�]���
�$�z�j����:ub�…4��
zt�68��k����t��a���HɺB�ΕU�ۗΜ�
Z�م3uTa7���y{Ŋ"�v�U�/^(2l]P��Nvi�3��-}��zLՈ]���v�'W�IÆ�ٻ����eE����D�v�.!�2Bn�;�We'�绤���?�5Kk>Ÿ�^�|��E-�q��F��e	���Txy,a�R�ܠ��&�y2�۷�×����[����Ni�ׅ3�j���l�F�ȑ#Y�l�w�&::���4^~�e�ڵ#**����R�OJ"�(`dd�ۦG��3X�
�����$�V|�q<@�����W�T�Ѫ�; ?ς`�c�¹SWȷ�2���E�Kb�;��s&�ÞX�5j(�`�c<݇����K���-���ԛbdY.��T�Ѱi�&��.���Gfff��u���n��ɓ|��7>����h�T3�}�~����|阘5j��b�j���^q�k׮"�i Swn�FJ�w�^֮]�F����?g��و������	u�gƴq�&\�r����ʮl�۷㭷�r�3r�H*V�HZZZ��~���Lnn.~�!�$��#��������c�!I���ʹ�V:�?ȅ/Z����\֬YC�*U��o�뮻���x���,&ޙv�j������O+m�(���7`�&�=p��?%%�e{��?�._�sp��5��:��K�.�>5�Z����y%�0���.�F����!�zݛ^!��f澹��S'\���V��|��'��ŹF�Ǎ�ĉ]�f ����ȕ��g��T�A���_�۵kǒ%K���{�W����X�ր۴�_����(�3]�&g���f��cF=��^�6Mmh[�.���]�R[�Ůj���b�Ô������*M��ߒ�d��*�7q��O�P}lv�6w4A��9ھ1M- �|&gO�gH��R?����bG���_��Q��@w�ez��:��yD�|�d6Av6c3��9�O�W�v
ggQ���L�8��C{�H���%c�k�'.�ԫ3���]Û������W��zu���$��/
����Ļ�˕+W�:u*���ddd��h\3'�������c��W;PW�Dt ��5<ׇ�����䂴�,
�a}���KYZ����U)0���s螿�yu3�������xnNB���/�ӥq6�kAtF�V�����%;�CG"i�ch�q�бs�b��s�X:���|�u<�>��5�jw��|�2111�3�ٌ�b�]_��9�5k֐���ʞ*��f���8�g���������ر#cǎ%**
���7{�|��դ�����A�6m���)_�<u��
�,ŝ��i����y뭷�իcǎ�E�dff����9*T %%����V+		���Kim6�+�ݾ}v�ރ �]���r~?v�X���1������o�Mbb"V�����t%0�n^Ӏme�̙�����'�0u�T^z�%f͚�T���VއFU}';��j�4��k϶U�����;�x.��XBl�l�̩ڌ�Z��%e^66�ďt��.���lիW��j��xv�H~޹��6n`ܸq<��C���w�}��n��?gҤI�\���ロM�6����ݦ�L�Ǖ{\3��M�n�O�>��@�KDȄ	x���[�.f���T}�#�߼���h�W��ߔu�UILL,V���o�X��#G9�_洸�f΄j�W�t�ڵ4[��|0��VI�J'��_]��K�]�oq�����0����X>�W@>i�"�<��,b�a�X�F�Վ’���fCp�}\B�Z���덯�]Β���@�����|��ܿjWZ-a
�U�46+�ᅥ����;�E��tt}v}�D���w�$l����#�Ճ�.֯__�]�;�?s��~���ǣ�j1�LARIچ��X���[*W����ㆇ�I��!..
��qd25�9ր
�l&J\#�$K�����b׭Q�yOw'<���X�sL�Z��T�}��[�z.f*OI���$�<�{��%�o��u�@�Q
������|��E������zͩZ�V�e���ȲLnnnP
���{�dgg�(�%�cbb�ܹ3�7o&>>^��O=������v����:��>�F#�(�ʫ�hE�T�S�:н{w"##1��瓓�����qN%�z����x;��p�v�<==�~�GiP=���?��5�U�{ɒ%Yّ#G:����F���bk�_ܽ<z�(��5�F�h4r��IDQ�رc.�{EԴN�jv�~�T��o��6�{y�ʕ��������V�
��̜~���<��0zqe����Z����jղc�F��~<��d�X�l=�(�����QFdd$�$!�"M�6%66�k׮��e׌0����f��
.,�322�:u*�5R��,A��qqq?�� J�e/wN�G��滀��iU�U��N�7��^zcK��ʘV�V��6o�; �7����o����b���;O����z�O6�H^����<rs�<����G�ۑ�ݶ���'�o7y#͞�e/�HG4���h�F3���^��I��U�6��7q0=���zձ;�����_}�3���Nv�*U=����ނ�`���������o�����q-����~��:0��|�oi����V���%	A�	A���EIB%$QB�e@F�$�9���X��R-�X��ǜ��sW��S�~�y]O��H�[s��6�l`�E�7c��Şw�kW��}TϘ)�����3���կ9U�V�Z�����5���V�
jW��6����Af�9�rw�s
��������(�o߾~��aÆ2�t�6��w[�?~<111233�����wߥ\�r�l6�k���{Y�
6�^{�n�,�W�*�k����^#X����ȠW�^eLղ�y*�S+��Sih�ZտE
��g��V�j;“'Of���̙4�G��Z��"���S�|y>��3n��V�{�96o��}�{Ѣ�0�����πٯ��:���Ef�H�DLL���
^z�A��O�FF��AG��sO�ZԨ|
�!��۵�d2�x��4�7q߹��ݎZ`lov�~LM�W�l5�(�9U�6���"�����)�ae�r}4�>S?�/�}�7�w̓���mo�DM.���F���H��EXF>G�]��{��~����؟�g�a�]���"FD
>��Ujp��{��Ǯ�*;�ԗ�5�%�"���:�k��Z���G�D>�)�}'�c�[EQ�#����%IE���Nm�Vb@�V���e�v���Q��ы���ʕ���7[�d��\
�� �ZR��Q�AӠ����Y�ĭ���4�V�O.=���_
��፽q�FU�p��x��rpZ��l�l6{�Vm�߼�e�w�Kc�4���%�F�:	�-I7n���늟�;�*Tt]C͵��f�"��;X}g:�ΣsڣG*U�ĸq�(W�`3��G����βe�\Dz��y��W�T��cWsm@��^[�:�y�ԩS�;w�_v����RZuU�X���第,�Z-�UD��c6�Uef�$��vI�S5�3Rk'��o߾lܸ�T�]�`�J�m�;{P�[��2k��L�
V'űW����G���\F�πxw==~L)�~�*�����$Z�u�P���kja�j���lhuz�eW�_+-[)�_��i��8&����N���e�>u2�#V;k��-���?sfs>�<3�|-]^jI�R�kN5�
_vn�SZR�\9
@ff�\ڿ�ɖeYv6���.K���!v�b;��`��A'&�)��vH��r�+WN�?S�@�e�	��Y�
��7��l���:�Ӳ����b��!v�b���lI��2�-svHߡr�a�:��������!����Ӑ�$$!	IHB���$$!	IH�5цT���$$!	IHB���$$!��E��wd�tZЖ�d���Q���!v�b��!v�b��!v��ϱ�Y�I��/�K�F���0/��TB�;��ov�!���!v�b��Gڴ�NB�d�]9L��W0�;)�F��I��옕���!v�b�lcH'�� ��KB�C�
�������=�/1I��� �X6l�:ybvr@�
��l'k�Z��m���C~��F�C��w�+׬lߗF���Ԫ�X�嶛N���Unku�����W/PaªRN� "Ly
+�U�!v�b�;��˼=7/�.��WV��{U�I�R���R�����>+)�����<;��yT�1P����,"���a#���8*
�O�o�$�*�[�q�G����C/&{t�?|~��JŲ#e����ju���$ =��]2�L�VSF�R�`>��*`�Xmvl6��n�	��j���	��]��e,[�1��y�7Q����y� �WM������	4�2�ˇ^L�z��Ws�V�_��0�x8�&‡k���<�W�J�έ�su�9�Ė�2�k%Y��%	I�EQ�DI�D;�("�v������Ҁ���q��>5+�ߞ��R�O._�����VM��F�g<?�7uk&�Z]e�:���*�~cI�����Σ�2��
蝣+�aJ��ady�����|�ըD�j��Fn�c�})�S�A�z5��W�-w0b��5���/��ż��`�l�ٜ�A�^6�W	  ;G9��K��������bFM"�Z���]F�e�aT�X��N��P�Zz��?�'�3W��\�+#f��鏡Uѡ(b�����6�ϗ����v���yk�ڇ;۠�d������w~8�v�L
��N
���ڸZ�.]�L�^SFv���Zބ$Ɉ�� ��E� ad��	��u�	�g�_�3F��˞�G$��^��vꭞ��xr�F�MiD��k��#�F���7.)j��M��W�.UV헥�;a:�4z�~���S���Lxy%�L;��r{��%�������χ-���F��U�9/"�(�(� *�nQl\Q��ͷ��Y�x�'��g����rע�*:��V�z�j�4~�
��h}r)�ʯ�M4�W��=
�we��
��l_n�����Ę1�u�<�?�V��H��!k4	D�<J�i�[���S����tŴq;�M��d���j5Lz�'����[�xc���)~�	IRF��#H��+��
��*�6�[9x:�y���֍�i�1��\��=�P�j����r5#�/7��m���fbѿK����_��bBC{�a��s�?q�<��:U+������1�19���`%Xv��7r5�¦�Ԫ���}�*q*�k�v��G�yScU�_y���Z�̠F�|��W�X�P�Ѩf;�-���i��r�e�{~
��vD�養}b�@R�pGe�nA����]dTT_z��$l��$��o�U`�l�lY��l�2Z��$#"#�%��uh�e.�YhP#��ژ��O׃�V��}ʷڈ��58�{g�[0�ut]��/����`؅��͞�ظ�)]�ƫN&���Q�Q�q�:Q�&�IIV:ϻ/��޷FpK�f|��*DI9.�2���[���`���*[/��
a�颈Ԛ���2SO�y�xpP56+�vQ����Vk�Y_r��=6٣�[� �۟IVU���Gz��8v�<���I�nm����w �"���!�B�*lЛ�GG�7�n��Lt�b�$�ܴ���.S�W����5�j\��Ȃ҈2�@j�H�d��p=�b9��"�Q˾�e#*��۽��:���/}��4+�weqK�
���9���Dj�o����i��W;Q{��e�L����_>���Ѫym�/��Ӽ��v�޴����Z[�
N�F쌚Q�j�
7���Y^��W 	 I2��l��1���fX��V^vn>�|�/>և�Mjc��0���"��6���y�9�=�٩!�n�F�UY��ϜI�����colw�Q)�	�z�Ͷ�4�S���#1.�V L���4�3��G�N����Ј��ѧc#v>�̷7�l�} �,�g�*�����$:)��.�ʽ~���9Ƭ'�4+�l`�n%b������e3]Gm��7U�?�d�ۯQ�Zl}f��;﾿���L&B�H�=}��/��T;vf/��i�H�v
,�c�!,Zχ_�P**���cX���7ǩ�I�����Ɇ��x�j���4-�Y���t
�l:����I~�}�.sZ�lg����U�k�W�Z�S<�V��5(�>��@4aE�/
��o$y�Պ�k���\5�+Fc���5 ��A֐f��/�Du��Sg�TNГ���>)K���*?��O{~g�ړ^������.�zp��G��M~�u�g&I
;��/~:�Ω��d	����v��"����5~Y�l�^SD'�|��iO:-X���ǻ������a���3#�諀m�
Ȏ�T�a��/1��1LZ2ёM�v�2[�X��z�����sw6���Z�0���:[��ޮ9u��d�W����k�<���)� �G��Y���x"�EN�;1=��vQ;��tr���#��=c��z��}'�����m��r����m<��}�֨��{���+J��;;2�ѻ�^כ�?ڿ�k&��ۭ��F���W�{)J2az�d	GFSR���3�)�M�1+@�p�D
v��X����>��<r+=���]X'���)-9t�_h�&�웫[���"�7��ջ��,vIg����ׂ���D���sGe?s5�?���#F�a��e�˄�k�9���t�ѕ�g�p��e���o~�I������0�bdan�a������a�y���H��mҥ�M����C���4�N�c��;�����ɳҥ�M���f,V;��?�O����ǛY��},��^z�F�! ����j�c�UZ=���հ�@�:��4��eT�w�/����N��Yl�TM�\w-�rG����Bo�{ooη�`��),�<�7�`��x��a���g���iyt���u-��b�5��
f^�_ ��2�f��m��O�d2q�t��3f�4fK��{˖��t,��Y0g#�;+�����u��j�bR�޴�	l*LF��1b��˖eI���Z�kP+�kh�`�}�Z<ƕ����h����)��̘Bǀؗ��4�W�^}G.\˗;���x��&��˱�RU��T�C���@V��5��$��eٹr��ߕ����e�.\W�lVO[œ��sEA�r-#��?��t�Ibtf�
�L܉7?�B�Mx㳟5�#���:��}6�kv���1�v��
��x����I���I����)���p���%dk��G�S�Z��8�g��P�Z��ɸ��#|褀m�Ȳ�(�ԙ�
&��S��VDDQ�O�0iJ;��������vG�Q�'����mv��X	*V��ֽG�W��Y���)r�N rÇD\8B~��?4	CTT�>�>�י%,���V�ϲ���tJ&N��08��
��Ɏ���1f�/^���L%#�poZ5���#g���ya����
��I�HP��9�s$�O��u/eYF�dd4BA�hw�	�6g��:&!��"�Q�pvw�$Fc����~S��=Uc��K��TL�<>_�~?�jwe�ʌ~�	Q�9y�&�V�>~T��s?ZF�cX��26���V�Dn�W`ڨ�j�)�ԣˠq4TΎ�F�O\��y_`�<7�'�[�G�2Țo���IM�Fn�9=�H�]�}%�:�[קe�j�.�Ԧm�����fF��|�AStdWg�T(��M�f��v�#���	Y刱?���i"�ah4�~�Oq����8Ή�4�	��W�3:��g��=(�S��
����|��?��:���`0�*��g�2���}�sv>�3GP)1]�#��)������]��l�ߔN�e����hP3�>�re�@��p��f�*�t=C�VuHOOw�X�&���G*wZ�'�K����+;q��j�]9�-L>u���9ayPN�˒$����-�o�5��rΘ®�[�`�l���C��=����>6��t��6˱��m�<�OB�p�G�ѸF$�¨A|�ğ��?��N����jԕ�,م}���wyrP}��A�c�Z�{�]th��ڝ{o��䯷3u�w��=%ow�rdU���dU��,��
�w�/K��7�Y�Q�v�K���ȹ��
�sp�x�sN�-/-f@�>��'��}�;SG�Չ�& I�������mאd�fs���D؎ �ٸ~�/\G�Q��#3����A_2��B�Y.�V�ɤ�W������
����Ľ<
c�9��F3`�^��Q���ׇ��o�����Vl~l��}@�Ӻ�;��Q�hX�o�Gb���W�i�&�9���?�Y\�u>�C@]%�"���A���v���tdOEG)�]�E�X���>})�䯎2~حD�f����v��6vߵ�H`�<�9���/�uV�#�ˁ�S�_�&�i�C��I�%/�D~N�`Q��t�N9��?^���hw�3|�����Ζ��y|҂R��+8��n�L��o�S1!����#ڕ��N]T���\>��X���(�7vB�2j|�J횀�rs��T��"-+Wɲfk!��xc
޴�8��3r�ج��WC�,���l�l�=Gλ�S�6�<����
��m*�]T����i;�큱m��G�h@�ƍx~�z��/?ڙ�͛�g|2�/�f�g[X=�>jV���Ɉ:c��[ΨA�X��F�۞z�+#�B����I�v��v�A�_��<9�/6�&e�A�O�EQ���l�`��g�Lp������V�@�^=H3��?�cϞ�.��X�����p8P��ojW��tń�bR]�o&�7��V@��إ����W�=�3�9(��u��@��:��o����ۅI�����;(]�N��Ŏ�V���K|��������c��X$-B�D�;5�DgT�e�v�I�I�<9�>���'��\���x�n=Y��$v��h�@���١�y�s��ܯ|�|�~n2<�k�Ȫ$�OVm'��ݻwR��E^+�B���٧�
�Jyf�@$Y�W��;1ٯ]~؀�z�RcOz�30���x�6���� @9�ޜ4§N�vQ��.^%=�
u��ª��y3�Ԯ�����m|��/�N�t�#��XD�E����
�M��do�V%+U��M4�`��/����)�b���S�I�z�l����@���J�'��H���q���M�)w�z����s��l%(��t�<����6��R����غ�8��7�
T/͑3Y��>�v�=؇����S��r�|[�AID�Ζ:�Eg��*�)S}풌$
�c}���ll�~�~�n�^�r��6�<u:�-h�]{���z�F�ʜ��Kk�
_ bZ�D�ǿ_�/�����|=I���yw�q��?}����\��-kW��?Oc���:�8�)Qp��9�z�)�3�y���4o~6A	7�=Clt$-�`�Y��]��*�tw���P���Hv�u���[q&]��O��F�=�j~<���V^_l]���=�5�B�j���������a�Îg�XPnul���8O�:U؛F�UqI&h�)���L��
�Ga�Bfl?����n��O'���O���o���|h�/�3�K���MHf�$U��,����ų~�Z4kN�=	����N���ʏ�g��5�u�</�F�
q�zJq�`�&�YL�L�����=���?�)��]�a#�xԡ�Á�c"��	����}�
�g��3���e�.9@|��h|wX{�{�VcO
Z�o���cM
�w^_���I*5��&ۙ1�]LQ
[��qϧ�b��n>��H���˾f�ova�r���I�%qw�����!�v��O����{R��a�%Ҳ~8v;�zD�F�H*%���hj$U�eY���2��d���@��-�~��<M<������ӪyO�MH���Ť�W���ڝ��mE��L��ۘ4�AK�����ٖ�YW_Y_�2L�LIs��"Q%��_\��ƍл�3P�ׯ���ּ��{>����g'���7����D�{����p���ۇ��,f���ExS�v��"	?����G��a%)P��]ɜ��9����Ҳy]��V�}�.d�cB#�<M}r��
���7�z��I�)�'z#]��!�?����c�%�/��쫬o7���gG�k��uL�yz�3����ED$��
���)���L�9�9qt�n	�t��Tt:�3
�/7W6,�k�?�niw7�l���WlT�ވ�k��=�k�e�=5�_�������u:)\Wy����$��,�
�S����1-�&^;*��`��z5�!�dJ����NTt���@���Ʊ��?��nD��c��q�o�v�Vkm�yv���XY�C;7���S�*|��w\}�0s�fΜE����w��2'��|��S�VY��o��@���	It�m���AjzW��?�'���z���e$�+[��ΝH�aּb��#{�F�D��T��`S���E6lʃ��j�Y�T��F�XMIӋ���tp朒5mR�"aD�)�c���|Ǯ��I���ktk��k��!!.�FY?��}{�J���:�����?�_�J|��*I�u#**��c�#��|5�A��0�~�~~+�
GP��~ʽ�ω��F0{E
o�£�E҆#�0~�F��-�~�'���Ix8��vf���ң
=ZV��J�e(�R��^�8���Yޙvsk���k�y�	��Oư����o�s�r�s:���63�e滧1YL�}�W�WX~<�
N�D������|祧�h[O�5��/=���W�4��*�ࣟI�%�u�V�qJi�Iy-l��e�z!�;z��4�:
�r��^:��9U;L��Nlry�$���6���sߙ1�FUeV\��/ւs����!�R���_-NB��3�ݏt��k?	���Eo+��� y��&�Ղ��;��d�<܏έjr�J���u?�C������d/���N��M�yg���r�™��A��{��:�A�����8�wO�T�������~�ĩ�^X�g>�D�b�@�]l���?����S�^�+C
���x����p�e�i�nl� ��4%�>O�.��
��w�	N?ˊ�������"�]BeQB��b#��(���Fx�ؿT�)���_ư�pׅ/1�3��"�V�Yd�w��m��F��ʺD�C�3��H�����%Zl��a�F�n�c��F�k�щ���W$�����׋�Mj컸���3�����ؠ��s�d��u�|ű�'0��[�x.i4qF�U�5b��y�;vч�h���F��
�|Gl���q��H�_p�R[�����$ۦ�c�[F6@���8ט�ʘj4�z��e~��nǠ�s���o�e����ܟ$��㠝=g��:_�}������i����&��7�����sd˽�K�#���r>���AV::���c���۱>�/;v��lQ�L�8v�[�cʼ̖=G��k�6�pӳ!5SaYEe3����؅w��2����e��5+�5��Q8;L'�V�թ�^F��,�(�n\Kٜ篓��mϟX#���M�}%%hW�n� z4�2������1mQ;���<��ܢT�-jжe��s��9�4wu\�u���؈�j��#��{z������-�ݳ7;��ro�_53i�&�[80 ���-;vS�|?�~���݂NG\xAe��M�L����7Sܖ[1���p}`l�gz���7��x�_5���W���m�|���I�������I�l�@�/�1p�RA�].�}�:UPW�F�;�{�̘$�l�.��:ݛ^a�y^��#	
֫3��4��{l2��
L�U����s��E~�ҵ'�۫�&$3g�@�7���W���۴w���C'2\�g=s��A���d@
�z4!#�6�٩(�W��̩3����k؅�_Ͼ�@G����{+����A�^�lo:y�-O;\�|��%���*k��CF��%@-�&���!#T���.��&h42G�7�ɢė������2�[��#��[�v;�]�뿜��f:��}z��{���Ul'~����yfz\L�N���N��%I�kta��9 ��T�IH��}��\3����"�fs��D���p;��$��P�A��z��3O��wq��/s��+x܋��<Rg_��勵k������P.�NW�˹�J��	!HE��+ح���]�z��g�nw$I@D��ZS�s}����I.�-�B�m�/�]`ס+T�R.`���3�Z��C���ͫ�y
L���?����Cȶq!S���x�4Άp-8$+��`�Ò��_G"i�c(g�o7�q�I/z��2�g7�`�(8
��0%C�4.��`7.�i�W�ee��~m�̅<�b̂�۳�
���6~ڱ�5���8ר�s^w�s�آ`���Ԃ�D��EL�Y��������6D� W�M��t�:��9�h\��w%6��*E�%�r�[ϓC��m�|�~;��l��;ӾIΧC�A=;\�e�9�7�{���j��AˎvA�j�S�\4g3���5���$��ҳ���/��r?2�7��A��fA��pޜ�� �
W��Rz�fob��]�4��W����pV�8���|Ǣ��c��ƒ��hG$�m�}�˨Be����Z;�.�F;ؕc<_r��՘מ�k*u2r�k���ղ�Ô�ڝ�6c�ߎLo�V�{���o]5�(7�)i=X��^���������֠�F���C�n`�g������Oy~�3o���K�i���	I�Z��ʙ�8�8���Q�h�.��ԫF������O�O�	ɼ9~�n�B�IY�L��q[��H�
�̠\r,���>�����Cxxޚ"�9�2�vϔN�����کf��$�T�Pv=��%�Oʊ��6<����>zt��4��Ϣ>�F��Q���f�� �`�#?ς!�V��Ukd\�(,�9�m6{�Z-	-�aٶ��L�u%�%gW7����BN˄�l~�z���#D�}�c�@�^���é�^;ßiy�N|�r�*��v+�͠ƁM�Y=��O.!7"�0?��	�I�x������SO��$�s�K������7�o��q>KՠWf#4J09z���_�Y&B���+h�A�s���~l��wg&Q��gYO\�lwD�i���c�9��Ea5�L��`#G;&8�����FI�Ѕ�\	�@�uk�c���	7�vڠ3s��I��L�_~y=߂h�s1S�P&Df���B�Ō=ߌ֒ͷ�r�u��Mt'Q�ſ�;}���ҫ�7�t?�U<�D�id�b�aE���똌a0�ζh5`�U�.yvz��{`׶d�fcT�};�� )�̎0R��:��:��h�<��F���,�;z]��ܣ=1�( 8w��h�:�>�r����u�֢�F�+A^�Y�\�:�t:��
�r���4F�:��'��F��a��}���Ã3��{a���Q�jS^�ʷoT��O��L��Ši�xt�LY�)�������.o'g�P!b"$��,�h��]�۽Y��ޑ����Td)���J�a�^��%�=�1�*���Z-1)�{y�*<1[�5^��0�i�ç����I~�juR�ڌ�;;�{�{��h
���f���U��ى�ԮTv�:�5�S��������U*�a��hk� жyZ�ptb+��끳+��ʱۙ%-.@�wSr�J'5��|�r/�A�I#���D	���꠪egk*��Ť"~�/s��^�vfL۵�s�����������ɜ$F�R��7��n
�,K��mxn�<��Q����^پt�j��6���GnN��yy���v;2��yeٕ�s��[�<�><�r��r�4��8M���w��T�fj͸�����V�v��@�ѭ����9�:�Md�^HF���D1���R�ނ0�U"�W#LVg�NY�R���+��O��~8�"��ԋ��~��n?��������#N������爍�B�$IB$QBtLO%	Q��D���7Y�0eg��&��Z�� ��m�{`�ܕ���T�_^2���0�vk.��
����f���s�J:���3e��l��w���gǨ�_��%
N#J����s��}��cNq͊qh4`����ز��U�N����%��6�R�$BvNA�eY��P��ϣ�%ak�i
D�
.�N[�
��#Tt�ߛ�Tb}k�懗��}�7$�vm���{z�����A��pVL{��He-�usi؉�0]��;qNc����Hdq��\�?��Db��k�}%8;�b^q*wr;q��t�V�����2�j˭���OR�w
��Pָ}5?��蒳�T��V��F�t�ԣ6��&����0=��i��<Zp|�S���@ؽ�&sۀ�5O�a��>�Ǵ^5�7����u�W��1�_���:�t�Zd`���Z�۔�U���g�Zd\�� ꗥ}/�������_�b�R��JzV�mCY����vR�A�5nm��]Ԩb�'D2s�	�S6>�LU��f�g�~|��L��do"�/�?v^�3`�D��#�����d
�ƥe/Ѩ�X�'-��0�F�ӻH��C[�!�q/�Z/���jM�x��ن����{�T��FY�^o�s��S'����]�8p2�݊(
��I��/	H��(:�EtZhРݺt%��]�e�vo�?�FP���	�ы���ʕ�q���
&3d�j��I֒z=}��D���i�o,^森r��!���gN
��q�ŭZ��В�t��љʕ=w�
���|����r�%[�-[m2�t�褤l�]Y�w|-���Ag�uZ\#��%��:}��/w����eeMn�:��f;�^z:�ǎ2e6�^rrc˲Lt��g�[?�L�<�z 1ѐ�����J���_�\�����b��puvr��}�Ryæyv���}{��"��U/>L�J����W�浂]�ue�ՔI�k�e�$V �\��e�&��� �Õk��+���[�r
kde�h�u��)��^�5��_�|2_��T*�.K���AS�-#����ӦC���bw���V;�ר�ܾ�іL��s]�r�q�1�$�z|������djM|�X��o�NwS�fF��[�J�W��5��ӑ5~��h��o�����I���KxX��$�s��S'���>�Y�}M5�]�l�f�Rg�:�����?���y�ʟ9�9s�s^>��.w�o��/K��*q�4���պm��L�:��4��%�S��#��m�/`��`��6���b��]���ѯ�|f�/�&VZ���J�]�nvkK��ڲH=��܌�͊��s�W�u�j�����'lPt�	�u\��ր6�d�o^K���W�N}�[��1B����N4�
{���Ų���`�U�Rn59��=�5��������0�:�6#�a3�@�)��ɨG�����ub���s#gNot�)+v��d��/K��%N���Ô��s��p�����y��b��!v�b{���v�1��;��-يNQ�ء{Y�m�ҟ�fDgG՝�~"B��˾a��н���5��ȢC���$$!	IHB���$$7���yi�i�6IEND�B`��// (c) 2010 CodePlex Foundation
Type.registerNamespace('Sys.Extended.UI.Seadragon');

Sys.Extended.UI.Seadragon.Rect = function(x, y, width, height) {

    this.x = typeof (x) == "number" ? x : 0;
    this.y = typeof (y) == "number" ? y : 0;
    this.width = typeof (width) == "number" ? width : 0;
    this.height = typeof (height) == "number" ? height : 0;
}
Sys.Extended.UI.Seadragon.Rect.prototype = {
    getAspectRatio: function() {
        return this.width / this.height;
    },

    getTopLeft: function() {
    return new Sys.Extended.UI.Seadragon.Point(this.x, this.y);
    },

    getBottomRight: function() {
    return new Sys.Extended.UI.Seadragon.Point(this.x + this.width, this.y + this.height);
    },

    getCenter: function() {
    return new Sys.Extended.UI.Seadragon.Point(this.x + this.width / 2.0,
                        this.y + this.height / 2.0);
    },

    getSize: function() {
    return new Sys.Extended.UI.Seadragon.Point(this.width, this.height);
    },

    equals: function(other) {
        return (other instanceof Seadragon.Rect) &&
                (this.x === other.x) && (this.y === other.y) &&
                (this.width === other.width) && (this.height === other.height);
    },

    toString: function() {
        return "[" + this.x + "," + this.y + "," + this.width + "x" +
                this.height + "]";
    }
}
Sys.Extended.UI.Seadragon.Rect.registerClass('Sys.Extended.UI.Seadragon.Rect', null, Sys.IDisposable);
V// (c) 2010 CodePlex Foundation
Type.registerNamespace('Sys.Extended.UI.Seadragon');

Sys.Extended.UI.Seadragon.Profiler = function() {

    this._midUpdate = false;
    this._numUpdates = 0;

    this._lastBeginTime = null;
    this._lastEndTime = null;

    this._minUpdateTime = Infinity;
    this._avgUpdateTime = 0;
    this._maxUpdateTime = 0;

    this._minIdleTime = Infinity;
    this._avgIdleTime = 0;
    this._maxIdleTime = 0;
}
Sys.Extended.UI.Seadragon.Profiler.prototype = {

    getAvgUpdateTime: function() {
        return this._avgUpdateTime;
    },

    getMinUpdateTime: function() {
        return this._minUpdateTime;
    },

    getMaxUpdateTime: function() {
        return this._maxUpdateTime;
    },


    getAvgIdleTime: function() {
        return this._avgIdleTime;
    },

    getMinIdleTime: function() {
        return this._minIdleTime;
    },

    getMaxIdleTime: function() {
        return this._maxIdleTime;
    },


    isMidUpdate: function() {
        return this._midUpdate;
    },

    getNumUpdates: function() {
        return this._numUpdates;
    },


    beginUpdate: function() {
        if (this._midUpdate) {
            this.endUpdate();
        }

        this._midUpdate = true;
        this._lastBeginTime = new Date().getTime();

        if (this._numUpdates < 1) {
            return;     // this is the first update
        }

        var time = this._lastBeginTime - this._lastEndTime;

        this._avgIdleTime = (this._avgIdleTime * (this._numUpdates - 1) + time) / this._numUpdates;

        if (time < this._minIdleTime) {
            this._minIdleTime = time;
        }
        if (time > this._maxIdleTime) {
            this._maxIdleTime = time;
        }
    },

    endUpdate: function() {
        if (!this._midUpdate) {
            return;
        }

        this._lastEndTime = new Date().getTime();
        this._midUpdate = false;

        var time = this._lastEndTime - this._lastBeginTime;

        this._numUpdates++;
        this._avgUpdateTime = (this._avgUpdateTime * (this._numUpdates - 1) + time) / this._numUpdates;

        if (time < this._minUpdateTime) {
            this._minUpdateTime = time;
        }
        if (time > this._maxUpdateTime) {
            this._maxUpdateTime = time;
        }
    },

    clearProfile: function() {
        this._midUpdate = false;
        this._numUpdates = 0;

        this._lastBeginTime = null;
        this._lastEndTime = null;

        this._minUpdateTime = Infinity;
        this._avgUpdateTime = 0;
        this._maxUpdateTime = 0;

        this._minIdleTime = Infinity;
        this._avgIdleTime = 0;
        this._maxIdleTime = 0;
    }
}
Sys.Extended.UI.Seadragon.Profiler.registerClass('Sys.Extended.UI.Seadragon.Profiler', null, Sys.IDisposable);
�// (c) 2010 CodePlex Foundation
Type.registerNamespace("Sys.Extended.UI.Seadragon");Type.registerNamespace("Seadragon");(function(){var c="mouseup",d="mousedown",b=true,a=false;if(Seadragon.MouseTracker)return;var e=Seadragon.Utils.getBrowser()==Seadragon.Browser.IE,i=a,l=a,k={},f=[];function j(a){return Seadragon.Utils.getMousePosition(a)}function g(b,d){var c=Seadragon.Utils.getMousePosition(b),a=Seadragon.Utils.getElementPosition(d);return c.minus(a)}function h(c,b){var d=document.body;while(b&&c!=b&&d!=b)try{b=b.parentNode}catch(e){return a}return c==b}function m(){i=b}function n(){i=a}(function(){if(e){Seadragon.Utils.addEvent(document,d,m,a);Seadragon.Utils.addEvent(document,c,n,a)}else{Seadragon.Utils.addEvent(window,d,m,b);Seadragon.Utils.addEvent(window,c,n,b)}})();Seadragon.MouseTracker=function(m,H,G){var p="function",q="mousemove",t="mouseout",s="mouseover",o=null,r=this,n=r,A=o,F=Math.random(),m=Seadragon.Utils.getElement(m),y=a,u=a,w=a,x=a,z=o,J=o,I=o,H=H,G=G;r.target=m;r.enterHandler=o;r.exitHandler=o;r.pressHandler=o;r.releaseHandler=o;r.clickHandler=o;r.dragHandler=o;function R(){if(!y){Seadragon.Utils.addEvent(m,s,D,a);Seadragon.Utils.addEvent(m,t,E,a);Seadragon.Utils.addEvent(m,d,O,a);Seadragon.Utils.addEvent(m,c,v,a);Seadragon.Utils.addEvent(m,"click",N,a);y=b;k[F]=A}}function T(){if(y){Seadragon.Utils.removeEvent(m,s,D,a);Seadragon.Utils.removeEvent(m,t,E,a);Seadragon.Utils.removeEvent(m,d,O,a);Seadragon.Utils.removeEvent(m,c,v,a);Seadragon.Utils.removeEvent(m,"click",N,a);B();y=a;delete k[F]}}function S(){if(!u){if(e){Seadragon.Utils.removeEvent(m,c,v,a);Seadragon.Utils.addEvent(m,c,P,b);Seadragon.Utils.addEvent(m,q,L,b)}else{Seadragon.Utils.addEvent(window,c,K,b);Seadragon.Utils.addEvent(window,q,C,b)}u=b}}function B(){if(u){if(e){Seadragon.Utils.removeEvent(m,q,L,b);Seadragon.Utils.removeEvent(m,c,P,b);Seadragon.Utils.addEvent(m,c,v,a)}else{Seadragon.Utils.removeEvent(window,q,C,b);Seadragon.Utils.removeEvent(window,c,K,b)}u=a}}function M(c,d){var b=k;for(var a in b)b.hasOwnProperty(a)&&F!=a&&b[a][c](d)}function U(){return x}function D(a){var a=Seadragon.Utils.getEvent(a);e&&u&&!h(a.srcElement,m)&&M("onMouseOver",a);var d=a.target?a.target:a.srcElement,c=a.relatedTarget?a.relatedTarget:a.fromElement;if(!h(m,d)||h(m,c))return;x=b;if(typeof n.enterHandler==p)try{n.enterHandler(n,g(a,m),w,i)}catch(f){Seadragon.Debug.error(f.name+" while executing enter handler: "+f.message,f)}}function E(b){var b=Seadragon.Utils.getEvent(b);e&&u&&!h(b.srcElement,m)&&M("onMouseOut",b);var c=b.target?b.target:b.srcElement,d=b.relatedTarget?b.relatedTarget:b.toElement;if(!h(m,c)||h(m,d))return;x=a;if(typeof n.exitHandler==p)try{n.exitHandler(n,g(b,m),w,i)}catch(f){Seadragon.Debug.error(f.name+" while executing exit handler: "+f.message,f)}}function O(a){var a=Seadragon.Utils.getEvent(a);if(a.button==2)return;w=b;z=j(a);I=z;J=(new Date).getTime();if(typeof n.pressHandler==p)try{n.pressHandler(n,g(a,m))}catch(c){Seadragon.Debug.error(c.name+" while executing press handler: "+c.message,c)}(n.pressHandler||n.dragHandler)&&Seadragon.Utils.cancelEvent(a);if(!e||!l){S();l=b;f=[A]}else e&&f.push(A)}function v(b){var b=Seadragon.Utils.getEvent(b),d=w,c=x;if(b.button==2)return;w=a;if(typeof n.releaseHandler==p)try{n.releaseHandler(n,g(b,m),d,c)}catch(e){Seadragon.Debug.error(e.name+" while executing release handler: "+e.message,e)}d&&c&&Q(b)}function P(b){var b=Seadragon.Utils.getEvent(b);if(b.button==2)return;for(var c=0;c<f.length;c++){var d=f[c];if(!d.hasMouse())d.onMouseUp(b)}B();l=a;b.srcElement.fireEvent("on"+b.type,document.createEventObject(b));Seadragon.Utils.stopEvent(b)}function K(a){!x&&v(a);B()}function N(a){n.clickHandler&&Seadragon.Utils.cancelEvent(a)}function Q(a){var a=Seadragon.Utils.getEvent(a);if(a.button==2)return;var e=(new Date).getTime()-J,c=j(a),b=I.distanceTo(c),d=e<=H&&b<=G;if(typeof n.clickHandler==p)try{n.clickHandler(n,g(a,m),d,a.shiftKey)}catch(f){Seadragon.Debug.error(f.name+" while executing click handler: "+f.message,f)}}function C(a){var a=Seadragon.Utils.getEvent(a),b=j(a),c=b.minus(z);z=b;if(typeof n.dragHandler==p){try{n.dragHandler(n,g(a,m),c,a.shiftKey)}catch(d){Seadragon.Debug.error(d.name+" while executing drag handler: "+d.message,d)}Seadragon.Utils.cancelEvent(a)}}function L(b){for(var a=0;a<f.length;a++)f[a].onMouseMove(b);Seadragon.Utils.stopEvent(b)}(function(){A={hasMouse:U,onMouseOver:D,onMouseOut:E,onMouseUp:v,onMouseMove:C}})();r.isTracking=function(){return y};r.setTracking=function(a){if(a)R();else T()}}})();�'// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedPopup";function a(){var g="hidden",f="hiding",e="shown",d="showing",h="absolute",b=false,c=true,a=null;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.PopupBehavior=function(e){var d=this;Sys.Extended.UI.PopupBehavior.initializeBase(d,[e]);d._x=0;d._y=0;d._positioningMode=Sys.Extended.UI.PositioningMode.Absolute;d._parentElement=a;d._parentElementID=a;d._moveHandler=a;d._firstPopup=c;d._originalParent=a;d._visible=b;d._onShow=a;d._onHide=a;d._onShowEndedHandler=Function.createDelegate(d,d._onShowEnded);d._onHideEndedHandler=Function.createDelegate(d,d._onHideEnded)};Sys.Extended.UI.PopupBehavior.prototype={initialize:function(){Sys.Extended.UI.PopupBehavior.callBaseMethod(this,"initialize");this._hidePopup();this.get_element().style.position=h},dispose:function(){var b=this,c=b.get_element();if(c){b._visible&&b.hide();if(b._originalParent){c.parentNode.removeChild(c);b._originalParent.appendChild(c);b._originalParent=a}c._hideWindowedElementsIFrame=a}b._parentElement=a;b._onShow&&b._onShow.get_animation()&&b._onShow.get_animation().remove_ended(b._onShowEndedHandler);b._onShow=a;b._onHide&&b._onHide.get_animation()&&b._onHide.get_animation().remove_ended(b._onHideEndedHandler);b._onHide=a;Sys.Extended.UI.PopupBehavior.callBaseMethod(b,"dispose")},show:function(){var a=this;if(a._visible)return;var d=new Sys.CancelEventArgs;a.raiseShowing(d);if(d.get_cancel())return;a._visible=c;var e=a.get_element();$common.setVisible(e,c);a.setupPopup();if(a._onShow){$common.setVisible(e,b);a.onShow()}else a.raiseShown(Sys.EventArgs.Empty)},hide:function(){var a=this;if(!a._visible)return;var c=new Sys.CancelEventArgs;a.raiseHiding(c);if(c.get_cancel())return;a._visible=b;if(a._onHide)a.onHide();else{a._hidePopup();a._hideCleanup()}},getBounds:function(){var e=this,d=e.get_element(),k=d.offsetParent||document.documentElement,h,a;if(e.get_parentElement()){a=$common.getBounds(e.get_parentElement());var j=$common.getLocation(k);h={x:a.x-j.x,y:a.y-j.y}}else{a=$common.getBounds(k);h={x:0,y:0}}var f=d.offsetWidth-(d.clientLeft?d.clientLeft*2:0),g=d.offsetHeight-(d.clientTop?d.clientTop*2:0);if(e._firstpopup){d.style.width=f+"px";e._firstpopup=b}var i,c;switch(e._positioningMode){case Sys.Extended.UI.PositioningMode.Center:c={x:Math.round(a.width/2-f/2),y:Math.round(a.height/2-g/2),altX:Math.round(a.width/2-f/2),altY:Math.round(a.height/2-g/2)};break;case Sys.Extended.UI.PositioningMode.BottomLeft:c={x:0,y:a.height,altX:a.width-f,altY:0-g};break;case Sys.Extended.UI.PositioningMode.BottomRight:c={x:a.width-f,y:a.height,altX:0,altY:0-g};break;case Sys.Extended.UI.PositioningMode.TopLeft:c={x:0,y:-d.offsetHeight,altX:a.width-f,altY:a.height};break;case Sys.Extended.UI.PositioningMode.TopRight:c={x:a.width-f,y:-d.offsetHeight,altX:0,altY:a.height};break;case Sys.Extended.UI.PositioningMode.Right:c={x:a.width,y:0,altX:-d.offsetWidth,altY:a.height-g};break;case Sys.Extended.UI.PositioningMode.Left:c={x:-d.offsetWidth,y:0,altX:a.width,altY:a.height-g};break;default:c={x:0,y:0,altX:0,altY:0}}c.x+=e._x+h.x;c.altX+=e._x+h.x;c.y+=e._y+h.y;c.altY+=e._y+h.y;i=e._verifyPosition(c,f,g,a);return new Sys.UI.Bounds(i.x,i.y,f,g)},_verifyPosition:function(a,f,e){var c=0,d=0,b=this._getWindowBounds();if(!(a.x+f>b.x+b.width||a.x<b.x))c=a.x;else{c=a.altX;if(a.altX<b.x){if(a.x>a.altX)c=a.x}else if(b.width+b.x-a.altX<f){var g=a.x>a.altX?Math.abs(b.x-a.x):b.x-a.x;if(g<f-b.width-b.x+a.altX)c=a.x}}if(!(a.y+e>b.y+b.height||a.y<b.y))d=a.y;else{d=a.altY;if(a.altY<b.y){if(b.y-a.altY>e-b.height-b.y+a.y)d=a.y}else if(b.height+b.y-a.altY<e)if(b.y-a.y<e-b.height-b.y+a.altY)d=a.y}return{x:c,y:d}},_getWindowBounds:function(){var a=this;return{x:a._getWindowScrollLeft(),y:a._getWindowScrollTop(),width:a._getWindowWidth(),height:a._getWindowHeight()}},_getWindowHeight:function(){var a=0;if(document.documentElement&&document.documentElement.clientHeight)a=document.documentElement.clientHeight;else if(document.body&&document.body.clientHeight)a=document.body.clientHeight;return a},_getWindowWidth:function(){var a=0;if(document.documentElement&&document.documentElement.clientWidth)a=document.documentElement.clientWidth;else if(document.body&&document.body.clientWidth)a=document.body.clientWidth;return a},_getWindowScrollTop:function(){var a=0;if(typeof window.pageYOffset=="number")a=window.pageYOffset;if(document.body&&document.body.scrollTop)a=document.body.scrollTop;else if(document.documentElement&&document.documentElement.scrollTop)a=document.documentElement.scrollTop;return a},_getWindowScrollLeft:function(){var a=0;if(typeof window.pageXOffset=="number")a=window.pageXOffset;else if(document.body&&document.body.scrollLeft)a=document.body.scrollLeft;else if(document.documentElement&&document.documentElement.scrollLeft)a=document.documentElement.scrollLeft;return a},adjustPopupPosition:function(a){var f=this.get_element();if(!a)a=this.getBounds();var d=$common.getBounds(f),e=b;if(d.x<0){a.x-=d.x;e=c}if(d.y<0){a.y-=d.y;e=c}e&&$common.setLocation(f,a)},addBackgroundIFrame:function(){var c=this,b=c.get_element();if(Sys.Browser.agent===Sys.Browser.InternetExplorer&&Sys.Browser.version<7){var a=b._hideWindowedElementsIFrame;if(!a){a=document.createElement("iframe");a.src="javascript:'<html></html>';";a.style.position=h;a.style.display="none";a.scrolling="no";a.frameBorder="0";a.tabIndex="-1";a.style.filter="progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)";b.parentNode.insertBefore(a,b);b._hideWindowedElementsIFrame=a;c._moveHandler=Function.createDelegate(c,c._onMove);Sys.UI.DomEvent.addHandler(b,"move",c._moveHandler)}$common.setBounds(a,$common.getBounds(b));a.style.left=b.style.left;a.style.top=b.style.top;a.style.display=b.style.display;if(b.currentStyle&&b.currentStyle.zIndex)a.style.zIndex=b.currentStyle.zIndex;else if(b.style.zIndex)a.style.zIndex=b.style.zIndex}},setupPopup:function(){var a=this,b=a.get_element(),c=a.getBounds();$common.setLocation(b,c);a.adjustPopupPosition(c);b.style.zIndex=1e3;a.addBackgroundIFrame()},_hidePopup:function(){var c=this.get_element();$common.setVisible(c,b);if(c.originalWidth){c.style.width=c.originalWidth+"px";c.originalWidth=a}},_hideCleanup:function(){var b=this,d=b.get_element();if(b._moveHandler){Sys.UI.DomEvent.removeHandler(d,"move",b._moveHandler);b._moveHandler=a}if(Sys.Browser.agent===Sys.Browser.InternetExplorer){var c=d._hideWindowedElementsIFrame;if(c)c.style.display="none"}b.raiseHidden(Sys.EventArgs.Empty)},_onMove:function(){var a=this.get_element();if(a._hideWindowedElementsIFrame){a.parentNode.insertBefore(a._hideWindowedElementsIFrame,a);a._hideWindowedElementsIFrame.style.top=a.style.top;a._hideWindowedElementsIFrame.style.left=a.style.left}},get_onShow:function(){return this._onShow?this._onShow.get_json():a},set_onShow:function(c){var a=this;if(!a._onShow){a._onShow=new Sys.Extended.UI.Animation.GenericAnimationBehavior(a.get_element());a._onShow.initialize()}a._onShow.set_json(c);var b=a._onShow.get_animation();b&&b.add_ended(a._onShowEndedHandler);a.raisePropertyChanged("onShow")},get_onShowBehavior:function(){return this._onShow},onShow:function(){var a=this;if(a._onShow){a._onHide&&a._onHide.quit();a._onShow.play()}},_onShowEnded:function(){this.adjustPopupPosition();this.addBackgroundIFrame();this.raiseShown(Sys.EventArgs.Empty)},get_onHide:function(){return this._onHide?this._onHide.get_json():a},set_onHide:function(c){var a=this;if(!a._onHide){a._onHide=new Sys.Extended.UI.Animation.GenericAnimationBehavior(a.get_element());a._onHide.initialize()}a._onHide.set_json(c);var b=a._onHide.get_animation();b&&b.add_ended(a._onHideEndedHandler);a.raisePropertyChanged("onHide")},get_onHideBehavior:function(){return this._onHide},onHide:function(){var a=this;if(a._onHide){a._onShow&&a._onShow.quit();a._onHide.play()}},_onHideEnded:function(){this._hideCleanup()},get_parentElement:function(){var a=this;!a._parentElement&&a._parentElementID&&a.set_parentElement($get(a._parentElementID));return a._parentElement},set_parentElement:function(a){this._parentElement=a;this.raisePropertyChanged("parentElement")},get_parentElementID:function(){return this._parentElement?this._parentElement.id:this._parentElementID},set_parentElementID:function(a){this._parentElementID=a;this.get_isInitialized()&&this.set_parentElement($get(a))},get_positioningMode:function(){return this._positioningMode},set_positioningMode:function(a){this._positioningMode=a;this.raisePropertyChanged("positioningMode")},get_x:function(){return this._x},set_x:function(b){var a=this;if(b!=a._x){a._x=b;a._visible&&a.setupPopup();a.raisePropertyChanged("x")}},get_y:function(){return this._y},set_y:function(b){var a=this;if(b!=a._y){a._y=b;a._visible&&a.setupPopup();a.raisePropertyChanged("y")}},get_visible:function(){return this._visible},add_showing:function(a){this.get_events().addHandler(d,a)},remove_showing:function(a){this.get_events().removeHandler(d,a)},raiseShowing:function(b){var a=this.get_events().getHandler(d);a&&a(this,b)},add_shown:function(a){this.get_events().addHandler(e,a)},remove_shown:function(a){this.get_events().removeHandler(e,a)},raiseShown:function(b){var a=this.get_events().getHandler(e);a&&a(this,b)},add_hiding:function(a){this.get_events().addHandler(f,a)},remove_hiding:function(a){this.get_events().removeHandler(f,a)},raiseHiding:function(b){var a=this.get_events().getHandler(f);a&&a(this,b)},add_hidden:function(a){this.get_events().addHandler(g,a)},remove_hidden:function(a){this.get_events().removeHandler(g,a)},raiseHidden:function(b){var a=this.get_events().getHandler(g);a&&a(this,b)}};Sys.Extended.UI.PopupBehavior.registerClass("Sys.Extended.UI.PopupBehavior",Sys.Extended.UI.BehaviorBase);Sys.registerComponent(Sys.Extended.UI.PopupBehavior,{name:"popup"});Sys.Extended.UI.PositioningMode=function(){throw Error.invalidOperation();};Sys.Extended.UI.PositioningMode.prototype={Absolute:0,Center:1,BottomLeft:2,BottomRight:3,TopLeft:4,TopRight:5,Right:6,Left:7};Sys.Extended.UI.PositioningMode.registerEnum("Sys.Extended.UI.PositioningMode")}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedAnimations","ExtendedAnimationBehavior"],a);else a()})();Rh// (c) 2010 CodePlex Foundation


/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />
/// <reference path="../Compat/DragDrop/DragDropScripts.js" />
/// <reference path="../Animation/Animations.js" />

(function() {
var scriptName = "ExtendedMultiHandleSlider";

function execute() {

Type.registerNamespace('Sys.Extended.UI');


Sys.Extended.UI._MultiHandleSliderDragDropInternal = function() {
    Sys.Extended.UI._MultiHandleSliderDragDropInternal.initializeBase(this);
    this._instance = null;
}
Sys.Extended.UI._MultiHandleSliderDragDropInternal.prototype = {
    _getInstance: function() {
            this._instance = new Sys.Extended.UI.GenericDragDropManager();
            this._instance.initialize();
            this._instance.add_dragStart(Function.createDelegate(this, this._raiseDragStart));
            this._instance.add_dragStop(Function.createDelegate(this, this._raiseDragStop));
        return this._instance;
    }
}
Sys.Extended.UI._MultiHandleSliderDragDropInternal.registerClass('Sys.Extended.UI._MultiHandleSliderDragDropInternal', Sys.Extended.UI._DragDropManager);
Sys.Extended.UI.DragDrop = new Sys.Extended.UI._MultiHandleSliderDragDropInternal();


Sys.Extended.UI.MultiHandleInnerRailStyle = function() {
    /// <summary>
    /// The MultiHandleInnerRailStyle enumeration describes how the inner rail is rendered
    /// </summary>
    /// <field name="AsIs">The inner style is rendered as it is defined.</field>
    /// <field name="SlidingDoors">The inner style is super-imposed on the outer style.</field>
}

Sys.Extended.UI.MultiHandleInnerRailStyle.prototype = {
    AsIs: 0,
    SlidingDoors: 1
}
Sys.Extended.UI.MultiHandleInnerRailStyle.registerEnum('Sys.Extended.UI.MultiHandleInnerRailStyle', false);

Sys.Extended.UI.SliderOrientation = function() {
    /// <summary>
    /// The SliderOrientation enumeration describes the slider's visual orientation.
    /// </summary>
    /// <field name="Horizontal">The slider orientation is left to right.</field>
    /// <field name="Vertical">The slider orientation is top to bottom.</field>
}

Sys.Extended.UI.SliderOrientation.prototype = {
    Horizontal: 0,
    Vertical: 1
}
Sys.Extended.UI.SliderOrientation.registerEnum('Sys.Extended.UI.SliderOrientation', false);


Sys.Extended.UI.MultiHandleSliderBehavior = function(element) {
    /// <summary>
    /// A behavior that attaches a multi-handled slider to a TextBox control.
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">The element to attach to.</param>
    /// <returns></returns>
    
    Sys.Extended.UI.MultiHandleSliderBehavior.initializeBase(this, [element]);

    this._isServerControl = false;
    this._minimum = null;
    this._maximum = null;
    this._orientation = Sys.Extended.UI.SliderOrientation.Horizontal;
    this._cssClass = null;
    this._multiHandleSliderTargets = null;
    this._length = 150;
    this._steps = 0;
    this._enableHandleAnimation = false;
    this._showInnerRail = false;
    this._showHoverStyle = false;
    this._showDragStyle = false;
    this._raiseChangeOnlyOnMouseUp = true;
    this._innerRailStyle = Sys.Extended.UI.MultiHandleInnerRailStyle.AsIs;
    this._enableInnerRangeDrag = false;
    this._enableRailClick = true;
    this._isReadOnly = false;
    this._increment = 1;
    this._enableKeyboard = true;
    this._enableMouseWheel = true;
    this._tooltipText = '';
    
    this._boundControlID = null;
    this._handleCssClass = null;
    this._handleImageUrl = null;
    this._handleImage = null;
    this._railCssClass = null;
    this._decimals = 0;
    
    this._textBox = null;
    this._wrapper = null;
    this._outer = null;
    this._inner = null;
    this._handleData = null;
    this._handleAnimationDuration = 0.02;
    this._handles = 0;
    this._innerDragFlag = false;
    this._isVertical = false;

    this._selectStartHandler = null;
    this._mouseUpHandler = null;
    this._mouseOutHandler = null;
    this._keyDownHandler = null;
    this._mouseWheelHandler = null;
    this._mouseOverHandler = null;
    

    this._animationPending = false;
    this._selectStartPending = false;
    this._initialized = false;
    this._handleUnderDrag = null;
    this._innerDrag = false;
    this._blockInnerClick = false;
}


Sys.Extended.UI.MultiHandleSliderBehavior.prototype = {
    
    
    initialize: function() {
        /// <summary>
        /// Initializes this instance of the <see cref="Sys.Extended.UI.MultiHandleSliderExtender" /> behavior.
        /// </summary>
        /// <returns></returns>
        
        Sys.Extended.UI.MultiHandleSliderBehavior.callBaseMethod(this, 'initialize');

        if (this._boundControlID && !this._multiHandleSliderTargets) {
            this._multiHandleSliderTargets = [{
                "ControlID": this._boundControlID,
                "HandleCssClass": this._handleCssClass,
                "HandleImageUrl": this._handleImageUrl,
                "Decimals": this._decimals
            }];
        }
        this._handles = this._multiHandleSliderTargets ? this._multiHandleSliderTargets.length: 0;
        if(this._handles === 0)
        {
            var boundless = document.createElement("INPUT");
            boundless.id = "boundless";
            boundless.style.display = "none";
            boundless.value = this.get_minimum();
            document.forms[0].appendChild(boundless);
            
            this._multiHandleSliderTargets = [{
                "ControlID": boundless.id,
                "HandleCssClass": this._handleCssClass,
                "HandleImageUrl": this._handleImageUrl,
                "Decimals": this._decimals
            }];
            this._boundControlID = boundless.id;
            this._handles = 1;
        }
        
        this._isVertical = this._orientation === Sys.Extended.UI.SliderOrientation.Vertical;

        this._resolveNamingContainer();
        this._createWrapper();
        this._createOuterRail();
        this._createHandles();
        this._createInnerRail();
        this._setRailStyles();

        if (this._length) {
            if (!this._cssClass && this._innerRailStyle !== Sys.Extended.UI.MultiHandleInnerRailStyle.SlidingDoors) {
                if (this._isVertical) {
                    this._outer.style.height = this._length + "px";
                } else {
                    this._outer.style.width = this._length + "px";
                }
            }
        }

        this._build();
        this._enforceElementPositioning();
        this._initializeSlider();
    },
    
    
    dispose: function() {
        /// <summary>
        /// Disposes this instance of the <see cref="Sys.Extended.UI.MultiHandleSliderExtender" /> behavior.
        /// </summary>
        /// <returns></returns>
        
        this._disposeHandlers();
        this._disposeMultiHandleSliderTargets();
        
        if (this._enableHandleAnimation && this._handleAnimation) {
            this._handleAnimation.dispose();
        }
        Sys.Extended.UI.MultiHandleSliderBehavior.callBaseMethod(this, 'dispose');
    },
    
    get_SliderInitialized : function() {
        /// <summary>
        /// Gets whether this slider is initialized. This is here for backwards compatibility
        /// with the original Slider.
        /// </summary>
        /// <returns></returns>
                
        return this._initialized;
    },
    
    getValue : function(index) {
        /// <summary>
        /// Gets the value of a specific slider handle programmatically by index.
        /// </summary>
        /// <param name="value" type="Number">The handle index.</param>
        /// <returns type="Number">The value of the specified slider handle.</returns>
        
        var multiHandleSliderTarget = $get(this._multiHandleSliderTargets[index].ControlID);
        return multiHandleSliderTarget.value;
    },
    setValue : function(index, value) {
        /// <summary>
        /// Sets the value of a specific slider handle programmatically by index.
        /// </summary>
        /// <param name="index">The handle index.</param>
        /// <param name="value">The value to set.</param>
        /// <returns></returns>
        
        var multiHandleSliderTarget = $get(this._multiHandleSliderTargets[index].ControlID);
        if(multiHandleSliderTarget) {
            this.beginUpdate();
            this._setMultiHandleSliderTargetValue(multiHandleSliderTarget, this._getNearestStepValue(value));
            this.endUpdate();
        }
    },
    
    get_values : function() {
        /// <summary>
        /// Gets all handle values as a comma-delimited string. This is required
        /// for the automated toolkit test behavior.
        /// </summary>
        /// <returns type="String">A comma-delimited string of handle values.</returns>
        
        var values = [this._handles];
        for(var i = 0; i < this._handles; i++) {
            var control = this._multiHandleSliderTargets[i];
            values[i] = control.value;
        }
        return values.join(',');
    },
    
    
    _build: function() {
        /// <summary>
        /// Assembles the generated slider DOM elements on the page.
        /// </summary>
        /// <returns></returns>
        
        this._textBox = this.get_element();
        this._textBox.parentNode.insertBefore(this._wrapper, this._textBox);
        this._wrapper.appendChild(this._outer);
        
        if (this._inner && this._showInnerRail) {
            this._outer.appendChild(this._inner);
        }
        this._textBox.style.display = 'none';
    },
    
    _calculateInnerRailOffset: function(e) {
        /// <summary>
        /// Calculates the offset of the inner rail.
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">Event info</param>
        
        var edge = this._isVertical ? this._inner.style.top: this._inner.style.left;
        var offset = this._isVertical ? e.offsetY: e.offsetX;
        offset += parseInt(edge, 10);

        return offset;
    },

    _calculateClick: function(offset) {
        /// <summary>
        /// Calculates where to move a handle during a rail click event.
        /// </summary>
        /// <param name="offset" type="Number">The mouse offset.</param>
        
        var railBounds = this._getOuterBounds(),
            closestHandle = this._handleData[0];
            
        var handleBounds = this._getBoundsInternal(closestHandle);
        closestHandle = this._calculateClosestHandle(offset);

        var minOffset = handleBounds.width / 2;
        var maxOffset = railBounds.width - minOffset;

        offset = (offset < minOffset) ? minOffset: (offset > maxOffset) ? maxOffset: offset;

        var multiHandleSliderTarget = $get(closestHandle.multiHandleSliderTargetID);
        this._calculateMultiHandleSliderTargetValue(multiHandleSliderTarget, offset, true);
        $common.tryFireEvent(this.get_element(), "change");
    },
    
    _calculateClosestHandle: function(offset) {
        /// <summary>
        /// Calculates the closest handle to a mouse click.
        /// </summary>
        /// <param name="offset" type="Number">The mouse offset.</param>
        /// <returns type="Sys.UI.DomElement" domElement="true">The closest handle element.</returns>
        
        var closestHandle = this._handleData[0],
            distances = [this._handles],
            outer = this._getOuterBounds();

        for (var i = 0; i < this._handles; i++) {
            var handle = this._handleData[i],
                bounds = this._getBoundsInternal(handle);

            var pos = this._isVertical ? handle.offsetTop: bounds.x - outer.x;
            distances[i] = Math.abs(pos - offset);
        }

        var delta = distances[0];
        for (i = 0; i < this._handles; i++) {
            var d = distances[i];
            if (d < delta) {
                handle = this._handleData[i];
                delta = d;
                closestHandle = handle;
            }
        }

        if (this._innerDrag) {
            var index = Array.indexOf(this._handleData, closestHandle);
            var location = Sys.UI.DomElement.getLocation(closestHandle);
            var locationOffset = this._isVertical ? location.y: location.x - outer.x;

            if (locationOffset >= (offset + distances[index])) {
                var newHandle = this._handleData[index - 1];
                if (newHandle) {
                    closestHandle = newHandle;
                }
            }
        }
        
        return closestHandle;
    },
    
    _calculateMultiHandleSliderTargetValue: function(multiHandleSliderTarget, mouseOffset, computed) {
        /// <summary>
        /// Determines the closest value to set a bound control
        /// </summary>
        /// <param name="multiHandleSliderTarget" type="Sys.UI.DomElement">The bound control instance.</param>
        /// <param name="mouseOffset" type="Number">The relative distance of the mouse click.</param>
        /// <param name="computed" type="Boolean" mayBeNull="false" optional="true">Whether the value should be calculated or taken from the current instance.</param>
        /// <returns type="Number">The resulting value of the current target.</returns>
        var secondaryHandle,
            secondaryMultiHandleSliderTarget,
            min = this._minimum,
            max = this._maximum;

        if (this._handleUnderDrag && !multiHandleSliderTarget) {
            handle = this._handleUnderDrag;
            multiHandleSliderTarget = $get(this._handleUnderDrag.multiHandleSliderTargetID);
            if (this._innerDrag) {
                var primary = Array.indexOf(this._handleData, handle);
                secondaryHandle = this._handleData[primary + 1];
                if (!secondaryHandle) {
                    secondaryHandle = this._handleData[primary - 1];
                }
                secondaryMultiHandleSliderTarget = $get(secondaryHandle.multiHandleSliderTargetID);
            }
        }

        var handle = multiHandleSliderTarget.Handle, value = multiHandleSliderTarget.value;

        if (value && !computed) {
            if (typeof(value) !== 'number') {
                try {
                    value = parseFloat(value);
                } catch(ex) {
                    value = Number.NaN;
                }
            }

            if (isNaN(value)) {
                value = this._minimum;
            }
            
            val = Math.max(Math.min(value, max), min);
        } else {
            var handleBounds = this._getBoundsInternal(handle), 
                railBounds = this._getOuterBounds(),
                mark = (mouseOffset) ? mouseOffset - handleBounds.width / 2: handleBounds.x - railBounds.x,
                extent = railBounds.width - handleBounds.width, percent = mark / extent;

            val = Math.max(Math.min(value, max), min);
            val = (mark === 0) ? min : (mark === (railBounds.width - handleBounds.width)) ? max : min + percent * (max - min);
        }

        if (this._steps > 0) {
            val = this._getNearestStepValue(val);
        }

        val = Math.max(Math.min(val, max), min);

        var previousControls = [],
            nextControls = [], 
            cp = 0, 
            cn = 0, 
            block, 
            prev = true;
        
        for (var i = 0; i < this._handles; i++) {
            var vc = this._multiHandleSliderTargets[i];
            if (!vc.ControlID.match(multiHandleSliderTarget.id)) {
                if (prev) {
                    previousControls[cp] = this._multiHandleSliderTargets[i];
                    cp++;
                } else {
                    nextControls[cn] = this._multiHandleSliderTargets[i];
                    cn++;
                }
            } else {
                prev = false;
            }
        }
        
        if (cp > 0) {
            var p = parseFloat($get(previousControls[cp - 1].ControlID).value);
            val = Math.max(val, p);
            block = val === p;
        }
        
        if (cn > 0) {
            var n = parseFloat($get(nextControls[0].ControlID).value);
            val = Math.min(val, n);
            block = val === n;
        }

        if (secondaryHandle) {
            var delta = val - parseFloat(value),
                secondaryValue = parseFloat(secondaryMultiHandleSliderTarget.value),
                secondaryVal = secondaryValue + delta;

            var nextIndex = Array.indexOf(this._handleData, secondaryHandle) + 1;
            if (nextIndex < this._multiHandleSliderTargets.length) {
                var nextMultiHandleSliderTargetID = this._multiHandleSliderTargets[nextIndex].ControlID;
            }
            if (nextMultiHandleSliderTargetID) {
                var nextMultiHandleSliderTarget = $get(nextMultiHandleSliderTargetID);
            }
            if (nextMultiHandleSliderTarget) {
                var nextValue = nextMultiHandleSliderTarget.value;
            }

            if (secondaryVal > (nextValue || max)) {
                secondaryVal = secondaryValue;
                val = value;
                block = true;
            }
        }
        
        if (!block && (Math.max(val, max) === max && Math.min(val, min) === min)) {
            this.beginUpdate();
            
            val = Math.max(Math.min(val, max), min);
            this._setMultiHandleSliderTargetValue(multiHandleSliderTarget, val);
            
            if (secondaryHandle) {
                this._setMultiHandleSliderTargetValue(secondaryMultiHandleSliderTarget, secondaryVal);
            }
            this.endUpdate();
        } else {
            this.beginUpdate();

            if (this._handles === 1) {
                this._setMultiHandleSliderTargetValue(multiHandleSliderTarget, val);
            } else {
                multiHandleSliderTarget.value = val;
                handle.Value = val;
                this._setHandlePosition(handle, true);
            }

            if (secondaryHandle) {
                secondaryMultiHandleSliderTarget.value = secondaryVal;
                secondaryHandle.Value = secondaryVal;
                this._setHandlePosition(secondaryHandle, true);
            }

            this.endUpdate();
        }
        return val;
    },
    
    _cancelDrag: function() {
        /// <summary>
        /// Ends a drag event.
        /// </summary>
        /// <returns></returns>
        
        if (Sys.Extended.UI.MultiHandleSliderBehavior.DropPending === this) {
            Sys.Extended.UI.MultiHandleSliderBehavior.DropPending = null;
            if (this._selectStartPending) {
                $removeHandler(document, 'selectstart', this._selectStartHandler);
            }
        }
    },

    _createHandles: function() {
        /// <summary>
        /// Creates the handles elements and hover and drag effect callbacks.
        /// </summary>
        /// <returns></returns>
        
        for (var i = 0; i < this._handles; i++) {            
            var handleName = this.get_id() + "_handle_" + i, 
                v = this._isVertical,
                hideStyle = '',
                hoverStyle = '',
                dragStyle = '';
            
            if(this._handles === 1 && this._handleImageUrl)
            {
                var img = "<img id='" + this.get_id() + "_handleImage' src='" + this._handleImageUrl + "' alt='' />";
            }
            
            var anchorStart = "<a id='" + handleName + "' ";
            var innerImg = img ? img : "";
            var anchorEnd = "><div>" + innerImg + "</div></a>";
            this._outer.innerHTML += anchorStart + anchorEnd;                     
        }

        this._handleData = [this._handles];
        
        for (i = 0; i < this._handles; i++) {
            var styleInfo = this._cssClass ? this._cssClass: "ajax__multi_slider_default";
            var handleCss = this._multiHandleSliderTargets[i].HandleCssClass;

            if (handleCss || this._cssClass) {
                hideStyle = handleCss ? handleCss + " " : this._cssClass + " ";
                hoverStyle = hideStyle;
                dragStyle = hideStyle;
                
                var dragCss = handleCss, 
                    hoverCss = handleCss;

                hideStyle = !handleCss ? hideStyle + this._isVertical ? 'handle_vertical': 'handle_horizontal': hideStyle + handleCss;
                hoverStyle = !hoverCss ? hoverStyle + this._isVertical ? 'handle_vertical_hover': 'handle_horizontal_hover': hoverStyle + hoverCss;
                dragStyle = !dragCss ? dragStyle + this._isVertical ? 'handle_vertical_down': 'handle_horizontal_down': dragStyle + dragCss;
            }

            this._handleCallbacks = {
                    mouseover: Function.createCallback(this._onShowHover, { vertical : v, custom : hoverStyle }),
                    mouseout: Function.createCallback(this._onHideHover, { vertical : v, custom : hideStyle }),
                    mousedown: Function.createCallback(this._onShowDrag, { vertical : v, custom : dragStyle }),
                    mouseup: Function.createCallback(this._onHideDrag, { vertical : v, custom : hideStyle })                    
            };
           
            this._handleData[i] = this._outer.childNodes[i];
            this._handleData[i].style.overflow = 'hidden';
            
            $addHandlers(this._handleData[i], this._handleCallbacks);           

            handleCss = this._multiHandleSliderTargets[i].HandleCssClass;
            if (handleCss) {
                Sys.UI.DomElement.addCssClass(this._handleData[i], styleInfo);
                Sys.UI.DomElement.addCssClass(this._handleData[i], handleCss);
            } else {
                this._handleData[i].className = this._isVertical ? 'handle_vertical': 'handle_horizontal';
            }

            if (this._multiHandleSliderTargets) {
                var multiHandleSliderTargetID = this._multiHandleSliderTargets[i].ControlID;
                this._handleData[i].multiHandleSliderTargetID = multiHandleSliderTargetID;
            }

            this._handleData[i].style.left = '0px';
            this._handleData[i].style.top = '0px';
            
            if (this._steps < 1) {
                if (this._enableHandleAnimation) {
                    var animation = new Sys.Extended.UI.Animation.LengthAnimation(this._handleData[i], this._handleAnimationDuration, 100, 'style');

                    animation.add_ended(Function.createDelegate(this, this._onAnimationEnded));
                    animation.add_step(Function.createDelegate(this, this._onAnimationStep));
                    this._handleData[i].Animation = animation;
                }
            } else {
                this._enableHandleAnimation = false;
            }
        }
    },

    _createInnerRail: function() {
        /// <summary>
        /// Creates the inner rail.
        /// </summary>
        /// <returns></returns>
        
        if (this._handles > 1 && this._showInnerRail) {
            this._inner = document.createElement('DIV');
            this._inner.id = this.get_id() + '_inner';
            this._inner.style.outline = "none";
            this._inner.tabIndex = -1;
        }
    },

    _createOuterRail: function() {
        /// <summary>
        /// Creates the outer rail.
        /// </summary>
        /// <returns></returns>
        
        this._outer = document.createElement('DIV');
        this._outer.id = this.get_id() + '_outer';
        this._outer.style.outline = "none";
        this._outer.tabIndex = -1;
    },
    
    _createWrapper: function() {
        /// <summary>
        /// Creates the relatively positioned wrapper DIV to contain the slider.
        /// </summary>
        /// <returns></returns>
        
        this._wrapper = document.createElement("DIV");
        this._wrapper.style.position = "relative";
        this._wrapper.style.outline = "none";
    },
    
    _disposeHandlers: function() {
        /// <summary>
        /// Disposes event handlers on the slider.
        /// </summary>
        
        if (!this._isReadOnly) {
            $removeHandler(document, 'mouseup', this._mouseUpHandler);
            $removeHandler(document, 'mouseout', this._mouseOutHandler);

            if (this._outer) {
                if (this._outer.addEventListener) {
                    this._outer.removeEventListener('DOMMouseScroll', this._mouseWheelHandler, false);
                } else {
                    this._outer.detachEvent('onmousewheel', this._mouseWheelHandler);
                }
                $common.removeHandlers(this._outer, this._outerDelegates);
            }

            for (var i = 0; i < this._handles; i++) {
                if(this._handleDelegates) {
                    $common.removeHandlers(this._handleData[i], this._handleDelegates);
                }
                if(this._handleCallbacks) {
                    $clearHandlers(this._handleData[i]);
                }
            }
            
            this._handleDelegates = null;
            this._handleCallbacks = null;

            if (this._inner && this._showInnerRail && this._innerDelegates) {                
                $common.removeHandlers(this._inner, this._innerDelegates);
            }
            
            this._selectStartHandler = null;
            this._mouseUpHandler = null;
            this._mouseOutHandler = null;
            this._mouseWheelHandler = null;
            this._mouseOverHandler = null;
            this._keyDownHandler = null;
        }
    },

    _disposeMultiHandleSliderTargets: function() {
        /// <summary>
        /// Disposes the bound control elements.
        /// </summary>
        /// <returns></returns>
        
        if (this._multiHandleSliderTargets) {
            for (var i = 0; i < this._handles; i++) {
                var multiHandleSliderTarget = this._multiHandleSliderTargets[i];
                var isInput = multiHandleSliderTarget && multiHandleSliderTarget.nodeName === 'INPUT';

                if (isInput) {
                    $removeHandler(multiHandleSliderTarget, 'change', multiHandleSliderTarget.ChangeHandler);
                    $removeHandler(multiHandleSliderTarget, 'keypress', multiHandleSliderTarget.KeyPressHandler);
                    
                     multiHandleSliderTarget.ChangeHandler = null;
                     multiHandleSliderTarget.KeyPressHandler = null;
                }
            }
        }
    },
    
    _ensureBinding: function(multiHandleSliderTarget) {
        /// <summary>
        /// Ensures control binding to a Label or TextBox element.
        /// </summary>
        
        if (multiHandleSliderTarget) {
            var value = multiHandleSliderTarget.value;

            if (value >= this._minimum || value <= this._maximum) {
                var isInputElement = multiHandleSliderTarget && multiHandleSliderTarget.nodeName === 'INPUT';

                if (isInputElement) {
                    multiHandleSliderTarget.value = value;
                } else if (multiHandleSliderTarget) {
                    multiHandleSliderTarget.innerHTML = value;
                }
            }
        }
    },

    _enforceElementPositioning: function() {
        /// <summary>
        /// Copies any styles from the parent element to the slider wrapper.
        /// </summary>
        
        var tbPosition = {
            position: this.get_element().style.position,
            top: this.get_element().style.top,
            right: this.get_element().style.right,
            bottom: this.get_element().style.bottom,
            left: this.get_element().style.left
        };

        if (tbPosition.position !== '') {
            this._wrapper.style.position = tbPosition.position;
        }
        if (tbPosition.top !== '') {
            this._wrapper.style.top = tbPosition.top;
        }
        if (tbPosition.right !== '') {
            this._wrapper.style.right = tbPosition.right;
        }
        if (tbPosition.bottom !== '') {
            this._wrapper.style.bottom = tbPosition.bottom;
        }
        if (tbPosition.left !== '') {
            this._wrapper.style.left = tbPosition.left;
        }
    },
    
    _getNearestStepValue: function(value) {
        /// <summary>
        /// Determines the closest discrete step value from a given value.
        /// </summary>
        /// <param name="value" type="Number">The value to check against steps</param>
        /// <returns type="Number">The nearest discrete step value from the specified value.</returns>
        
        if (this._steps === 0) return value;

        var extent = this._maximum - this._minimum;
        if (extent === 0) return value;

        if ((this._steps - 1) !== 0) {
            var delta = extent / (this._steps - 1);
        } else {
            return value;
        }

        return Math.round(value / delta) * delta;
    },
    
    _getStepValues: function() {
        /// <summary>
        /// Computes a list of possible slider values based on steps and constraints.
        /// </summary>
        /// <returns></returns>
        
        var steps = [this._steps],
            extent = this._maximum - this._minimum;
       
        var increment = extent / (this._steps - 1);
        steps[0] = this._minimum;
        
        for (var i = 1; i < this._steps; i++) {
            steps[i] = this._minimum + (increment * i);
        }
        return steps;
    },
    
    _handleSlide: function(decrement) {
        /// <summary>
        /// Increments or decrements the value of all handles.
        /// </summary>
        /// <param name="decrement" type="Boolean" mayBeNull="false" optional="true">If true, decrement the slider value; otherwise, increment it.</param>
        /// <returns></returns>
        
        var index = decrement ? 0 : this._handles - 1, 
            start = decrement ? 1 : 0,
            end = decrement ? this._handles : this._handles - 1,
            multiHandleSliderTargetID = this._handleData[index].multiHandleSliderTargetID;
            
        if (this._slideMultiHandleSliderTarget(multiHandleSliderTargetID, decrement)) {
            for (var i = start; i < end; i++) {
                multiHandleSliderTargetID = this._handleData[i].multiHandleSliderTargetID;
                this._slideMultiHandleSliderTarget(multiHandleSliderTargetID, decrement);
            }
        }
        this._initializeInnerRail();
    },
    
    _initializeDragHandle: function(handle) {
        /// <summary>
        /// Creates a hidden drag handle element for managing drag functions.
        /// This hidden element is appended to the document's first form.
        /// </summary>
        /// <param name="handle" type="Sys.UI.DomElement" domElement="true">The handle element to create a drag handle for.</param>
        /// <returns></returns>
        
        var dragHandle = handle.DragHandle = document.createElement('DIV');

        dragHandle.style.position = 'absolute';
        dragHandle.style.width = '1px';
        dragHandle.style.height = '1px';
        dragHandle.style.overflow = 'hidden';
        dragHandle.style.background = 'none';

        document.forms[0].appendChild(handle.DragHandle);
    },
    
    _initializeHandlers: function() {
        /// <summary>
        /// Adds event handlers to the slider.
        /// </summary>
        /// <returns></returns>
        
        if (!this._isReadOnly) {
            this._selectStartHandler = Function.createDelegate(this, this._onSelectStart);
            this._mouseUpHandler = Function.createDelegate(this, this._onMouseUp);
            this._mouseOutHandler = Function.createDelegate(this, this._onMouseOut);
            this._mouseWheelHandler = Function.createDelegate(this, this._onMouseWheel);
            this._mouseOverHandler = Function.createDelegate(this, this._onMouseOver);
            this._keyDownHandler = Function.createDelegate(this, this._onKeyDown);            
            
            $addHandler(document, 'mouseup', this._mouseUpHandler);
            $addHandler(document, 'mouseout', this._mouseOutHandler);

            this._handleDelegates = {
                mousedown: Function.createDelegate(this, this._onMouseDown),
                dragstart: Function.createDelegate(this, this._IEDragDropHandler),
                drag: Function.createDelegate(this, this._IEDragDropHandler),
                dragEnd: Function.createDelegate(this, this._IEDragDropHandler)
            };

            for (var i = 0; i < this._handles; i++) {
                $addHandlers(this._handleData[i], this._handleDelegates);
            }

            if (this._outer) {
                if (this._enableMouseWheel) {
                    if (this._outer.addEventListener) {
                        this._outer.addEventListener('DOMMouseScroll', this._mouseWheelHandler, false);
                    } else {
                        this._outer.attachEvent('onmousewheel', this._mouseWheelHandler);
                    }
                }

                this._outerDelegates = {
                    click: Function.createDelegate(this, this._onOuterRailClick),
                    mouseover: Function.createDelegate(this, this._mouseOverHandler),
                    keydown: Function.createDelegate(this, this._keyDownHandler)
                };
                $addHandlers(this._outer, this._outerDelegates);
            }

            if (this._inner && this._showInnerRail) {
                this._innerDelegates = {
                    click: Function.createDelegate(this, this._onInnerRailClick),
                    mousedown: Function.createDelegate(this, this._onMouseDownInner),
                    mouseup: Function.createDelegate(this, this._onMouseUpInner),
                    mouseout: Function.createDelegate(this, this._onMouseOutInner),
                    mousemove: Function.createDelegate(this, this._onMouseMoveInner),
                    dragStart: Function.createDelegate(this, this._IEDragDropHandler),
                    drag: Function.createDelegate(this, this._IEDragDropHandler),
                    dragEnd: Function.createDelegate(this, this._IEDragDropHandler)
                };
                $addHandlers(this._inner, this._innerDelegates);
            }
        }
    },
    
    _initializeHandles: function() {
        /// <summary>
        /// Initializes data and events on handle elements.
        /// </summary>
        /// <returns></returns>
        
        var state = this.get_ClientState();
        if (state) {
            var handleStates = state.split(',', this._handles);
        }

        for (var i = 0; i < this._handles; i++) {
            var handle = this._handleData[i],
                decimalPlaces = this._multiHandleSliderTargets[i].Decimals;
            
            if (handleStates) {
                handle.Value = parseFloat(handleStates[i]);
            }

            this._initializeMultiHandleSliderTarget(handle.multiHandleSliderTargetID, decimalPlaces, handle);
            this._initializeHandleValue(handle);
            this._setHandlePosition(handle, true);
            this._initializeDragHandle(handle);
        }
    },
    
    _initializeHandleValue: function(handle) {
        /// <summary>
        /// Initializes the starting value of a given handle.
        /// </summary>
        /// <param name="handle" type="Sys.UI.DomElement" domElement="true">The handle element.</param>
        /// <returns></returns>
        
        if (!handle.Value) {
            try {
                var multiHandleSliderTarget = $get(handle.multiHandleSliderTargetID),
                    isInput = multiHandleSliderTarget && multiHandleSliderTarget.nodeName === 'INPUT',
                    handleValue = parseFloat(isInput ? multiHandleSliderTarget.value : multiHandleSliderTarget.innerHTML);
            } catch(ex) {
                handleValue = Number.NaN;
            }

            if (isNaN(handleValue)) {
                handle.Value = this._minimum;
                if(isInput) {
                    multiHandleSliderTarget.value = handle.Value;
                } else {
                    multiHandleSliderTarget.innerHTML = handle.Value;
                }
            } else {
                handle.Value = handleValue;
            }
        }
    },

    _initializeInnerRail: function() {
        /// <summary>
        /// Initializes the appearance and location of the inner rail. Called multiple times to
        /// recalculate the inner rail's position.
        /// </summary>
        /// <returns></returns>
        
        if (this._inner && this._showInnerRail) {
            var firstIndex = 0, lastIndex = this._handles - 1,
                handle = this._handleData[firstIndex],
                lastHandle = this._handles > 1 ? this._handleData[lastIndex] : null;

            if (lastHandle) {
            
                var handleWidth = parseInt(this._getBoundsInternal(handle).width, 10),
                    handleLeft = parseInt(this._isVertical ? handle.style.top : handle.style.left, 10),
                    handleRight = parseInt(this._isVertical ? lastHandle.style.top : lastHandle.style.left, 10),
                    firstOffset = parseInt(this._multiHandleSliderTargets[firstIndex].Offset, 10),
                    lastOffset = parseInt(this._multiHandleSliderTargets[lastIndex].Offset, 10);
                
                handleLeft += firstOffset;
                handleRight += lastOffset;

                if (this._isVertical) {
                    this._inner.style.top = handleLeft + "px";
                    this._inner.style.height = handleRight + handleWidth - handleLeft + "px";
                } else {
                    this._inner.style.left = handleLeft + "px";
                    this._inner.style.width = (handleRight + handleWidth - handleLeft) + "px";
                }

                if (this._innerRailStyle === Sys.Extended.UI.MultiHandleInnerRailStyle.SlidingDoors) {
                    this._inner.style.backgroundPosition = this._isVertical ? "0 -" + handleLeft + "px": "-" + handleLeft + "px 0";
                }
            }
        }
    },
    
    _initializeMultiHandleSliderTarget: function(multiHandleSliderTargetID, decimalPlaces, handle) {
        /// <summary>
        /// Initializes a given element that is bound to a handle.
        /// </summary>
        /// <param name="multiHandleSliderTargetID" type="String">The ID of the control element.</param>
        /// <param name="decimalPlaces" type="Number">The number of decimal places to format the control's value.</param>
        /// <param name="handle" type="Sys.UI.DomElement" domElement="true">The handle element.</param>
        /// <returns></returns>
        
        if (multiHandleSliderTargetID) {
            var multiHandleSliderTarget = $get(multiHandleSliderTargetID);

            if (handle.Value) {
                multiHandleSliderTarget.value = handle.Value;
            }

            multiHandleSliderTarget.Handle = handle;
            multiHandleSliderTarget.Decimals = decimalPlaces;
            multiHandleSliderTarget.OldValue = multiHandleSliderTarget.value;
            multiHandleSliderTarget.onchange = "setValue(this, " + multiHandleSliderTarget.value + ")";
            
            if (!multiHandleSliderTarget.Decimals) {
                multiHandleSliderTarget.Decimals = 0;
            }

            var isInput = multiHandleSliderTarget && multiHandleSliderTarget.nodeName === 'INPUT';
            if (isInput) {
                multiHandleSliderTarget.KeyPressHandler = Function.createDelegate(this, this._onMultiHandleSliderTargetKeyPressed);
                multiHandleSliderTarget.ChangeHandler = Function.createDelegate(this, this._onMultiHandleSliderTargetChange);
                
                $addHandler(multiHandleSliderTarget, 'keypress', multiHandleSliderTarget.KeyPressHandler);
                $addHandler(multiHandleSliderTarget, 'change', multiHandleSliderTarget.ChangeHandler);
            }
        }
    },
    
    _initializeSlider: function() {
        /// <summary>
        /// Creates the generated slider DOM components.
        /// </summary>
        /// <returns></returns>
        
        Sys.Extended.UI.DragDrop.registerDropTarget(this);

        this._initializeHandles();
        this._initializeHandlers();
        this._initializeInnerRail();
        this._initialized = true;

        this._raiseEvent('load');
    },

    _resetDragHandle: function(handle) {
        /// <summary>
        /// Resets the position of the hidden drag handle.
        /// </summary>
        /// <param name="handle" type="Sys.UI.DomElement" domElement="true">The handle element.</param>
        /// <returns></returns>
        
        var handleBounds = $common.getBounds(handle);
        $common.setLocation(handle.DragHandle, {
            x: handleBounds.x,
            y: handleBounds.y
        });
    },

    _resolveNamingContainer: function() {
        /// <summary>
        /// Uses the behavior name and client state to resolve the inner control IDs.
        /// </summary>
        /// <returns></returns>
        
        if (this._isServerControl && this._multiHandleSliderTargets && !this._boundControlID) {
            var index = this._clientStateFieldID.lastIndexOf(this._id),
                token = this._clientStateFieldID.substring(0, index);
            
            for (var i = 0; i < this._handles; i++) {
                this._multiHandleSliderTargets[i].ControlID = token + this._multiHandleSliderTargets[i].ControlID;
            }
        }
    },
    
    _saveState: function() {
        /// <summary>
        /// Sets the values of all handle controls in client state.
        /// </summary>
        /// <returns></returns>
        
        var state = [this._handles];
        for (var i = 0; i < this._handles; i++) {
            state[i] = $get(this._multiHandleSliderTargets[i].ControlID).value;
        }
        
        this.set_ClientState(state.join(','));
    },

    _setHandlePosition: function(handle, allowAnimation) {
        /// <summary>
        /// Sets the location of the handle when changing slider values.
        /// </summary>
        /// <param name="handle" type="Sys.UI.DomElement" domElement="true">The handle element.</param>
        /// <param name="allowAnimation" type="Boolean">If true, animate the transition to the new handle value; otherwise, do nothing.</param>
        /// <returns></returns>
        
        var min = this._minimum, max = this._maximum, value = handle.Value,
            animate = this._enableHandleAnimation && this._animationPending && allowAnimation,
            handleBounds = this._getBoundsInternal(handle),
            railBounds = this._getOuterBounds();

        if (handleBounds.width <= 0 && railBounds.width <= 0) {
            handleBounds.width = parseInt($common.getCurrentStyle(handle, 'width'), 10);
            railBounds.width = parseInt($common.getCurrentStyle(this._outer, 'width'), 10);
            
            if (handleBounds.width <= 0 || railBounds.width <= 0) {
                throw Error.argument('width', Sys.Extended.UI.Resources.MultiHandleSlider_CssHeightWidthRequired);
            }
        }

        var extent = max - min, fraction = (value - min) / extent;
        var o = Math.round(fraction * (railBounds.width - handleBounds.width));
        var offset = (value === min) ? 0: (value === max) ? (railBounds.width - handleBounds.width) : o;

        if (animate) {
            handle.Animation.set_startValue(handleBounds.x - railBounds.x);
            handle.Animation.set_endValue(offset);
            handle.Animation.set_propertyKey(this._isVertical ? 'top': 'left');
            handle.Animation.play();

            this._animationPending = false;
        } else {
            o = offset + 'px';
            if (this._isVertical) {
                handle.style.top = o;
            } else {
                handle.style.left = o;
            }
        }
    },

    _setRailStyles: function() {
        /// <summary>
        /// Determines from configuration the class names to use for slider elements.
        /// </summary>
        /// <returns></returns>
        
        if(!this._inner && this._railCssClass) {
            this._outer.className = this._railCssClass;
            return;
        }        
        var styleInfo = this._cssClass ? this._cssClass: "ajax__multi_slider_default";

        Sys.UI.DomElement.addCssClass(this.get_element(), styleInfo);
        Sys.UI.DomElement.addCssClass(this._outer, styleInfo);
        Sys.UI.DomElement.addCssClass(this._wrapper, styleInfo);

        if (this._inner) {
            Sys.UI.DomElement.addCssClass(this._inner, styleInfo);

            var outer = this._isVertical ? 'outer_rail_vertical': 'outer_rail_horizontal',
                inner = this._isVertical ? 'inner_rail_vertical': 'inner_rail_horizontal';

            Sys.UI.DomElement.addCssClass(this._outer, outer);
            Sys.UI.DomElement.addCssClass(this._inner, inner);
        } else {
            outer = this._isVertical ? 'inner_rail_vertical': 'inner_rail_horizontal';

            Sys.UI.DomElement.addCssClass(this._outer, outer);
        }
    },
    
    _setMultiHandleSliderTargetValue: function(multiHandleSliderTarget, value) {
        /// <summary>
        /// Sets the value of a bound control.
        /// </summary>
        /// <param name="multiHandleSliderTarget" type="Sys.UI.DomElement" domElement="true">The bound control element.</param>
        /// <param name="value" type="Number">The value to set the target to.</param>
        /// <returns></returns>
        
        var oldValue = multiHandleSliderTarget.OldValue, newValue = value;

        if (oldValue === newValue && this._isReadOnly) {
            multiHandleSliderTarget.value = oldValue;
        } else {
            if (!this.get_isUpdating()) {
                newValue = this._calculateMultiHandleSliderTargetValue(multiHandleSliderTarget);
            }

            multiHandleSliderTarget.value = newValue.toFixed(multiHandleSliderTarget.Decimals);
            this._ensureBinding(multiHandleSliderTarget);

            if (!Number.isInstanceOfType(multiHandleSliderTarget.value)) {
                try {
                    multiHandleSliderTarget.value = parseFloat(multiHandleSliderTarget.value);
                } catch(ex) {
                    multiHandleSliderTarget.value = Number.NaN;
                }
            }

            if (this._tooltipText) {
                var handle = multiHandleSliderTarget.Handle;
                handle.alt = handle.title = String.format(this._tooltipText, multiHandleSliderTarget.value);
            }

            if (this._initialized) {
                multiHandleSliderTarget.Handle.Value = newValue;
                this._setHandlePosition(multiHandleSliderTarget.Handle, true);
                if(this._handles === 1) {
                    this.get_element().value = newValue;
                }

                if (multiHandleSliderTarget.value !== oldValue) {
                    multiHandleSliderTarget.OldValue = multiHandleSliderTarget.value;
                    this._initializeInnerRail();

                    if (this._innerDrag) {
                        this._blockInnerClick = true;
                    }
                    this._raiseEvent('valueChanged');

                    if (this.get_isUpdating()) {
                        if (!this._raiseChangeOnlyOnMouseUp) {
                            $common.tryFireEvent(this.get_element(), "change");
                        }
                    }
                }
            }
        }

        this._saveState();
    },
    
    _setValueFromMultiHandleSliderTarget: function(multiHandleSliderTarget) {
        /// <summary>
        /// Sets the value of the slider based on the value inside a bound control.
        /// </summary>
        /// <param name="multiHandleSliderTarget" type="Sys.UI.DomElement" domElement="true">The bound control instance.</param>
        /// <returns></returns>
        
        this.beginUpdate();
        if (multiHandleSliderTarget) {
            if (!this._isReadOnly) {
                if (this._handles === 1 && this._steps > 0) {
                    this._setMultiHandleSliderTargetValue(multiHandleSliderTarget, multiHandleSliderTarget.value);
                }
                this._calculateMultiHandleSliderTargetValue(multiHandleSliderTarget);
            } else {
                this._setMultiHandleSliderTargetValue(multiHandleSliderTarget, multiHandleSliderTarget.OldValue);
            }
        }
        this.endUpdate();
    },

    _slideMultiHandleSliderTarget: function(multiHandleSliderTargetID, decrement) {
        /// <summary>
        /// Increments the value of a bound control.
        /// </summary>
        /// <param name="multiHandleSliderTargetID" type="String">The ID of the bound control element.</param>
        /// <param name="decrement" type="Boolean" mayBeNull="false" optional="true">If true, decrement the target's value; otherwise, increment it.</param>
        /// <returns></returns>
        
        var multiHandleSliderTarget = $get(multiHandleSliderTargetID),
            oldValue = multiHandleSliderTarget.value,
            newValue, i;

        if (this._steps > 0) {
            var stepValues = this._getStepValues(),
                oldStep = this._getNearestStepValue(oldValue);
                
            newValue = oldStep;

            if (decrement) {
                for (i = this._steps - 1; i > -1; i--) {
                    if (stepValues[i] < oldStep) {
                        newValue = stepValues[i];
                        break;
                    }
                }
            } else {
                for (i = 0; i < this._steps; i++) {
                    if (stepValues[i] > oldStep) {
                        newValue = stepValues[i];
                        break;
                    }
                }
            }
        } else {
            var prevValue = parseFloat(multiHandleSliderTarget.value);
            newValue = decrement ? prevValue - parseFloat(this._increment) : prevValue + parseFloat(this._increment);
        }

        multiHandleSliderTarget.value = newValue;
        this._setValueFromMultiHandleSliderTarget(multiHandleSliderTarget);
        return multiHandleSliderTarget.value == newValue;
    },
    
    _startDragDrop: function(handle) {
        /// <summary>
        /// Begins a drag and drop operation on the specified handle. Drag operations
        /// affect the hidden drag handle on the element, not the element itself.
        /// </summary>
        /// <param name="handle" type="Sys.UI.DomElement" domElement="true">The handle element under drag</param>
        /// <returns></returns>
        
        this._resetDragHandle(handle);
        this._handleUnderDrag = handle;

        Sys.Extended.UI.DragDrop.startDragDrop(this, handle.DragHandle, null);
    },
    
    
    _onAnimationEnded: function() {
        /// <summary>
        /// Called when an animation effect is complete.
        /// </summary>
        /// <returns></returns>
        
        this._initializeInnerRail();
    },
    
    _onAnimationStep: function() {
        /// <summary>
        /// Called when an animation step is reached.
        /// </summary>
        /// <returns></returns>
        
        this._initializeInnerRail();
    },
    
    _onHideDrag : function(e, p)
    {
        /// <summary>
        /// Reverses the class name used for drag effects when the callback event is raised.
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">The event source.</param>
        /// <param name="p" type="">The callback parameter object, containing custom style and orientation fields.</param>
        /// <returns></returns>
        
        this.className = p.custom && p.custom.length > 0 ? p.custom: p.vertical ? 'handle_vertical': 'handle_horizontal';
    },
    
    _onHideHover : function(e, p)
    {
         /// <summary>
        /// Reverses the class name used for hover effects when the callback event is raised.
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">The event source.</param>
        /// <param name="p" type="">The callback parameter object, containing custom style and orientation fields.</param>
        /// <returns></returns>
        
        this.className = p.custom && p.custom.length > 0 ? p.custom: p.vertical ? 'ajax__multi_slider_default handle_vertical': 'ajax__multi_slider_default handle_horizontal';        
    },
    
    _onInnerRailClick: function(e) {
        /// <summary>
        /// Handler for the inner rail's click event.
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">Event info.</param>
        /// <returns></returns>
        
        if (this._enableRailClick) {
            var target = e.target;

            if (target === this._inner && !this._blockInnerClick) {
                this._animationPending = true;
                this._onInnerRailClicked(e);
            } else {
                this._blockInnerClick = false;
            }
        }
    },

    _onInnerRailClicked: function(e) {
        /// <summary>
        /// Called when the inner rail's click event is handled.
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">Event info.</param>
        /// <returns></returns>
        
        var offset = this._calculateInnerRailOffset(e);
        this._calculateClick(offset);
    },
    
    _onKeyDown: function(e) {
        /// <summary>
        /// Handler for the outer rail's keydown event.
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">Event info.</param>
        /// <returns type="Boolean">Whether the operation was successful.</returns>
        
        if (this._enableKeyboard) {        
            var evt = new Sys.UI.DomEvent(e),
                handled = false;
            
            switch (evt.keyCode || evt.rawEvent.keyCode) {
            case Sys.UI.Key.up:
            case Sys.UI.Key.left:
                if (!handled) {
                    this._handleSlide(true);
                    evt.preventDefault();
                    handled = true;
                }
                return false;
            case Sys.UI.Key.down:
            case Sys.UI.Key.right:
                if (!handled) {
                    this._handleSlide(false);
                    evt.preventDefault();
                    handled = true;
                }
                return false;
            default:
                return false;
            }
        }
    },
    
    _onMouseOver: function(e) {
        /// <summary>
        /// Handler for the outer rail's mouseover event.
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">Event info.</param>
        /// <returns></returns>
        
        this._outer.focus();
    },

    _onMouseWheel: function(e) {
        /// <summary>
        /// Handler for the outer rail's mouse wheel event.
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">Event info.</param>
        /// <returns type="Boolean">Whether the operation was successful.</returns>
        
        var delta = 0;
        if (e.wheelDelta) {
            delta = e.wheelDelta / 120;
            if (Sys.Browser.agent === Sys.Browser.Opera) {
                delta = -delta;
            }
        } else if (e.detail) {
            delta = -e.detail / 3;
        }

        if (delta) {
            this._handleSlide(delta <= 0);
        }

        if (e.preventDefault) {
            e.preventDefault();
        }
        return false;
    },

    _onMouseUp: function(e) {
        /// <summary>
        /// Handler for the outer rail's mouseup event.
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">Event info.</param>
        /// <returns></returns>
        
        window._event = e;
        e.preventDefault();

        this._cancelDrag();
    },

    _onMouseOut: function(e) {
        /// <summary>
        /// Handler for the outer rail's mouseout event.
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">Event info.</param>
        /// <returns></returns>
        
        window._event = e;
        e.preventDefault();

        this._outer.blur();
        if (this._handleUnderDrag) {
            this._cancelDrag();
        }
    },

    _onMouseOutInner: function(e) {
        /// <summary>
        /// Handler for the inner rail's mouseout event.
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">Event info.</param>
        /// <returns></returns>
        
        window._event = e;
        e.preventDefault();

        this._inner.blur();
        if (this._innerDrag) {
            this._cancelDrag();
        }
    },

    _onMouseDown: function(e) {
        /// <summary>
        /// Handler for the outer rail's mousedown event.
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">Event info.</param>
        /// <returns></returns>
        
        window._event = e;
        e.preventDefault();

        if (!Sys.Extended.UI.MultiHandleSliderBehavior.DropPending) {
            Sys.Extended.UI.MultiHandleSliderBehavior.DropPending = this;

            $addHandler(document, 'selectstart', this._selectStartHandler);
            this._selectStartPending = true;

            var handle = e.target;
            this._startDragDrop(handle);
        }
    },

    _onMouseDownInner: function(e) {
        /// <summary>
        /// Handler for the inner rail's mousedown event.
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">Event info.</param>
        /// <returns></returns>
        
        window._event = e;
        e.preventDefault();

        if (this._enableInnerRangeDrag) {
            if (!this._innerDragFlag) {
                this._innerDragFlag = true;
            }
        }
    },

    _onMouseUpInner: function(e) {
        /// <summary>
        /// Handler for the inner rail's mouseup event.
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">Event info.</param>
        /// <returns></returns>
        
        if (this._enableInnerRangeDrag) {
            this._innerDragFlag = false;
        }
    },

    _onMouseMoveInner: function(e) {
        /// <summary>
        /// Handler for the inner rail's mousemove event.
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">Event info.</param>
        /// <returns></returns>
        
        window._event = e;
        e.preventDefault();

        if (this._enableInnerRangeDrag) {
            if (!this._innerDrag && this._innerDragFlag) {
                this._innerDragFlag = false;
                
                if (!Sys.Extended.UI.MultiHandleSliderBehavior.DropPending) {
                    Sys.Extended.UI.MultiHandleSliderBehavior.DropPending = this;

                    $addHandler(document, 'selectstart', this._selectStartHandler);
                    this._selectStartPending = true;

                    this._innerDrag = true;

                    var offset = this._calculateInnerRailOffset(e);
                    var handle = this._calculateClosestHandle(offset);

                    this._startDragDrop(handle);
                }
            }
        }
    },
    
    _onMultiHandleSliderTargetChange : function(e) {
        /// <summary>
        /// Handler for when a slider value changes programmatically.
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">Event info.</param>
        /// <returns></returns>
        
        this._animationPending = true;
        var multiHandleSliderTarget = e.target;
        this._setValueFromMultiHandleSliderTarget(multiHandleSliderTarget);
        this._initializeInnerRail();
        
        e.preventDefault();
    },

    _onMultiHandleSliderTargetKeyPressed: function(e) {
        /// <summary>
        /// Handler for a slider focused key press event.
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">Event info.</param>
        /// <returns></returns>
        
        var evt = new Sys.UI.DomEvent(e);
        if (evt.charCode === 13) {
            this._animationPending = true;
            var multiHandleSliderTarget = evt.target;
            this._setValueFromMultiHandleSliderTarget(multiHandleSliderTarget);
            this._initializeInnerRail();
            evt.preventDefault();
        }
    },
    
    _onOuterRailClick: function(e) {
        /// <summary>
        /// Handler for the outer rail's click event.
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">Event info</param>
        /// <returns></returns>
        
        if (this._enableRailClick) {
            var target = e.target;

            if (target === this._outer) {
                this._animationPending = true;
                this._onOuterRailClicked(e);
            }
        }
    },

    _onOuterRailClicked: function(e) {
        /// <summary>
        /// Called when the outer rail's click event is handled.
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">Event info.</param>
        /// <returns></returns>
        
        var offset = this._isVertical ? e.offsetY: e.offsetX;
        this._calculateClick(offset);
    },
    
    _onShowDrag : function(e, p)
    {
        /// <summary>
        /// Sets the class name used for drag effects when the callback event is raised.
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent" >The event source.</param>
        /// <param name="p" type="">The callback parameter object, containing custom style and orientation fields.</param>
        /// <returns></returns>
        
        this.className = p.custom && p.custom.length > 0 ? p.custom: p.vertical ? 'ajax__multi_slider_default handle_vertical_down': 'ajax__multi_slider_default handle_horizontal_down';
    },
    
    _onShowHover : function(e, p)
    {
        /// <summary>
        /// Sets the class name used for hover effects when the callback event is raised.
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent" >The event source.</param>
        /// <param name="p" type="">The callback parameter object, containing custom style and orientation fields.</param>
        /// <returns></returns>
        
        this.className = p.custom && p.custom.length > 0 ? p.custom: p.vertical ? 'ajax__multi_slider_default handle_vertical_hover': 'ajax__multi_slider_default handle_horizontal_hover';        
    },
    
    
    get_dragDataType: function() {
        /// <summary>
        /// Implementation of  <see cref="IDragSource" />.
        /// </summary>
        /// <returns type="String">The drag data type.</returns>
        
        return 'HTML';
    },

    getDragData: function() {
        /// <summary>
        /// Implementation of <see cref="IDragSource" />.
        /// </summary>
        /// <returns type="Sys.UI.DomElement" domElement="true">The drag source.</returns>
        
        return this._handleUnderDrag;
    },

    get_dragMode: function() {
        /// <summary>
        /// Implementation of <see cref="IDragSource" />.
        /// </summary>
        /// <returns type="Sys.Extended.UI.DragMode">The drag mode.</returns>
        
        return Sys.Extended.UI.DragMode.Move;
    },

    onDragStart: function() {
        /// <summary>
        /// Implementation of <see cref="IDragSource" />.
        /// </summary>
        /// <returns></returns>
        
        this._resetDragHandle(this._handleUnderDrag);
        this._raiseEvent('dragStart');
    },

    onDrag: function() {
        /// <summary>
        /// Implementation of <see cref="IDragSource" />.
        /// </summary>
        /// <returns></returns>
        
        var dragHandleBounds = this._getBoundsInternal(this._handleUnderDrag.DragHandle),
            handleBounds = this._getBoundsInternal(this._handleUnderDrag),
            railBounds = this._getOuterBounds(),
            handlePosition;
            
        if (this._isVertical) {
            handlePosition = {
                y: dragHandleBounds.x - railBounds.x,
                x: 0
            };
        } else {
            handlePosition = {
                x: dragHandleBounds.x - railBounds.x,
                y: 0
            };
        }

        $common.setLocation(this._handleUnderDrag, handlePosition);

        this._calculateMultiHandleSliderTargetValue(null, null, true);
        
        if (this._steps > 1) {
            this._setHandlePosition(this._handleUnderDrag, false);
        }
        this._raiseEvent('drag');
    },

    onDragEnd: function() {
        /// <summary>
        /// Implementation of <see cref="IDragSource" />.
        /// </summary>
        /// <returns></returns>
        
        this._initializeInnerRail();
        if (this._raiseChangeOnlyOnMouseUp) {
            $common.tryFireEvent(this.get_element(), "change");
        }
        this._innerDrag = false;
        this._handleUnderDrag = null;
        this._raiseEvent('dragEnd');
    },

    
    get_dropTargetElement: function() {
        /// <summary>
        /// Implementation of <see cref="IDropTarget" />
        /// </summary>
        /// <returns type="Sys.UI.DomElement" domElement="true">The drop target element.</returns>
        
        return document.forms[0];
    },

    canDrop: function(dragMode, dataType) {
        /// <summary>
        /// Implementation of <see cref="IDropTarget" />.
        /// </summary>
        /// <param name="dragMode" type="Sys.Extended.UI.DragMode">The drag mode.</param>
        /// <param name="dataType" type="String">The data type.</param>
        /// <return type="Boolean">Whether the drop target is draggable.</return>
        
        return dataType == 'HTML';
    },

    drop: Function.emptyMethod,    
    onDragEnterTarget: Function.emptyMethod,
    onDragLeaveTarget: Function.emptyMethod,
    onDragInTarget: Function.emptyMethod,
    
    _IEDragDropHandler: function(e) {
        /// <summary>
        /// Handler for drag and drop in IE
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">Event info.</param>
        /// <returns></returns>
        
        e.preventDefault();
    },

    _onSelectStart: function(e) {
        /// <summary>
        /// Handler for when the parent element is selected.
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">Event info.</param>
        /// <returns></returns>
        
        e.preventDefault();
        return false;
    },

    
    _getOuterBounds: function() {
        /// <summary>
        /// Gets the outer bounds.
        /// </summary>
        /// <returns type="Bounds">The boundary definition of outer rail.</returns>
        
        return this._getBoundsInternal(this._outer);
    },

    _getInnerBounds: function() {
        /// <summary>
        /// Gets the inner bounds.
        /// </summary>
        /// <returns type="Bounds">The boundary definition of the inner rail.</returns>
        
        return this._getBoundsInternal(this._inner);
    },

    _getBoundsInternal: function(element) {
        /// <summary>
        /// Gets the bounds of a given DOM element.
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">The element.</param>
        /// <returns type="Bounds">The boundary definition for the element.</returns>
        
        var bounds = $common.getBounds(element);
        if (this._isVertical) {
            bounds = {
                x: bounds.y,
                y: bounds.x,
                height: bounds.width,
                width: bounds.height,
                right: bounds.right,
                left: bounds.left,
                bottom: bounds.bottom,
                location: {
                    x: bounds.y,
                    y: bounds.x
                },
                size: {
                    width: bounds.height,
                    height: bounds.width
                }
            };
        } else {
            bounds = {
                x: bounds.x,
                y: bounds.y,
                height: bounds.height,
                width: bounds.width,
                right: bounds.right,
                left: bounds.left,
                bottom: bounds.bottom,
                location: {
                    x: bounds.x,
                    y: bounds.y
                },
                size: {
                    width: bounds.width,
                    height: bounds.height
                }
            };
        }
        return bounds;
    },

    _raiseEvent: function(eventName, eventArgs) {
        /// <summary>
        /// Raises an event.
        /// </summary>
        /// <param name="eventName" type="String">The event name.</param>
        /// <param name="eventArgs" type="Sys.EventArgs">The event arguments.</param>
        /// <returns></returns>
        
        var handler = this.get_events().getHandler(eventName);
        if (handler) {
            if (!eventArgs) {
                eventArgs = Sys.EventArgs.Empty;
            }
            handler(this, eventArgs);
        }
    },

    
    get_Value : function() {
        /// <summary>
        /// Gets the value of a single bound control for backwards compatibility
        /// of existing slider and tests. Only to be used in this context.
        /// </summary>
        /// <returns type="Number">The value of the single handle.</returns>
        
        var bound = $get(this._boundControlID);
        return bound.value ? bound.value : 0;
    },
    set_Value : function(value) {
        /// <summary>
        /// Sets the value of a single bound control for backwards compatibility
        /// of existing slider and tests. Only to be used in this context.
        /// </summary>
        /// <param name="value" type="Number">The new value of the single handle slider.</param>
        /// <returns></returns>
        
        var multiHandleSliderTarget = $get(this._multiHandleSliderTargets[0].ControlID);
        
        this.beginUpdate();
        this._setMultiHandleSliderTargetValue(multiHandleSliderTarget, this._getNearestStepValue(value));
        this.endUpdate();
        
        $common.tryFireEvent(multiHandleSliderTarget, "change");
    },
    
    
    get_minimum: function() {
        /// <value type="Int32">
        /// The lowest value on the slider.
        /// </value>
        
        return this._minimum;
    },
    set_minimum: function(value) {
        /// <value type="Int32">
        /// The lowest value on the slider.
        /// </value>
        
        if (value !== this._minimum) {
            this._minimum = value;
            this.raisePropertyChanged('minimum');
        }
    },

    get_maximum: function() {
        /// <value type="Int32">
        /// The highest value on the slider.
        /// </value>
        
        return this._maximum;
    },
    set_maximum: function(value) {
        /// <value type="Int32">
        /// The highest value on the slider.
        /// </value>
        
        if (value !== this._maximum) {
            this._maximum = value;
            this.raisePropertyChanged('maximum');
        }
    },

    get_length: function() {
        /// <value type="Int32">
        /// The length of the slider rail in pixels.
        /// </value>
        
        return this._length;
    },
    set_length: function(value) {
        /// <value type="Int32">
        /// The length of the slider rail in pixels.
        /// </value>
        
        if (value !== this._length) {
            this._length = value;
            this.raisePropertyChanged('length');
        }
    },

    get_steps: function() {
        /// <value type="Int32">
        /// Determines number of discrete locations on the slider; otherwise, the slider is continous.
        /// </value>
        
        return this._steps;
    },
    set_steps: function(value) {
        /// <value type="Int32">
        /// Determines number of discrete locations on the slider; otherwise, the slider is continous.
        /// </value>
        
        var oldValue = this._steps;
        this._steps = Math.abs(value);
        this._steps = (this._steps === 1) ? 2: this._steps;
        if (oldValue !== this._steps) {
            this.raisePropertyChanged('steps');
        }
    },

    get_orientation: function() {
        /// <value type="Boolean">
        /// Determines if the slider's orientation is horizontal or vertical.
        /// </value>
        
        return this._isVertical;
    },
    set_orientation: function(value) {
        /// <value type="Boolean">
        /// Determines if the slider's orientation is horizontal or vertical.
        /// </value>
        
        if (value !== this._isVertical) {
            this._orientation = value;
            this.raisePropertyChanged('orientation');
        }
    },

    get_enableHandleAnimation: function() {
        /// <value type="Boolean">
        /// Determines if the slider handles display an animation effect when changing position.
        /// </value>
        
        return this._enableHandleAnimation;
    },
    set_enableHandleAnimation: function(value) {
        /// <value type="Boolean">
        /// Determines if the slider handles display an animation effect when changing position.
        /// </value>
        
        if (value !== this._enableHandleAnimation) {
            this._enableHandleAnimation = value;
            this.raisePropertyChanged('enableHandleAnimation');
        }
    },

    get_handleAnimationDuration: function() {
        /// <value type="Int32">
        /// Determines the total duration of the animation effect, in seconds.
        /// </value>
        
        return this._handleAnimationDuration;
    },
    set_handleAnimationDuration: function(value) {
        /// <value type="Int32">
        /// Determines the total duration of the animation effect, in seconds.
        /// </value>
        
        if (value !== this._handleAnimationDuration) {
            this._handleAnimationDuration = value;
            this.raisePropertyChanged('handleAnimationDuration');
        }
    },

    get_raiseChangeOnlyOnMouseUp: function() {
        /// <value type="Boolean">
        /// Determines if changes to the slider's values are raised as an event when dragging; otherwise, they are raised on drag end.
        /// </value>
        
        return this._raiseChangeOnlyOnMouseUp;
    },
    set_raiseChangeOnlyOnMouseUp: function(value) {
        /// <value type="Boolean">
        /// Determines if changes to the slider's values are raised as an event when dragging; otherwise, they are raised on drag end.
        /// </value>
        
        if (value !== this._raiseChangeOnlyOnMouseUp) {
            this._raiseChangeOnlyOnMouseUp = value;
            this.raisePropertyChanged('raiseChangeOnlyOnMouseUp');
        }
    },

    get_showInnerRail: function() {
        /// <value type="Boolean">
        /// Determines if the slider will show an inner selected range rail; otherwise, it will display as a uniform rail.
        /// </value>
        
        return this._showInnerRail;
    },
    set_showInnerRail: function(value) {
        /// <value type="Boolean">
        /// Determines if the slider will show an inner selected range rail; otherwise, it will display as a uniform rail.
        /// </value>
        
        if (value !== this._showInnerRail) {
            this._showInnerRail = value;
            this.raisePropertyChanged('showInnerRail');
        }
    },

    get_showHandleHoverStyle: function() {
        /// <value type="Boolean">
        /// Determines if the slider handles will show a style effect when they are hovered over.
        /// </value>
        
        return this._showHoverStyle;
    },
    set_showHandleHoverStyle: function(value) {
        /// <value type="Boolean">
        /// Determines if the slider handles will show a style effect when they are hovered over.
        /// </value>
        
        if (value !== this._showHoverStyle) {
            this._showHoverStyle = value;
            this.raisePropertyChanged('showHoverStyle');
        }
    },

    get_showHandleDragStyle: function() {
        /// <value type="Boolean">
        /// Determines if the slider handles will show a style effect when they are being dragged.
        /// </value>
        
        return this._showDragStyle;
    },
    set_showHandleDragStyle: function(value) {
        /// <value type="Boolean">
        /// Determines if the slider handles will show a style effect when they are being dragged.
        /// </value>
        
        if (value !== this._showDragStyle) {
            this._showDragStyle = value;
            this.raisePropertyChanged('showDragStyle');
        }
    },

    get_innerRailStyle: function() {
        /// <value type="Sys.Extended.UI.MultiHandleInnerRailStyle">
        /// Determines how the inner rail style is handled.
        /// </value>
        
        return this._innerRailStyle;
    },
    set_innerRailStyle: function(value) {
        /// <value type="Sys.Extended.UI.MultiHandleInnerRailStyle">
        /// Determines how the inner rail style is handled.
        /// </value>
        
        if (value !== this._innerRailStyle) {
            this._innerRailStyle = value;
            this.raisePropertyChanged('innerRailStyle');
        }
    },

    get_enableInnerRangeDrag: function() {
        /// <value type="Boolean">
        /// Determines if the inner rail range can be dragged as a whole, moving both handles defining it.
        /// </value>
        
        return this._enableInnerRangeDrag;
    },
    set_enableInnerRangeDrag: function(value) {
        /// <value type="Boolean">
        /// Determines if the inner rail range can be dragged as a whole, moving both handles defining it.
        /// </value>
        
        if (value !== this._enableInnerRangeDrag) {
            this._enableInnerRangeDrag = value;
            this.raisePropertyChanged('allowInnerRangeDrag');
        }
    },

    get_enableRailClick: function() {
        /// <value type="Boolean">
        /// Determines if clicking on the rail will detect and move the closest handle.
        /// </value>
        
        return this._enableRailClick;
    },
    set_enableRailClick: function(value) {
        /// <value type="Boolean">
        /// Determines if clicking on the rail will detect and move the closest handle.
        /// </value>
        
        if (value !== this._enableRailClick) {
            this._enableRailClick = value;
            this.raisePropertyChanged('allowRailClick');
        }
    },

    get_isReadOnly: function() {
        /// <value type="Boolean">
        /// Determines if the slider and its values can be manipulated.
        /// </value>
        
        return this._isReadOnly;
    },
    set_isReadOnly: function(value) {
        /// <value type="Boolean">
        /// Determines if the slider and its values can be manipulated.
        /// </value>
        if (value !== this._isReadOnly) {
            this._isReadOnly = value;
            this.raisePropertyChanged('isReadOnly');
        }
    },

    get_enableKeyboard: function() {
        /// <value type="Boolean">
        /// Determines if the slider will respond to arrow keys when it has focus.
        /// </value>
        
        return this._enableKeyboard;
    },
    set_enableKeyboard: function(value) {
        /// <value type="Boolean">
        /// Determines if the slider will respond to arrow keys when it has focus.
        /// </value>
        
        if (value !== this._enableKeyboard) {
            this._enableKeyboard = value;
            this.raisePropertyChanged('enableKeyboard');
        }
    },

    get_enableMouseWheel: function() {
        /// <value type="Boolean">
        /// Determines if the slider will respond to the mouse wheel when it has focus.
        /// </value>
        
        return this._enableMouseWheel;
    },
    set_enableMouseWheel: function(value) {
        /// <value type="Boolean">
        /// Determines if the slider will respond to the mouse wheel when it has focus.
        /// </value>
        
        if (value !== this._enableMouseWheel) {
            this._enableMouseWheel = value;
            this.raisePropertyChanged('enableMouseWheel');
        }
    },

    get_increment: function() {
        /// <value type="Int32">
        /// Determines the number of points to increment or decrement the slider using the keyboard or mousewheel; ignored if steps is used.
        /// </value>
        
        return this._increment;
    },
    set_increment: function(value) {
        /// <value type="Int32">
        /// Determines the number of points to increment or decrement the slider using the keyboard or mousewheel; ignored if steps is used.
        /// </value>
        
        if (value !== this._increment) {
            this._increment = value;
            this.raisePropertyChanged('increment');
        }
    },

    get_tooltipText: function() {
        /// <value type="String">
        /// Determines the text to display as the tooltip; {0} denotes the current handle's value in the format string.
        /// </value>
        
        return this._tooltipText;
    },
    set_tooltipText: function(value) {
        /// <value type="String">
        /// Determines the text to display as the tooltip; {0} denotes the current handle's value in the format string.
        /// </value>
        
        if (value !== this._tooltipText) {
            this._tooltipText = value;
            this.raisePropertyChanged('tooltipText');
        }
    },

    get_multiHandleSliderTargets: function() {
        /// <value type="List<Sys.Extended.UI.MultiHandleSliderTarget">>
        /// The list of controls used to bind slider handle values. These should be Label or TextBox controls.
        /// </value>
        
        return this._multiHandleSliderTargets;
    },
    set_multiHandleSliderTargets: function(value) {
        /// <value type="List<Sys.Extended.UI.MultiHandleSliderTarget>">
        /// The list of controls used to bind slider handle values. These should be Label or TextBox controls.
        /// </value>
        
        if (value !== this._multiHandleSliderTargets) {
            this._multiHandleSliderTargets = value;
            this.raisePropertyChanged('multiHandleSliderTargets');
        }
    },

    get_cssClass: function() {
        /// <value type="String">
        /// Gets or sets the CSS class of a single handle.
        /// </value>
        
        return this._cssClass;
    },
    set_cssClass: function(value) {
        /// <value type="String">
        /// Gets or sets the CSS class of a single handle.
        /// </value>
        
        if (value !== this._cssClass) {
            this._cssClass = value;
            this.raisePropertyChanged('cssClass');
        }
    },

    get_boundControlID: function() {
        /// <value type="String">
        /// Gets or sets the ID of a control to use for a single handle.
        /// </value>
        
        return this._boundControlID;
    },
    set_boundControlID: function(value) {
        /// <value type="String">
        /// Gets or sets the ID of a control to use for a single handle.
        /// </value>
        
        this._boundControlID = value;
        if (this._boundControlID) {
            this._boundControl = $get(this._boundControlID);
        } else {
            this._boundControl = null;
        }
    },

    get_handleCssClass: function() {
        /// <value type="String">
        /// Gets or sets the CSS class of a single handle.
        /// </value>
        
        return this._handleCssClass;
    },
    set_handleCssClass: function(value) {
        /// <value type="String">
        /// Gets or sets the CSS class of a single handle.
        /// </value>
        
        this._handleCssClass = value;
    },
    
    get_handleImageUrl: function() {
        /// <value type="String">
        /// Gets or sets the URL for the image to display in the slider's handle.
        /// </value>
        
        return this._handleImageUrl;
    },
    set_handleImageUrl: function(value) {
        /// <value type="String">
        /// Gets or sets the URL for the image to display in the slider's handle.
        /// </value>
        
        this._handleImageUrl = value;
    },
    
    get_railCssClass: function() {
        /// <value type="String">
        /// Gets or sets the CSS class of a single handled slider's outer rail.
        /// </value>
        
        return this._railCssClass;
    },
    set_railCssClass: function(value) {
        /// <value type="String">
        /// Gets or sets the CSS class of a single handled slider's outer rail.
        /// </value>
        
        this._railCssClass = value;
    },
    
    get_decimals: function() {
        /// <value type="Int32">
        /// Get/Set the number of decimal digits in a single slider's value.
        /// A value of 0 means an integer value.
        /// </value>
        
        return this._decimals;
    },
    set_decimals: function(value) {
        /// <value type="Int32">
        /// Get/Set the number of decimal digits in a single slider's value.
        /// A value of 0 means an integer value.
        /// </value>
        
        this._decimals = value;
    },

    
    add_load: function(handler) {
        /// <summary>
        /// Add an event handler to the load event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">Event handler.</param>
        /// <returns />
        
        this.get_events().addHandler('load', handler);
    },
    remove_load: function(handler) {
        /// <summary>
        /// Remove an event handler from the load event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">Event handler.</param>
        /// <returns />
        
        this.get_events().removeHandler('load', handler);
    },

    add_dragStart: function(handler) {
        /// <summary>
        /// Add an event handler to the dragStart event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">Event handler.</param>
        /// <returns />
        
        this.get_events().addHandler('dragStart', handler);
    },
    remove_dragStart: function(handler) {
        /// <summary>
        /// Remove an event handler from the dragStart event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">Event handler.</param>
        /// <returns />
        
        this.get_events().removeHandler('dragStart', handler);
    },

    add_drag: function(handler) {
        /// <summary>
        /// Add an event handler to the drag event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">Event handler.</param>
        /// <returns />
        
        this.get_events().addHandler('drag', handler);
    },
    remove_drag: function(handler) {
        /// <summary>
        /// Remove an event handler from the drag event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">Event handler.</param>
        /// <returns />
        
        this.get_events().removeHandler('drag', handler);
    },

    add_dragEnd: function(handler) {
        /// <summary>
        /// Add an event handler to the dragEnd event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">Event handler.</param>
        /// <returns />
        
        this.get_events().addHandler('dragEnd', handler);
    },
    remove_dragEnd: function(handler) {
        /// <summary>
        /// Remove an event handler from the dragEnd event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">Event handler.</param>
        /// <returns />
        
        this.get_events().removeHandler('dragEnd', handler);
    },

    add_valueChanged: function(handler) {
        /// <summary>
        /// Add an event handler to the valueChanged event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">Event handler.</param>
        /// <returns />
        
        this.get_events().addHandler('valueChanged', handler);
    },
    remove_valueChanged: function(handler) {
        /// <summary>
        /// Remove an event handler from the valueChanged event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">Event handler.</param>
        /// <returns />
        
        this.get_events().removeHandler('valueChanged', handler);
    }
}

Sys.Extended.UI.MultiHandleSliderBehavior.DropPending = null;
Sys.Extended.UI.MultiHandleSliderBehavior.registerClass('Sys.Extended.UI.MultiHandleSliderBehavior', Sys.Extended.UI.BehaviorBase);
Sys.registerComponent(Sys.Extended.UI.MultiHandleSliderBehavior, { name: "multiHandleSlider" });

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedBase", "ExtendedDragDrop", "ExtendedAnimations"], execute);
}
else {
    execute();
}

})();
�// (c) 2010 CodePlex Foundation
(function(){function a(){var s="aria-hidden",k="status",j="submit",h="=",g="undefined",d=-1,f="",u="function",r="pageLoading",q="pageLoaded",p="initializeRequest",o="endRequest",n="beginRequest",m="script",l="error",t="readystatechange",i="load",a=null,c=true,b=false;Type._registerScript("MicrosoftAjaxWebForms.js",["MicrosoftAjaxCore.js","MicrosoftAjaxSerialization.js","MicrosoftAjaxNetwork.js","MicrosoftAjaxComponentModel.js"]);var e,v;Type.registerNamespace("Sys.WebForms");e=Sys.WebForms.BeginRequestEventArgs=function(d,c,b){var a=this;Sys.WebForms.BeginRequestEventArgs.initializeBase(a);a._request=d;a._postBackElement=c;a._updatePanelsToUpdate=b};e.prototype={get_postBackElement:function(){return this._postBackElement},get_request:function(){return this._request},get_updatePanelsToUpdate:function(){return this._updatePanelsToUpdate?Array.clone(this._updatePanelsToUpdate):[]}};e.registerClass("Sys.WebForms.BeginRequestEventArgs",Sys.EventArgs);e=Sys.WebForms.EndRequestEventArgs=function(e,c,d){var a=this;Sys.WebForms.EndRequestEventArgs.initializeBase(a);a._errorHandled=b;a._error=e;a._dataItems=c||{};a._response=d};e.prototype={get_dataItems:function(){return this._dataItems},get_error:function(){return this._error},get_errorHandled:function(){return this._errorHandled},set_errorHandled:function(a){this._errorHandled=a},get_response:function(){return this._response}};e.registerClass("Sys.WebForms.EndRequestEventArgs",Sys.EventArgs);e=Sys.WebForms.InitializeRequestEventArgs=function(d,c,b){var a=this;Sys.WebForms.InitializeRequestEventArgs.initializeBase(a);a._request=d;a._postBackElement=c;a._updatePanelsToUpdate=b};e.prototype={get_postBackElement:function(){return this._postBackElement},get_request:function(){return this._request},get_updatePanelsToUpdate:function(){return this._updatePanelsToUpdate?Array.clone(this._updatePanelsToUpdate):[]},set_updatePanelsToUpdate:function(a){this._updated=c;this._updatePanelsToUpdate=a}};e.registerClass("Sys.WebForms.InitializeRequestEventArgs",Sys.CancelEventArgs);e=Sys.WebForms.PageLoadedEventArgs=function(c,b,d){var a=this;Sys.WebForms.PageLoadedEventArgs.initializeBase(a);a._panelsUpdated=c;a._panelsCreated=b;a._dataItems=d||{}};e.prototype={get_dataItems:function(){return this._dataItems},get_panelsCreated:function(){return this._panelsCreated},get_panelsUpdated:function(){return this._panelsUpdated}};e.registerClass("Sys.WebForms.PageLoadedEventArgs",Sys.EventArgs);e=Sys.WebForms.PageLoadingEventArgs=function(c,b,d){var a=this;Sys.WebForms.PageLoadingEventArgs.initializeBase(a);a._panelsUpdating=c;a._panelsDeleting=b;a._dataItems=d||{}};e.prototype={get_dataItems:function(){return this._dataItems},get_panelsDeleting:function(){return this._panelsDeleting},get_panelsUpdating:function(){return this._panelsUpdating}};e.registerClass("Sys.WebForms.PageLoadingEventArgs",Sys.EventArgs);e=Sys._ScriptLoaderTask=function(b,a){this._scriptElement=b;this._completedCallback=a};e.prototype={get_scriptElement:function(){return this._scriptElement},dispose:function(){var b=this;if(b._disposed)return;b._disposed=c;b._removeScriptElementHandlers();Sys._ScriptLoaderTask._clearScript(b._scriptElement);b._scriptElement=a},execute:function(){this._addScriptElementHandlers();document.getElementsByTagName("head")[0].appendChild(this._scriptElement)},_addScriptElementHandlers:function(){var a=this;a._scriptLoadDelegate=Function.createDelegate(a,a._scriptLoadHandler);if(document.addEventListener){if(!a._scriptElement.readyState)a._scriptElement.readyState="loaded";$addHandler(a._scriptElement,i,a._scriptLoadDelegate)}else $addHandler(a._scriptElement,t,a._scriptLoadDelegate);if(a._scriptElement.addEventListener){a._scriptErrorDelegate=Function.createDelegate(a,a._scriptErrorHandler);a._scriptElement.addEventListener(l,a._scriptErrorDelegate,b)}},_removeScriptElementHandlers:function(){var c=this;if(c._scriptLoadDelegate){var d=c.get_scriptElement();if(document.addEventListener)$removeHandler(d,i,c._scriptLoadDelegate);else $removeHandler(d,t,c._scriptLoadDelegate);if(c._scriptErrorDelegate){c._scriptElement.removeEventListener(l,c._scriptErrorDelegate,b);c._scriptErrorDelegate=a}c._scriptLoadDelegate=a}},_scriptErrorHandler:function(){if(this._disposed)return;this._completedCallback(this.get_scriptElement(),b)},_scriptLoadHandler:function(){if(this._disposed)return;var a=this.get_scriptElement();if(a.readyState!=="loaded"&&a.readyState!=="complete")return;this._completedCallback(a,c)}};e.registerClass("Sys._ScriptLoaderTask",a,Sys.IDisposable);e._clearScript=function(a){!Sys.Debug.isDebug&&a.parentNode.removeChild(a)};e=Sys._ScriptLoader=function(){var b=this;b._scriptsToLoad=a;b._sessions=[];b._scriptLoadedDelegate=Function.createDelegate(b,b._scriptLoadedHandler)};e.prototype={dispose:function(){var c=this;c._stopSession();c._loading=b;if(c._events)delete c._events;c._sessions=a;c._currentSession=a;c._scriptLoadedDelegate=a},loadScripts:function(f,d,e,c){var b=this,g={allScriptsLoadedCallback:d,scriptLoadFailedCallback:e,scriptLoadTimeoutCallback:c,scriptsToLoad:b._scriptsToLoad,scriptTimeout:f};b._scriptsToLoad=a;b._sessions.push(g);!b._loading&&b._nextSession()},queueCustomScriptTag:function(a){if(!this._scriptsToLoad)this._scriptsToLoad=[];Array.add(this._scriptsToLoad,a)},queueScriptBlock:function(a){if(!this._scriptsToLoad)this._scriptsToLoad=[];Array.add(this._scriptsToLoad,{text:a})},queueScriptReference:function(a){if(!this._scriptsToLoad)this._scriptsToLoad=[];Array.add(this._scriptsToLoad,{src:a})},_createScriptElement:function(b){var a=document.createElement(m);a.type="text/javascript";for(var c in b)a[c]=b[c];return a},_loadScriptsInternal:function(){var a=this,c=a._currentSession;if(c.scriptsToLoad&&c.scriptsToLoad.length>0){var d=Array.dequeue(c.scriptsToLoad),b=a._createScriptElement(d);if(b.text&&Sys.Browser.agent===Sys.Browser.Safari){b.innerHTML=b.text;delete b.text}if(typeof d.src==="string"){a._currentTask=new Sys._ScriptLoaderTask(b,a._scriptLoadedDelegate);a._currentTask.execute()}else{document.getElementsByTagName("head")[0].appendChild(b);Sys._ScriptLoaderTask._clearScript(b);a._loadScriptsInternal()}}else{a._stopSession();var e=c.allScriptsLoadedCallback;e&&e(a);a._nextSession()}},_nextSession:function(){var d=this;if(d._sessions.length===0){d._loading=b;d._currentSession=a;return}d._loading=c;var e=Array.dequeue(d._sessions);d._currentSession=e;if(e.scriptTimeout>0)d._timeoutCookie=window.setTimeout(Function.createDelegate(d,d._scriptLoadTimeoutHandler),e.scriptTimeout*1e3);d._loadScriptsInternal()},_raiseError:function(){var a=this,d=a._currentSession.scriptLoadFailedCallback,c=a._currentTask.get_scriptElement();a._stopSession();if(d){d(a,c);a._nextSession()}else{a._loading=b;throw Sys._ScriptLoader._errorScriptLoadFailed(c.src);}},_scriptLoadedHandler:function(c,d){var b=this;if(d){Array.add(Sys._ScriptLoader._getLoadedScripts(),c.src);b._currentTask.dispose();b._currentTask=a;b._loadScriptsInternal()}else b._raiseError()},_scriptLoadTimeoutHandler:function(){var a=this,b=a._currentSession.scriptLoadTimeoutCallback;a._stopSession();b&&b(a);a._nextSession()},_stopSession:function(){var b=this;if(b._timeoutCookie){window.clearTimeout(b._timeoutCookie);b._timeoutCookie=a}if(b._currentTask){b._currentTask.dispose();b._currentTask=a}}};e.registerClass("Sys._ScriptLoader",a,Sys.IDisposable);e.getInstance=function(){var a=Sys._ScriptLoader._activeInstance;if(!a)a=Sys._ScriptLoader._activeInstance=new Sys._ScriptLoader;return a};e.isScriptLoaded=function(b){var a=document.createElement(m);a.src=b;return Array.contains(Sys._ScriptLoader._getLoadedScripts(),a.src)};e.readLoadedScripts=function(){if(!Sys._ScriptLoader._referencedScripts)for(var c=Sys._ScriptLoader._referencedScripts=[],d=document.getElementsByTagName(m),b=d.length-1;b>=0;b--){var e=d[b],a=e.src;if(a.length)!Array.contains(c,a)&&Array.add(c,a)}};e._errorScriptLoadFailed=function(b){var a;a=Sys.Res.scriptLoadFailed;var d="Sys.ScriptLoadFailedException: "+String.format(a,b),c=Error.create(d,{name:"Sys.ScriptLoadFailedException",scriptUrl:b});c.popStackFrame();return c};e._getLoadedScripts=function(){if(!Sys._ScriptLoader._referencedScripts){Sys._ScriptLoader._referencedScripts=[];Sys._ScriptLoader.readLoadedScripts()}return Sys._ScriptLoader._referencedScripts};e=Sys.WebForms.PageRequestManager=function(){var c=this;c._form=a;c._activeDefaultButton=a;c._activeDefaultButtonClicked=b;c._updatePanelIDs=a;c._updatePanelClientIDs=a;c._updatePanelHasChildrenAsTriggers=a;c._asyncPostBackControlIDs=a;c._asyncPostBackControlClientIDs=a;c._postBackControlIDs=a;c._postBackControlClientIDs=a;c._scriptManagerID=a;c._pageLoadedHandler=a;c._additionalInput=a;c._onsubmit=a;c._onSubmitStatements=[];c._originalDoPostBack=a;c._originalDoPostBackWithOptions=a;c._originalFireDefaultButton=a;c._originalDoCallback=a;c._isCrossPost=b;c._postBackSettings=a;c._request=a;c._onFormSubmitHandler=a;c._onFormElementClickHandler=a;c._onWindowUnloadHandler=a;c._asyncPostBackTimeout=a;c._controlIDToFocus=a;c._scrollPosition=a;c._processingRequest=b;c._scriptDisposes={};c._transientFields=["__VIEWSTATEENCRYPTED","__VIEWSTATEFIELDCOUNT"]};e.prototype={get_isInAsyncPostBack:function(){return this._request!==a},add_beginRequest:function(a){Sys.Observer.addEventHandler(this,n,a)},remove_beginRequest:function(a){Sys.Observer.removeEventHandler(this,n,a)},add_endRequest:function(a){Sys.Observer.addEventHandler(this,o,a)},remove_endRequest:function(a){Sys.Observer.removeEventHandler(this,o,a)},add_initializeRequest:function(a){Sys.Observer.addEventHandler(this,p,a)},remove_initializeRequest:function(a){Sys.Observer.removeEventHandler(this,p,a)},add_pageLoaded:function(a){Sys.Observer.addEventHandler(this,q,a)},remove_pageLoaded:function(a){Sys.Observer.removeEventHandler(this,q,a)},add_pageLoading:function(a){Sys.Observer.addEventHandler(this,r,a)},remove_pageLoading:function(a){Sys.Observer.removeEventHandler(this,r,a)},abortPostBack:function(){var b=this;if(!b._processingRequest&&b._request){b._request.get_executor().abort();b._request=a}},beginAsyncPostBack:function(h,e,k,i,j){var d=this;if(i&&typeof Page_ClientValidate===u&&!Page_ClientValidate(j||a))return;d._postBackSettings=d._createPostBackSettings(c,h,e);var g=d._form;g.__EVENTTARGET.value=e||f;g.__EVENTARGUMENT.value=k||f;d._isCrossPost=b;d._additionalInput=a;d._onFormSubmit()},_cancelPendingCallbacks:function(){for(var b=0,g=window.__pendingCallbacks.length;b<g;b++){var e=window.__pendingCallbacks[b];if(e){if(!e.async)window.__synchronousCallBackIndex=d;window.__pendingCallbacks[b]=a;var f="__CALLBACKFRAME"+b,c=document.getElementById(f);c&&c.parentNode.removeChild(c)}}},_commitControls:function(b,d){var c=this;if(b){c._updatePanelIDs=b.updatePanelIDs;c._updatePanelClientIDs=b.updatePanelClientIDs;c._updatePanelHasChildrenAsTriggers=b.updatePanelHasChildrenAsTriggers;c._asyncPostBackControlIDs=b.asyncPostBackControlIDs;c._asyncPostBackControlClientIDs=b.asyncPostBackControlClientIDs;c._postBackControlIDs=b.postBackControlIDs;c._postBackControlClientIDs=b.postBackControlClientIDs}if(typeof d!==g&&d!==a)c._asyncPostBackTimeout=d*1e3},_createHiddenField:function(d,e){var b,a=document.getElementById(d);if(a)if(!a._isContained)a.parentNode.removeChild(a);else b=a.parentNode;if(!b){b=document.createElement("span");b.style.cssText="display:none !important";this._form.appendChild(b)}b.innerHTML="<input type='hidden' />";a=b.childNodes[0];a._isContained=c;a.id=a.name=d;a.value=e},_createPageRequestManagerTimeoutError:function(){var b="Sys.WebForms.PageRequestManagerTimeoutException: "+Sys.WebForms.Res.PRM_TimeoutError,a=Error.create(b,{name:"Sys.WebForms.PageRequestManagerTimeoutException"});a.popStackFrame();return a},_createPageRequestManagerServerError:function(a,d){var c="Sys.WebForms.PageRequestManagerServerErrorException: "+(d||String.format(Sys.WebForms.Res.PRM_ServerError,a)),b=Error.create(c,{name:"Sys.WebForms.PageRequestManagerServerErrorException",httpStatusCode:a});b.popStackFrame();return b},_createPageRequestManagerParserError:function(b){var c="Sys.WebForms.PageRequestManagerParserErrorException: "+String.format(Sys.WebForms.Res.PRM_ParserError,b),a=Error.create(c,{name:"Sys.WebForms.PageRequestManagerParserErrorException"});a.popStackFrame();return a},_createPanelID:function(e,b){var c=b.asyncTarget,a=this._ensureUniqueIds(e||b.panelsToUpdate),d=a instanceof Array?a.join(","):a||this._scriptManagerID;if(c)d+="|"+c;return encodeURIComponent(this._scriptManagerID)+h+encodeURIComponent(d)+"&"},_createPostBackSettings:function(d,a,c,b){return{async:d,asyncTarget:c,panelsToUpdate:a,sourceElement:b}},_convertToClientIDs:function(a,g,e,d){if(a)for(var b=0,i=a.length;b<i;b+=d?2:1){var c=a[b],h=(d?a[b+1]:f)||this._uniqueIDToClientID(c);Array.add(g,c);Array.add(e,h)}},dispose:function(){var b=this;Sys.Observer.clearEventHandlers(b);if(b._form){Sys.UI.DomEvent.removeHandler(b._form,j,b._onFormSubmitHandler);Sys.UI.DomEvent.removeHandler(b._form,"click",b._onFormElementClickHandler);Sys.UI.DomEvent.removeHandler(window,"unload",b._onWindowUnloadHandler);Sys.UI.DomEvent.removeHandler(window,i,b._pageLoadedHandler)}if(b._originalDoPostBack){window.__doPostBack=b._originalDoPostBack;b._originalDoPostBack=a}if(b._originalDoPostBackWithOptions){window.WebForm_DoPostBackWithOptions=b._originalDoPostBackWithOptions;b._originalDoPostBackWithOptions=a}if(b._originalFireDefaultButton){window.WebForm_FireDefaultButton=b._originalFireDefaultButton;b._originalFireDefaultButton=a}if(b._originalDoCallback){window.WebForm_DoCallback=b._originalDoCallback;b._originalDoCallback=a}b._form=a;b._updatePanelIDs=a;b._updatePanelClientIDs=a;b._asyncPostBackControlIDs=a;b._asyncPostBackControlClientIDs=a;b._postBackControlIDs=a;b._postBackControlClientIDs=a;b._asyncPostBackTimeout=a;b._scrollPosition=a},_doCallback:function(d,b,c,f,a,e){!this.get_isInAsyncPostBack()&&this._originalDoCallback(d,b,c,f,a,e)},_doPostBack:function(e,l){var d=this;d._additionalInput=a;var j=d._form;if(e===a||typeof e===g||d._isCrossPost){d._postBackSettings=d._createPostBackSettings(b);d._isCrossPost=b}else{var f=d._masterPageUniqueID,k=d._uniqueIDToClientID(e),i=document.getElementById(k);if(!i&&f)if(k.indexOf(f+"$")===0)i=document.getElementById(k.substr(f.length+1));if(!i)if(Array.contains(d._asyncPostBackControlIDs,e))d._postBackSettings=d._createPostBackSettings(c,a,e);else if(Array.contains(d._postBackControlIDs,e))d._postBackSettings=d._createPostBackSettings(b);else{var h=d._findNearestElement(e);if(h)d._postBackSettings=d._getPostBackSettings(h,e);else{if(f){f+="$";if(e.indexOf(f)===0)h=d._findNearestElement(e.substr(f.length))}if(h)d._postBackSettings=d._getPostBackSettings(h,e);else d._postBackSettings=d._createPostBackSettings(b)}}else d._postBackSettings=d._getPostBackSettings(i,e)}if(!d._postBackSettings.async){j.onsubmit=d._onsubmit;d._originalDoPostBack(e,l);j.onsubmit=a;return}j.__EVENTTARGET.value=e;j.__EVENTARGUMENT.value=l;d._onFormSubmit()},_doPostBackWithOptions:function(a){this._isCrossPost=a&&a.actionUrl;this._originalDoPostBackWithOptions(a)},_elementContains:function(d,a){while(a){if(a===d)return c;a=a.parentNode}return b},_endPostBack:function(d,f,g){var c=this;if(c._request===f.get_webRequest()){c._processingRequest=b;c._additionalInput=a;c._request=a}var e=new Sys.WebForms.EndRequestEventArgs(d,g?g.dataItems:{},f);Sys.Observer.raiseEvent(c,o,e);if(d&&!e.get_errorHandled())throw d;},_ensureUniqueIds:function(a){if(!a)return a;a=a instanceof Array?a:[a];for(var c=[],b=0,g=a.length;b<g;b++){var f=a[b],e=Array.indexOf(this._updatePanelClientIDs,f);c.push(e>d?this._updatePanelIDs[e]:f)}return c},_findNearestElement:function(b){while(b.length>0){var f=this._uniqueIDToClientID(b),e=document.getElementById(f);if(e)return e;var c=b.lastIndexOf("$");if(c===d)return a;b=b.substring(0,c)}return a},_findText:function(b,a){var c=Math.max(0,a-20),d=Math.min(b.length,a+20);return b.substring(c,d)},_fireDefaultButton:function(d,h){if(d.keyCode===13){var f=d.srcElement||d.target;if(!f||f.tagName.toLowerCase()!=="textarea"){var e=document.getElementById(h);if(e&&typeof e.click!==g){this._activeDefaultButton=e;this._activeDefaultButtonClicked=b;try{e.click()}finally{this._activeDefaultButton=a}d.cancelBubble=c;typeof d.stopPropagation===u&&d.stopPropagation();return b}}}return c},_getPageLoadedEventArgs:function(r,g){var q=[],p=[],o=g?g.version4:b,h=g?g.updatePanelData:a,i,k,l,e;if(!h){i=this._updatePanelIDs;k=this._updatePanelClientIDs;l=a;e=a}else{i=h.updatePanelIDs;k=h.updatePanelClientIDs;l=h.childUpdatePanelIDs;e=h.panelsToRefreshIDs}var c,j,n,m;if(e)for(c=0,j=e.length;c<j;c+=o?2:1){n=e[c];m=(o?e[c+1]:f)||this._uniqueIDToClientID(n);Array.add(q,document.getElementById(m))}for(c=0,j=i.length;c<j;c++)(r||Array.indexOf(l,i[c])!==d)&&Array.add(p,document.getElementById(k[c]));return new Sys.WebForms.PageLoadedEventArgs(q,p,g?g.dataItems:{})},_getPageLoadingEventArgs:function(h){var l=[],k=[],c=h.updatePanelData,m=c.oldUpdatePanelIDs,n=c.oldUpdatePanelClientIDs,p=c.updatePanelIDs,o=c.childUpdatePanelIDs,e=c.panelsToRefreshIDs,a,g,b,i,j=h.version4;for(a=0,g=e.length;a<g;a+=j?2:1){b=e[a];i=(j?e[a+1]:f)||this._uniqueIDToClientID(b);Array.add(l,document.getElementById(i))}for(a=0,g=m.length;a<g;a++){b=m[a];Array.indexOf(e,b)===d&&(Array.indexOf(p,b)===d||Array.indexOf(o,b)>d)&&Array.add(k,document.getElementById(n[a]))}return new Sys.WebForms.PageLoadingEventArgs(l,k,h.dataItems)},_getPostBackSettings:function(f,h){var e=this,i=f,g=a;while(f){if(f.id){if(!g&&Array.contains(e._asyncPostBackControlClientIDs,f.id))g=e._createPostBackSettings(c,a,h,i);else if(!g&&Array.contains(e._postBackControlClientIDs,f.id))return e._createPostBackSettings(b);else{var j=Array.indexOf(e._updatePanelClientIDs,f.id);if(j!==d)return e._updatePanelHasChildrenAsTriggers[j]?e._createPostBackSettings(c,[e._updatePanelIDs[j]],h,i):e._createPostBackSettings(c,a,h,i)}if(!g&&e._matchesParentIDInList(f.id,e._asyncPostBackControlClientIDs))g=e._createPostBackSettings(c,a,h,i);else if(!g&&e._matchesParentIDInList(f.id,e._postBackControlClientIDs))return e._createPostBackSettings(b)}f=f.parentNode}return!g?e._createPostBackSettings(b):g},_getScrollPosition:function(){var b=this,a=document.documentElement;if(a&&(b._validPosition(a.scrollLeft)||b._validPosition(a.scrollTop)))return{x:a.scrollLeft,y:a.scrollTop};else{a=document.body;return a&&(b._validPosition(a.scrollLeft)||b._validPosition(a.scrollTop))?{x:a.scrollLeft,y:a.scrollTop}:b._validPosition(window.pageXOffset)||b._validPosition(window.pageYOffset)?{x:window.pageXOffset,y:window.pageYOffset}:{x:0,y:0}}},_initializeInternal:function(k,l,d,e,h,f,g){var b=this;if(b._prmInitialized)throw Error.invalidOperation(Sys.WebForms.Res.PRM_CannotRegisterTwice);b._prmInitialized=c;b._masterPageUniqueID=g;b._scriptManagerID=k;b._form=Sys.UI.DomElement.resolveElement(l);b._onsubmit=b._form.onsubmit;b._form.onsubmit=a;b._onFormSubmitHandler=Function.createDelegate(b,b._onFormSubmit);b._onFormElementClickHandler=Function.createDelegate(b,b._onFormElementClick);b._onWindowUnloadHandler=Function.createDelegate(b,b._onWindowUnload);Sys.UI.DomEvent.addHandler(b._form,j,b._onFormSubmitHandler);Sys.UI.DomEvent.addHandler(b._form,"click",b._onFormElementClickHandler);Sys.UI.DomEvent.addHandler(window,"unload",b._onWindowUnloadHandler);b._originalDoPostBack=window.__doPostBack;if(b._originalDoPostBack)window.__doPostBack=Function.createDelegate(b,b._doPostBack);b._originalDoPostBackWithOptions=window.WebForm_DoPostBackWithOptions;if(b._originalDoPostBackWithOptions)window.WebForm_DoPostBackWithOptions=Function.createDelegate(b,b._doPostBackWithOptions);b._originalFireDefaultButton=window.WebForm_FireDefaultButton;if(b._originalFireDefaultButton)window.WebForm_FireDefaultButton=Function.createDelegate(b,b._fireDefaultButton);b._originalDoCallback=window.WebForm_DoCallback;if(b._originalDoCallback)window.WebForm_DoCallback=Function.createDelegate(b,b._doCallback);b._pageLoadedHandler=Function.createDelegate(b,b._pageLoadedInitialLoad);Sys.UI.DomEvent.addHandler(window,i,b._pageLoadedHandler);d&&b._updateControls(d,e,h,f,c)},_matchesParentIDInList:function(e,d){for(var a=0,f=d.length;a<f;a++)if(e.startsWith(d[a]+"_"))return c;return b},_onFormElementActive:function(a,e,f){var b=this;if(a.disabled)return;b._postBackSettings=b._getPostBackSettings(a,a.name);if(a.name){var c=a.tagName.toUpperCase();if(c==="INPUT"){var d=a.type;if(d===j)b._additionalInput=encodeURIComponent(a.name)+h+encodeURIComponent(a.value);else if(d==="image")b._additionalInput=encodeURIComponent(a.name)+".x="+e+"&"+encodeURIComponent(a.name)+".y="+f}else if(c==="BUTTON"&&a.name.length!==0&&a.type===j)b._additionalInput=encodeURIComponent(a.name)+h+encodeURIComponent(a.value)}},_onFormElementClick:function(a){this._activeDefaultButtonClicked=a.target===this._activeDefaultButton;this._onFormElementActive(a.target,a.offsetX,a.offsetY)},_onFormSubmit:function(r){var e=this,m,C,q=c,D=e._isCrossPost;e._isCrossPost=b;if(e._onsubmit)q=e._onsubmit();if(q)for(m=0,C=e._onSubmitStatements.length;m<C;m++)if(!e._onSubmitStatements[m]()){q=b;break}if(!q){r&&r.preventDefault();return}var w=e._form;if(D)return;e._activeDefaultButton&&!e._activeDefaultButtonClicked&&e._onFormElementActive(e._activeDefaultButton,0,0);if(!e._postBackSettings||!e._postBackSettings.async)return;var f=new Sys.StringBuilder,F=w.elements.length,z=e._createPanelID(a,e._postBackSettings);f.append(z);for(m=0;m<F;m++){var l=w.elements[m],o=l.name;if(typeof o===g||o===a||o.length===0||o===e._scriptManagerID)continue;var v=l.tagName.toUpperCase();if(v==="INPUT"){var t=l.type;if(t==="text"||t==="password"||t==="hidden"||(t==="checkbox"||t==="radio")&&l.checked){f.append(encodeURIComponent(o));f.append(h);f.append(encodeURIComponent(l.value));f.append("&")}}else if(v==="SELECT")for(var E=l.options.length,x=0;x<E;x++){var A=l.options[x];if(A.selected){f.append(encodeURIComponent(o));f.append(h);f.append(encodeURIComponent(A.value));f.append("&")}}else if(v==="TEXTAREA"){f.append(encodeURIComponent(o));f.append(h);f.append(encodeURIComponent(l.value));f.append("&")}}f.append("__ASYNCPOST=true&");if(e._additionalInput){f.append(e._additionalInput);e._additionalInput=a}var i=new Sys.Net.WebRequest,j=w.action;if(Sys.Browser.agent===Sys.Browser.InternetExplorer){var y=j.indexOf("#");if(y!==d)j=j.substr(0,y);var u=j.indexOf("?");if(u!==d){var B=j.substr(0,u);if(B.indexOf("%")===d)j=encodeURI(B)+j.substr(u)}else if(j.indexOf("%")===d)j=encodeURI(j)}i.set_url(j);i.get_headers()["X-MicrosoftAjax"]="Delta=true";i.get_headers()["Cache-Control"]="no-cache";i.set_timeout(e._asyncPostBackTimeout);i.add_completed(Function.createDelegate(e,e._onFormSubmitCompleted));i.set_body(f.toString());var s,k;s=e._postBackSettings.panelsToUpdate;k=new Sys.WebForms.InitializeRequestEventArgs(i,e._postBackSettings.sourceElement,s);Sys.Observer.raiseEvent(e,p,k);q=!k.get_cancel();if(!q){r&&r.preventDefault();return}if(k&&k._updated){s=k.get_updatePanelsToUpdate();i.set_body(i.get_body().replace(z,e._createPanelID(s,e._postBackSettings)))}e._scrollPosition=e._getScrollPosition();e.abortPostBack();k=new Sys.WebForms.BeginRequestEventArgs(i,e._postBackSettings.sourceElement,s||e._postBackSettings.panelsToUpdate);Sys.Observer.raiseEvent(e,n,k);e._originalDoCallback&&e._cancelPendingCallbacks();e._request=i;e._processingRequest=b;i.invoke();r&&r.preventDefault()},_onFormSubmitCompleted:function(h){var d=this;d._processingRequest=c;if(h.get_timedOut()){d._endPostBack(d._createPageRequestManagerTimeoutError(),h,a);return}if(h.get_aborted()){d._endPostBack(a,h,a);return}if(!d._request||h.get_webRequest()!==d._request)return;if(h.get_statusCode()!==200){d._endPostBack(d._createPageRequestManagerServerError(h.get_statusCode()),h,a);return}var e=d._parseDelta(h);if(!e)return;var g,j;if(e.asyncPostBackControlIDsNode&&e.postBackControlIDsNode&&e.updatePanelIDsNode&&e.panelsToRefreshNode&&e.childUpdatePanelIDsNode){var x=d._updatePanelIDs,t=d._updatePanelClientIDs,n=e.childUpdatePanelIDsNode.content,v=n.length?n.split(","):[],s=d._splitNodeIntoArray(e.asyncPostBackControlIDsNode),u=d._splitNodeIntoArray(e.postBackControlIDsNode),w=d._splitNodeIntoArray(e.updatePanelIDsNode),l=d._splitNodeIntoArray(e.panelsToRefreshNode),m=e.version4;for(g=0,j=l.length;g<j;g+=m?2:1){var o=(m?l[g+1]:f)||d._uniqueIDToClientID(l[g]);if(!document.getElementById(o)){d._endPostBack(Error.invalidOperation(String.format(Sys.WebForms.Res.PRM_MissingPanel,o)),h,e);return}}var k=d._processUpdatePanelArrays(w,s,u,m);k.oldUpdatePanelIDs=x;k.oldUpdatePanelClientIDs=t;k.childUpdatePanelIDs=v;k.panelsToRefreshIDs=l;e.updatePanelData=k}e.dataItems={};var i;for(g=0,j=e.dataItemNodes.length;g<j;g++){i=e.dataItemNodes[g];e.dataItems[i.id]=i.content}for(g=0,j=e.dataItemJsonNodes.length;g<j;g++){i=e.dataItemJsonNodes[g];e.dataItems[i.id]=Sys.Serialization.JavaScriptSerializer.deserialize(i.content)}var q=Sys.Observer._getContext(d,c).events.getHandler(r);q&&q(d,d._getPageLoadingEventArgs(e));Sys._ScriptLoader.readLoadedScripts();Sys.Application.beginCreateComponents();var p=Sys._ScriptLoader.getInstance();d._queueScripts(p,e.scriptBlockNodes,c,b);d._processingRequest=c;p.loadScripts(0,Function.createDelegate(d,Function.createCallback(d._scriptIncludesLoadComplete,e)),Function.createDelegate(d,Function.createCallback(d._scriptIncludesLoadFailed,e)),a)},_onWindowUnload:function(){this.dispose()},_pageLoaded:function(a,b){Sys.Observer.raiseEvent(this,q,this._getPageLoadedEventArgs(a,b));!a&&Sys.Application.raiseLoad()},_pageLoadedInitialLoad:function(){this._pageLoaded(c,a)},_parseDelta:function(n){var h=this,g=n.get_responseData(),i,o,K,L,J,f=0,j=a,p=[];while(f<g.length){i=g.indexOf("|",f);if(i===d){j=h._findText(g,f);break}o=parseInt(g.substring(f,i),10);if(o%1!==0){j=h._findText(g,f);break}f=i+1;i=g.indexOf("|",f);if(i===d){j=h._findText(g,f);break}K=g.substring(f,i);f=i+1;i=g.indexOf("|",f);if(i===d){j=h._findText(g,f);break}L=g.substring(f,i);f=i+1;if(f+o>=g.length){j=h._findText(g,g.length);break}J=g.substr(f,o);f+=o;if(g.charAt(f)!=="|"){j=h._findText(g,f);break}f++;Array.add(p,{type:K,id:L,content:J})}if(j){h._endPostBack(h._createPageRequestManagerParserError(String.format(Sys.WebForms.Res.PRM_ParserErrorDetails,j)),n,a);return a}for(var D=[],B=[],v=[],C=[],y=[],I=[],G=[],F=[],A=[],x=[],r,u,z,s,t,w,E,m,q=0,M=p.length;q<M;q++){var e=p[q];switch(e.type){case"#":m=e;break;case"updatePanel":Array.add(D,e);break;case"hiddenField":Array.add(B,e);break;case"arrayDeclaration":Array.add(v,e);break;case"scriptBlock":Array.add(C,e);break;case"scriptStartupBlock":Array.add(y,e);break;case"expando":Array.add(I,e);break;case"onSubmit":Array.add(G,e);break;case"asyncPostBackControlIDs":r=e;break;case"postBackControlIDs":u=e;break;case"updatePanelIDs":z=e;break;case"asyncPostBackTimeout":s=e;break;case"childUpdatePanelIDs":t=e;break;case"panelsToRefreshIDs":w=e;break;case"formAction":E=e;break;case"dataItem":Array.add(F,e);break;case"dataItemJson":Array.add(A,e);break;case"scriptDispose":Array.add(x,e);break;case"pageRedirect":if(m&&parseFloat(m.content)>=4)e.content=unescape(e.content);if(Sys.Browser.agent===Sys.Browser.InternetExplorer){var k=document.createElement("a");k.style.display="none";k.attachEvent("onclick",H);k.href=e.content;h._form.parentNode.insertBefore(k,h._form);k.click();k.detachEvent("onclick",H);h._form.parentNode.removeChild(k);function H(a){a.cancelBubble=c}}else window.location.href=e.content;return a;case l:h._endPostBack(h._createPageRequestManagerServerError(Number.parseInvariant(e.id),e.content),n,a);return a;case"pageTitle":document.title=e.content;break;case"focus":h._controlIDToFocus=e.content;break;default:h._endPostBack(h._createPageRequestManagerParserError(String.format(Sys.WebForms.Res.PRM_UnknownToken,e.type)),n,a);return a}}return{version4:m?parseFloat(m.content)>=4:b,executor:n,updatePanelNodes:D,hiddenFieldNodes:B,arrayDeclarationNodes:v,scriptBlockNodes:C,scriptStartupNodes:y,expandoNodes:I,onSubmitNodes:G,dataItemNodes:F,dataItemJsonNodes:A,scriptDisposeNodes:x,asyncPostBackControlIDsNode:r,postBackControlIDsNode:u,updatePanelIDsNode:z,asyncPostBackTimeoutNode:s,childUpdatePanelIDsNode:t,panelsToRefreshNode:w,formActionNode:E}},_processUpdatePanelArrays:function(e,r,s,g){var d,c,b;if(e){var j=e.length,k=g?2:1;d=new Array(j/k);c=new Array(j/k);b=new Array(j/k);for(var h=0,i=0;h<j;h+=k,i++){var q,a=e[h],l=g?e[h+1]:f;q=a.charAt(0)==="t";a=a.substr(1);if(!l)l=this._uniqueIDToClientID(a);b[i]=q;d[i]=a;c[i]=l}}else{d=[];c=[];b=[]}var o=[],m=[];this._convertToClientIDs(r,o,m,g);var p=[],n=[];this._convertToClientIDs(s,p,n,g);return{updatePanelIDs:d,updatePanelClientIDs:c,updatePanelHasChildrenAsTriggers:b,asyncPostBackControlIDs:o,asyncPostBackControlClientIDs:m,postBackControlIDs:p,postBackControlClientIDs:n}},_queueScripts:function(d,b,e,f){for(var a=0,h=b.length;a<h;a++){var g=b[a].id;switch(g){case"ScriptContentNoTags":if(!f)continue;d.queueScriptBlock(b[a].content);break;case"ScriptContentWithTags":var c=window.eval("("+b[a].content+")");if(c.src){if(!e||Sys._ScriptLoader.isScriptLoaded(c.src))continue}else if(!f)continue;d.queueCustomScriptTag(c);break;case"ScriptPath":if(!e||Sys._ScriptLoader.isScriptLoaded(b[a].content))continue;d.queueScriptReference(b[a].content)}}},_registerDisposeScript:function(a,b){if(!this._scriptDisposes[a])this._scriptDisposes[a]=[b];else Array.add(this._scriptDisposes[a],b)},_scriptIncludesLoadComplete:function(j,e){var i=this;if(e.executor.get_webRequest()!==i._request)return;i._commitControls(e.updatePanelData,e.asyncPostBackTimeoutNode?e.asyncPostBackTimeoutNode.content:a);if(e.formActionNode)i._form.action=e.formActionNode.content;var d,h,g;for(d=0,h=e.updatePanelNodes.length;d<h;d++){g=e.updatePanelNodes[d];var o=document.getElementById(g.id);if(!o){i._endPostBack(Error.invalidOperation(String.format(Sys.WebForms.Res.PRM_MissingPanel,g.id)),e.executor,e);return}i._updatePanel(o,g.content)}for(d=0,h=e.scriptDisposeNodes.length;d<h;d++){g=e.scriptDisposeNodes[d];i._registerDisposeScript(g.id,g.content)}for(d=0,h=i._transientFields.length;d<h;d++){var l=document.getElementById(i._transientFields[d]);if(l){var p=l._isContained?l.parentNode:l;p.parentNode.removeChild(p)}}for(d=0,h=e.hiddenFieldNodes.length;d<h;d++){g=e.hiddenFieldNodes[d];i._createHiddenField(g.id,g.content)}if(e.scriptsFailed)throw Sys._ScriptLoader._errorScriptLoadFailed(e.scriptsFailed.src,e.scriptsFailed.multipleCallbacks);i._queueScripts(j,e.scriptBlockNodes,b,c);var n=f;for(d=0,h=e.arrayDeclarationNodes.length;d<h;d++){g=e.arrayDeclarationNodes[d];n+="Sys.WebForms.PageRequestManager._addArrayElement('"+g.id+"', "+g.content+");\r\n"}var m=f;for(d=0,h=e.expandoNodes.length;d<h;d++){g=e.expandoNodes[d];m+=g.id+" = "+g.content+"\r\n"}n.length&&j.queueScriptBlock(n);m.length&&j.queueScriptBlock(m);i._queueScripts(j,e.scriptStartupNodes,c,c);var k=f;for(d=0,h=e.onSubmitNodes.length;d<h;d++){if(d===0)k="Array.add(Sys.WebForms.PageRequestManager.getInstance()._onSubmitStatements, function() {\r\n";k+=e.onSubmitNodes[d].content+"\r\n"}if(k.length){k+="\r\nreturn true;\r\n});\r\n";j.queueScriptBlock(k)}j.loadScripts(0,Function.createDelegate(i,Function.createCallback(i._scriptsLoadComplete,e)),a,a)},_scriptIncludesLoadFailed:function(d,c,b,a){a.scriptsFailed={src:c.src,multipleCallbacks:b};this._scriptIncludesLoadComplete(d,a)},_scriptsLoadComplete:function(k,h){var c=this,j=h.executor;if(window.__theFormPostData)window.__theFormPostData=f;if(window.__theFormPostCollection)window.__theFormPostCollection=[];window.WebForm_InitCallback&&window.WebForm_InitCallback();if(c._scrollPosition){window.scrollTo&&window.scrollTo(c._scrollPosition.x,c._scrollPosition.y);c._scrollPosition=a}Sys.Application.endCreateComponents();c._pageLoaded(b,h);c._endPostBack(a,j,h);if(c._controlIDToFocus){var d,i;if(Sys.Browser.agent===Sys.Browser.InternetExplorer){var e=$get(c._controlIDToFocus);d=e;if(e&&!WebForm_CanFocus(e))d=WebForm_FindFirstFocusableChild(e);if(d&&typeof d.contentEditable!==g){i=d.contentEditable;d.contentEditable=b}else d=a}WebForm_AutoFocus(c._controlIDToFocus);if(d)d.contentEditable=i;c._controlIDToFocus=a}},_splitNodeIntoArray:function(b){var a=b.content,c=a.length?a.split(","):[];return c},_uniqueIDToClientID:function(a){return a.replace(/\$/g,"_")},_updateControls:function(d,a,c,b,e){this._commitControls(this._processUpdatePanelArrays(d,a,c,e),b)},_updatePanel:function(b,g){var a=this;for(var d in a._scriptDisposes)if(a._elementContains(b,document.getElementById(d))){for(var f=a._scriptDisposes[d],e=0,h=f.length;e<h;e++)window.eval(f[e]);delete a._scriptDisposes[d]}Sys.Application.disposeElement(b,c);b.innerHTML=g},_validPosition:function(b){return typeof b!==g&&b!==a&&b!==0}};e.getInstance=function(){var a=Sys.WebForms.PageRequestManager._instance;if(!a)a=Sys.WebForms.PageRequestManager._instance=new Sys.WebForms.PageRequestManager;return a};e._addArrayElement=function(a){if(!window[a])window[a]=[];for(var b=1,c=arguments.length;b<c;b++)Array.add(window[a],arguments[b])};e._initialize=function(){var a=Sys.WebForms.PageRequestManager.getInstance();a._initializeInternal.apply(a,arguments)};e.registerClass("Sys.WebForms.PageRequestManager");e=Sys.UI._UpdateProgress=function(d){var b=this;Sys.UI._UpdateProgress.initializeBase(b,[d]);b._displayAfter=500;b._dynamicLayout=c;b._associatedUpdatePanelId=a;b._beginRequestHandlerDelegate=a;b._startDelegate=a;b._endRequestHandlerDelegate=a;b._pageRequestManager=a;b._timerCookie=a};e.prototype={get_displayAfter:function(){return this._displayAfter},set_displayAfter:function(a){this._displayAfter=a},get_dynamicLayout:function(){return this._dynamicLayout},set_dynamicLayout:function(a){this._dynamicLayout=a},get_associatedUpdatePanelId:function(){return this._associatedUpdatePanelId},set_associatedUpdatePanelId:function(a){this._associatedUpdatePanelId=a},get_role:function(){return k},_clearTimeout:function(){if(this._timerCookie){window.clearTimeout(this._timerCookie);this._timerCookie=a}},_getUniqueID:function(c){var b=Array.indexOf(this._pageRequestManager._updatePanelClientIDs,c);return b===d?a:this._pageRequestManager._updatePanelIDs[b]},_handleBeginRequest:function(i,h){var a=this,e=h.get_postBackElement(),d=c,g=a._associatedUpdatePanelId;if(a._associatedUpdatePanelId){var f=h.get_updatePanelsToUpdate();if(f&&f.length)d=Array.contains(f,g)||Array.contains(f,a._getUniqueID(g));else d=b}while(!d&&e){if(e.id&&a._associatedUpdatePanelId===e.id)d=c;e=e.parentNode}if(d)a._timerCookie=window.setTimeout(a._startDelegate,a._displayAfter)},_startRequest:function(){var b=this;if(b._pageRequestManager.get_isInAsyncPostBack()){var c=b.get_element();if(b._dynamicLayout)c.style.display="block";else c.style.visibility="visible";b.get_role()===k&&c.setAttribute(s,"false")}b._timerCookie=a},_handleEndRequest:function(){var a=this,b=a.get_element();if(a._dynamicLayout)b.style.display="none";else b.style.visibility="hidden";a.get_role()===k&&b.setAttribute(s,"true");a._clearTimeout()},dispose:function(){var b=this;if(b._beginRequestHandlerDelegate!==a){b._pageRequestManager.remove_beginRequest(b._beginRequestHandlerDelegate);b._pageRequestManager.remove_endRequest(b._endRequestHandlerDelegate);b._beginRequestHandlerDelegate=a;b._endRequestHandlerDelegate=a}b._clearTimeout();Sys.UI._UpdateProgress.callBaseMethod(b,"dispose")},initialize:function(){var b=this;Sys.UI._UpdateProgress.callBaseMethod(b,"initialize");b.get_role()===k&&b.get_element().setAttribute(s,"true");b._beginRequestHandlerDelegate=Function.createDelegate(b,b._handleBeginRequest);b._endRequestHandlerDelegate=Function.createDelegate(b,b._handleEndRequest);b._startDelegate=Function.createDelegate(b,b._startRequest);if(Sys.WebForms&&Sys.WebForms.PageRequestManager)b._pageRequestManager=Sys.WebForms.PageRequestManager.getInstance();if(b._pageRequestManager!==a){b._pageRequestManager.add_beginRequest(b._beginRequestHandlerDelegate);b._pageRequestManager.add_endRequest(b._endRequestHandlerDelegate)}}};e.registerClass("Sys.UI._UpdateProgress",Sys.UI.Control)}if(window.Sys&&Sys.loader)Sys.loader.registerScript("WebForms",["ComponentModel","Serialization","Network"],a);else a()})();Y�// (c) 2010 CodePlex Foundation
//!/ <reference name="MicrosoftAjaxCore.js" />

(function() {

function execute() {

Type._registerScript("MicrosoftAjaxGlobalization.js", ["MicrosoftAjaxCore.js"]);

var $type, $prototype,
    merge = Sys._merge,
	forIn = Sys._forIn,
    foreach = Sys._foreach,
    indexOf = Sys._indexOf;

function outOfRange(value, low, high) {
    return (value < low) || (value > high);
}

function expandYear(dtf, year) {
    var now = new Date(),
        era = getEra(now);
    if (year < 100) {
        var curr = getEraYear(now, dtf, era);
        year += curr - (curr % 100);
        if (year > dtf.Calendar.TwoDigitYearMax) {
            year -= 100;
        }
    }
    return year;
}

function getEra(date, eras) {
    if (!eras) return 0;
    var start, ticks = date.getTime();
    for (var i = 0, l = eras.length; i < l; i += 4) {
        start = eras[i+2];
        if ((start === null) || (ticks >= start)) {
            return i;
        }
    }
    return 0;
}

function getEraYear(date, dtf, era, sortable) {
    var year = date.getFullYear();
    if (!sortable && dtf.eras) {
        year -= dtf.eras[era + 3];
    }    
    return year;
}

Sys._appendPreOrPostMatch = function _appendPreOrPostMatch(preMatch, strings) {
    var quoteCount = 0;
    var escaped = false;
    for (var i = 0, il = preMatch.length; i < il; i++) {
        var c = preMatch.charAt(i);
        switch (c) {
        case '\'':
            if (escaped) strings.push("'");
            else quoteCount++;
            escaped = false;
            break;
        case '\\':
            if (escaped) strings.push("\\");
            escaped = !escaped;
            break;
        default:
            strings.push(c);
            escaped = false;
            break;
        }
    }
    return quoteCount;
}

$type = Date;
$type._expandFormat = function Date$_expandFormat(dtf, format) {
    format = format || "F";
    var len = format.length;
    if (len === 1) {
        switch (format) {
        case "d":
            return dtf["ShortDatePattern"];
        case "D":
            return dtf["LongDatePattern"];
        case "t":
            return dtf["ShortTimePattern"];
        case "T":
            return dtf["LongTimePattern"];
        case "f":
            return dtf["LongDatePattern"] + " " + dtf["ShortTimePattern"];
        case "F":
            return dtf["FullDateTimePattern"];
        case "M": case "m":
            return dtf["MonthDayPattern"];
        case "s":
            return dtf["SortableDateTimePattern"];
        case "Y": case "y":
            return dtf["YearMonthPattern"];
        default:
            throw Error.format(Sys.Res.formatInvalidString);
        }
    }
    else if ((len === 2) && (format.charAt(0) === "%")) {
        format = format.charAt(1);
    }
    return format;
}

$type._getParseRegExp = function Date$_getParseRegExp(dtf, format) {
    var re = dtf._parseRegExp;
    if (!re) {
        dtf._parseRegExp = re = {};
    }
    else {
        var reFormat = re[format];
        if (reFormat) {
            return reFormat;
        }
    }

    var expFormat = Date._expandFormat(dtf, format);
    expFormat = expFormat.replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g, "\\\\$1");

    var regexp = ["^"];
    var groups = [];
    var index = 0;
    var quoteCount = 0;
    var tokenRegExp = Date._getTokenRegExp();
    var match;

    while ((match = tokenRegExp.exec(expFormat)) !== null) {
        var preMatch = expFormat.slice(index, match.index);
        index = tokenRegExp.lastIndex;

        quoteCount += Sys._appendPreOrPostMatch(preMatch, regexp);
        if (quoteCount % 2) {
            regexp.push(match[0]);
            continue;
        }

        var m = match[0],
            len = m.length,
            add;
        switch (m) {
            case 'dddd': case 'ddd':
            case 'MMMM': case 'MMM':
            case 'gg': case 'g':
                add = "(\\D+)";
                break;
            case 'tt': case 't':
                add = "(\\D*)";
                break;
            case 'yyyy':
            case 'fff':
            case 'ff':
            case 'f':
                add = "(\\d{" + len + "})";
                break;
            case 'dd': case 'd':
            case 'MM': case 'M':
            case 'yy': case 'y':
            case 'HH': case 'H':
            case 'hh': case 'h':
            case 'mm': case 'm':
            case 'ss': case 's':
                add = "(\\d\\d?)";
                break;
            case 'zzz':
                add = "([+-]?\\d\\d?:\\d{2})";
                break;
            case 'zz': case 'z':
                add = "([+-]?\\d\\d?)";
                break;
            case '/':
                add = "(\\" + dtf.DateSeparator + ")";
                break;
        }
        if (add) {
            regexp.push(add);
        }
        groups.push(match[0]);
    }
    Sys._appendPreOrPostMatch(expFormat.slice(index), regexp);
    regexp.push("$");
    var regexpStr = regexp.join('').replace(/\s+/g, "\\s+");
    var parseRegExp = {'regExp': regexpStr, 'groups': groups};
    re[format] = parseRegExp;
    return parseRegExp;
}

$type._getTokenRegExp = function Date$_getTokenRegExp() {
    return /\/|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z|gg|g/g;
}

$type.parseLocale = function Date$parseLocale(value, formats) {
    /// <summary locid="M:J#Date.parseLocale">Creates a date from a locale-specific string representation.</summary>
    /// <param name="value" type="String">A locale-specific string that can parse to a date.</param>
    /// <param name="formats" parameterArray="true" optional="true" mayBeNull="true">Custom formats to match.</param>
    /// <returns type="Date"></returns>
    var e = Function._validateParams(arguments, [
        {name: "value", type: String},
        {name: "formats", mayBeNull: true, optional: true, parameterArray: true}
    ]);
    if (e) throw e;
    return Date._parse(value, Sys.CultureInfo.CurrentCulture, arguments);
}

$type.parseInvariant = function Date$parseInvariant(value, formats) {
    /// <summary locid="M:J#Date.parseInvariant">Creates a date from its string representation.</summary>
    /// <param name="value" type="String">A string that can parse to a date.</param>
    /// <param name="formats" parameterArray="true" optional="true" mayBeNull="true">Custom formats to match.</param>
    /// <returns type="Date"></returns>
    var e = Function._validateParams(arguments, [
        {name: "value", type: String},
        {name: "formats", mayBeNull: true, optional: true, parameterArray: true}
    ]);
    if (e) throw e;
    return Date._parse(value, Sys.CultureInfo.InvariantCulture, arguments);
}

$type._parse = function Date$_parse(value, cultureInfo, args) {
    var i, l, date, format, formats, custom = false;
    for (i = 1, l = args.length; i < l; i++) {
        format = args[i];
        if (format) {
            custom = true;
            date = Date._parseExact(value, format, cultureInfo);
            if (date) return date;
        }
    }
    if (! custom) {
        formats = cultureInfo._getDateTimeFormats();
        for (i = 0, l = formats.length; i < l; i++) {
            date = Date._parseExact(value, formats[i], cultureInfo);
            if (date) return date;
        }
    }
    return null;
}

$type._parseExact = function Date$_parseExact(value, format, cultureInfo) {
    value = value.trim();
    var dtf = cultureInfo.dateTimeFormat,
        parseInfo = this._getParseRegExp(dtf, format),
        match = new RegExp(parseInfo.regExp).exec(value);
    if (match === null) return null;
    
    var groups = parseInfo.groups,
        era = null, year = null, month = null, date = null, weekDay = null,
        hour = 0, hourOffset, min = 0, sec = 0, msec = 0, tzMinOffset = null,
        pmHour = false;
    
    for (var j = 0, jl = groups.length; j < jl; j++) {
        var matchGroup = match[j+1];
        if (matchGroup) {
            var current = groups[j],
                clength = current.length,
                matchInt = parseInt(matchGroup, 10);
            switch (current) {
                case 'dd': case 'd':
                    date = matchInt;
                    if (outOfRange(date, 1, 31)) return null;
                    break;
                case 'MMM':
                case 'MMMM':
                    month = cultureInfo._getMonthIndex(matchGroup, clength === 3);
                    if (outOfRange(month, 0, 11)) return null;
                    break;
                case 'M': case 'MM':
                    month = matchInt - 1;
                    if (outOfRange(month, 0, 11)) return null;
                    break;
                case 'y': case 'yy':
                case 'yyyy':
                    year = clength < 4 ? expandYear(dtf,matchInt) : matchInt;
                    if (outOfRange(year, 0, 9999)) return null;
                    break;
                case 'h': case 'hh':
                    hour = matchInt;
                    if (hour === 12) hour = 0;
                    if (outOfRange(hour, 0, 11)) return null;
                    break;
                case 'H': case 'HH':
                    hour = matchInt;
                    if (outOfRange(hour, 0, 23)) return null;
                    break;
                case 'm': case 'mm':
                    min = matchInt;
                    if (outOfRange(min, 0, 59)) return null;
                    break;
                case 's': case 'ss':
                    sec = matchInt;
                    if (outOfRange(sec, 0, 59)) return null;
                    break;
                case 'tt': case 't':
                    var upperToken = matchGroup.toUpperCase();
                    pmHour = (upperToken === dtf.PMDesignator.toUpperCase());
                    if (!pmHour && (upperToken !== dtf.AMDesignator.toUpperCase())) return null;
                    break;
                case 'f':
                case 'ff':
                case 'fff':
                    msec = matchInt * Math.pow(10, 3-clength);
                    if (outOfRange(msec, 0, 999)) return null;
                    break;
                case 'ddd':
                case 'dddd':
                    weekDay = cultureInfo._getDayIndex(matchGroup, clength === 3);
                    if (outOfRange(weekDay, 0, 6)) return null;
                    break;
                case 'zzz':
                    var offsets = matchGroup.split(/:/);
                    if (offsets.length !== 2) return null;
                    hourOffset = parseInt(offsets[0], 10);
                    if (outOfRange(hourOffset, -12, 13)) return null;
                    var minOffset = parseInt(offsets[1], 10);
                    if (outOfRange(minOffset, 0, 59)) return null;
                    tzMinOffset = (hourOffset * 60) + (matchGroup.startsWith('-')? -minOffset : minOffset);
                    break;
                case 'z': case 'zz':
                    hourOffset = matchInt;
                    if (outOfRange(hourOffset, -12, 13)) return null;
                    tzMinOffset = hourOffset * 60;
                    break;
                case 'g': case 'gg':
                    var eraName = matchGroup;
                    if (!eraName || !dtf.eras) return null;
                    eraName = eraName.toLowerCase().trim();
                    for (var i = 0, l = dtf.eras.length; i < l; i += 4) {
                        if (eraName === dtf.eras[i + 1].toLowerCase()) {
                            era = i;
                            break;
                        }
                    }
                    if (era === null) return null;
                    break;
            }
        }
    }
    var result = new Date(), defaultYear, convert = dtf.Calendar.convert;
    defaultYear = convert ? convert.fromGregorian(result)[0] : result.getFullYear();
    if (year === null) {
        year = defaultYear;
    }
    else if (dtf.eras) {
        year += dtf.eras[(era || 0) + 3];
    }
    if (month === null) {
        month = 0;
    }
    if (date === null) {
        date = 1;
    }
    if (convert) {
        result = convert.toGregorian(year, month, date);
        if (result === null) return null;
    }
    else {
        result.setFullYear(year, month, date);
        if (result.getDate() !== date) return null;
        if ((weekDay !== null) && (result.getDay() !== weekDay)) {
            return null;
        }
    }
    if (pmHour && (hour < 12)) {
        hour += 12;
    }
    result.setHours(hour, min, sec, msec);
    if (tzMinOffset !== null) {
        var adjustedMin = result.getMinutes() - (tzMinOffset + result.getTimezoneOffset());
        result.setHours(result.getHours() + parseInt(adjustedMin/60, 10), adjustedMin%60);
    }
    return result;
}

$prototype = $type.prototype;
$prototype.format = function Date$format(format) {
    /// <summary locid="M:J#Date.format">Format a date using the invariant culture.</summary>
    /// <param name="format" type="String">Format string.</param>
    /// <returns type="String">Formatted date.</returns>
    var e = Function._validateParams(arguments, [
        {name: "format", type: String}
    ]);
    if (e) throw e;
    return this._toFormattedString(format, Sys.CultureInfo.InvariantCulture);
}

$prototype.localeFormat = function Date$localeFormat(format) {
    /// <summary locid="M:J#Date.localeFormat">Format a date using the current culture.</summary>
    /// <param name="format" type="String">Format string.</param>
    /// <returns type="String">Formatted date.</returns>
    var e = Function._validateParams(arguments, [
        {name: "format", type: String}
    ]);
    if (e) throw e;
    return this._toFormattedString(format, Sys.CultureInfo.CurrentCulture);
}

$prototype._toFormattedString = function Date$_toFormattedString(format, cultureInfo) {
    var dtf = cultureInfo.dateTimeFormat,
        convert = dtf.Calendar.convert;
    if (!format || !format.length || (format === 'i')) {
        var ret;
        if (cultureInfo && cultureInfo.name.length) {
            if (convert) {
                ret = this._toFormattedString(dtf.FullDateTimePattern, cultureInfo);
            }
            else {
                var eraDate = new Date(this.getTime());
                var era = getEra(this, dtf.eras);
                eraDate.setFullYear(getEraYear(this, dtf, era));
                ret = eraDate.toLocaleString();
            }
        }
        else {
            ret = this.toString();
        }
        return ret;
    }

    var eras = dtf.eras,
        sortable = (format === "s");
    format = Date._expandFormat(dtf, format);

    ret = [];
    var hour;

    var zeros = ['0','00','000'];
    function padZeros(num, c) {
        var s = num+'';
        return ((c > 1) && (s.length < c)) ? (zeros[c-2]+s).substr(-c) : s;
    }

    var foundDay, checkedDay, dayPartRegExp = /([^d]|^)(d|dd)([^d]|$)/g;
    function hasDay() {
        if (foundDay || checkedDay) {
            return foundDay;
        }
        foundDay = dayPartRegExp.test(format);
        checkedDay = true;
        return foundDay;
    }
    
    var quoteCount = 0,
        tokenRegExp = Date._getTokenRegExp(),
        converted;
    if (!sortable && convert) {
        converted = convert.fromGregorian(this);
    }
    for (;;) {

        var index = tokenRegExp.lastIndex;

        var ar = tokenRegExp.exec(format);

        var preMatch = format.slice(index, ar ? ar.index : format.length);
        quoteCount += Sys._appendPreOrPostMatch(preMatch, ret);

        if (!ar) break;

        if (quoteCount % 2) {
            ret.push(ar[0]);
            continue;
        }
        
        function getPart(date, part) {
            if (converted) {
                return converted[part];
            }
            switch (part) {
                case 0: return date.getFullYear();
                case 1: return date.getMonth();
                case 2: return date.getDate();
            }
        }

        var current = ar[0],
            clength = current.length;

        switch (current) {
        case "ddd":
        case "dddd":
            names = (clength === 3) ? dtf.AbbreviatedDayNames : dtf.DayNames;
            ret.push(names[this.getDay()]);
            break;
        case "d":
        case "dd":
            foundDay = true;
            ret.push(padZeros(getPart(this, 2), clength));
            break;
        case "MMM":
        case "MMMM":
            var namePrefix = (clength === 3 ? "Abbreviated" : ""),
                genitiveNames = dtf[namePrefix + "MonthGenitiveNames"],
                names = dtf[namePrefix + "MonthNames"],
                part = getPart(this, 1);
            ret.push((genitiveNames && hasDay())
                ? genitiveNames[part]
                : names[part]);
            break;
        case "M":
        case "MM":
            ret.push(padZeros(getPart(this, 1) + 1, clength));
            break;
        case "y":
        case "yy":
        case "yyyy":
            part = converted ? converted[0] : getEraYear(this, dtf, getEra(this, eras), sortable);
            if (clength < 4) {
                part = part % 100;
            }
            ret.push(padZeros(part, clength));
            break;
        case "h":
        case "hh":
            hour = this.getHours() % 12;
            if (hour === 0) hour = 12;
            ret.push(padZeros(hour, clength));
            break;
        case "H":
        case "HH":
            ret.push(padZeros(this.getHours(), clength));
            break;
        case "m":
        case "mm":
            ret.push(padZeros(this.getMinutes(), clength));
            break;
        case "s":
        case "ss":
            ret.push(padZeros(this.getSeconds(), clength));
            break;
        case "t":
        case "tt":
            part = (this.getHours() < 12) ? dtf.AMDesignator : dtf.PMDesignator;
            ret.push(clength === 1 ? part.charAt(0) : part);
            break;
        case "f":
        case "ff":
        case "fff":
            ret.push(padZeros(this.getMilliseconds(), 3).substr(0, clength));
            break;
        case "z": 
        case "zz":
            hour = this.getTimezoneOffset() / 60;
            ret.push(((hour <= 0) ? '+' : '-') + padZeros(Math.floor(Math.abs(hour)), clength));
            break;
        case "zzz":
            hour = this.getTimezoneOffset() / 60;
            ret.push(((hour <= 0) ? '+' : '-') + padZeros(Math.floor(Math.abs(hour)), 2) +
                ":" + padZeros(Math.abs(this.getTimezoneOffset() % 60), 2));
            break;
        case "g":
        case "gg":
            if (dtf.eras) {
                ret.push(dtf.eras[getEra(this, eras) + 1]);
            }
            break;
        case "/":
            ret.push(dtf.DateSeparator);
            break;
        }
    }
    return ret.join('');
}
String.localeFormat = function String$localeFormat(format, args) {
    /// <summary locid="M:J#String.localeFormat">Replaces the format items in a specified String with the text equivalents of the values of   corresponding object instances. The current culture will be used to format dates and numbers.</summary>
    /// <param name="format" type="String">A format string.</param>
    /// <param name="args" parameterArray="true" mayBeNull="true">The objects to format.</param>
    /// <returns type="String">A copy of format in which the format items have been replaced by the   string equivalent of the corresponding instances of object arguments.</returns>
    var e = Function._validateParams(arguments, [
        {name: "format", type: String},
        {name: "args", mayBeNull: true, parameterArray: true}
    ]);
    if (e) throw e;
    return String._toFormattedString(true, arguments);
}
var formattingPatterns = {
    P: ["Percent", ["-n %", "-n%", "-%n"], ["n %", "n%", "%n" ], 100],
    N: ["Number",["(n)","-n","- n","n-","n -"], null, 1],
    C: ["Currency",["($n)","-$n","$-n","$n-","(n$)","-n$","n-$","n$-","-n $","-$ n","n $-","$ n-","$ -n","n- $","($ n)","(n $)"],["$n","n$","$ n","n $"], 1]
};

Sys._toFormattedString = function _toFormattedString(format, cultureInfo) {
    if (!format || !format.length || (format === 'i')) {
        return (cultureInfo && cultureInfo.name.length) ?
            this.toLocaleString() :
            this.toString();
    }
    
    function zeroPad(str, count, left) {
        for (var l=str.length; l < count; l++) {
            str = (left ? ('0' + str) : (str + '0'));
        }
        return str;
    }
    
    function expandNumber(number, precision, groupSizes, sep, decimalChar) {
        var curSize = groupSizes[0];
        var curGroupIndex = 1;



        var factor = Math.pow(10, precision);
        var rounded = (Math.round(number * factor) / factor);
        if (!isFinite(rounded)) {
            rounded = number;
        }
        number = rounded;
        
        var numberString = number+'';
        var right = "";
        var exponent;
        
        
        var split = numberString.split(/e/i);
        numberString = split[0];
        exponent = (split.length > 1 ? parseInt(split[1]) : 0);
        split = numberString.split('.');
        numberString = split[0];
        right = split.length > 1 ? split[1] : "";
        
        var l;
        if (exponent > 0) {
            right = zeroPad(right, exponent, false);
            numberString += right.slice(0, exponent);
            right = right.substr(exponent);
        }
        else if (exponent < 0) {
            exponent = -exponent;
            numberString = zeroPad(numberString, exponent+1, true);
            right = numberString.slice(-exponent, numberString.length) + right;
            numberString = numberString.slice(0, -exponent);
        }

        if (precision > 0) {
            right = decimalChar +
                ((right.length > precision) ? right.slice(0, precision) : zeroPad(right, precision, false));
        }
        else {
            right = "";
        }

        var stringIndex = numberString.length-1;
        var ret = "";
        while (stringIndex >= 0) {
            if (curSize === 0 || curSize > stringIndex) {
                return numberString.slice(0, stringIndex + 1) +
                    (ret.length ? (sep + ret + right) : right);
            }

            ret = numberString.slice(stringIndex - curSize + 1, stringIndex + 1) +
                (ret.length ? (sep+ret) : "");

            stringIndex -= curSize;

            if (curGroupIndex < groupSizes.length) {
                curSize = groupSizes[curGroupIndex];
                curGroupIndex++;
            }
        }
        return numberString.slice(0, stringIndex + 1) + sep + ret + right;
    }
    var nf = cultureInfo.numberFormat;

    var number = Math.abs(this);

    format = format || "D";

    var precision = -1;
    if (format.length > 1) precision = parseInt(format.slice(1), 10);

    var pattern,
        current = format.charAt(0).toUpperCase();    
    switch (current) {
    case "D":
        pattern = 'n';

        if (precision !== -1) {
            number = zeroPad(""+number, precision, true);
        }

        if (this < 0) number = -number;
        break;
    case "C":
    case "N":
    case "P":
        current = formattingPatterns[current];
        var name = current[0];
        pattern = (this < 0) ? current[1][nf[name+"NegativePattern"]] : (current[2] ? current[2][nf[name+"PositivePattern"]] : "n");
        if (precision === -1) precision = nf[name+"DecimalDigits"];
        number = expandNumber(Math.abs(this)*current[3], precision, nf[name+"GroupSizes"], nf[name+"GroupSeparator"], nf[name+"DecimalSeparator"]);
        break;
    default:
        throw Error.format(Sys.Res.formatBadFormatSpecifier);
    }

    var regex = /n|\$|-|%/g;

    var ret = "";

    for (;;) {

        var index = regex.lastIndex;

        var ar = regex.exec(pattern);

        ret += pattern.slice(index, ar ? ar.index : pattern.length);

        if (!ar)
            break;

        switch (ar[0]) {
        case "n":
            ret += number;
            break;
        case "$":
            ret += nf.CurrencySymbol;
            break;
        case "-":
            if (/[1-9]/.test(number)) {
                ret += nf.NegativeSign;
            }
            break;
        case "%":
            ret += nf.PercentSymbol;
            break;
        }
    }

    return ret;
}

$type = Number;
$type.parseLocale = function Number$parseLocale(value) {
    /// <summary locid="M:J#Number.parseLocale">Creates a number from its locale string representation.</summary>
    /// <param name="value" type="String">A string that can parse to a number.</param>
    /// <returns type="Number"></returns>
    var e = Function._validateParams(arguments, [
        {name: "value", type: String}
    ], false);
    if (e) throw e;
    return Number._parse(value, Sys.CultureInfo.CurrentCulture);
}
$type.parseInvariant = function Number$parseInvariant(value) {
    /// <summary locid="M:J#Number.parseInvariant">Creates a number from its string representation.</summary>
    /// <param name="value" type="String">A string that can parse to a number.</param>
    /// <returns type="Number"></returns>
    var e = Function._validateParams(arguments, [
        {name: "value", type: String}
    ], false);
    if (e) throw e;
    return Number._parse(value, Sys.CultureInfo.InvariantCulture);
}
$type._parse = function Number$_parse(value, cultureInfo) {
    value = value.trim();
    
    if (value.match(/^[+-]?infinity$/i)) {
        return parseFloat(value);
    }
    if (value.match(/^0x[a-f0-9]+$/i)) {
        return parseInt(value);
    }

    var numFormat = cultureInfo.numberFormat;
    var signInfo = Number._parseNumberNegativePattern(value, numFormat, numFormat.NumberNegativePattern);
    var sign = signInfo[0];
    var num = signInfo[1];
    
    if ((sign === '') && (numFormat.NumberNegativePattern !== 1)) {
        signInfo = Number._parseNumberNegativePattern(value, numFormat, 1);
        sign = signInfo[0];
        num = signInfo[1];
    }
    if (sign === '') sign = '+';
    
    var exponent;
    var intAndFraction;
    var exponentPos = num.indexOf('e');
    if (exponentPos < 0) exponentPos = num.indexOf('E');
    if (exponentPos < 0) {
        intAndFraction = num;
        exponent = null;
    }
    else {
        intAndFraction = num.substr(0, exponentPos);
        exponent = num.substr(exponentPos + 1);
    }
    
    var integer;
    var fraction;
    var decSep = numFormat.NumberDecimalSeparator
    var decimalPos = intAndFraction.indexOf(decSep);
    if (decimalPos < 0) {
        integer = intAndFraction;
        fraction = null;
    }
    else {
        integer = intAndFraction.substr(0, decimalPos);
        fraction = intAndFraction.substr(decimalPos + decSep.length);
    }
    
    var numGroupSep = numFormat.NumberGroupSeparator
    integer = integer.split(numGroupSep).join('');
    var altNumGroupSeparator = numGroupSep.replace(/\u00A0/g, " ");
    if (numGroupSep !== altNumGroupSeparator) {
        integer = integer.split(altNumGroupSeparator).join('');
    }
    
    var p = sign + integer;
    if (fraction !== null) {
        p += '.' + fraction;
    }
    if (exponent !== null) {
        var expSignInfo = Number._parseNumberNegativePattern(exponent, numFormat, 1);
        if (expSignInfo[0] === '') {
            expSignInfo[0] = '+';
        }
        p += 'e' + expSignInfo[0] + expSignInfo[1];
    }

    if (p.match(/^[+-]?\d*\.?\d*(e[+-]?\d+)?$/)) {
        return parseFloat(p);
    }
    return Number.NaN;
}
$type._parseNumberNegativePattern = function Number$_parseNumberNegativePattern(value, numFormat, numberNegativePattern) {
    var neg = numFormat.NegativeSign;
    var pos = numFormat.PositiveSign;    
    switch (numberNegativePattern) {
        case 4:
            neg = ' ' + neg;
            pos = ' ' + pos;
        case 3:
            if (value.endsWith(neg)) {
                return ['-', value.substr(0, value.length - neg.length)];
            }
            else if (value.endsWith(pos)) {
                return ['+', value.substr(0, value.length - pos.length)];
            }
            break;
        case 2:
            neg += ' ';
            pos += ' ';
        case 1:
            if (value.startsWith(neg)) {
                return ['-', value.substr(neg.length)];
            }
            else if (value.startsWith(pos)) {
                return ['+', value.substr(pos.length)];
            }
            break;
        case 0:
            if (value.startsWith('(') && value.endsWith(')')) {
                return ['-', value.substr(1, value.length - 2)];
            }
            break;
    }
    return ['', value];
}

$prototype = $type.prototype;
$prototype.format = function Number$format(format) {
    /// <summary locid="M:J#Number.format">Format a number using the invariant culture.</summary>
    /// <param name="format" type="String">Format string.</param>
    /// <returns type="String">Formatted number.</returns>
    var e = Function._validateParams(arguments, [
        {name: "format", type: String}
    ]);
    if (e) throw e;
    return Sys._toFormattedString.call(this, format, Sys.CultureInfo.InvariantCulture);
}
$prototype.localeFormat = function Number$localeFormat(format) {
    /// <summary locid="M:J#Number.localeFormat">Format a number using the current culture.</summary>
    /// <param name="format" type="String">Format string.</param>
    /// <returns type="String">Formatted number.</returns>
    var e = Function._validateParams(arguments, [
        {name: "format", type: String}
    ]);
    if (e) throw e;
    return Sys._toFormattedString.call(this, format, Sys.CultureInfo.CurrentCulture);
}
function toUpper(value) {
    return value.split("\u00A0").join(' ').toUpperCase();
}
function toUpperArray(arr) {
    var result = [];
    foreach(arr, function(value, i) {
        result[i] = toUpper(value);
    });
    return result;
}

function clone(obj) {
    var objNew = {};
    forIn(obj, function(value, field) {
        objNew[field] = (value instanceof Array) ? (value.length === 1 ? [value] : Array.apply(null, value)) :
            ((typeof(value) === "object") ? clone(value) : value);
    });
    return objNew;
}

$type = Sys.CultureInfo = function CultureInfo(name, numberFormat, dateTimeFormat) {
    /// <summary locid="M:J#Sys.CultureInfo.#ctor"></summary>
    /// <param name="name" type="String">CultureInfo name.</param>
    /// <param name="numberFormat" type="Object">CultureInfo number format information.</param>
    /// <param name="dateTimeFormat" type="Object">CultureInfo date time format information.</param>
    var e = Function._validateParams(arguments, [
        {name: "name", type: String},
        {name: "numberFormat", type: Object},
        {name: "dateTimeFormat", type: Object}
    ]);
    if (e) throw e;
    this.name = name;
    this.numberFormat = numberFormat;
    this.dateTimeFormat = dateTimeFormat;
}
$type.prototype = {
    _getDateTimeFormats: function CultureInfo$_getDateTimeFormats() {
        var formats = this._dateTimeFormats;
        if (!formats) {
            var dtf = this.dateTimeFormat;
            this._dateTimeFormats = formats =
              [ dtf["MonthDayPattern"],
                dtf["YearMonthPattern"],
                dtf["ShortDatePattern"],
                dtf["ShortTimePattern"],
                dtf["LongDatePattern"],
                dtf["LongTimePattern"],
                dtf["FullDateTimePattern"],
                dtf["RFC1123Pattern"],
                dtf["SortableDateTimePattern"],
                dtf["UniversalSortableDateTimePattern"] ];
        }
        return formats;
    },
    _getMonthIndex: function CultureInfo$_getMonthIndex(value, abbr) {
        var name = abbr ? "_upperAbbrMonths" : "_upperMonths",
            genitiveName = name + "Genitive",
            upperMonths = this[name];
        if (!upperMonths) {
            var prefix = (abbr ? "Abbreviated" : "");
            this[name] = toUpperArray(this.dateTimeFormat[prefix+"MonthNames"]);
            this[genitiveName] = toUpperArray(this.dateTimeFormat[prefix+"MonthGenitiveNames"]);
        }
        value = toUpper(value);
        var i = indexOf(this[name], value);
        if (i < 0) {
            i = indexOf(this[genitiveName], value);
        }
        return i;
    },    
    _getDayIndex: function CultureInfo$_getDayIndex(value, abbr) {
        var name = abbr ? "_upperAbbrDays" : "_upperDays",
            upperDays = this[name];
        if (!upperDays) {
            this[name] = toUpperArray(this.dateTimeFormat[(abbr ? "Abbreviated" : "")+"DayNames"]);
        }
        return indexOf(this[name], toUpper(value));
    }
}
$type.registerClass('Sys.CultureInfo');

$type._parse = function(value) {
    var dtf = value.dateTimeFormat;
    if (dtf && !dtf.eras) {
        dtf.eras = value.eras;
    }
    return new Sys.CultureInfo(value.name, value.numberFormat, dtf);
}
$type._setup = function() {
    var cultureInfo = window.__cultureInfo,
        monthNames = ["January","February","March","April","May","June","July","August","September","October","November","December",""],
        shortMonthNames = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],
        invariant = {"name":"","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"\u00A4","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, dd MMMM yyyy HH:mm:ss","LongDatePattern":"dddd, dd MMMM yyyy","LongTimePattern":"HH:mm:ss","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'","ShortDatePattern":"MM/dd/yyyy","ShortTimePattern":"HH:mm","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"yyyy MMMM","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":shortMonthNames,"MonthNames":monthNames,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":Array.clone(shortMonthNames),"MonthGenitiveNames":Array.clone(monthNames)},"eras":[1,"A.D.",null,0]};
    this.InvariantCulture = this._parse(invariant);
    switch(typeof(cultureInfo)) {
        case "string":
            cultureInfo = window.eval("(" + cultureInfo + ")");
        case "object":
            this.CurrentCulture = this._parse(cultureInfo);
            delete __cultureInfo;    
            break;
        default:
            cultureInfo = clone(invariant);
            cultureInfo.name = "en-US";
            cultureInfo.numberFormat.CurrencySymbol = "$";
            var dtf = cultureInfo.dateTimeFormat;
            dtf.FullDatePattern = "dddd, MMMM dd, yyyy h:mm:ss tt";
            dtf.LongDatePattern = "dddd, MMMM dd, yyyy";
            dtf.LongTimePattern = "h:mm:ss tt";
            dtf.ShortDatePattern = "M/d/yyyy";
            dtf.ShortTimePattern = "h:mm tt";
            dtf.YearMonthPattern = "MMMM, yyyy";
            this.CurrentCulture = this._parse(cultureInfo);
            break;
    }
}

$type._setup();


}

if (window.Sys && Sys.loader) {
	Sys.loader.registerScript("Globalization", null, execute);
}
else {
	execute();
}

})();
3Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.Undo=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.Undo.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.Undo.prototype={callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.Undo.callBaseMethod(this,"callMethod"))return false;this._designPanel.undo()}};Sys.Extended.UI.HTMLEditor.ToolbarButton.Undo.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.Undo",Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.OkCancelPopupButton = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.OkCancelPopupButton.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.OkCancelPopupButton.prototype = {

    set_activeEditPanel: function(value) {
        if (this._editPanel != value && this._editPanel != null) {
            var relatedPopup = this.get_relatedPopup();
            if (typeof relatedPopup._forceImClose == "function") {
                var func = relatedPopup._forceImClose;
                func(relatedPopup._iframe.contentWindow);
            }
        }
        Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModePopupImageButton.callBaseMethod(this, "set_activeEditPanel", [value]);
    },

    callMethod: function() {
        if (!Sys.Extended.UI.HTMLEditor.ToolbarButton.OkCancelPopupButton.callBaseMethod(this, "callMethod")) return false;
        this.openPopup(Function.createDelegate(this, this._onopened));
        return true;
    },

    _onopened: function(contentWindow) {
        contentWindow.popupMediator.set_callMethodByName("OK", Function.createDelegate(this, this._onOK));
        contentWindow.popupMediator.set_callMethodByName("Cancel", Function.createDelegate(this, this._onCancel));
        var relatedPopup = this.get_relatedPopup();
        relatedPopup._popup = this._designPanel._popup;
        relatedPopup._forceImClose = Function.createDelegate(this, this._onCancel);
        this._designPanel._popup = this.get_relatedPopup();
        this.opened(contentWindow);
    },

    opened: function(contentWindow) {
    },

    _onOK: function(contentWindow) {
        if (this.okCheck(contentWindow))
            this._exit(Function.createDelegate(this, this.ok), contentWindow);
    },

    _onCancel: function(contentWindow) {
        if (this.cancelCheck(contentWindow))
            this._exit(Function.createDelegate(this, this.cancel), contentWindow);
    },

    _exit: function(callback, contentWindow) {
        this.closePopup();
        this._designPanel._popup = this.get_relatedPopup()._popup;
        this.get_relatedPopup()._popup = null;
        this.get_relatedPopup()._forceImClose = null;
        callback(contentWindow);
    },

    ok: function(contentWindow) {
    },

    cancel: function(contentWindow) {
    },

    okCheck: function(contentWindow) {
        return true;
    },

    cancelCheck: function(contentWindow) {
        return true;
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.OkCancelPopupButton.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.OkCancelPopupButton", Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModePopupImageButton);
Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.Italic=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.Italic.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.Italic.prototype={callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.Italic.callBaseMethod(this,"callMethod"))return false;this._designPanel._execCommand("italic",false,null)},checkState:function(){return!Sys.Extended.UI.HTMLEditor.ToolbarButton.Italic.callBaseMethod(this,"checkState")?false:this._designPanel._queryCommandState("italic")}};Sys.Extended.UI.HTMLEditor.ToolbarButton.Italic.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.Italic",Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.Italic = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.Italic.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.Italic.prototype = {
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.Italic.callBaseMethod(this, "callMethod")) return false;
        this._designPanel._execCommand("italic", false, null);
    },
    
    checkState : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.Italic.callBaseMethod(this, "checkState")) return false;
        return this._designPanel._queryCommandState("italic");
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.Italic.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.Italic", Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton);

�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedColorButton = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedColorButton.initializeBase(this, [element]);
    
    this._defaultColor = "#000000";
    this._colorDiv = null;
    this._methodButton = null;
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedColorButton.prototype = {
    get_defaultColor : function() {
        return this._defaultColor;
    },
    set_defaultColor : function(value) {
        this._defaultColor = value;
        if (this._colorDiv != null) {
            this._colorDiv.get_element().style.backgroundColor = value;
        }
    },
    
    get_colorDiv : function() {
        return this._colorDiv;
    },
    set_colorDiv : function(value) {
        this._colorDiv = value;
    },
    
    get_methodButton : function() {
        return this._methodButton;
    },
    set_methodButton : function(value) {
        this._methodButton = value;
    },
    
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedColorButton.callBaseMethod(this, "callMethod")) return false;
        this.setColor(this.get_defaultColor());
    },
    
    setColor : function(color) {
    },

    initialize : function() {
        Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedColorButton.callBaseMethod(this, "initialize");
        
        if (this._methodButton != null) {
            this._methodButton.callMethod = Function.createDelegate(this, this.callMethod);
        }
        if (this._colorDiv != null) {
            this._colorDiv.callMethod = Function.createDelegate(this, this.callMethod);
        }
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedColorButton.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedColorButton", Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeBoxButton);

�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.BackColorSelector = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.BackColorSelector.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.BackColorSelector.prototype = {
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.BackColorSelector.callBaseMethod(this, "callMethod")) return false;
    },
    
    setColor : function(color) {
        Sys.Extended.UI.HTMLEditor.ToolbarButton.BackColorSelector.callBaseMethod(this, "setColor", [color]);
        this._designPanel._execCommand("backcolor", false, color);
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.BackColorSelector.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.BackColorSelector", Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorSelector);

�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.Popups");Sys.Extended.UI.HTMLEditor.Popups.PopupBGIButton=function(a){Sys.Extended.UI.HTMLEditor.Popups.PopupBGIButton.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.Popups.PopupBGIButton.prototype={};Sys.Extended.UI.HTMLEditor.Popups.PopupBGIButton.registerClass("Sys.Extended.UI.HTMLEditor.Popups.PopupBGIButton",Sys.Extended.UI.HTMLEditor.Popups.PopupBoxButton);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.Popups");

Sys.Extended.UI.HTMLEditor.Popups.BaseColorsPopup = function(element) {
    Sys.Extended.UI.HTMLEditor.Popups.BaseColorsPopup.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.Popups.BaseColorsPopup.prototype = {
}

Sys.Extended.UI.HTMLEditor.Popups.BaseColorsPopup.registerClass("Sys.Extended.UI.HTMLEditor.Popups.BaseColorsPopup", Sys.Extended.UI.HTMLEditor.Popups.AttachedTemplatePopup);
OType.registerNamespace("Sys.Extended.UI.HTMLEditor.Popups");Sys.Extended.UI.HTMLEditor.Popups.AttachedTemplatePopup=function(a){Sys.Extended.UI.HTMLEditor.Popups.AttachedTemplatePopup.initializeBase(this,[a]);this._contentDiv=null};Sys.Extended.UI.HTMLEditor.Popups.AttachedTemplatePopup.prototype={get_contentDiv:function(){return this._contentDiv},set_contentDiv:function(a){this._contentDiv=a},initialize:function(){Sys.Extended.UI.HTMLEditor.Popups.AttachedTemplatePopup.callBaseMethod(this,"initialize");this.set_initialContent(this._contentDiv.innerHTML)},dispose:function(){Sys.Extended.UI.HTMLEditor.Popups.AttachedTemplatePopup.callBaseMethod(this,"dispose")}};Sys.Extended.UI.HTMLEditor.Popups.AttachedTemplatePopup.registerClass("Sys.Extended.UI.HTMLEditor.Popups.AttachedTemplatePopup",Sys.Extended.UI.HTMLEditor.Popups.AttachedPopup);��Type.registerNamespace("Sys.Extended.UI.HTMLEditor");

Sys.Extended.UI.HTMLEditor.DesignPanel = function(element) {
    Sys.Extended.UI.HTMLEditor.DesignPanel.initializeBase(this, [element]);
    this._doc = null;
    this._updated_now = false;
    this._updateTimer = null;
    this._popup = null;
    this._contextElement = null;
    this._a_prize = false;
    this.__stack = null;
    this._StyleForTyping = null;
    this.isWord = false;
    this.isPlainText = false;
    this.dfltBlockElement = "P";
    this._FontNotSet = true;
    this._design_timer1 = null;
   

    this._events$delegate = Function.createDelegate(this, Sys.Extended.UI.HTMLEditor.DesignPanelEventHandler);
    this._blur$delegate = Function.createDelegate(this, this._blur);
    this._focus$delegate = Function.createDelegate(this, this._focus_event);
}

Sys.Extended.UI.HTMLEditor.DesignPanel.prototype = {
    initialize: function() {
        Sys.Extended.UI.HTMLEditor.DesignPanel.callBaseMethod(this, "initialize");
    },

    dispose: function() {
        Sys.Extended.UI.HTMLEditor.DesignPanel.callBaseMethod(this, "dispose");
    },

    _activate: function(value) {
        Sys.Extended.UI.HTMLEditor.DesignPanel.callBaseMethod(this, "_activate");
        this._wasFocused = false;
        this._initIframe(value);
        this._onDocumentLoaded();
    },

    _deactivate: function() {
        this._deactivateCommon();
        if (Sys.Extended.UI.HTMLEditor.isIE) {
            this._doc.open();
            this._doc.write("");
            this._doc.close();
            this.get_element().src = "javascript:false;";
        }
        this._doc = null;
        Sys.Extended.UI.HTMLEditor.DesignPanel.callBaseMethod(this, "_deactivate");
    },

    _deactivateCommon: function() {
        this._editPanel.__blured = false;
        var aList = this._doc.body.getElementsByTagName("IMG");

        for (var i = 0; i < aList.length; i++) {
            if (aList[i].getAttribute(Sys.Extended.UI.HTMLEditor.attachedIdAttribute) && aList[i].getAttribute(Sys.Extended.UI.HTMLEditor.attachedIdAttribute).length > 0) {
                try {
                    if (Sys.Extended.UI.HTMLEditor.isIE) {
                        $removeHandler(aList[i], "dragstart", Sys.Extended.UI.HTMLEditor.stopDrag);
                    } else {
                        $removeHandler(aList[i], "draggesture", Sys.Extended.UI.HTMLEditor.stopDrag);
                    }
                } catch (e) { }
            }
        }

        Sys.Extended.UI.HTMLEditor._removeEvents(this._doc, ["keydown", "keypress", "mousedown", "mouseup", "dblclick"], this._events$delegate);
        Sys.Extended.UI.HTMLEditor._removeEvents(this.get_element().contentWindow, ["blur"], this._blur$delegate);
        Sys.Extended.UI.HTMLEditor._removeEvents(this.get_element().contentWindow, ["focus"], this._focus$delegate);
    },

    _initIframe: function(value) {
        if (!Sys.Extended.UI.HTMLEditor.isIE) {
            this._savedValue = value;
            this._absAndFixedParents = this._getAbsAndFixedParents();
        }
        var str = Sys.Extended.UI.HTMLEditor.Trim(this._prepareContent(value));
        this._doc = this.get_element().contentWindow.document;

        if (!Sys.Extended.UI.HTMLEditor.isIE) {
            this._doc.designMode = "on";
        }

        this._doc.open();
        this._doc.write("<html><head><link rel=\"stylesheet\" href=\"" + this._editPanel.get_documentCssPath() + "\" media=\"all\" /><link rel=\"stylesheet\" href=\"" + this._editPanel.get_designPanelCssPath() + "\" media=\"all\" /></head><body>" + str + "</body></html>");
        this._doc.close();
        this._doc.id = "EditorDocument";

        if (Sys.Extended.UI.HTMLEditor.isIE) {
            this._doc.body.contentEditable = true;
            this._tryForward = true;
        }
    },

    _blur: function(event) {
        this._editPanel.__blured = true;
        if (!Sys.Extended.UI.HTMLEditor.isIE && this._design_timer1 != null) {
            clearTimeout(this._design_timer1);
            this._design_timer1 = null;
        }
        if (!this.isPopup) {
            this._editPanel._validate(event, null);
        }
        return true;
    },

    _focus_event: function() {
        this._editPanel.__blured = false;
        if (Sys.Extended.UI.HTMLEditor.isIE) {
            this._really_focused();
        }
        else {
            var panel = this;
            Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel = this._editPanel;
            if (this._design_timer1 == null) {
                this._design_timer1 = setTimeout(function() { panel._really_focused(); panel._design_timer1 = null; }, 0);
            }
        }
        return true;
    },

    _getAbsAndFixedParents: function() {
        var el = this.get_element();
        var str = "";
        while (el != null && el.tagName && el.tagName.toLowerCase() != "body") {
            str += el.tagName;
            if (el.style.position == "absolute" || el.style.position == "fixed") {
                str += ": " + el.style.position;
            }
            str += "\n";
            el = el.parentNode;
        }
        return str;
    },

    _onDocumentLoaded: function() {
        var editor = this;
        if (!Sys.Extended.UI.HTMLEditor.isIE) {
            var absAndFixedParents = this._getAbsAndFixedParents();
            if (absAndFixedParents != this._absAndFixedParents) {
                this._initIframe(this._savedValue);
                setTimeout(function() { editor._onDocumentLoaded() }, 10);
                return;
            }
        }

        try {
            if (!Sys.Extended.UI.HTMLEditor.isIE) {
                this._doc.queryCommandValue("forecolor");
                if (Sys.Extended.UI.HTMLEditor.isSafari || Sys.Extended.UI.HTMLEditor.isOpera) {
                    if (!Sys.Extended.UI.HTMLEditor.isReallyVisible(this.get_element())) {
                        setTimeout(function() { editor._onDocumentLoaded() }, 10);
                        return;
                    }
                }
            }
            var temp = editor._doc.body.innerHTML;
        } catch (e) {
            setTimeout(function() { editor._onDocumentLoaded() }, 10); // waiting for loading
            return;
        }

        this._afterBodyIsFormed();

        setTimeout(function() { editor._activateFinished(); if (Sys.Extended.UI.HTMLEditor.isIE && !editor._editPanel.get_autofocus()) { editor._getSelection().empty(); } }, 0);
    },

    _afterBodyIsFormed: function() {
        var editor = this;

        Sys.Extended.UI.HTMLEditor._addEvents(this._doc, ["keydown", "keypress", "mousedown", "mouseup", "dblclick"], this._events$delegate);
        Sys.Extended.UI.HTMLEditor._addEvents(this.get_element().contentWindow, ["blur"], this._blur$delegate);
        Sys.Extended.UI.HTMLEditor._addEvents(this.get_element().contentWindow, ["focus"], this._focus$delegate);

        Sys.Extended.UI.HTMLEditor.inspectForShadows(editor._doc.body);

        var body = this._doc.body;

        if (body.childNodes.length == 1 && body.firstChild.tagName && body.firstChild.tagName.toUpperCase() == "DIV" &&
                body.firstChild.style.cssText.length > 0 && body.firstChild.style.direction.length > 0 &&
                Sys.Extended.UI.HTMLEditor.getStyle(body.firstChild, "position") != "absolute") {

            body.style.cssText = body.firstChild.style.cssText;
            var temp = body.firstChild;

            while (temp.firstChild) body.insertBefore(temp.firstChild, temp);
            body.removeChild(temp);
        }

        editor._clearP();
    },

    _getContent: function() {
        if (this._popup != null) {
            if (typeof this._popup._forceImClose == "function") {
                var func = this._popup._forceImClose;
                func(this._popup._iframe.contentWindow);
            }
        }

        this._clearP();
        var temp;

        if (Sys.Extended.UI.HTMLEditor.isIE) {
            Sys.Extended.UI.HTMLEditor.spanJoiner(this._doc.body, this._doc);
            temp = Sys.Extended.UI.HTMLEditor.getHTML(this._doc.body, false, true);

            temp = temp.replace(/(<td[^>]*?>)([\s ]*?)(<\/td[^>]*?>)/ig, "$1&nbsp;$3")
                .replace(/(<td[^>]*?>)\s*(&nbsp;)\s*(<\/td[^>]*?>)/ig, "$1<br/>$3")
                .replace(/(<p[^>]*?>)\s*(&nbsp;)\s*(<\/p[^>]*?>)/ig, "$1<br/>$3");
            temp = ((this._doc.body.style.cssText.length > 0) ? "<div style=\"" + this._doc.body.style.cssText.replace("\"", "'") + "\">" : "") + temp + ((this._doc.body.style.cssText.length > 0) ? "</div>" : "");

            if (this._editPanel.get_noScript()) {
                temp = temp.replace(/(<script(?:[^>]*?)>(?:[^<]*?)<\/script(?:[^>]*?)>)/gi, "");
            }

            if (/<embed/ig.test(temp)) {
                temp = temp.replace(/(<embed(?:.*?))(\sloop=\"true\")((?:.*?)>)/ig, "$1$3")
                    .replace(/(<embed(?:.*?))(\splay=\"true\")((?:.*?)>)/ig, "$1$3")
                    .replace(/(<embed(?:.*?))(\sbgcolor=\"\")((?:.*?)>)/ig, "$1$3")
                    .replace(/(<embed(?:.*?))(\sscale=\"\")((?:.*?)>)/ig, "$1$3")
                    .replace(/(<embed(?:.*?))(\shspace=\"0\")((?:.*?)>)/ig, "$1$3")
                    .replace(/(<embed(?:.*?))(\svspace=\"0\")((?:.*?)>)/ig, "$1$3")
                    .replace(/(<embed(?:.*?))(\swmode=\"[^\"]+\")((?:.*?)>)/ig, "$1$3")
                    .replace(/(<embed(?:.*?))(pseudomode=)(\"[^\"]*\")((?:.*?)>)/ig, "$1wmode=$3$4")
                    .replace(/(<embed(?:.*?))(\swmode=\"\")((?:.*?)>)/ig, "$1$3");
            }

            var nnreg = new RegExp("(<[/]?)(teo" + Sys.Extended.UI.HTMLEditor.smartClassName + ":)", "ig");
            temp = temp.replace(nnreg, "$1");
        } else {
            var trg = this._doc.createElement("DIV");
            var scriptRecover = new Sys.Extended.UI.HTMLEditor.DesignPanel.ScriptRecover();

            trg.style.cssText = this._doc.body.style.cssText;
            if (!this._editPanel.get_noScript()) {
                this._doc.body.innerHTML.replace(/<script(?:[^>]*?)>(.*?)<\/script(?:[^>]*?>)/gi, function(p0, p1) { return scriptRecover.regReplScript1(p0, p1); });
            }

            trg.innerHTML = Sys.Extended.UI.HTMLEditor.Trim(this._doc.body.innerHTML);

            var tempCollection = trg.getElementsByTagName("IMG");
            var imgCollection = [];
            for (var i = 0; i < tempCollection.length; i++) imgCollection.push(tempCollection[i]);

            for (var j = 0; j < imgCollection.length; j++) {
                var img = imgCollection[j];
                var attr;

                attr = img.getAttribute("dummytag");
                if (attr && attr.length > 0 && attr.toLowerCase() == "embed") {
                    var src = img.getAttribute("dummysrc");
                    var bgcolor = img.getAttribute("dummybgcolor");
                    var wmode = img.getAttribute("pseudomode");
                    var attrs = img.attributes;
                    var embed = this._doc.createElement("EMBED");

                    embed.src = src;
                    embed.width = img.width;
                    embed.height = img.height;

                    if (bgcolor && bgcolor.length > 0) {
                        bgcolor = Sys.Extended.UI.HTMLEditor.tryReplaceRgb(bgcolor);
                        embed.setAttribute("bgcolor", bgcolor);
                    }

                    if (wmode && wmode.length > 0) {
                        embed.setAttribute("wmode", wmode);
                    }

                    for (var i = 0; i < attrs.length; ++i) {
                        var a = attrs.item(i);
                        if (!a.specified) continue;

                        var name = a.name.toLowerCase();
                        var value = a.value;

                        if (name == "dummytag" || name == "dummysrc" ||
                           name == "dummybgcolor" || name == "style" ||
                           name == "wmode" || name == "pseudomode" ||
                           name == "src")
                            continue;

                        if (name == "loop" && value == "true") continue;
                        if (name == "play" && value == "true") continue;
                        if (name == "hspace" && value == "0") continue;
                        if (name == "vspace" && value == "0") continue;
                        if (name == "scale" && value.length == 0) continue;
                        if (name == "align" && value.length == 0) continue;

                        embed.setAttribute(name, value);
                    }

                    if (img.style.width && img.style.width.length > 0) embed.style.width = img.style.width;
                    if (img.style.height && img.style.height.length > 0) embed.style.height = img.style.height;

                    img.parentNode.insertBefore(embed, img);
                    img.parentNode.removeChild(img);
                }
            }

            Sys.Extended.UI.HTMLEditor.spanJoiner(trg, this._doc);

            temp = Sys.Extended.UI.HTMLEditor.getHTML(trg, (trg.style.cssText.length > 0) ? true : false, true);
            if (!this._editPanel.get_noScript()) {
                temp = temp.replace(/(<script(?:[^>]*?)>)(.*?)(<\/script(?:[^>]*?)>)/gi, function(p0, p1, p2, p3) { return scriptRecover.regReplFromScript1(p0, p1, p2, p3); });
            } else {
                temp = temp.replace(/(<script(?:[^>]*?)>(?:[^<]*?)<\/script(?:[^>]*?)>)/gi, "");
            }

            delete trg;
        }

        temp = Sys.Extended.UI.HTMLEditor.brXHTML(temp.replace(/^([\n|\r]+)/, ""));
        if (this._editPanel.get_noUnicode()) {
            temp = temp.replace(/([\u0080-\uFFFF])/g, function(p0, p1) { return "&#" + p1.charCodeAt(0).toString(10) + ";"; });
        }
        if (Sys.Extended.UI.HTMLEditor.Trim(temp) == "<br />") {
            temp = "";
        }
        return temp;
    },

    _setContent: function(value) {
        this._deactivateCommon();
        var str = Sys.Extended.UI.HTMLEditor.Trim(this._prepareContent(value));
        this._doc.open();
        this._doc.write("<html><head><link rel=\"stylesheet\" href=\"" + this._editPanel.get_documentCssPath() + "\" media=\"all\" /><link rel=\"stylesheet\" href=\"" + this._editPanel.get_designPanelCssPath() + "\" media=\"all\" /></head><body>" + str + "</body></html>");
        this._doc.close();

        if (Sys.Extended.UI.HTMLEditor.isIE) {
            this._doc.body.contentEditable = true;
            this._tryForward = true;
        }

        this._afterBodyIsFormed();
        if (this._editPanel.get_autofocus()) {
            this._focus();
        }
        if (Sys.Extended.UI.HTMLEditor.isIE && !this._editPanel.get_autofocus()) {
            this._getSelection().empty();
        }
    },

    _focus: function(prize) {
        this.focusEditor();
        this._focused(prize);
    },

    focusEditor: function() {
        try {
            this.get_element().contentWindow.focus();
        } catch (e) { }

        if (!this._wasFocused) {
            this._wasFocused = true;
            if (!this._editPanel.get_startEnd()) {
                this._setToEnd();
            }
        }
    },

    _prepareContent: function(value) {
        var temptext = value;

        temptext = temptext.replace(/<object(?:[^>]*?)>(?:[^\u0000]*?)(<embed(?:[^>]*?)>)(?:[^\u0000]*?)<\/object(?:[^>]*?)>/gi, "$1");

        if (Sys.Extended.UI.HTMLEditor.isIE) {
            temptext = Sys.Extended.UI.HTMLEditor.Trim(temptext.replace(/([\n\r]+<)/g, "<").replace(/([^>])([\n\r]+)([^<])/g, "$1 $3"))
                .replace(/(&amp;)/g, "&amp;amp;")
                .replace(/<br\s*[\/]*>\s*<\/td>/ig, "</td>")
                .replace(/(<td[^>]*?>)([\s ]*?)(<\/td[^>]*?>)/ig, "$1&nbsp;$3")
                .replace(/(<p[^>]*?>)\s*(<br[^>]*?>)\s*(<\/p[^>]*?>)/ig, "$1&nbsp;$3");

            if (/<embed/ig.test(temptext)) {
                temptext = temptext.replace(/(<embed(?:.*?))(wmode=)(\"[^\"]*\")((?:.*?)>)/ig, "$1pseudomode=$3$4")
                    .replace(/(<embed)([^>]*?>)/ig, "$1 wmode=\"transparent\"$2");
            }

            temptext = temptext.replace(/&amp;/ig, "&");
            return temptext;
        } else {
            var scriptRecover = new Sys.Extended.UI.HTMLEditor.DesignPanel.ScriptRecover();
            var src = document.createElement("DIV");

            if (!this._editPanel.get_noScript()) {
                temptext.replace(/<script(?:[^>]*?)>(.*?)<\/script(?:[^>]*?>)/gi, function(p0, p1) { return scriptRecover.regReplScript1(p0, p1); });
            }

            src.innerHTML = Sys.Extended.UI.HTMLEditor.Trim(temptext.replace(/([^>])([\n\r]+)([^<])/g, "$1 $3"));

            var tempCollection = src.getElementsByTagName("EMBED");

            var embedCollection = [];
            for (var i = 0; i < tempCollection.length; i++) embedCollection.push(tempCollection[i]);

            for (var j = 0; j < embedCollection.length; j++) {
                var embed = embedCollection[j];
                var img = document.createElement("IMG");
                var attrs = embed.attributes;

                img.src = this._editPanel.get_imagePath_1x1();
                img.setAttribute("dummytag", "embed");

                for (var i = 0; i < attrs.length; ++i) {
                    var a = attrs.item(i);
                    if (!a.specified) continue;

                    var name = a.name.toLowerCase();
                    var value = a.value;

                    if (name == "src") name = "dummysrc";
                    else
                        if (name == "bgcolor") name = "dummybgcolor";
                    else
                        if (name == "wmode") name = "pseudomode";

                    img.setAttribute(name, value);
                }

                img.style.cssText = "border: 1px dotted #000000; background-image: url('" + (img.getAttribute("type").toLowerCase() == "application/x-mplayer2" ? this._editPanel.get_imagePath_media() : tthis._editPanel.get_imagePath_flash()) + "'); background-position: center; background-repeat: no-repeat; background-color: #c0c0c0;";

                if (embed.style.width && embed.style.width.length > 0) img.style.width = embed.style.width;
                if (embed.style.height && embed.style.height.length > 0) img.style.height = embed.style.height;

                embed.parentNode.insertBefore(img, embed);
                embed.parentNode.removeChild(embed);
            }

            Sys.Extended.UI.HTMLEditor.spanJoiner(src, document);

            temptext = Sys.Extended.UI.HTMLEditor.Trim(Sys.Extended.UI.HTMLEditor.getHTML(src, false, true));
            if (!this._editPanel.get_noScript()) {
                temptext = temptext.replace(/(<script(?:[^>]*?)>)(.*?)(<\/script(?:[^>]*?)>)/gi, function(p0, p1, p2, p3) { return scriptRecover.regReplFromScript1(p0, p1, p2, p3); });
            }

            delete src;
            delete scriptRecover;
            temptext = Sys.Extended.UI.HTMLEditor.brXHTML(temptext);
            if (temptext.length == 0) {
                temptext = "<br/>";
            }
            return temptext;
        }
    },

    _clearP: function() {
        try {
            var el = this._doc.body;

            if (el.firstChild)
                if (el.firstChild.nodeType == 3) {
                var str = Sys.Extended.UI.HTMLEditor.Trim("" + el.firstChild.data + "");

                if (str.length == 0)
                    el.removeChild(el.firstChild);
                else
                    if (str != ("" + el.firstChild.data + ""))
                    el.firstChild.data = str;
            }

            if (Sys.Extended.UI.HTMLEditor.isIE) {
                if (el.childNodes.length == 1) {
                    el = el.firstChild;

                    if (el.nodeType == 1) {
                        var elTagName = el.tagName.toLowerCase();
                        if (elTagName == "p" || elTagName == "ul" || elTagName == "ol") {
                            var needDel = false;
                            var list = (elTagName == "ul" || elTagName == "ol");

                            function checkInner(elem) {
                                var ret = false;
                                if (elem.nodeType == 1) {
                                    var tagName = elem.tagName.toUpperCase();
                                    if (!(list && tagName == "LI"))
                                        if (Sys.Extended.UI.HTMLEditor.isRestricted(elem) || tagName == "IMG" || tagName == "IFRAME" || tagName == "EMBED" || tagName == "SCRIPT") return true;
                                    if (elem.childNodes.length > 1) return true;
                                    if (elem.childNodes.length == 0) return false;
                                    ret |= checkInner(elem.firstChild);
                                } else {
                                    if (elem.nodeType == 3) {
                                        ret |= true;
                                    }
                                }
                                return ret;
                            }

                            if (el.childNodes.length == 1) {
                                if (!checkInner(el.firstChild)) {
                                    el.removeChild(el.firstChild); needDel = true;
                                }
                            }

                            if (needDel || el.parentNode.innerHTML.toLowerCase() == "<p>&nbsp;</p>") this._doc.body.removeChild(el);
                        }
                    }
                }
            }
        } catch (e) { }
    },

    isControl: function() {
        try {
            var sel = this._getSelection();

            if (Sys.Extended.UI.HTMLEditor.isIE) {
                if (sel.type.toLowerCase() == "control") {
                    return true;
                } else {
                    return false;
                }
            } else {
                var range = this._createRange(sel);
                var parent = this._getParent(range);

                if (parent.nodeType != 3 && range.startContainer == range.endContainer) {
                    if (!parent.tagName) {
                        return false;
                    }

                    if (range.startContainer.childNodes.item(range.startOffset) == null) {
                        return false;
                    }

                    if (range.startOffset == range.endOffset &&
                    range.startContainer.childNodes.item(range.startOffset).tagName &&
                    (range.startContainer.childNodes.item(range.startOffset).tagName.toUpperCase() == "BR" ||
                    Sys.Extended.UI.HTMLEditor.isStyleTag(range.startContainer.childNodes.item(range.startOffset).tagName))
                    ) {
                        return false;
                    }

                    if (parent.tagName.toUpperCase() == "BODY" && range.startOffset == 0 &&
                    range.endOffset > 0 && range.endOffset == parent.childNodes.length) {
                        return false;
                    }

                    if (range.startOffset == range.endOffset && range.startContainer.childNodes.item(range.startOffset).nodeType == 3) {
                        return false;
                    }

                    return true;
                }
                else {
                    return false;
                }
            }
        }
        catch (e) {
            return true;
        }
    },

    isPopup: function() {
        return (this._popup != null);
    },

    _getSelection: function() {
        if (Sys.Extended.UI.HTMLEditor.isIE) {
            var sel = this._doc.selection;
            return sel;
        } else {
            this.focusEditor();

            var sel;
            var range;
            var el;
            var contentWindow = this.get_element().contentWindow;
            sel = contentWindow.getSelection();
            range = this._createRange(sel);
            el = range.startContainer;
            try {
                while (el && el.nodeType) {
                    el = el.parentNode;
                }
            } catch (e) {
                this._removeAllRanges(sel);
                range = this._createRange(sel);
                range.setStart(this._saved_startContainer, this._saved_startOffset);
                range.setEnd(this._saved_startContainer, this._saved_startOffset);
                this._selectRange(sel, range);
                sel = contentWindow.getSelection();
            }
            return sel;
        }
    },

    _createRange: function(sel) {
        if (Sys.Extended.UI.HTMLEditor.isIE) {
            if (typeof sel == "undefined") {
                return this._doc.body.createTextRange();
            } else {
                return sel.createRange();
            }
        } else {
            this.focusEditor();
            if (typeof sel == "undefined") {
                return this._doc.createRange();
            } else {
                try {
                    var r = sel.getRangeAt(0);
                    return r;
                }
                catch (e) {
                    return this._doc.createRange();
                }
            }
        }
    },

    toEndOfProtected: function() {
        var editor = this;
        var sss = this._getSelection();
        var range;
        try {
            range = this._createRange(sss);
        } catch (ex) {
            return false;
        }
        var el;
        if (!Sys.Extended.UI.HTMLEditor.isIE) {
            el = Sys.Extended.UI.HTMLEditor.contentEditable(range.startContainer);
            if (el == null) {
                el = Sys.Extended.UI.HTMLEditor.contentEditable(range.endContainer);
            }
        } else {
            el = Sys.Extended.UI.HTMLEditor.contentEditable(Sys.Extended.UI.HTMLEditor.getSelParent(editor));
        }

        if (Sys.Extended.UI.HTMLEditor.isIE && el != null) {
            try { range.remove(el); } catch (e) { }
            range = editor._doc.body.createControlRange();
            range.add(el);
            range.select();
        } else {
            if (!Sys.Extended.UI.HTMLEditor.isIE && el != null) {
                var sel = editor._getSelection();
                var tempText;

                if (el.nextSibling != null && el.nextSibling.nodeType == 3) {
                    tempText = el.nextSibling;
                } else {
                    tempText = editor._doc.createTextNode("");

                    if (el.nextSibling != null) {
                        el.parentNode.insertBefore(tempText, el.nextSibling);
                    } else {
                        el.parentNode.appendChild(tempText);
                    }
                }

                editor._removeAllRanges(sel);
                var range = editor._createRange(sel);
                range.setStart(tempText, 0);
                range.setEnd(tempText, 0);
                editor._selectRange(sel, range);
            }
        }
        return true;
    },

    _commonPaste: function(ev) {
        var editor = this;

        this._saveContent();

        if (Sys.Extended.UI.HTMLEditor.isIE) {
            this.openWait();
            setTimeout(function() { editor._paste(!editor._editPanel.get_noPaste()); editor.closeWait(); }, 0)
            Sys.Extended.UI.HTMLEditor._stopEvent(ev);
        }
        else {
            if (!this.isPlainText && !this.isWord && !this._editPanel.get_noPaste()) {
                setTimeout(function() {
                    Sys.Extended.UI.HTMLEditor.operateAnchors(editor, editor._doc, !editor._editPanel.get_showAnchors());
                    Sys.Extended.UI.HTMLEditor.operatePlaceHolders(editor, editor._doc, !editor._editPanel.get_showPlaceHolders());
                    Sys.Extended.UI.HTMLEditor.inspectForShadows(editor._doc.body);
                    editor._checkImages(editor._doc.body);
                    editor.onContentChanged();
                }, 0);
            } else {
                var place = editor._getSafePlace();

                if (place != null) {
                    var div = editor._doc.createElement("div");
                    div.style.display = "inline";
                    div.style.borderStyle = "none";
                    place.parentNode.insertBefore(div, place);
                    div.appendChild(place);
                    div.removeChild(place);
                    div.innerHTML = "xx";
                    var sel = editor._getSelection();
                    var rng = editor._createRange();
                    editor._removeAllRanges(sel);
                    rng.setStart(div.firstChild, 0);
                    rng.setEnd(div.firstChild, 1);
                    editor._selectRange(sel, rng);
                    editor.openWait();

                    setTimeout(function() {
                        var parent = div.parentNode;
                        div.lastChild.deleteData(div.lastChild.length - 1, 1);

                        if (editor.isWord) {
                            div.innerHTML = Sys.Extended.UI.HTMLEditor.cleanUp(div.innerHTML);
                            Sys.Extended.UI.HTMLEditor.replaceOldTags(div, editor);
                            Sys.Extended.UI.HTMLEditor.spanJoiner(div, editor._doc);
                        } else {
                            var div1 = document.createElement("div");
                            div1.innerHTML = Sys.Extended.UI.HTMLEditor.cleanUp(div.innerHTML);

                            var html = new Sys.Extended.UI.HTMLEditor.jsDocument(true);
                            Sys.Extended.UI.HTMLEditor.__MozillaGetInnerText(div1, html);

                            div.innerHTML = html.toString().replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/\r/g, "").replace(/\n/g, "<br/>").replace(/\t/g, "&nbsp;");
                            delete div1;
                        }

                        while (div.firstChild) {
                            parent.insertBefore(div.firstChild, div);
                        }

                        var ns = null;
                        var ps = null;
                        if (div.nextSibling && div.nextSibling.nodeType == 3 && div.previousSibling && div.previousSibling.nodeType == 3) {
                            ns = div.nextSibling;
                            ps = div.previousSibling;
                        }

                        parent.removeChild(div);
                        var pslength = null;
                        if (ns != null && ps != null) {
                            pslength = ps.data.length;
                            ps.data = "" + ps.data + "" + ns.data + "";
                            ns.parentNode.removeChild(ns);
                        }

                        editor.isWord = false;
                        editor.isPlainText = false;
                        editor.closeWait();

                        if (pslength != null) {
                            var sel = editor._getSelection();
                            var rng = editor._createRange();
                            editor._removeAllRanges(sel);
                            rng.setStart(ps, pslength);
                            rng.setEnd(ps, pslength);
                            editor._selectRange(sel, rng);
                        }

                        editor.onContentChanged();
                    }, 0);
                }
                else {
                    Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                }
            }
        }
    },

    _selectRange: function(sel, range) {
        sel.addRange(range);
        this.focusEditor();
    },

    _selectRng: function(rng) {
        var sel = this._getSelection();

        if (!Sys.Extended.UI.HTMLEditor.isIE) {
            var range = this._doc.createRange();
            range.setStart(rng[0], 0);
            range.setEnd(rng[rng.length - 1], ("" + rng[rng.length - 1].data + "").length);

            this._removeAllRanges(sel);
            this._selectRange(sel, range);
        } else {
            var range1 = this._createRange(sel);
            var range2 = this._createRange(sel);

            var span1 = this._doc.createElement("span");
            var span2 = this._doc.createElement("span");

            rng[0].parentNode.insertBefore(span1, rng[0]);

            if (rng[rng.length - 1].nextSibling) {
                rng[rng.length - 1].parentNode.insertBefore(span2, rng[rng.length - 1].nextSibling);
            } else {
                rng[rng.length - 1].parentNode.appendChild(span2);
            }

            try {
                range1.moveToElementText(span1);
                var ii = range1.moveStart('character', 1);
                range1.moveStart('character', -ii);

                range2.moveToElementText(span2);
                ii = range2.moveEnd('character', -1);
                range2.moveEnd('character', -ii);

                range1.setEndPoint("EndToEnd", range2);
                range1.select();
            } catch (e) { }

            rng[0].parentNode.removeChild(span1);
            rng[rng.length - 1].parentNode.removeChild(span2);
        }
    },

    _removeAllRanges: function(sel) {
        sel.removeAllRanges();
    },

    _setToEnd: function() {
        var editor = this;
        setTimeout(function() {
            editor._setToEnd_();
            editor._editPanel.updateToolbar();
        }, 0);
    },

    _setToEnd_: function() {
        var editor = this;

        if (Sys.Extended.UI.HTMLEditor.isIE) {
            var sel = editor._getSelection();
            var range = editor._createRange(sel);

            if (sel.type.toLowerCase() != "control") {
                range.moveEnd("textedit", 1);
                range.collapse(false);
            }
            range.select();

            editor.focusEditor();
            return;
        }

        var index = 0;
        var container = editor._doc.body;
        var anchor = null;

        if (container.lastChild && container.lastChild.nodeType == 3) {
            container = container.lastChild;
            index = ("" + container.data + "").length;
        } else {
            var tempText = editor._doc.createTextNode("");
            if (container.lastChild && container.lastChild.nodeType == 1 && container.lastChild.tagName.toUpperCase() == "BR") {
                container.insertBefore(tempText, container.lastChild);
            } else {
                container.appendChild(tempText);
            }
            container = tempText;
            index = 0;
        }

        var sel = editor._getSelection();
        editor._removeAllRanges(sel);
        var range = editor._createRange();

        range.setStart(container, index);
        range.setEnd(container, index);

        editor._selectRange(sel, range);

        if (anchor != null) {
            editor._doc.body.removeChild(anchor);
        }

        editor.focusEditor();

        if (!Sys.Extended.UI.HTMLEditor.isSafari && !Sys.Extended.UI.HTMLEditor.isOpera) {
            try {
                var anchor = editor._doc.createElement("button");
                anchor.style.width = "0px";
                anchor.style.height = "20px";
                editor._doc.body.appendChild(anchor);

                anchor.focus();

                anchor.blur();
                editor.focusEditor();
                editor._doc.body.removeChild(anchor);
            } catch (e) { }
        }
    },

    isShadowed: function() {
        if (!this.isControl()) return false;

        var sel = this._getSelection();
        var range = this._createRange(sel);
        var element;

        if (Sys.Extended.UI.HTMLEditor.isIE) {
            element = range.item(0);
        } else {
            element = range.startContainer.childNodes.item(range.startOffset);
        }

        if (element.tagName &&
            element.tagName.toUpperCase() == "IMG" &&
            element.getAttribute(Sys.Extended.UI.HTMLEditor.attachedIdAttribute) &&
            element.getAttribute(Sys.Extended.UI.HTMLEditor.attachedIdAttribute).length > 0
        ) {
            var shadowNode = this.getAttachedElement(element);

            if (shadowNode != null) {
                if (Sys.Extended.UI.HTMLEditor.isIE) {
                    range = this._doc.body.createControlRange();
                    range.add(shadowNode);
                    range.select();
                } else {
                    try {
                        var index = Sys.Extended.UI.HTMLEditor.__getIndex(shadowNode);
                        sel.collapseToEnd();
                        this._removeAllRanges(sel);
                        range = this._createRange(sel);
                        range.setStart(shadowNode.parentNode, index);
                        range.setEnd(shadowNode.parentNode, index + 1);
                        this._selectRange(sel, range);
                    } catch (e) {
                        return true;
                    }
                }
                return false;
            }
            return true;
        }
        return false;
    },

    _ifShadow: function() {
        if (Sys.Extended.UI.HTMLEditor.isIE) {
            try {
                var selka = this._doc.selection;
            } catch (e) {
                return false;
            }
        }

        var editor = this;
        var prot = null;
        var el = Sys.Extended.UI.HTMLEditor.getSelParent(editor);

        while (el && (el.nodeType == 3 || (el.tagName && el.tagName.toUpperCase() != "BODY"))) {
            if (el.nodeType == 3 || !el.tagName) {
                el = el.parentNode;
                continue;
            }
            var tagName = el.tagName.toUpperCase()

            if (tagName == "TABLE" && el.getAttribute(Sys.Extended.UI.HTMLEditor.noContextMenuAttribute) &&
                el.getAttribute(Sys.Extended.UI.HTMLEditor.noContextMenuAttribute) == "yes") {
                prot = el.rows.item(0).cells.item(0).firstChild;
                if (Sys.Extended.UI.HTMLEditor.isIE && tagName == "P") {
                    prot = prot.firstChild;
                }
                break;
            }

            el = el.parentNode;
        }

        if (prot != null) {
            var sel = editor._getSelection();
            var range = editor._createRange(sel);

            if (Sys.Extended.UI.HTMLEditor.isIE) {
                range = editor._doc.body.createControlRange();
                range.add(prot);
                range.select();
            } else {
                try {
                    sel.collapseToEnd();
                    editor._removeAllRanges(sel);
                    range = editor._createRange(sel);
                    range.setStart(prot.parentNode, 0);
                    range.setEnd(prot.parentNode, 1);
                    editor._selectRange(sel, range);
                } catch (e) { }
            }
        }
    },

    _saveContent: function() {
        var sel;
        var range;
        var marker;

        try {
            try {
                sel = this._getSelection();
                range = this._createRange(sel);
            } catch (e) { }

            marker = new Sys.Extended.UI.HTMLEditor._Marker(this, range, sel);
        } catch (e) {
            return;
        }

        if (!this.__stack) {
            this.__stack = [];
            this.__stackPos = 0;
        }

        while (this.__stackPos < this.__stack.length) {
            this.__stack.pop();
        }

        if (this.__stack.length == Sys.Extended.UI.HTMLEditor.__stackMaxSize) {
            this.__stack.reverse();
            this.__stack.pop();
            this.__stack.reverse();
        }

        this.__stack.push(marker);
        this.__stackPos = this.__stack.length;
    },

    _restoreContent: function() {
        if (this.__stack && this.__stackPos >= 0 && this.__stackPos < this.__stack.length) {
            var obj = this.__stack[this.__stackPos];
            var sel;
            var range;

            if (Sys.Extended.UI.HTMLEditor.isIE) {
                function rep(p0, p1, p2, p3, p4) {
                    return p1.replace(/\salign=[^\s>]*/ig, "") + ((p3 == '"X"') ? "" : ("align=" + p3)) + p4.replace(/\salign=[^\s>]*/ig, "");
                }

                var tempCollection = this._doc.body.getElementsByTagName("EMBED");

                var els = [];
                for (var i = 0; i < tempCollection.length; i++) {
                    els.push(tempCollection[i]);
                }

                for (var jk = 0; jk < els.length; jk++) {
                    els[jk].parentNode.removeChild(els[jk]);
                }

                var tuk = obj._save.replace(/&amp;/ig, "&");
                tuk = tuk.replace(/(<embed(?:.*?))(teoalign=)(\"[^\"]*\")((?:.*?)>)/ig, rep);
                this._doc.body.innerHTML = "!!!<span></span>" + Sys.Extended.UI.HTMLEditor.Trim(tuk);

                if (this._doc.body.firstChild) {
                    this._doc.body.removeChild(this._doc.body.firstChild);
                }
                if (this._doc.body.firstChild) {
                    this._doc.body.removeChild(this._doc.body.firstChild);
                }

                var mArr = Sys.Extended.UI.HTMLEditor.getHrefsText(tuk);
                Sys.Extended.UI.HTMLEditor.setHrefsText(this._doc.body, mArr);

                if (this._editPanel.get_relativeImages()) {
                    mArr = Sys.Extended.UI.HTMLEditor.getImagesText(tuk);
                    Sys.Extended.UI.HTMLEditor.setImagesText(this._doc.body, mArr);
                }

                Sys.Extended.UI.HTMLEditor.setNames(this._doc.body, obj._nArr);

                Sys.Extended.UI.HTMLEditor.operateAnchors(this, this._doc, !this._editPanel.get_showAnchors());
                Sys.Extended.UI.HTMLEditor.operatePlaceHolders(this, this._doc, !this._editPanel.get_showPlaceHolders());

                if (obj._tree != null) {
                    var el = this._doc.body;
                    var i;
                    try {
                        for (i = obj._tree.length - 1; i >= 0; i--) {
                            el = el.childNodes.item(obj._tree[i]);
                        }
                    } catch (e) {
                        if (this.__stackPos > 0) {
                            this.__stackPos--;
                            this._restoreContent();
                            this.__stackPos++;
                        }
                        return;
                    }

                    try {
                        var rng = this._doc.body.createControlRange();
                        rng.add(el);
                        rng.select();
                    } catch (e) { }
                } else {
                    var editor = this;
                    setTimeout(function() {
                        try {
                            if (editor._editPanel == Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel) {
                                sel = editor._getSelection();
                                range = editor._createRange(sel);
                                if (sel.type.toLowerCase() != "control") {
                                    try { range.moveToPoint(obj._offsetLeft, obj._offsetTop); } catch (e) { }
                                }
                                range.select();
                            }
                        } catch (e) { }
                    }, 0);
                }
            } else {
                if (Sys.Extended.UI.HTMLEditor.isOpera) {
                    this._doc.body.innerHTML = Sys.Extended.UI.HTMLEditor.Trim(obj._save);
                } else {
                    this._doc.body.innerHTML = "";
                    for (var i = 0; i < obj._save.childNodes.length; i++) {
                        this._doc.body.appendChild(obj._save.childNodes.item(i).cloneNode(true));
                    }
                }

                Sys.Extended.UI.HTMLEditor.operateAnchors(this, this._doc, !this._editPanel.get_showAnchors());
                Sys.Extended.UI.HTMLEditor.operatePlaceHolders(this, this._doc, !this._editPanel.get_showPlaceHolders());

                try {
                    sel = this._getSelection();
                    range = this._createRange();
                    this._removeAllRanges(sel);
                } catch (e) { }
                var str = "";
                var el = this._doc.body;
                for (var i = obj._tree.length - 1; i >= 0; i--) {
                    str += " " + obj._tree[i];
                    el = el.childNodes.item(obj._tree[i]);
                }

                var n_offset = obj._offset;

                try {
                    range.setStart(el, n_offset);
                    range.setEnd(el, n_offset);
                } catch (e) {
                    Sys.Extended.UI.HTMLEditor.inspectForShadows(this._doc.body);
                    return;
                }

                try {
                    this._selectRange(sel, range);
                } catch (e) { }
            }

            try {
                Sys.Extended.UI.HTMLEditor.inspectForShadows(this._doc.body);
            } catch (e) { }
        }
    },

    SaveContent: function() {
        this._saveContent();
    },

    RestoreContent: function() {
        this._undo(false);
    },

    _undo: function(pr) {
        if (this.__stack) {
            if (this.__stackPos > 0) {
                if (this.__stackPos == this.__stack.length && pr) {
                    this._saveContent();
                }

                do {
                    var tmp = Sys.Extended.UI.HTMLEditor.Trim(this._doc.body.innerHTML);
                    this.__stackPos--;
                    this._restoreContent();
                }
                while (Sys.Extended.UI.HTMLEditor.Trim(this._doc.body.innerHTML) == tmp && this.__stackPos > 0 && pr)

                var editor = this;
                setTimeout(function() {
                    try { editor._ifShadow(); } catch (e) { };
                    if (editor._editPanel == Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel) {
                        try { editor._editPanel.updateToolbar(); } catch (e) { }
                    }
                    if (!pr) editor.onContentChanged();
                }, 0);
            }
        }
    },

    _redo: function() {
        if (this.__stack) {
            if (this.__stackPos < this.__stack.length - 1) {
                this.__stackPos++;
                var editor = this;
                var tempCollectionLength;
                if (Sys.Extended.UI.HTMLEditor.isIE) {
                    tempCollectionLength = editor._doc.body.getElementsByTagName("EMBED").length;

                    if (tempCollectionLength > 0) {
                        var popup = editor._body.ownerDocument.createElement("div");
                        editor._body.appendChild(popup);

                        setTimeout(function() {
                            editor._body.removeChild(popup);
                        }, 0);
                    }
                }
                this._restoreContent();
                var editor = this;
                setTimeout(function() { editor._ifShadow(); editor._editPanel.updateToolbar(); }, 0);
            }
        }
    },

    undo: function() {
        this._undo(true);
        this.onContentChanged();
    },

    redo: function() {
        this._redo();
        this.onContentChanged();
    },

    _contextMenuCallP: function() {
    },

    onContentChanged: function() {
    },

    _copyCut: function(key, prize) {
        var editor = this;

        if (Sys.Extended.UI.HTMLEditor.isIE) {
            var sel = this._getSelection();
            var range = this._createRange(sel);
            var was = false;
            var html = "";

            if (key == 'x') {
                this._saveContent();
            }

            if (sel.type.toLowerCase() == "control") {
                was = true;
                html = Sys.Extended.UI.HTMLEditor.getHTML(range.item(0), true)
            } else {
                if (range.text != "") {
                    was = true;
                    html = range.htmlText;

                    var sr = range.duplicate();

                    var rng = this._getTextNodeCollection();

                    if (rng.length < 1) {
                        return;
                    }

                    var fnd = Sys.Extended.UI.HTMLEditor._commonParent(rng[0], rng[rng.length - 1]);

                    if (fnd != null && rng[0].previousSibling && rng[0].previousSibling.nodeType == 3) {
                        var par = fnd.parent;

                        while (par && par.tagName.toUpperCase() != "BODY" && Sys.Extended.UI.HTMLEditor.isStyleTag(par.tagName)) {
                            var ttt = par.cloneNode(false);
                            ttt.innerHTML = html;
                            html = ttt.outerHTML;
                            par = par.parentNode;
                        }
                    }
                    sel = this._getSelection();
                    sel.empty();
                    range = this._createRange(sel);
                    range.setEndPoint("EndToEnd", sr);
                    range.setEndPoint("StartToStart", sr);
                    range.select();
                } else {
                    if (range.htmlText != "") {
                        was = true;
                        html = range.htmlText;
                    }
                }
            }

            if (was) {
                var src = this._doc.createElement("DIV");
                src.innerHTML = "!!!<span></span>" + html;
                src.removeChild(src.firstChild);
                src.removeChild(src.firstChild);

                var temp = Sys.Extended.UI.HTMLEditor.getHTML(src, false, true);

                var nnreg = new RegExp("(<[/]?)(teo" + Sys.Extended.UI.HTMLEditor.smartClassName + ":)", "ig");
                temp = temp.replace(nnreg, "$1");

                delete src;
                this._contentCopy(temp, true);
                range.select();
                if (key == 'x') {
                    sel.clear();
                    this._clearP();
                }
            } else {
                if (key == 'x') {
                    sel.clear();
                    this._clearP();
                }
            }

            if (prize) {
                setTimeout(function() { editor._editPanel.updateToolbar(); }, 0);
            }
        } else {
            if (key == "x") {
                this._saveContent();
                var sel = this._getSelection();
                var range = this._createRange(sel);
                this._removeAllRanges(sel);
                range.deleteContents();

                if (this._doc.body.innerHTML == "") {
                    this._doc.body.innerHTML = "<br/>";
                    range.setStart(this._doc.body, 0);
                    range.setEnd(this._doc.body, 0);
                }

                editor.onContentChanged();
                this._selectRange(sel, range);
            } else {
                var sel = this._getSelection();
                var range = this._createRange(sel);
                this._removeAllRanges(sel);

                alert(String.format(Sys.Extended.UI.Resources.HTMLEditor_toolbar_button_Use_verb, (Sys.Extended.UI.HTMLEditor.isSafari && navigator.userAgent.indexOf("mac") != -1) ? "Apple-C" : "Ctrl-C"));
                this._selectRange(sel, range);
            }
        }
    },

    _paste: function(prize, word) {
        var editor = this;
        var sel = this._getSelection();
        var range = this._createRange(sel);
        var _left;
        var _top;

        if (!prize) {
            _left = range.offsetLeft;
            _top = range.offsetTop;

            this.insertHTML(this._getPlain());
            editor.onContentChanged();
            return;
        }

        if (this._editPanel.get_noPaste()) {
            return;
        }

        _left = range.offsetLeft;
        _top = range.offsetTop;

        var temp = this._doc.createElement("span");
        var place;
        var tText = this._contentCopy("", false, word);

        if ((/<[\/]*p[\s>]+/i.test(tText)) || (/<[\/]*h/i.test(tText))) {
            place = this._getSafePlace();
        } else {
            place = this._doc.createElement("SPAN");
            place.id = Sys.Extended.UI.HTMLEditor.smartClassName;

            if (!this.insertHTML(Sys.Extended.UI.HTMLEditor.getHTML(place, true))) {
                return;
            }

            place = this._doc.getElementById(Sys.Extended.UI.HTMLEditor.smartClassName);

            if (place) {
                place.id = null;
                place.removeAttribute("id");
                place.setAttribute("para", "no");
            }
        }

        temp.innerHTML = tText;
        if (!place) {
            return;
        }

        this._checkImages(temp);

        var par = place.parentNode;
        var pos = place.getAttribute("para");

        if (pos != "no") {
            if (pos.indexOf("left") >= 0 && temp.firstChild) {
                if (temp.firstChild.tagName && temp.firstChild.tagName.toUpperCase() == "P") {
                    while (temp.firstChild.firstChild) {
                        place.previousSibling.appendChild(temp.firstChild.firstChild);
                    }
                    temp.removeChild(temp.firstChild);
                }
            }

            if (pos.indexOf("right") >= 0 && temp.lastChild) {
                if (temp.lastChild.tagName && temp.lastChild.tagName.toUpperCase() == "P") {
                    while (temp.lastChild.lastChild) {
                        place.nextSibling.insertBefore(temp.lastChild.lastChild, place.nextSibling.firstChild);
                    }
                    temp.removeChild(temp.lastChild);
                }
            }
        }

        var saveEl = place;
        var temp1 = null;
        if (temp.childNodes.length == 0 && pos.indexOf("left") >= 0 && pos.indexOf("right") >= 0) {
            if (place.nextSibling.firstChild) {
                temp1 = this._doc.createElement("span");
                saveEl = temp1;
                temp1.innerHTML = "111";
                place.previousSibling.appendChild(temp1);
            }
            while (place.nextSibling.firstChild) {
                place.previousSibling.appendChild(place.nextSibling.firstChild);
            }
            par.removeChild(place.nextSibling);
        } else {
            while (temp.firstChild) {
                par.insertBefore(temp.firstChild, place);
            }
        }

        setTimeout(function() {
            var sel = editor._getSelection();
            var range = editor._createRange(sel);
            if (sel.type.toLowerCase() == "control") {
                while (range.length > 0) {
                    range.remove(0);
                }
            }
            try {
                range.collapse(false);
            } catch (e) { }

            editor.focusEditor();
            Sys.Extended.UI.HTMLEditor._setCursor(saveEl, editor);
            if (temp1) {
                temp1.parentNode.removeChild(temp1);
            }
            par.removeChild(place);
            Sys.Extended.UI.HTMLEditor.inspectForShadows(editor._doc.body);
            editor.onContentChanged();
            range.select();
        }, 0);
    },

    _contentCopy: function(text, prize, word) {
        if (text != "") {
            text = text.replace(/(<td[^>]*?>)([\s ]*?)(<\/td[^>]*?>)/ig, "$1&nbsp;$3")
                .replace(/(<td[^>]*?>)\s*(&nbsp;)\s*(<\/td[^>]*?>)/ig, "$1<br/>$3")
                .replace(/(<p[^>]*?>)\s*(&nbsp;)\s*(<\/p[^>]*?>)/ig, "$1<br/>$3");
        }

        var iframe = this._doc.createElement("iframe");
        iframe.width = "0";
        iframe.height = "0";
        if (Sys.Extended.UI.HTMLEditor.isIE) {
            iframe.src = "javascript:false;";
        }
        this._doc.appendChild(iframe);
        var doc = iframe.contentWindow.document;
        doc.write("<html><head></head><body>" + text + "</body></html>");
        doc.close();
        doc.body.contentEditable = true;
        var r = doc.body.createTextRange();
        var wasNbsp = false;

        if (text == "") {
            r.execCommand("paste");
            var trg = doc.createElement("DIV");
            for (var i = 0; i < doc.body.childNodes.length; i++) {
                var child = doc.body.childNodes.item(i);
                if (child.nodeType == 8) {
                    var str = "" + child.data + "";
                    if (str.search(/StartFragment/i) >= 0) {
                        if (child.nextSibling && child.nextSibling.nodeType == 3) {
                            var str = "" + child.nextSibling.data + "";
                            if (str.length) {
                                if (str.charCodeAt(0) == 160) {
                                    str = str.substr(1);
                                    child.nextSibling.data = str;
                                    wasNbsp = true;
                                    break;
                                }
                            }
                        }
                    }
                }
            }

            if (typeof word != "undefined" && word) {
                doc.body.innerHTML = Sys.Extended.UI.HTMLEditor.cleanUp(doc.body.innerHTML);
            }
            var str = Sys.Extended.UI.HTMLEditor.Trim(Sys.Extended.UI.HTMLEditor.getHTML(doc.body, false, true));
            str = str.replace(/(<script(?:[^>]*?)>(?:[^<]*?)<\/script(?:[^>]*?)>)/gi, "");
            doc.body.innerHTML = str;
            if (!prize) {
                Sys.Extended.UI.HTMLEditor.operateAnchors(this, doc, !this.showAnchors);
                Sys.Extended.UI.HTMLEditor.operatePlaceHolders(this, doc, !this.showPlaceHolders);

                var tempCollection = doc.body.getElementsByTagName("EMBED");

                var els = [];
                for (var i = 0; i < tempCollection.length; i++) {
                    els.push(tempCollection[i]);
                }

                for (var jk = 0; jk < els.length; jk++) {
                    els[jk].parentNode.removeChild(els[jk]);
                }
            }
            delete r;
            delete trg;
            if (prize && Sys.Extended.UI.HTMLEditor.isIE) {
                r = doc.body.createTextRange();
            }
        }

        if (prize && Sys.Extended.UI.HTMLEditor.isIE) {
            if (text != "") {
                Sys.Extended.UI.HTMLEditor.operateAnchors(this, doc, true);
                Sys.Extended.UI.HTMLEditor.operatePlaceHolders(this, doc, true);
            }
            r.select();
            r.execCommand("copy");
        }

        var ret = Sys.Extended.UI.HTMLEditor.Trim(doc.body.innerHTML)
            .replace(/<br\s*[\/]*>\s*<\/td>/ig, "</td>")
            .replace(/(<td[^>]*?>)([\s ]*?)(<\/td[^>]*?>)/ig, "$1&nbsp;$3")
            .replace(/(<p[^>]*?>)\s*(<br[^>]*?>)\s*(<\/p[^>]*?>)/ig, "$1&nbsp;$3")
            .replace(/(<embed(?:.*?))(wmode=)(\"[^\"]*\")((?:.*?)>)/ig, "$1pseudomode=$3$4")
            .replace(/(<embed)([^>]*?>)/ig, "$1 wmode=\"transparent\"$2");
        var tempCollection = doc.body.getElementsByTagName("EMBED");
        var els = [];
        for (var i = 0; i < tempCollection.length; i++) {
            els.push(tempCollection[i]);
        }

        for (var jk = 0; jk < els.length; jk++) {
            els[jk].parentNode.removeChild(els[jk]);
        }

        iframe.src = "";
        var editor = this;
        editor._doc.removeChild(iframe);
        delete iframe;

        return ret;
    },

    insertHTML: function(html, range) {
        this.focusEditor();
        var sel = this._getSelection();
        if (typeof range == "undefined") {
            range = this._createRange(sel);
        }

        if (Sys.Extended.UI.HTMLEditor.isIE) {
            function regReplScript(p0, p1) {
                return "<span class=\"" + Sys.Extended.UI.HTMLEditor.smartClassName + "_script\" style='display:none;visibility:hidden;'>" + p1.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;") + "</span>";
            }

            function regReplFromScript(p0, p1, p2, p3) {
                return p1.replace(/&gt;/g, ">").replace(/&lt;/g, "<").replace(/&amp;/g, "&");
            }
            var new_html = "<span id=\"" + Sys.Extended.UI.HTMLEditor.smartClassName + "\">111<span></span>" + html + "</span>";

            var mArr = Sys.Extended.UI.HTMLEditor.getHrefsText(new_html);
            var mArr1 = Sys.Extended.UI.HTMLEditor.getImagesText(new_html);

            if (!this._editPanel.get_noScript()) {
                new_html = new_html.replace(/(<script(?:[^>]*?)>.*?<\/script(?:[^>]*?)>)/gi, regReplScript);
            } else {
                new_html = new_html.replace(/(<script(?:[^>]*?)>.*?<\/script(?:[^>]*?)>)/gi, "");
            }

            var editor = this;
            try {
                if (range.pasteHTML) {
                    range.pasteHTML(new_html);
                } else {
                    var div = this._doc.createElement("DIV");
                    div.innerHTML = new_html;
                    while (div.firstChild) range(0).parentNode.insertBefore(div.firstChild, range(0));
                    range(0).parentNode.removeChild(range(0));
                    range.remove(0);
                    delete div;
                }
            } catch (e) {
                return false;
            }

            var trg = this._doc.getElementById(Sys.Extended.UI.HTMLEditor.smartClassName);


            trg.innerHTML = "<span>qqq</span>" + Sys.Extended.UI.HTMLEditor.getHTML(trg, false, true).replace(new RegExp("<span(?:[^>]*?)class=" + Sys.Extended.UI.HTMLEditor.smartClassName + "_script(?:[^>]*?)>(.*?)<\/span(?:[^>]*?)>", "gi"), regReplFromScript) + "<span>qqq</span>";

            trg.removeChild(trg.firstChild);
            trg.removeChild(trg.lastChild);

            Sys.Extended.UI.HTMLEditor.setHrefsText(trg, mArr);
            Sys.Extended.UI.HTMLEditor.setImagesText(trg, mArr1);

            if (trg.firstChild) {
                trg.removeChild(trg.firstChild);
            }
            if (trg.firstChild) {
                trg.removeChild(trg.firstChild);
            }

            while (trg.firstChild) {
                trg.parentNode.insertBefore(trg.firstChild, trg);
            }
            trg.parentNode.removeChild(trg);
            delete trg;

            return true;
        } else {
            var div = this._doc.createElement("div");
            div.innerHTML = html;

            var tempCollection = div.getElementsByTagName("EMBED");

            var embedCollection = [];
            for (var i = 0; i < tempCollection.length; i++) {
                embedCollection.push(tempCollection[i]);
            }

            for (var j = 0; j < embedCollection.length; j++) {
                var embed = embedCollection[j];
                var img = document.createElement("IMG");
                var attrs = embed.attributes;

                img.src = this._images_list[1];
                img.setAttribute("dummytag", "embed");

                for (var i = 0; i < attrs.length; ++i) {
                    var a = attrs.item(i);
                    if (!a.specified) continue;

                    var name = a.name.toLowerCase();
                    var value = a.value;

                    if (name == "src")
                        name = "dummysrc";
                    else if (name == "bgcolor")
                        name = "dummybgcolor";
                    else if (name == "wmode")
                        name = "pseudomode";

                    img.setAttribute(name, value);
                }
                img.getAttribute("type")
                img.style.cssText = "border: 1px dotted #000000; background-image: url('" + (img.getAttribute("type").toLowerCase() == "application/x-mplayer2" ? this._images_list[3] : this._images_list[2]) + "'); background-position: center; background-repeat: no-repeat; background-color: #c0c0c0;";

                embed.parentNode.insertBefore(img, embed);
                embed.parentNode.removeChild(embed);
            }

            var ret = this.insertNodeAtSelection(div, range);
            return ret;
        }
    },

    insertNodeAtSelection: function(toBeInserted, range) {
        if (!Sys.Extended.UI.HTMLEditor.isIE) {
            var sel = this._getSelection();
            if (typeof range == "undefined") {
                try {
                    range = this._createRange(sel);
                } catch (ex) {
                    this._removeAllRanges(sel);
                    return false;
                }
            }

            var node = range.startContainer;
            var pos = range.startOffset;
            if (node.ownerDocument.id != "EditorDocument") {
                return false;
            }

            if ((range.startContainer.nodeType == 1 && range.startContainer.tagName.toUpperCase() == "TR") ||
                (range.endContainer.nodeType == 1 && range.endContainer.tagName.toUpperCase() == "TR")) {
                return false;
            }

            this._removeAllRanges(sel);
            range.deleteContents();
            try {
                range = this._createRange();
            } catch (ex) {
                this._removeAllRanges(sel);
                return false;
            }

            switch (node.nodeType) {
                case 3:
                    if (pos > 0) node = node.splitText(pos);
                    while (toBeInserted.firstChild) {
                        node.parentNode.insertBefore(toBeInserted.firstChild, node);
                    }
                    range.setStart(node, 0);
                    range.setEnd(node, 0);
                    break;
                case 1:
                case 11:
                    try {
                        this._removeAllRanges(sel);
                        if (node.childNodes.length >= pos + 1) {
                            node = node.childNodes.item(pos);
                            while (toBeInserted.firstChild) {
                                node.parentNode.insertBefore(toBeInserted.firstChild, node);
                            }
                            var tempText = this._doc.createTextNode("");
                            node.parentNode.insertBefore(tempText, node);
                            node = tempText;
                        } else {
                            var tempText = this._doc.createTextNode("");

                            if (Sys.Extended.UI.HTMLEditor.canHaveChildren(node)) {
                                while (toBeInserted.firstChild) {
                                    node.appendChild(toBeInserted.firstChild);
                                }
                                node.appendChild(tempText);
                            } else {
                                while (toBeInserted.firstChild) {
                                    node.parentNode.insertBefore(toBeInserted.firstChild, node);
                                }
                                node.parentNode.insertBefore(tempText, node);
                            }

                            node = tempText;
                        }

                        if (node.nodeType == 1) {
                            var par = node.parentNode;
                            var container = par;
                            var j = 0;

                            for (; j < par.childNodes.length; j++) {
                                if (node == par.childNodes.item(j)) {
                                    break;
                                }
                            }
                            range.setStart(par, j);
                            range.setEnd(par, j);
                        } else {
                            range.setStart(node, 0);
                            range.setEnd(node, 0);
                        }
                    } catch (ex) {
                        this._removeAllRanges(sel);
                        return false;
                    }
                    break;
            }

            this._selectRange(sel, range);
            return true;
        } else {
            return false;
        }
    },

    trickWithStyles: function(tid) {
        var editor = this;
        var el = editor._doc.getElementById(tid);
        if (el != null) {
            if (el.nextSibling && el.nextSibling.nodeType == 3) {
                var text = el.nextSibling;
                el.parentNode.removeChild(el);

                var spaceIndex = ("" + text.data + "").indexOf(" ");
                if (spaceIndex > 0) {
                    text.splitText(spaceIndex);
                } else {
                    if (spaceIndex == 0) {
                        text.splitText(1);
                    }
                }

                if (editor.n_arr != null) {
                    for (var im = 0; im < editor.n_arr.length; im++) {
                        editor.MSIE_applyCssStyle(editor.n_arr[im], [text], false);
                    }
                }
                editor.n_arr = null;

                var sel = editor._getSelection();

                if (!Sys.Extended.UI.HTMLEditor.isIE) {
                    var range = editor._doc.createRange();
                    range.setStart(text, text.length);
                    range.setEnd(text, text.length);

                    editor._removeAllRanges(sel);
                    editor._selectRange(sel, range);
                } else {
                    var range1 = editor._createRange(sel);

                    var span1 = editor._doc.createElement("span");

                    if (text.nextSibling) {
                        text.parentNode.insertBefore(span1, text.nextSibling);
                    } else {
                        text.parentNode.appendChild(span1);
                    }

                    try {
                        range1.moveToElementText(span1);
                        range1.select();
                    } catch (e) { }
                    span1.parentNode.removeChild(span1);
                }
            }
            else {
                el.parentNode.removeChild(el);
            }
        }
    },

    _getParent: function(range) {
        if (Sys.Extended.UI.HTMLEditor.isIE) {
            return range.parentElement();
        } else {
            return range.startContainer;
        }
    },

    _checkImages: function(element) {
        if (this._editPanel.get_relativeImages()) {
            var images = element.getElementsByTagName("IMG");

            for (var i = 0; i < images.length; i++) {
                var image = images[i];

                if (image.src.indexOf("http://") >= 0) {
                    var tmp = image.src;

                    image.src = "qwerty.gif";
                    var n = image.src.indexOf("qwerty.gif");

                    if (tmp.substr(0, n) == image.src.substr(0, n)) {
                        tmp = tmp.substr(n, tmp.length - n);
                    }

                    image.src = tmp;
                }
            }
        }
    },

    _getSafePlace: function(uel) {
        var el = this._doc.createElement("SPAN");
        var editor = this;
        el.id = Sys.Extended.UI.HTMLEditor.smartClassName;

        if (typeof uel == "undefined") {
            if (!this.insertHTML(Sys.Extended.UI.HTMLEditor.getHTML(el, true))) {
                return null;
            }
        } else {
            if (uel.nextSibling == null) {
                uel.parentNode.appendChild(el);
            } else {
                uel.parentNode.insertBefore(el, uel.nextSibling);
            }
            uel.parentNode.removeChild(uel);
        }

        el = this._doc.getElementById(Sys.Extended.UI.HTMLEditor.smartClassName);

        el.id = null;
        el.removeAttribute("id");
        el.setAttribute("para", "no");

        var parent = el.parentNode;
        var tagName = parent.tagName.toUpperCase();

        while (tagName != "BODY" && tagName != "TD" && tagName != "P" && tagName != "DIV") {
            if (Sys.Extended.UI.HTMLEditor.isStyleTag(parent.tagName)) {
                parent = parent.parentNode;
                tagName = parent.tagName.toUpperCase();
            } else {
                break;
            }
        }

        if (tagName == "P") {
            el.setAttribute("para", "");

            function diver(add, el, rpr, before) {
                var neighbour;
                var par = Sys.Extended.UI.HTMLEditor.myClone(rpr, editor._doc, false);

                if (add) {
                    par.appendChild(add);
                }

                while (el) {
                    if (el.nodeType == 1 || (el.nodeType == 3 && Sys.Extended.UI.HTMLEditor.Trim("" + el.data + "").length > 0)) {
                        var text = null;
                        if (el.tagName && el.tagName.toUpperCase() == "SCRIPT") {
                            text = el.text;
                        }

                        var ela = Sys.Extended.UI.HTMLEditor.myClone(el, editor._doc, true);

                        if (par.childNodes.length == 0 || !before) {
                            par.appendChild(ela);
                        } else {
                            par.insertBefore(ela, par.firstChild);
                        }

                        if (text != null) {
                            ela.text = text;
                        }
                    }
                    el = before ? el.previousSibling : el.nextSibling
                }

                if (par.childNodes.length == 0) {
                    delete par;
                    par = null;
                }

                if (rpr == parent) {
                    return par;
                } else {
                    return diver(par, before ? rpr.previousSibling : rpr.nextSibling, rpr.parentNode, before);
                }
            };

            var p1 = diver(null, el.previousSibling, el.parentNode, true);
            var p2 = diver(null, el.nextSibling, el.parentNode, false);

            var par = parent.parentNode;

            if (p1) {
                par.insertBefore(p1, parent);
                el.setAttribute("para", el.getAttribute("para") + " left");
            }
            par.insertBefore(el, parent);
            if (p2) {
                par.insertBefore(p2, parent);
                el.setAttribute("para", el.getAttribute("para") + " right");
            }
            par.removeChild(parent);
        }
        return el;
    },

    noContextMenuAttributeName: function() {
        return Sys.Extended.UI.HTMLEditor.noContextMenuAttribute;
    },

    _getTextNodeCollection: function(total) {
        var _result = [];
        if (this.isControl()) {
            return _result;
        }

        var sel = this._getSelection();
        var range = this._createRange(sel);

        var rn = Sys.Extended.UI.HTMLEditor.smartClassName + "_right";
        var ln = Sys.Extended.UI.HTMLEditor.smartClassName + "_left";
        var r_left = null;
        var r_right = null;
        var svs;
        if (typeof total == "undefined") {
            if (Sys.Extended.UI.HTMLEditor.isIE) {
                r_left = range.duplicate();
                r_right = range.duplicate();
                r_left.setEndPoint("EndToStart", range);
                r_right.setEndPoint("StartToEnd", range);
            } else {
                r_left = range.cloneRange();
                r_right = range.cloneRange();
                r_left.setEnd(r_left.startContainer, r_left.startOffset);
                r_right.setStart(r_right.endContainer, r_right.endOffset);
                svs = r_left.endOffset;
            }

            if (!this.insertHTML("<span id='" + rn + "'/>", r_right)) {
                return _result;
            } else {
                if (Sys.Extended.UI.HTMLEditor.isOpera) {
                    r_left.setEnd(r_left.startContainer, svs);
                    r_left.setStart(r_left.startContainer, svs);
                }
                if (!this.insertHTML("<span id='" + ln + "'/>", r_left)) {
                    var rP = this._doc.getElementById(rn);
                    if (rP != null) {
                        temp = rP.parentNode;
                        temp.removeChild(rP);
                    }
                    var rL = this._doc.getElementById(rl);
                    if (rL != null) {
                        temp = rL.parentNode;
                        temp.removeChild(rL);
                    }
                    return _result;
                }
            }
        } else {
            var span;

            span = this._doc.createElement("SPAN");
            span.id = rn;
            this._doc.body.appendChild(span);

            span = this._doc.createElement("SPAN");
            span.id = ln;
            this._doc.body.insertBefore(span, this._doc.body.firstChild);
        }

        var lPoint = this._doc.getElementById(ln);
        var rPoint = this._doc.getElementById(rn);

        if (lPoint == null || rPoint == null) {
            var temp;

            if (lPoint != null) {
                temp = lPoint.parentNode;
                temp.removeChild(lPoint);
            }
            if (rPoint != null) {
                temp = rPoint.parentNode;
                temp.removeChild(rPoint);
            }
            return [];
        }

        while (lPoint.firstChild) {
            lPoint.removeChild(lPoint.firstChild);
        }
        while (rPoint.firstChild) {
            rPoint.removeChild(rPoint.firstChild);
        }

        while (lPoint.previousSibling && lPoint.previousSibling.nodeType == 3 &&
              Sys.Extended.UI.HTMLEditor.Trim("" + lPoint.previousSibling.data + "").length == 0) {
            lPoint.parentNode.removeChild(lPoint.previousSibling);
        }

        while (lPoint.nextSibling && lPoint.nextSibling.nodeType == 3 &&
              Sys.Extended.UI.HTMLEditor.Trim("" + lPoint.nextSibling.data + "").length == 0) {
            lPoint.parentNode.removeChild(lPoint.nextSibling);
        }

        while (rPoint.previousSibling && rPoint.previousSibling.nodeType == 3 &&
              Sys.Extended.UI.HTMLEditor.Trim("" + rPoint.previousSibling.data + "").length == 0) {
            rPoint.parentNode.removeChild(rPoint.previousSibling);
        }

        while (rPoint.nextSibling && rPoint.nextSibling.nodeType == 3 &&
              Sys.Extended.UI.HTMLEditor.Trim("" + rPoint.nextSibling.data + "").length == 0) {
            rPoint.parentNode.removeChild(rPoint.nextSibling);
        }

        var _found = false;
        var editor = this;

        function _diver(_point, prize) {
            while (_point) {
                if (_point.id && _point.id == rn) {
                    _found = true;
                    return;
                }
                if (_point.nodeType == 3) {
                    while (_point.nextSibling &&
                            (
                            _point.nextSibling.nodeType == 3 ||
                            (!Sys.Extended.UI.HTMLEditor.isIE && typeof editor.__saveBM__ != "undefined" && editor.__saveBM__ != null && editor.__saveBM__[0] == _point.nextSibling)
                            )) {
                        if (_point.nextSibling.nodeType == 3) {
                            _point.data = "" + _point.data + "" + _point.nextSibling.data + "";
                        } else {
                            editor.__saveBM__[0] = _point;
                            editor.__saveBM__[1] = ("" + _point.data + "").length;
                        }

                        _point.parentNode.removeChild(_point.nextSibling);
                    }
                    if (Sys.Extended.UI.HTMLEditor.Trim("" + _point.data + "").length > 0) {
                        _result.push(_point);
                    }
                } else {
                    var tagName = _point.tagName;
                    if (_point.tagName) {
                        tagName = tagName.toUpperCase();
                        if (!(tagName == "MAP" || tagName == "AREA" || tagName == "SCRIPT" || tagName == "NOSCRIPT"))
                            if (!(_point.style && (Sys.Extended.UI.HTMLEditor.getStyle(_point, "display") == "none" || Sys.Extended.UI.HTMLEditor.getStyle(_point, "visibility") == "hidden"))) {
                            _diver(_point.firstChild, false);
                        }
                    }
                }

                if (_found) return;

                var _save = _point.parentNode;

                if (prize) {
                    while (_point.nextSibling == null) {
                        _point = _point.parentNode;
                    }
                }

                _point = _point.nextSibling;
            }
        };

        _diver(lPoint, true);
        var temp;

        temp = lPoint.parentNode;
        temp.removeChild(lPoint);
        temp = rPoint.parentNode;
        temp.removeChild(rPoint);

        if (typeof total == "undefined") {
            if (Sys.Extended.UI.HTMLEditor.isIE) {
                sel.empty();
                r_right.select();
            } else {
                if (_result.length > 0) {
                    this._removeAllRanges(sel);
                    var rrr = this._createRange();
                    rrr.setEnd(_result[_result.length - 1], _result[_result.length - 1].length);
                    rrr.setStart(_result[_result.length - 1], _result[_result.length - 1].length);
                    this._selectRange(sel, rrr);
                }
            }
        }

        return _result;
    },

    _getPlain: function() {
        var area = this._doc.createElement("textarea");
        area.width = "0";
        area.height = "0";
        this._doc.appendChild(area);
        var r = area.createTextRange();
        r.execCommand("paste");
        var res = area.value;
        res = res.replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/\r/g, "").replace(/\n/g, "<br/>");
        this._doc.removeChild(area);
        return res;
    },

    _execCommand: function(cmdID, UI, param) {
        var editor = this;
        var sel;
        var range;

        if (Sys.Extended.UI.HTMLEditor.isIE && !this.isControl()) {
            sel = this._getSelection();
            range = this._createRange(sel);

            var prnt = range.parentElement();
            if (prnt.tagName.toUpperCase() == "TEXTAREA") {
                return;
            }
        }

        if (cmdID.toLowerCase() != "createlink") {
            this._saveContent();
        }

        switch (cmdID.toLowerCase()) {
            case "createlink":
                if (Sys.Extended.UI.HTMLEditor.isIE || !UI) {
                    this._doc.execCommand(cmdID, UI, param);
                } else {
                    var param;
                    if ((param = prompt("Enter URL"))) {
                        this._doc.execCommand(cmdID, false, param);
                    }
                }
                break;

            case "backcolor":
            case "forecolor":
            case "fontname":
            case "fontsize":
                this.MSIE_applyCommand(cmdID.toLowerCase(), param);
                break;

            case "indent":
                this.MSIE_indent(true);
                break;

            case "outdent":
                this.MSIE_indent(false);
                break;

            case "justifyleft":
                this.MSIE_justify("left");
                break;

            case "justifyfull":
                this.MSIE_justify("justify");
                break;

            case "justifycenter":
                this.MSIE_justify("center");
                break;

            case "justifyright":
                this.MSIE_justify("right");
                break;

            case "paragraph":
                this.MSIE_justify("remain", false, "P");
                break;

            case "formatblock":
                if (param != null && typeof param == "string" && param.length == 2) {
                    if (param.substr(0, 1).toUpperCase() == "H" && parseInt(param.substr(1, 1)) > 0) {
                        this.MSIE_justify("remain", false, param);
                        break;
                    }
                }
                this._doc.execCommand(cmdID, UI, param);
                break;

            case "insertunorderedlist":
                this.MSIE_list("UL");
                break;

            case "insertorderedlist":
                this.MSIE_list("OL");
                break;

            case "bold":
            case "italic":
            case "underline":
            case "strikethrough":
            case "superscript":
            case "subscript":
                this.MSIE_applyCommand(cmdID.toLowerCase());
                break;

            default:
                this._doc.execCommand(cmdID, UI, param);
                break;
        }

        this.onContentChanged();

        if (!Sys.Extended.UI.HTMLEditor.isIE) {
            sel = this._getSelection();
            range = this._createRange(sel);

            this._removeAllRanges(sel);

            this._selectRange(sel, range);
            this.focusEditor();
        }
        var editor = this;
        setTimeout(function() { editor._editPanel.updateToolbar(); }, 0);
    },

    MSIE_indent: function(increase) {
        return (Function.createDelegate(this, Sys.Extended.UI.HTMLEditor.MSIE_indent))(increase);
    },

    MSIE_justify: function(textAlign, addParameter, addParameter1) {
        return (Function.createDelegate(this, Sys.Extended.UI.HTMLEditor.MSIE_justify))(textAlign, addParameter, addParameter1);
    },

    MSIE_list: function(listTg) {
        return (Function.createDelegate(this, Sys.Extended.UI.HTMLEditor.MSIE_list))(listTg);
    },

    getSelectionAfterOperation: function(paragraphs) {
        return (Function.createDelegate(this, Sys.Extended.UI.HTMLEditor.getSelectionAfterOperation))(paragraphs);
    },

    setSelectionAfterOperation: function(pars, needJoiner) {
        return (Function.createDelegate(this, Sys.Extended.UI.HTMLEditor.setSelectionAfterOperation))(pars, needJoiner);
    },

    get_paragraphs: function() {
        return (Function.createDelegate(this, Sys.Extended.UI.HTMLEditor.get_paragraphs))();
    },

    getPseudoP: function() {
        return (Function.createDelegate(this, Sys.Extended.UI.HTMLEditor.getPseudoP))();
    },

    getPseudoP_Recur: function(lPoint, rPoint, r_level) {
        return (Function.createDelegate(this, Sys.Extended.UI.HTMLEditor.getPseudoP_Recur))(lPoint, rPoint, r_level);
    },

    unWrap: function(element, pars) {
        return (Function.createDelegate(this, Sys.Extended.UI.HTMLEditor.unWrap))(element, pars);
    },

    tryUnWrap: function(element, pars, force) {
        return (Function.createDelegate(this, Sys.Extended.UI.HTMLEditor.tryUnWrap))(element, pars, force);
    },

    MSIE_applyCommand: function(cmd, par) {
        var selectedHTML = (!Sys.Extended.UI.HTMLEditor.isIE) ? Sys.Extended.UI.HTMLEditor.Trim(this.getSelectedHTML()) : "";

        if (this.isControl()) return;

        var sel = this._getSelection();
        var range = this._createRange(sel);
        var savedRange = (Sys.Extended.UI.HTMLEditor.isIE) ? [range.boundingLeft, range.boundingTop] : [range.startContainer, range.startOffset];
        var notEmpty = (Sys.Extended.UI.HTMLEditor.isIE && range.text.length > 0) || (!Sys.Extended.UI.HTMLEditor.isIE && selectedHTML.length > 0);

        var cssStyle = { name: "none", value: "none" };
        switch (cmd.toLowerCase()) {
            case "bold":
                cssStyle = { name: "font-weight", value: "bold", repl: false };
                break;
            case "italic":
                cssStyle = { name: "font-style", value: "italic", repl: false };
                break;
            case "underline":
                cssStyle = { name: "text-decoration", value: "underline", repl: false };
                break;
            case "strikethrough":
                cssStyle = { name: "text-decoration", value: "line-through", repl: false };
                break;
            case "superscript":
                cssStyle = { name: "vertical-align", value: "super", repl: false };
                break;
            case "subscript":
                cssStyle = { name: "vertical-align", value: "sub", repl: false };
                break;
            case "forecolor":
                cssStyle = { name: "color", value: par, repl: false };
                break;
            case "backcolor":
                cssStyle = { name: "background-color", value: par, repl: false };
                break;
            case "fontname":
                cssStyle = { name: "font-family", value: par, repl: false };
                break;
            case "fontsize":
                cssStyle = { name: "font-size", value: par, repl: false };
                break;
        }

        if (notEmpty) {
            var rng = this._getTextNodeCollection();
            this.MSIE_applyCssStyle(cssStyle, rng, true);
        }
        else {
            if (this.isControl()) return;

            var rng = this._tryExpand();

            if (rng.length > 0) {
                this.MSIE_applyCssStyle(cssStyle, rng, false);
                if (Sys.Extended.UI.HTMLEditor.isIE && this.__saveBM__ != null) {
                    sel = this._getSelection();
                    range = this._createRange(sel);
                    range.moveToBookmark(this.__saveBM__);
                    range.select();
                    this.__saveBM__ = null;
                } else {
                    if (this.__saveBM__ != null) {
                        if (this.__saveBM__[0].nodeType == 3) {
                            sel = this._getSelection();
                            range = this._doc.createRange();
                            range.setStart(this.__saveBM__[0], this.__saveBM__[1]);
                            range.setEnd(this.__saveBM__[0], this.__saveBM__[1]);
                            this._removeAllRanges(sel);
                            this._selectRange(sel, range);
                        } else {
                            this._trySelect(this.__saveBM__[0], this.__saveBM__[0]);
                            this.__saveBM__[0].parentNode.removeChild(this.__saveBM__[0]);
                        }
                        this.__saveBM__ = null;
                    }
                }
            } else {
                this._setStyleForTyping(cssStyle);
            }
        }
    },

    MSIE_applyCssStyle: function(cssStyle, rng, selectPrize) {
        var name = cssStyle.name.replace(/\-(\w)/g, function(strMatch, p1) { return p1.toUpperCase(); });
        var value = cssStyle.value;
        var repl = cssStyle.repl;
        var _detected = false;
        var _remove = false;

        this._saveContent();

        var rn = Sys.Extended.UI.HTMLEditor.smartClassName + "_right";
        var ln = Sys.Extended.UI.HTMLEditor.smartClassName + "_left";

        var lPoint = this._doc.createElement("SPAN");
        lPoint.id = ln;
        var rPoint = this._doc.createElement("SPAN");
        rPoint.id = rn;

        rng[0].parentNode.insertBefore(lPoint, rng[0]);

        if (rng[rng.length - 1].nextSibling != null) {
            rng[rng.length - 1].parentNode.insertBefore(rPoint, rng[rng.length - 1].nextSibling);
        } else {
            rng[rng.length - 1].parentNode.appendChild(rPoint);
        }

        Sys.Extended.UI.HTMLEditor.unStyle(lPoint);
        Sys.Extended.UI.HTMLEditor.unStyle(rPoint);


        var parentNodes = [];
        for (var i = 0; i < rng.length; i++) {
            var textNode = rng[i];
            var par = textNode.parentNode;

            var j;
            for (j = 0; j < parentNodes.length; j++) {
                var parent = parentNodes[j];
                if (parent.parent == par) {
                    parent.textNodes.push(textNode);
                    break;
                }
            }
            if (j == parentNodes.length) {
                parentNodes.push({ parent: par, textNodes: [textNode] });
            }
        }

        for (var i = 0; i < parentNodes.length; i++) {
            var parent = parentNodes[i];

            if (parent.textNodes.length > 1) {
                var textNodes = parent.textNodes;

                var lPointT = this._doc.createElement("SPAN");
                var rPointT = this._doc.createElement("SPAN");

                textNodes[0].parentNode.insertBefore(lPointT, textNodes[0]);

                if (textNodes[textNodes.length - 1].nextSibling != null) {
                    textNodes[textNodes.length - 1].parentNode.insertBefore(rPointT, textNodes[textNodes.length - 1].nextSibling);
                } else {
                    textNodes[textNodes.length - 1].parentNode.appendChild(rPointT);
                }

                Sys.Extended.UI.HTMLEditor._moveTagsUp(lPointT, rPointT);

                lPointT.parentNode.removeChild(lPointT);
                rPointT.parentNode.removeChild(rPointT);
            }
        }

        for (var i = 0; i < rng.length; i++) {
            var textNode = rng[i];
            var par = textNode.parentNode;
            var _found = false;

            while (par && par.tagName && par.childNodes.length == 1 && Sys.Extended.UI.HTMLEditor.isStyleTag(par.tagName)) {
                var parTag = par.tagName.toUpperCase();
                if (
                ((parTag == "I" || parTag == "EM") && cssStyle.name == "font-style") ||
                ((parTag == "B" || parTag == "STRONG") && cssStyle.name == "font-weight") ||
                ((parTag == "S" || parTag == "STRIKE") && cssStyle.name == "text-decoration") ||
                ((parTag == "U") && cssStyle.name == "text-decoration") ||
                ((parTag == "SUB" || parTag == "SUP") && cssStyle.name == "vertical-align")
                ) {
                    var parSaved = par;
                    par = par.parentNode;

                    while (parSaved.firstChild) {
                        par.insertBefore(parSaved.firstChild, parSaved);
                    }
                    par.removeChild(parSaved);

                    _found = true;
                    continue;
                }
                else if (par.style && par.style[name] && par.style[name].length > 0) {
                    var foundCss = par.style[name];

                    if (name.toLowerCase().indexOf("color") >= 0 || name == "fontFamily" || name == "fontSize") {
                        par.style[name] = value;
                    } else {
                        if (repl) {
                            try {
                                par.style[name] = par.style[name] + " " + value;

                                if (foundCss == par.style[name]) {
                                    par.style[name] = value;
                                }
                            } catch (e) {
                                par.style[name] = value;
                            }
                        } else {
                            if (!_detected) {
                                var sv = foundCss.replace(value, "");
                                if (name == "fontWeight" && foundCss.toString() == "700") {
                                    sv = "";
                                }

                                if (sv == foundCss) {
                                    try {
                                        par.style[name] = par.style[name] + " " + value;

                                        if (foundCss == par.style[name]) {
                                            par.style[name] = value;
                                        }
                                    } catch (e) {
                                        par.style[name] = value;
                                    }
                                } else {
                                    par.style[name] = sv.replace(/,/, "");
                                    _remove = true;
                                }
                                _detected = true;
                            } else {
                                if (_remove) {
                                    par.style[name] = foundCss.replace(value, "").replace(/,/, "");
                                } else {
                                    try {
                                        par.style[name] = par.style[name] + " " + value;

                                        if (foundCss == par.style[name]) {
                                            par.style[name] = value;
                                        }
                                    } catch (e) {
                                        par.style[name] = value;
                                    }
                                }
                            }
                        }
                    }

                    _found = true;
                }
                par = par.parentNode;
            }

            if (!_found && !_remove) {
                var span;

                span = this._doc.createElement("SPAN");
                span.style[name] = value;

                var parN = textNode.parentNode;
                parN.insertBefore(span, textNode);

                span.appendChild(textNode);
                _detected = true;
            }
        }

        var commonParent = Sys.Extended.UI.HTMLEditor._commonTotalParent(lPoint, rPoint);

        var pSibling = commonParent.parent.childNodes.item(commonParent.indexFirst).previousSibling;
        var nSibling = commonParent.parent.childNodes.item(commonParent.indexLast).nextSibling;

        lPoint.parentNode.removeChild(lPoint);
        rPoint.parentNode.removeChild(rPoint);

        var indexFirst = 0;
        var indexLast = commonParent.parent.childNodes.length;

        if (pSibling != null) {
            indexFirst = Sys.Extended.UI.HTMLEditor.__getIndex(pSibling);
        }

        if (nSibling != null) {
            indexLast = Sys.Extended.UI.HTMLEditor.__getIndex(nSibling) + 1;
            if (indexLast < commonParent.parent.childNodes.length) {
                if (nSibling.nodeType == 3) {
                    indexLast++;
                }
                else if (nSibling.nodeType == 1) {
                    var tag = nSibling.tagName.toUpperCase();
                    if (tag != "TR" && tag != "TD" && tag != "LI") {
                        indexLast++;
                    }
                }
            }
        }

        Sys.Extended.UI.HTMLEditor.spanJoiner(commonParent.parent, this._doc, indexFirst, indexLast);

        var editor = this;

        if (selectPrize) {
            editor._selectRng(rng);
        }

        setTimeout(function() {
            if (!Sys.Extended.UI.HTMLEditor.isIE) {
                editor.focusEditor();
            }
            editor._editPanel.updateToolbar();
        }, 0);
    },

    _tryExpand: function(prize) {
        var result = [];
        var selectedHTML;
        var notEmpty;

        var sel = this._getSelection();
        var range = this._createRange(sel);
        var sel1;
        var range1;

        var rn = Sys.Extended.UI.HTMLEditor.smartClassName + "_right_add";
        var ln = Sys.Extended.UI.HTMLEditor.smartClassName + "_left_add";
        var mn = Sys.Extended.UI.HTMLEditor.smartClassName + "_middle_add";

        if (Sys.Extended.UI.HTMLEditor.isIE && typeof prize == "undefined") {
            range.execCommand('bold');
            this.__saveBM__ = range.getBookmark();
            range.execCommand('bold');
        }

        if (Sys.Extended.UI.HTMLEditor.isIE) {
            var mn_element = null;
            var mn_span_text = "<span id=" + mn + "></span>";
            var save_range = range.duplicate();

            try { range.pasteHTML(mn_span_text); } catch (ex) { }

            mn_element = this._doc.getElementById(mn);

            if (mn_element == null) {
                return [];
            }

            if (typeof prize != "undefined") {
                this.__saveBM__ = mn_element;
            }

            if (mn_element.nextSibling != null && !Sys.Extended.UI.HTMLEditor.isInlineElement(mn_element.nextSibling)) {
                mn_element.parentNode.removeChild(mn_element);
                return [];
            }

            range.expand('word');
            range.select();

            if (range.text.length == 0) {
                mn_element.parentNode.removeChild(mn_element);
                save_range.select();
                return [];
            }

            var re = new RegExp(mn_span_text, "ig");
            if (!re.test(range.htmlText.replace(/[\n\r]/g, ""))) {
                mn_element.parentNode.removeChild(mn_element);
                save_range.select();
                return [];
            }

            re = new RegExp(mn_span_text + "(</span>|&nbsp;|[\\s])*$", "ig");
            if (re.test(range.htmlText.replace(/[\n\r]/g, ""))) {
                mn_element.parentNode.removeChild(mn_element);
                save_range.select();
                return [];
            }

            while (range.text.length > 0 && range.text.substr(range.text.length - 1, 1) == " ") {
                range.moveEnd('character', -1);
                range.select();
                if (range.text.length == 0) {
                    mn_element.parentNode.removeChild(mn_element);
                    save_range.select();
                    return [];
                }
            }


            if (typeof prize == "undefined") {
                mn_element.parentNode.removeChild(mn_element);
            }

            return this._getTextNodeCollection();
        }


        function wordBound(c) {
            var re = /[\d\w]/;
            if (re.test(c)) return false;
            re = /[\u0080-\u024F]/;
            if (re.test(c)) return false;
            re = /[\u0370-\u2000]/;
            if (re.test(c)) return false;
            return true;
        }

        if (!this.insertHTML("<span id='" + ln + "'></span><span id='" + mn + "'></span><span id='" + rn + "'></span>")) return [];

        var lPoint = this._doc.getElementById(ln);
        var rPoint = this._doc.getElementById(rn);
        var mPoint = this._doc.getElementById(mn);

        Sys.Extended.UI.HTMLEditor.positionInParagraph(lPoint, lPoint.previousSibling, true, lPoint.parentNode, wordBound);
        try { this._trySelect(lPoint, rPoint); } catch (ex) { }

        sel1 = this._getSelection();
        range1 = this._createRange(sel1);
        selectedHTML = (!Sys.Extended.UI.HTMLEditor.isIE) ? Sys.Extended.UI.HTMLEditor.Trim(this.getSelectedHTML()) : "";
        notEmpty = (Sys.Extended.UI.HTMLEditor.isIE && range1.text.length > 0) || (!Sys.Extended.UI.HTMLEditor.isIE && selectedHTML.length > 0);

        if (!notEmpty || this._getTextNodeCollection().length == 0) {
            var text1 = this._doc.createTextNode("");

            lPoint.parentNode.insertBefore(text1, lPoint);
            lPoint.parentNode.removeChild(lPoint);
            rPoint.parentNode.removeChild(rPoint);
            mPoint.parentNode.removeChild(mPoint);

            var range = this._doc.createRange();
            range.setStart(text1, 0);
            range.setEnd(text1, 0);
            range.setStart(text1, 0);
            range.setEnd(text1, 0);

            this._removeAllRanges(sel);
            this._selectRange(sel, range);

            return [];
        }

        rPoint.parentNode.insertBefore(lPoint, mPoint);

        Sys.Extended.UI.HTMLEditor.positionInParagraph(rPoint, rPoint.nextSibling, false, rPoint.parentNode, wordBound);
        this._trySelect(lPoint, rPoint);

        sel1 = this._getSelection();
        range1 = this._createRange(sel1);
        selectedHTML = (!Sys.Extended.UI.HTMLEditor.isIE) ? Sys.Extended.UI.HTMLEditor.Trim(this.getSelectedHTML()) : "";
        notEmpty = (Sys.Extended.UI.HTMLEditor.isIE && range1.text.length > 0) || (!Sys.Extended.UI.HTMLEditor.isIE && selectedHTML.length > 0);

        if (!notEmpty || this._getTextNodeCollection().length == 0) {
            var text1 = this._doc.createTextNode("");

            lPoint.parentNode.insertBefore(text1, lPoint);
            lPoint.parentNode.removeChild(lPoint);
            rPoint.parentNode.removeChild(rPoint);
            mPoint.parentNode.removeChild(mPoint);

            var range = this._doc.createRange();
            range.setStart(text1, 0);
            range.setEnd(text1, 0);
            range.setStart(text1, 0);
            range.setEnd(text1, 0);

            this._removeAllRanges(sel);
            this._selectRange(sel, range);

            return [];
        }

        Sys.Extended.UI.HTMLEditor.positionInParagraph(lPoint, lPoint.previousSibling, true, lPoint.parentNode, wordBound);
        this._trySelect(lPoint, rPoint);
        sel1 = this._getSelection();
        range1 = this._createRange(sel1);
        selectedHTML = (!Sys.Extended.UI.HTMLEditor.isIE) ? Sys.Extended.UI.HTMLEditor.Trim(this.getSelectedHTML()) : "";
        notEmpty = (Sys.Extended.UI.HTMLEditor.isIE && range1.text.length > 0) || (!Sys.Extended.UI.HTMLEditor.isIE && selectedHTML.length > 0);

        if (Sys.Extended.UI.HTMLEditor.isIE) {
            if (typeof prize != "undefined") {
                this.__saveBM__ = mPoint;
            } else {
                mPoint.parentNode.removeChild(mPoint);
            }
        } else {
            this.__saveBM__ = [mPoint, 0];
        }

        if (notEmpty) {
            result = this._getTextNodeCollection();
        }

        lPoint.parentNode.removeChild(lPoint);
        rPoint.parentNode.removeChild(rPoint);

        return result;
    },

    _setStyleForTyping: function(cssStyle) {
        var name = cssStyle.name.replace(/\-(\w)/g, function(strMatch, p1) { return p1.toUpperCase(); });
        var value = cssStyle.value;
        var repl = cssStyle.repl;

        if (this._StyleForTyping == null) {
            this._StyleForTyping = [];
        }

        var n_arr = []
        var needApply = true;
        for (var i = 0; i < this._StyleForTyping.length; i++) {
            var i_name = this._StyleForTyping[i].name.replace(/\-(\w)/g, function(strMatch, p1) { return p1.toUpperCase(); });
            var i_value = this._StyleForTyping[i].value;

            if (!(i_name == name && (i_value == value || repl))) {
                n_arr.push(this._StyleForTyping[i]);
            } else {
                needApply = false;
            }
        }

        this._StyleForTyping = n_arr;
        if (needApply) {
            this._StyleForTyping.push(cssStyle);
        }
    },

    _trySelect: function(lPoint, rPoint) {
        var sel = this._getSelection();
        var text1 = null;
        var text2 = null;

        if (Sys.Extended.UI.HTMLEditor.isIE) {
            sel.empty();
            sel = this._getSelection();
            var range1 = this._createRange(sel);
            var range2 = this._createRange(sel);

            try {
                if (lPoint != null) range1.moveToElementText(lPoint);
                if (rPoint != null) range2.moveToElementText(rPoint);

                if (lPoint != null && rPoint != null) {
                    range1.setEndPoint("EndToEnd", range2);
                    range1.select();
                }
                else if (lPoint != null) range1.select();
                else if (rPoint != null) range2.select();

            } catch (e) { }
        } else {
            try {
                text1 = this._doc.createTextNode("");
                text2 = this._doc.createTextNode("");

                lPoint.parentNode.insertBefore(text1, lPoint);
                rPoint.parentNode.insertBefore(text2, rPoint);

                var range = this._doc.createRange();
                range.setStart(text1, 0);
                range.setEnd(text2, 0);

                this._removeAllRanges(sel);
                this._selectRange(sel, range);
            } catch (e) { }
        }
    },

    getSelectedHTML: function() {
        var sel = this._getSelection();
        var range = this._createRange(sel);
        var existing = null;
        if (Sys.Extended.UI.HTMLEditor.isIE) {
            existing = range.htmlText;
        } else {
            if (Sys.Extended.UI.HTMLEditor.isSafari && (sel.type == "Caret" || sel.type == "None")) {
                existing = "";
            } else {
                if (Sys.Extended.UI.HTMLEditor.isSafari) {
                    if (range.cloneContents() == null) {
                        return "";
                    }
                }
                existing = Sys.Extended.UI.HTMLEditor.getHTML(range.cloneContents(), false);
            }
        }
        return existing;
    },

    _queryCommandState: function(cmdID) {
        var obj = this._rangeStartEnd();
        if (obj == null) return false;

        try {
            var cssStyle = { name: "none", value: "none" };
            switch (cmdID.toLowerCase()) {
                case "bold":
                    cssStyle = { name: "font-weight", value: "bold" };
                    break;
                case "italic":
                    cssStyle = { name: "font-style", value: "italic" };
                    break;
                case "underline":
                    cssStyle = { name: "text-decoration", value: "underline" };
                    break;
                case "strikethrough":
                    cssStyle = { name: "text-decoration", value: "line-through" };
                    break;
                case "superscript":
                    cssStyle = { name: "vertical-align", value: "super" };
                    break;
                case "subscript":
                    cssStyle = { name: "vertical-align", value: "sub" };
                    break;
            }

            var el1 = obj.start;
            var el2 = obj.end;
            var cs1 = Sys.Extended.UI.HTMLEditor.getStyle(el1, cssStyle.name).toString().toLowerCase();
            var cs2 = Sys.Extended.UI.HTMLEditor.getStyle(el2, cssStyle.name).toString().toLowerCase();

            if (cssStyle.name == "font-weight" && cs1 == "700") cs1 = "bold";
            if (cssStyle.name == "font-weight" && cs2 == "700") cs2 = "bold";

            if (/MSIE (5|6)/.test(navigator.userAgent) && cmdID.toLowerCase() == "strikethrough" && (cs1 == "underline" || cs2 == "underline")) {
                while (el1 && Sys.Extended.UI.HTMLEditor.isStyleTag(el1.tagName)) {
                    if (el1.style.textDecoration.indexOf("line-through") >= 0) {
                        cs1 = el1.style.textDecoration;
                        break;
                    }
                    el1 = el1.parentNode;
                }
                while (el2 && Sys.Extended.UI.HTMLEditor.isStyleTag(el2.tagName)) {
                    if (el2.style.textDecoration.indexOf("line-through") >= 0) {
                        cs2 = el2.style.textDecoration;
                        break;
                    }
                    el2 = el2.parentNode;
                }
            }

            if (Sys.Extended.UI.HTMLEditor.isSafari && (cmdID.toLowerCase() == "strikethrough" || cmdID.toLowerCase() == "underline")) {
                var cmdl = cmdID.toLowerCase();
                if (cmdl == "strikethrough") {
                    cmdl = "line-through";
                }

                while (el1 && Sys.Extended.UI.HTMLEditor.isStyleTag(el1.tagName)) {
                    if (el1.style.textDecoration.indexOf(cmdl) >= 0) {
                        cs1 = el1.style.textDecoration;
                        break;
                    }
                    el1 = el1.parentNode;
                }
                while (el2 && Sys.Extended.UI.HTMLEditor.isStyleTag(el2.tagName)) {
                    if (el2.style.textDecoration.indexOf(cmdl) >= 0) {
                        cs2 = el2.style.textDecoration;
                        break;
                    }
                    el2 = el2.parentNode;
                }
            }

            var ret = (cs1.indexOf(cssStyle.value) >= 0) && (cs2.indexOf(cssStyle.value) >= 0);

            if (this._StyleForTyping != null && this._StyleForTyping.length > 0) {
                for (var i = 0; i < this._StyleForTyping.length; i++) {
                    var curCss = this._StyleForTyping[i];

                    if (curCss.name == cssStyle.name && curCss.value == cssStyle.value) {
                        ret = !ret;
                        break;
                    }
                }
            }

            return ret;
        } catch (ex) {
            return false;
        }
    },

    _textAlignState: function(value) {
        var obj = this._rangeStartEnd();
        if (obj == null) return false;

        try {
            var cs1 = this._textAlignStateSingle(obj.start);
            var cs2 = this._textAlignStateSingle(obj.end);

            return (cs1 == value && cs2 == value);
        } catch (ex) {
            return false;
        }
    },

    _textAlignStateSingle: function(el) {
        while (el && Sys.Extended.UI.HTMLEditor.isStyleTag(el.tagName)) {
            el = el.parentNode;
        }
        if (el != null) {
            var tagName = el.tagName.toUpperCase();
            if (tagName == "P" || tagName == "DIV") {
                return el.style.textAlign.toLowerCase();
            }
        }
        return null;
    },

    _rangeStartEnd: function() {
        if (this.isControl()) return null;

        try {
            var sel = this._getSelection();
            var range = this._createRange(sel);
            var el1 = null;
            var el2 = null;

            if (!Sys.Extended.UI.HTMLEditor.isIE) {
                function __getText__(par, first) {
                    var ret = null;

                    while (ret == null) {
                        if (par.nodeType == 3) {
                            if (first && range.startContainer != range.endContainer && range.startOffset == par.length && par.nextSibling) {
                                ret = __getText__(par.nextSibling, first);
                            } else if (!first && range.startContainer != range.endContainer && range.endOffset == 0 && par.previousSibling) {
                                ret = __getText__(par.previousSibling, first);
                            } else {
                                ret = par;
                            }
                        } else {
                            if ((first ? par.firstChild : par.lastChild) == null) {
                                ret = null;
                            } else {
                                ret = __getText__(first ? par.firstChild : par.lastChild, first);
                            }
                        }

                        if (ret == null) {
                            par = first ? par.nextSibling : par.previousSibling;
                            if (par == null) return null;
                        } else {
                            return ret;
                        }
                    }
                }

                var parent = this._getParent(range);

                if (parent.nodeType != 3 && range.startContainer == range.endContainer &&
                range.startOffset == range.endOffset &&
                range.startContainer.childNodes.item(range.startOffset).tagName &&
                Sys.Extended.UI.HTMLEditor.isStyleTag(range.startContainer.childNodes.item(range.startOffset).tagName)
                ) {
                    return { start: range.startContainer.childNodes.item(range.startOffset), end: range.startContainer.childNodes.item(range.startOffset) };
                }

                el1 = __getText__(range.startContainer, true);
                if (el1 != null && el1.parentNode != null) el1 = el1.parentNode;
                if (el1 == null) el1 = range.startContainer;

                el2 = __getText__(range.endContainer, false);
                if (el2 != null && el2.parentNode != null) el2 = el2.parentNode;
                if (el2 == null) el2 = range.endContainer;
            } else {
                if (range.text.length == 0) {
                    el1 = el2 = this._getParent(range);
                } else {
                    var rn = Sys.Extended.UI.HTMLEditor.smartClassName + "_right_marker";
                    var ln = Sys.Extended.UI.HTMLEditor.smartClassName + "_left_marker";

                    var r_left = range.duplicate();
                    var r_right = range.duplicate();

                    r_left.setEndPoint("EndToStart", range);
                    r_right.setEndPoint("StartToEnd", range);

                    r_right.pasteHTML("<span id='" + rn + "'/>");
                    r_left.pasteHTML("<span id='" + ln + "'/>");

                    var lPoint = this._doc.getElementById(ln);
                    var rPoint = this._doc.getElementById(rn);

                    el1 = lPoint.parentNode;
                    el2 = rPoint.parentNode;

                    lPoint.parentNode.removeChild(lPoint);
                    rPoint.parentNode.removeChild(rPoint);
                }
            }

            return { start: el1, end: el2 };
        } catch (ex) {
            return null;
        }
    },

    rtlState: function() {
        if (this._doc.body.style.direction && this._doc.body.style.direction == "rtl") return true;
        return false;
    },

    openWait: function() {
        this._editPanel.openWait();
    },

    closeWait: function() {
        this._editPanel.closeWait();
    }
}

Sys.Extended.UI.HTMLEditor.DesignPanel.ScriptRecover = function() {
    this.scriptsArray=[];
    this.scriptsArray_index=-1;

    this.regReplScript1 = function(p0,p1) {
        this.scriptsArray.push(p1);
        return "";
    }

    this.regReplFromScript = function(p0,p1,p2,p3) {
        return p1.replace(/&gt;/g ,">").replace(/&lt;/g ,"<").replace(/&amp;/g ,"&");
    }

    this.regReplFromScript1 = function(p0,p1,p2,p3) {
        this.scriptsArray_index++;
        var mmm;
        if(!Sys.Extended.UI.HTMLEditor.isIE)
            mmm = this.scriptsArray[this.scriptsArray_index].replace(/&amp;/g,"&").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,"\"");
        else
            mmm = this.scriptsArray[this.scriptsArray_index];
        return p1+mmm+p3;
    }
}

Sys.Extended.UI.HTMLEditor.DesignPanel.registerClass("Sys.Extended.UI.HTMLEditor.DesignPanel",Sys.Extended.UI.HTMLEditor.ModePanel);

.�// (c) 2010 CodePlex Foundation
/// <reference name='MicrosoftAjax.js' />
/// <reference path='../ExtenderBase/BaseScripts.js' />
/// <reference path='../Common/Common.js' />

(function () {

    var scriptName = 'HtmlEditorExtenderBehavior';

    function execute() {
        Type.registerNamespace('Sys.Extended.UI');

        Sys.Extended.UI.HtmlEditorExtenderBehavior = function (element) {
            /// <summary>
            /// Html Extender behavior which Extends TextBox
            /// </summmary>
            /// <param name='element' type='Sys.UI.DomElement'>The element to attach to</param>
            Sys.Extended.UI.HtmlEditorExtenderBehavior.initializeBase(this, [element]);
            this._textbox = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(element);

            var id = this.get_id();

            this._backColor = null;
            this._foreColor = null;
            this._commandName = null;
            this.savedRange = null;
            this.isInFocus = null;
            _flag = false;

            this._ButtonWidth = 23;
            this._ButtonHeight = 21;

            this._containerTemplate = {
                nodeName: 'div',
                properties: {
                    id: id + '_ExtenderContainer'
                },
                cssClasses: ['unselectable', 'ajax__html_editor_extender_container']
            };

           this._editableTemplate = {
                nodeName: 'div',
                properties: {
                    id: id + '_ExtenderContentEditable',
                    style: {
                        height: '80%',
                        overflow: 'auto',
                        clear: 'both'
                    },
                    contentEditable: true
                },
                cssClasses: ['ajax__html_editor_extender_texteditor']
            };

            this._buttonTemplate = {
                nodeName: 'input',
                properties: {
                    type: 'button',
                    style: {
                        width: this._ButtonWidth + 'px',
                        height: this._ButtonHeight + 'px'
                    }
                },
                cssClasses: ['ajax__html_editor_extender_button']
            };

            this._textboxTemplate = {
                nodeName: 'input',
                properties: {
                    type: 'text'
                }
            };

            this._dropDownTemplate = {
                nodeName: 'select',
                properties: {
                    style: {
                        width: this._ButtonWidth + 'px',
                        height: this._ButtonHeight + 'px'
                    }
                },
                cssClasses: ['ajax__html_editor_extender_button']
            };

            this._topButtonContainerTemplate = {
                nodeName: 'div',
                properties: {
                    id: id + '_ExtenderButtonContainer'
                },
                cssClasses: ['ajax__html_editor_extender_buttoncontainer']
            };

            this._container = null;
            this._toolbarButtons = null;
            this._editableDiv = null;
            this._topButtonContainer = null;
            this._buttons = [];
            this._btnClickHandler = null;
            this._requested_buttons = new Array();
            this._colorPicker = null;
            this._txtBoxForColor = null;

            if ((typeof (WebForm_OnSubmit) == 'function') && !Sys.Extended.UI.HtmlEditorExtenderBehavior._originalWebForm_OnSubmit) {
                Sys.Extended.UI.HtmlEditorExtenderBehavior._originalWebForm_OnSubmit = WebForm_OnSubmit;
                WebForm_OnSubmit = Sys.Extended.UI.HtmlEditorExtenderBehavior.WebForm_OnSubmit;
            }
        }

        Sys.Extended.UI.HtmlEditorExtenderBehavior.prototype = {
            initialize: function () {
                Sys.Extended.UI.HtmlEditorExtenderBehavior.callBaseMethod(this, 'initialize');

                var idx = 0;
                this._button_list = new Array();
                this._createContainer();
                this._createTopButtonContainer();
                this._createEditableDiv();
                this._createButton();

                var formElement = this._textbox._element.parentNode;
                while (formElement != null && formElement.nodeName != 'FORM') {
                    formElement = formElement.parentNode;
                }

                if (formElement == null)
                    throw 'Missing Form tag';

                var delTextBox_onblur = Function.createDelegate(this, this._textBox_onblur);
                var delEditableDiv_onblur = Function.createDelegate(this, this._editableDiv_onblur);
                var btnClickHandler = Function.createDelegate(this, this._executeCommand);

                $addHandler(this._textbox._element, 'blur', delTextBox_onblur, true);
                $addHandler(this._editableDiv, 'blur', delEditableDiv_onblur, true);
                $addHandler(this._topButtonContainer, 'click', btnClickHandler);
            },

            _dispose: function () {
                $removeHandler(this._textbox._element, 'blur', delTextBox_onblur);
                $removeHandler(this._editableDiv, 'blur', delEditableDiv_onblur);
                $removeHandler(_topButtonContainer, 'click', btnClickHandler);

                Sys.Extended.UI.HtmlEditorExtenderBehavior.callBaseMethod(this, 'dispose');
            },

            _createContainer: function () {
                var e = this.get_element();
                this._container = $common.createElementFromTemplate(this._containerTemplate, e.parentNode);

                var bounds = $common.getBounds(this._textbox._element);
                $common.setSize(this._container, {
                    width: bounds.width,
                    height: bounds.height
                });

                $common.wrapElement(this._textbox._element, this._container, this._container);
            },

            _createTopButtonContainer: function () {
                this._topButtonContainer = $common.createElementFromTemplate(this._topButtonContainerTemplate, this._container);
            },

            _createButton: function () {
                var isIE = Sys.Browser.agent == Sys.Browser.InternetExplorer;
                for (i = 0; i < this._toolbarButtons.length; i++) {
                    var _btn;
                    if (this._toolbarButtons[i].CommandName == 'HorizontalSeparator') {
                        _btn = $common.createElementFromTemplate({
                            nodeName: "span",
                            cssClasses: ['ajax__html_editor_extender_separator']
                        }, this._topButtonContainer);
                    }
                    else if (this._toolbarButtons[i].CommandName == 'FontName') {
                        _btn = $common.createElementFromTemplate({
                            nodeName: "nobr",
                            properties: {
                                style: {
                                    float: 'left',
                                    cssFloat: 'left',
                                    fontSize: '11px'
                                }
                            },
                            cssClasses: ['fontnameclass'],                            
                            children: [{
                                nodeName: "span",
                                properties: {
                                    textContent: "Font ",
                                    innerText: "Font ",
                                    style: {
                                        paddingLeft: '5px',
                                        fontWeight: 'bold'
                                    }
                                }
                            }]
                        }, this._topButtonContainer);

                        _select = $common.createElementFromTemplate({
                            nodeName: "select",
                            properties: {
                                style: {
                                    fontSize: '9px',
                                    fontFamily: 'Arial',
                                    height: "20px",
                                    width: '90px'
                                }
                            },
                            events: {
                                change: function (e) {
                                    var value = this.options[this.selectedIndex].value;
                                    setTimeout(function () {
                                        document.execCommand("fontname", false, value);
                                    }, 200);
                                }
                            }
                        }, _btn);

                        var option = [
                            { Text: "Arial", Value: "arial,helvetica,sans-serif" },
                            { Text: "Courier New", Value: "courier new,courier,monospace" },
                            { Text: "Georgia", Value: "georgia,times new roman,times,serif" },
                            { Text: "Tahoma", Value: "tahoma,arial,helvetica,sans-serif" },
                            { Text: "Times New Roman", Value: "times new roman,times,serif" },
                            { Text: "Verdana", Value: "verdana,arial,helvetica,sans-serif" },
                            { Text: "Impact", Value: "impact" },
                            { Text: "WingDings", Value: "wingdings" }
                            ];

                        for (x in option) {
                            var elOptNew = document.createElement('option');
                            elOptNew.text = option[x].Text;
                            elOptNew.value = option[x].Value;
                            try {
                                _select.add(elOptNew, null); // standards compliant; doesn't work in IE
                            }
                            catch (ex) {
                                _select.add(elOptNew); // IE only
                            }
                        }

                        _select.setAttribute('id', this._id + this._toolbarButtons[i].CommandName);
                        _select.setAttribute('name', this._toolbarButtons[i].CommandName);
                        _select.setAttribute('title', this._toolbarButtons[i].Tooltip);
                        _select.setAttribute('unselectable', 'on');
                    }
                    else if (this._toolbarButtons[i].CommandName == 'FontSize') {
                        _btn = $common.createElementFromTemplate({
                            nodeName: "nobr",
                            properties: {
                                style: {
                                    float: 'left',
                                    cssFloat:'left',
                                    fontSize: '11px'
                                }
                            },
                            cssClasses: ['fontsizeclass'],
                            children: [{
                                nodeName: "span",
                                properties: {
                                    textContent: "Size ",
                                    innerText: "Size ",
                                    style: {
                                        paddingLeft: '5px',
                                        fontWeight: 'bold'
                                    }
                                }
                            }]
                        }, this._topButtonContainer);

                        _select = $common.createElementFromTemplate({
                            nodeName: "select",
                            properties: {
                                style: {
                                    fontSize: '11px',
                                    fontFamily: 'Arial',
                                    height: "20px",
                                    width: isIE ? '30px' : '50px'
                                }
                            },
                            events: {
                                change: function (e) {
                                    var value = this.options[this.selectedIndex].value;
                                    setTimeout(function () {
                                        document.execCommand("fontsize", false, value);
                                    }, 200);
                                }
                            }
                        }, _btn);

                        var option = [
                            { Text: "1", Value: "1" },
                            { Text: "2", Value: "2" },
                            { Text: "3", Value: "3" },
                            { Text: "4", Value: "4" },
                            { Text: "5", Value: "5" },
                            { Text: "6", Value: "6" },
                            { Text: "7", Value: "7" }
                            ];

                        for (x in option) {
                            var elOptNew = document.createElement('option');
                            elOptNew.text = option[x].Text;
                            elOptNew.value = option[x].Value;
                            try {
                                _select.add(elOptNew, null); // standards compliant; doesn't work in IE
                            }
                            catch (ex) {
                                _select.add(elOptNew); // IE only
                            }
                        }

                        _select.setAttribute('id', this._id + this._toolbarButtons[i].CommandName);
                        _select.setAttribute('name', this._toolbarButtons[i].CommandName);
                        _select.setAttribute('title', this._toolbarButtons[i].Tooltip);
                        _select.setAttribute('unselectable', 'on');
                    }
                    else if (this._toolbarButtons[i].CommandName == 'ForeColor') {

                        _btn = $common.createElementFromTemplate({
                            nodeName: "span",
                            properties: {
                                style: {
                                    backgroundColor: '#ff0000',
                                    border: 'solid 1px #c2c2c2',
                                    display: 'block',
                                    float: 'left',
                                    cssFloat: 'left'
                                }
                            },
                            cssClasses: ['forecolorclass']
                        }, this._topButtonContainer);
                        _btn.setAttribute('unselectable', 'on');

                        this._foreColor = $common.createElementFromTemplate({
                            nodeName: 'input',
                            properties: {
                                type: 'button',
                                id: this._id + this._toolbarButtons[i].CommandName,
                                name: this._toolbarButtons[i].CommandName,
                                title: this._toolbarButtons[i].Tooltip,
                                style: {
                                    backgroundColor: 'transparent',
                                    width: '21px',
                                    height: '19px',
                                    color: 'transparent'
                                }
                            },
                            cssClasses: ['ajax__html_editor_extender_button ajax__html_editor_extender_' + this._toolbarButtons[i].CommandName]
                        }, _btn);
                        this._foreColor.setAttribute('unselectable', 'on');

                        /*
                        this._foreColor = $common.createElementFromTemplate(this._buttonTemplate, _btn);
                        this._foreColor.setAttribute('id', this._id + this._toolbarButtons[i].CommandName);
                        this._foreColor.setAttribute('name', this._toolbarButtons[i].CommandName);
                        this._foreColor.setAttribute('title', this._toolbarButtons[i].Tooltip);
                        this._foreColor.setAttribute('style', "background-color:transparent;width:21px;height:19px");
                        this._foreColor.setAttribute('unselectable', 'on');
                        --------------------------------------------------
                        >>>>>>>> THIS CODE IS CAUSE AN ISSUES ON IE7
                        --------------------------------------------------
                        this._foreColor.setAttribute('class', 'ajax__html_editor_extender_button ajax__html_editor_extender_' + this._toolbarButtons[i].CommandName);
                        */
                    }
                    else if (this._toolbarButtons[i].CommandName == 'BackColor') {

                        _btn = $common.createElementFromTemplate({
                            nodeName: "span",
                            properties: {
                                style: {
                                    backgroundColor: '#ff0000',
                                    border: 'solid 1px #c2c2c2',
                                    display: 'block',
                                    float: 'left',
                                    cssFloat: 'left'
                                }
                            },
                            cssClasses: ['backcolorclass']
                        }, this._topButtonContainer);
                        _btn.setAttribute('unselectable', 'on');

                        this._backColor = $common.createElementFromTemplate({
                            nodeName: 'input',
                            properties: {
                                type: 'button',
                                id: this._id + this._toolbarButtons[i].CommandName,
                                name: this._toolbarButtons[i].CommandName,
                                title: this._toolbarButtons[i].Tooltip,
                                style: {
                                    backgroundColor: 'transparent',
                                    width: '21px',
                                    height: '19px',
                                    color: 'transparent'
                                }
                            },
                            cssClasses: ['ajax__html_editor_extender_button ajax__html_editor_extender_' + this._toolbarButtons[i].CommandName]
                        }, _btn);
                        this._backColor.setAttribute('unselectable', 'on');

                    }
                    else {
                        var map = {
                            Copy: 1,
                            Cut: 1,
                            Paste: 1
                        }

                        if (Sys.Browser.agent != Sys.Browser.InternetExplorer && map[this._toolbarButtons[i].CommandName]) {
                        }
                        else {
                            _btn = $common.createElementFromTemplate({
                                nodeName: 'input',
                                properties: {
                                    type: 'button',
                                    id: this._id + this._toolbarButtons[i].CommandName,
                                    name: this._toolbarButtons[i].CommandName,
                                    title: this._toolbarButtons[i].Tooltip,
                                    style: {
                                        width: '23px',
                                        height: '21px'
                                    }
                                },
                                cssClasses: ['ajax__html_editor_extender_button ajax__html_editor_extender_' + this._toolbarButtons[i].CommandName]
                            }, this._topButtonContainer);
                            _btn.setAttribute('unselectable', 'on');
                        }
                        Array.add(this._buttons, _btn);
                    }
                }
            },

            _createEditableDiv: function () {
                this._editableDiv = $common.createElementFromTemplate(this._editableTemplate, this._container);
                this._editableDiv.innerHTML = this._textbox._element.value;
                $common.setVisible(this._textbox._element, false);
            },

            _editableDiv_onblur: function () {
                this._textbox._element.value = this._encodeHtml();
            },

            _textBox_onblur: function () {
                this._editableDiv.innerHTML = this._textbox._element.value;
            },
            _attributes: {
                style: 'st_yle_',
                size: 'si_ze_',
                color: 'co_lor_',
                face: 'fa_ce_',
                align: 'al_ign_'
            },
            _rgbToHex: function (s) {
                var a = /rgb\s?\(\s?(\d+)\s?,\s?(\d+)\s?,\s?(\d+)\s?\)/.exec(s);
                return '#' + (parseInt(a[3], 10) | (parseInt(a[2], 10) << 8) | (parseInt(a[1], 10) << 16)).toString(16);
            },
            _encodeHtml: function () {
                var isIE = Sys.Browser.agent == Sys.Browser.InternetExplorer;
                var elements = this._editableDiv.getElementsByTagName('*');
                var len = elements.length;
                var element;
                var key;
                var value;
                for (var i = 0; element = elements[i]; i++) {
                    try {
                        element.className = '';
                        element.removeAttribute('class');
                    } catch (ex) { }
                    try {
                        element.id = '';
                        element.removeAttribute('id');
                    } catch (ex) { }
                    try {
                        element.removeAttribute('width');
                    } catch (ex) { }
                    if (isIE) {
                }
                        }
                var html = this._editableDiv.innerHTML;
                if (isIE) {
                    var allTags = /\<[^\>]+\>/g;
                    html = html.replace(allTags, function (tag) {
                        var sQA = /\=\'([^\'])*\'/g; //single quoted attributes
                        var nQA = /\=([^\"][^\s\/\>]*)/g; //non double quoted attributes
                        return tag.replace(sQA, '="$1"').replace(nQA, '="$1"');
                    });
                    }
                var fixRGB = this._rgbToHex;
                var replaceRGB = function () {
                    html = html.replace(/(\<[^\>]+)(rgb\s?\(\d{1,3}\s?\,\s?\d{1,3}\s?\,\s?\d{1,3}\s?\))([^\>]*\>)/gi, function (text, p1, p2, p3) {
                        return (p1 || '') + ((p2 && fixRGB(p2)) || '') + (p3 || '');
                    });
                };
                replaceRGB();
                replaceRGB();
                html = html.replace(/\sclass\=\"\"/gi, '').replace(/\sid\=\"\"/gi, '');
                html = html.replace(/\<(\/?)strong\>/gi, '<$1b>').replace(/\<(\/?)em\>/gi, '<$1i>');
                html = html.replace(/&/ig, '&amp;').replace(/\xA0/ig, '&nbsp;');
                html = html.replace(/</ig, '&lt;').replace(/>/ig, '&gt;').replace(/\'/ig, '&apos;').replace(/\"/ig, '&quot;');
                return html;
            },
            _editableDiv_submit: function () {
                var char = 3;
                var sel = null;
                this._editableDiv.focus();
                if (Sys.Browser.agent != Sys.Browser.Firefox) {
                    if (document.selection) {
                        sel = document.selection.createRange();
                        sel.moveStart('character', char);
                        sel.select();
                    }
                    else {
                        sel = window.getSelection();
                        sel.collapse(this._editableDiv.firstChild, char);
                    }
                }

                this._textbox._element.value = this._encodeHtml();
            },

            _executeCommand: function (command) {
                if (command.target.name == undefined)
                    return;

                var isFireFox = Sys.Browser.agent == Sys.Browser.Firefox;
                var delcolorPicker_onchange = Function.createDelegate(this, this._colorPicker_onchange);

                if (isFireFox) {
                    document.execCommand('styleWithCSS', false, false);
                }

                var map = {
                    JustifyRight: 1,
                    JustifyLeft: 1,
                    JustifyCenter: 1,
                    JustifyFull: 1,
                    Indent: 1,
                    Outdent: 1
                };

                if (map[command.target.name]) {
                    try {
                        document.execCommand(command.target.name, false, null);
                    }
                    catch (e) {
                        if (e && e.result == 2147500037) {
                            var range = window.getSelection().getRangeAt(0);
                            var dummy = document.createElement('div');

                            var restoreSelection = false;
                            dummy.style.height = '1px;';

                            if (range.startContainer.contentEditable == 'true') {
                                window.getSelection().collapseToEnd();
                                restoreSelection = true;
                            }

                            var ceNode = window.getSelection().getRangeAt(0).startContainer;

                            while (ceNode && ceNode.contentEditable != 'true')
                                ceNode = ceNode.parentNode;

                            if (!ceNode) throw 'Selected node is not editable!';

                            ceNode.insertBefore(dummy, ceNode.childNodes[0]);
                            document.execCommand(command.target.name, false, null);
                            dummy.parentNode.removeChild(dummy);

                            if (restoreSelection) {
                                window.getSelection().addRange(range);
                            }
                        }
                        else if (window.console && window.console.log) {
                            window.console.log(e);
                        }
                    }
                }
                else if (command.target.name == "createLink") {
                    var url = prompt('Please insert  URL', '');
                    if (url) {
                        document.execCommand('createLink', false, url);
                    }
                }
                else if (command.target.name == 'ForeColor') {
                    this._commandName = command.target.name;
                    this.saveSelection();
                    if (!this._foreColorPicker) {
                        this._foreColorPicker = $create(Sys.Extended.UI.ColorPickerBehavior, { 'unselectable': 'on' }, {}, {}, this._foreColor);
                        this._foreColorPicker.set_sample(this._foreColor.parentNode);
                        this._foreColorPicker.add_colorSelectionChanged(delcolorPicker_onchange);
                    }
                    this._foreColorPicker.show();
                }
                else if (command.target.name == 'BackColor') {
                    this._commandName = command.target.name;
                    this.saveSelection();
                    if (!this._backColorPicker) {
                        this._backColorPicker = $create(Sys.Extended.UI.ColorPickerBehavior, { 'unselectable': 'on' }, {}, {}, this._backColor);
                        this._backColorPicker.set_sample(this._backColor.parentNode);
                        this._backColorPicker.add_colorSelectionChanged(delcolorPicker_onchange);
                    }
                    this._backColorPicker.show();
                }
                else if (command.target.name == 'UnSelect') {
                    if (isFireFox) {                                                
                        this._editableDiv.focus();
                        var sel = window.getSelection();
                        sel.collapse(this._editableDiv.firstChild, 0);
                    }
                    else {
                        document.execCommand(command.target.name, false, null);
                    }
                }
                else {
                    document.execCommand(command.target.name, false, null);
                }
            },

            _colorPicker_onchange: function (e) {
                this.restoreSelection();
                if (/backcolor/i.test(this._commandName)) {
                    var isFireFox = Sys.Browser.agent == Sys.Browser.Firefox;
                    if (isFireFox) {
                        document.execCommand('stylewithcss', false, true);
                        document.execCommand("hilitecolor", false, "#" + e._selectedColor);
                        document.execCommand('stylewithcss', false, false);
                    } else {
                        document.execCommand("backcolor", false, "#" + e._selectedColor);
                    }
                }
                else
                    document.execCommand(this._commandName, false, "#" + e._selectedColor);
            },

            saveSelection: function () {
                if (window.getSelection)//non IE Browsers
                {
                    this.savedRange = window.getSelection().getRangeAt(0);
                }
                else if (document.selection)//IE
                {
                    this.savedRange = document.selection.createRange();
                }
            },

            restoreSelection: function () {
                this.isInFocus = true;
                if (this.savedRange != null) {
                    if (window.getSelection)//non IE and there is already a selection
                    {
                        var s = window.getSelection();
                        if (s.rangeCount > 0)
                            s.removeAllRanges();
                        s.addRange(this.savedRange);
                    }
                    else {
                        if (document.createRange)//non IE and no selection
                        {
                            window.getSelection().addRange(this.savedRange);
                        }
                        else {
                            if (document.selection)//IE
                            {
                                this.savedRange.select();
                            }
                        }
                    }
                }
            },

            get_ButtonWidth: function () {
                return this._ButtonWidth;
            },

            set_ButtonWidth: function (value) {
                if (this._ButtonWidth != value) {
                    this._ButtonWidth = value;
                    this.raisePropertyChanged('ButtonWidth');
                }
            },

            get_ButtonHeight: function () {
                return this._ButtonHeight;
            },

            set_ButtonHeight: function (value) {
                if (this._ButtonHeight != value) {
                    this._ButtonHeight = value;
                    this.raisePropertyChanged('ButtonHeight');
                }
            },

            get_ToolbarButtons: function () {
                return this._toolbarButtons;
            },

            set_ToolbarButtons: function (value) {
                if (this._toolbarButtons != value) {
                    this._toolbarButtons = value;
                    this.raisePropertyChanged('ToolbarButtons');
                }
            }

        };

        Sys.Extended.UI.HtmlEditorExtenderBehavior.registerClass('Sys.Extended.UI.HtmlEditorExtenderBehavior', Sys.Extended.UI.BehaviorBase);
        Sys.registerComponent(Sys.Extended.UI.HtmlEditorExtenderBehavior, { name: 'HtmlEditorExtender', parameters: [{ name: 'ToolbarButtons', type: 'HtmlEditorExtenderButton[]'}] });

        Sys.Extended.UI.HtmlEditorExtenderBehavior.WebForm_OnSubmit = function () {
            /// <summary>
            /// Wraps ASP.NET's WebForm_OnSubmit in order to encode tags prior to submission
            /// </summary>
            /// <returns type='Boolean'>
            /// Result of original WebForm_OnSubmit
            /// </returns>
            var result = Sys.Extended.UI.HtmlEditorExtenderBehavior._originalWebForm_OnSubmit();
            if (result) {
                var components = Sys.Application.getComponents();
                for (var i = 0; i < components.length; i++) {
                    var component = components[i];
                    if (Sys.Extended.UI.HtmlEditorExtenderBehavior.isInstanceOfType(component)) {
                        component._editableDiv_submit();
                    }
                }
            }
            return result;
        }

    } // execute

    if (window.Sys && Sys.loader) {
        Sys.loader.registerScript(scriptName, ['ExtendedBase', 'ExtendedCommon'], execute);

    }
    else {
        execute();
    }

})();
�'// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedBase";function a(){var b="undefined",f="populating",e="populated",d="dispose",c="initialize",a=null,g=this,h=Sys.version;if(!h&&!Sys._versionChecked){Sys._versionChecked=true;throw new Error("AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts. Ensure the correct version of the scripts are referenced. If you are using an ASP.NET ScriptManager, switch to the ToolkitScriptManager in AjaxControlToolkit.dll.");}Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.BehaviorBase=function(c){var b=this;Sys.Extended.UI.BehaviorBase.initializeBase(b,[c]);b._clientStateFieldID=a;b._pageRequestManager=a;b._partialUpdateBeginRequestHandler=a;b._partialUpdateEndRequestHandler=a};Sys.Extended.UI.BehaviorBase.prototype={initialize:function(){Sys.Extended.UI.BehaviorBase.callBaseMethod(this,c)},dispose:function(){var b=this;Sys.Extended.UI.BehaviorBase.callBaseMethod(b,d);if(b._pageRequestManager){if(b._partialUpdateBeginRequestHandler){b._pageRequestManager.remove_beginRequest(b._partialUpdateBeginRequestHandler);b._partialUpdateBeginRequestHandler=a}if(b._partialUpdateEndRequestHandler){b._pageRequestManager.remove_endRequest(b._partialUpdateEndRequestHandler);b._partialUpdateEndRequestHandler=a}b._pageRequestManager=a}},get_ClientStateFieldID:function(){return this._clientStateFieldID},set_ClientStateFieldID:function(a){if(this._clientStateFieldID!=a){this._clientStateFieldID=a;this.raisePropertyChanged("ClientStateFieldID")}},get_ClientState:function(){if(this._clientStateFieldID){var b=document.getElementById(this._clientStateFieldID);if(b)return b.value}return a},set_ClientState:function(b){if(this._clientStateFieldID){var a=document.getElementById(this._clientStateFieldID);if(a)a.value=b}},registerPartialUpdateEvents:function(){var a=this;if(Sys&&Sys.WebForms&&Sys.WebForms.PageRequestManager){a._pageRequestManager=Sys.WebForms.PageRequestManager.getInstance();if(a._pageRequestManager){a._partialUpdateBeginRequestHandler=Function.createDelegate(a,a._partialUpdateBeginRequest);a._pageRequestManager.add_beginRequest(a._partialUpdateBeginRequestHandler);a._partialUpdateEndRequestHandler=Function.createDelegate(a,a._partialUpdateEndRequest);a._pageRequestManager.add_endRequest(a._partialUpdateEndRequestHandler)}}},_partialUpdateBeginRequest:function(){},_partialUpdateEndRequest:function(){}};Sys.Extended.UI.BehaviorBase.registerClass("Sys.Extended.UI.BehaviorBase",Sys.UI.Behavior);Sys.Extended.UI.DynamicPopulateBehaviorBase=function(c){var b=this;Sys.Extended.UI.DynamicPopulateBehaviorBase.initializeBase(b,[c]);b._DynamicControlID=a;b._DynamicContextKey=a;b._DynamicServicePath=a;b._DynamicServiceMethod=a;b._cacheDynamicResults=false;b._dynamicPopulateBehavior=a;b._populatingHandler=a;b._populatedHandler=a};Sys.Extended.UI.DynamicPopulateBehaviorBase.prototype={initialize:function(){var a=this;Sys.Extended.UI.DynamicPopulateBehaviorBase.callBaseMethod(a,c);a._populatingHandler=Function.createDelegate(a,a._onPopulating);a._populatedHandler=Function.createDelegate(a,a._onPopulated)},dispose:function(){var b=this;if(b._populatedHandler){b._dynamicPopulateBehavior&&b._dynamicPopulateBehavior.remove_populated(b._populatedHandler);b._populatedHandler=a}if(b._populatingHandler){b._dynamicPopulateBehavior&&b._dynamicPopulateBehavior.remove_populating(b._populatingHandler);b._populatingHandler=a}if(b._dynamicPopulateBehavior){b._dynamicPopulateBehavior.dispose();b._dynamicPopulateBehavior=a}Sys.Extended.UI.DynamicPopulateBehaviorBase.callBaseMethod(b,d)},populate:function(c){var b=this;if(b._dynamicPopulateBehavior&&b._dynamicPopulateBehavior.get_element()!=$get(b._DynamicControlID)){b._dynamicPopulateBehavior.dispose();b._dynamicPopulateBehavior=a}if(!b._dynamicPopulateBehavior&&b._DynamicControlID&&b._DynamicServiceMethod){b._dynamicPopulateBehavior=$create(Sys.Extended.UI.DynamicPopulateBehavior,{id:b.get_id()+"_DynamicPopulateBehavior",ContextKey:b._DynamicContextKey,ServicePath:b._DynamicServicePath,ServiceMethod:b._DynamicServiceMethod,cacheDynamicResults:b._cacheDynamicResults},a,a,$get(b._DynamicControlID));b._dynamicPopulateBehavior.add_populating(b._populatingHandler);b._dynamicPopulateBehavior.add_populated(b._populatedHandler)}b._dynamicPopulateBehavior&&b._dynamicPopulateBehavior.populate(c?c:b._DynamicContextKey)},_onPopulating:function(b,a){this.raisePopulating(a)},_onPopulated:function(b,a){this.raisePopulated(a)},get_dynamicControlID:function(){return this._DynamicControlID},get_DynamicControlID:g.get_dynamicControlID,set_dynamicControlID:function(b){var a=this;if(a._DynamicControlID!=b){a._DynamicControlID=b;a.raisePropertyChanged("dynamicControlID");a.raisePropertyChanged("DynamicControlID")}},set_DynamicControlID:g.set_dynamicControlID,get_dynamicContextKey:function(){return this._DynamicContextKey},get_DynamicContextKey:g.get_dynamicContextKey,set_dynamicContextKey:function(b){var a=this;if(a._DynamicContextKey!=b){a._DynamicContextKey=b;a.raisePropertyChanged("dynamicContextKey");a.raisePropertyChanged("DynamicContextKey")}},set_DynamicContextKey:g.set_dynamicContextKey,get_dynamicServicePath:function(){return this._DynamicServicePath},get_DynamicServicePath:g.get_dynamicServicePath,set_dynamicServicePath:function(b){var a=this;if(a._DynamicServicePath!=b){a._DynamicServicePath=b;a.raisePropertyChanged("dynamicServicePath");a.raisePropertyChanged("DynamicServicePath")}},set_DynamicServicePath:g.set_dynamicServicePath,get_dynamicServiceMethod:function(){return this._DynamicServiceMethod},get_DynamicServiceMethod:g.get_dynamicServiceMethod,set_dynamicServiceMethod:function(b){var a=this;if(a._DynamicServiceMethod!=b){a._DynamicServiceMethod=b;a.raisePropertyChanged("dynamicServiceMethod");a.raisePropertyChanged("DynamicServiceMethod")}},set_DynamicServiceMethod:g.set_dynamicServiceMethod,get_cacheDynamicResults:function(){return this._cacheDynamicResults},set_cacheDynamicResults:function(a){if(this._cacheDynamicResults!=a){this._cacheDynamicResults=a;this.raisePropertyChanged("cacheDynamicResults")}},add_populated:function(a){this.get_events().addHandler(e,a)},remove_populated:function(a){this.get_events().removeHandler(e,a)},raisePopulated:function(b){var a=this.get_events().getHandler(e);a&&a(this,b)},add_populating:function(a){this.get_events().addHandler(f,a)},remove_populating:function(a){this.get_events().removeHandler(f,a)},raisePopulating:function(b){var a=this.get_events().getHandler(f);a&&a(this,b)}};Sys.Extended.UI.DynamicPopulateBehaviorBase.registerClass("Sys.Extended.UI.DynamicPopulateBehaviorBase",Sys.Extended.UI.BehaviorBase);Sys.Extended.UI.ControlBase=function(c){var b=this;Sys.Extended.UI.ControlBase.initializeBase(b,[c]);b._clientStateField=a;b._callbackTarget=a;b._onsubmit$delegate=Function.createDelegate(b,b._onsubmit);b._oncomplete$delegate=Function.createDelegate(b,b._oncomplete);b._onerror$delegate=Function.createDelegate(b,b._onerror)};Sys.Extended.UI.ControlBase.__doPostBack=function(c,b){if(!Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack())for(var a=0;a<Sys.Extended.UI.ControlBase.onsubmitCollection.length;a++)Sys.Extended.UI.ControlBase.onsubmitCollection[a]();Function.createDelegate(window,Sys.Extended.UI.ControlBase.__doPostBackSaved)(c,b)};Sys.Extended.UI.ControlBase.prototype={initialize:function(){var d=this;Sys.Extended.UI.ControlBase.callBaseMethod(d,c);d._clientStateField&&d.loadClientState(d._clientStateField.value);if(typeof Sys.WebForms!==b&&typeof Sys.WebForms.PageRequestManager!==b){Array.add(Sys.WebForms.PageRequestManager.getInstance()._onSubmitStatements,d._onsubmit$delegate);if(Sys.Extended.UI.ControlBase.__doPostBackSaved==a||typeof Sys.Extended.UI.ControlBase.__doPostBackSaved==b){Sys.Extended.UI.ControlBase.__doPostBackSaved=window.__doPostBack;window.__doPostBack=Sys.Extended.UI.ControlBase.__doPostBack;Sys.Extended.UI.ControlBase.onsubmitCollection=[]}Array.add(Sys.Extended.UI.ControlBase.onsubmitCollection,d._onsubmit$delegate)}else $addHandler(document.forms[0],"submit",d._onsubmit$delegate)},dispose:function(){var a=this;if(typeof Sys.WebForms!==b&&typeof Sys.WebForms.PageRequestManager!==b){Array.remove(Sys.Extended.UI.ControlBase.onsubmitCollection,a._onsubmit$delegate);Array.remove(Sys.WebForms.PageRequestManager.getInstance()._onSubmitStatements,a._onsubmit$delegate)}else $removeHandler(document.forms[0],"submit",a._onsubmit$delegate);Sys.Extended.UI.ControlBase.callBaseMethod(a,d)},findElement:function(a){return $get(this.get_id()+"_"+a.split(":").join("_"))},get_clientStateField:function(){return this._clientStateField},set_clientStateField:function(b){var a=this;if(a.get_isInitialized())throw Error.invalidOperation(Sys.Extended.UI.Resources.ExtenderBase_CannotSetClientStateField);if(a._clientStateField!=b){a._clientStateField=b;a.raisePropertyChanged("clientStateField")}},loadClientState:function(){},saveClientState:function(){return a},_invoke:function(i,f,j){var c=this;if(!c._callbackTarget)throw Error.invalidOperation(Sys.Extended.UI.Resources.ExtenderBase_ControlNotRegisteredForCallbacks);if(typeof WebForm_DoCallback===b)throw Error.invalidOperation(Sys.Extended.UI.Resources.ExtenderBase_PageNotRegisteredForCallbacks);for(var g=[],d=0;d<f.length;d++)g[d]=f[d];var e=c.saveClientState();if(e!=a&&!String.isInstanceOfType(e))throw Error.invalidOperation(Sys.Extended.UI.Resources.ExtenderBase_InvalidClientStateType);var h=Sys.Serialization.JavaScriptSerializer.serialize({name:i,args:g,state:c.saveClientState()});WebForm_DoCallback(c._callbackTarget,h,c._oncomplete$delegate,j,c._onerror$delegate,true)},_oncomplete:function(a,b){a=Sys.Serialization.JavaScriptSerializer.deserialize(a);if(a.error)throw Error.create(a.error);this.loadClientState(a.state);b(a.result)},_onerror:function(a){throw Error.create(a);},_onsubmit:function(){if(this._clientStateField)this._clientStateField.value=this.saveClientState();return true}};Sys.Extended.UI.ControlBase.registerClass("Sys.Extended.UI.ControlBase",Sys.UI.Control)}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ComponentModel","Serialization"],a);else a()})();�// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedDynamicPopulate";function a(){var d="populated",c="populating",b=false,a=null;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.DynamicPopulateBehavior=function(d){var c=this;Sys.Extended.UI.DynamicPopulateBehavior.initializeBase(c,[d]);c._servicePath=location.pathname;c._serviceMethod=a;c._contextKey=a;c._cacheDynamicResults=b;c._populateTriggerID=a;c._setUpdatingCssClass=a;c._clearDuringUpdate=true;c._customScript=a;c._clickHandler=a;c._callID=0;c._currentCallID=-1;c._populated=b};Sys.Extended.UI.DynamicPopulateBehavior.prototype={initialize:function(){var a=this;Sys.Extended.UI.DynamicPopulateBehavior.callBaseMethod(a,"initialize");$common.prepareHiddenElementForATDeviceUpdate();if(a._populateTriggerID){var b=$get(a._populateTriggerID);if(b){a._clickHandler=Function.createDelegate(a,a._onPopulateTriggerClick);$addHandler(b,"click",a._clickHandler)}}},dispose:function(){var b=this;if(b._populateTriggerID&&b._clickHandler){var c=$get(b._populateTriggerID);c&&$removeHandler(c,"click",b._clickHandler);b._populateTriggerID=a;b._clickHandler=a}Sys.Extended.UI.DynamicPopulateBehavior.callBaseMethod(b,"dispose")},populate:function(c){var a=this;if(a._populated&&a._cacheDynamicResults)return;if(a._currentCallID==-1){var d=new Sys.CancelEventArgs;a.raisePopulating(d);if(d.get_cancel())return;a._setUpdating(true)}if(a._customScript){var e=eval(a._customScript);a._setTargetHtml(e);a._setUpdating(b)}else{a._currentCallID=++a._callID;if(a._servicePath&&a._serviceMethod){Sys.Net.WebServiceProxy.invoke(a._servicePath,a._serviceMethod,b,{contextKey:c?c:a._contextKey},Function.createDelegate(a,a._onMethodComplete),Function.createDelegate(a,a._onMethodError),a._currentCallID);$common.updateFormToRefreshATDeviceBuffer()}}},_onMethodComplete:function(c,a){if(a!=this._currentCallID)return;this._setTargetHtml(c);this._setUpdating(b)},_onMethodError:function(c,d){var a=this;if(d!=a._currentCallID)return;if(c.get_timedOut())a._setTargetHtml(Sys.Extended.UI.Resources.DynamicPopulate_WebServiceTimeout);else a._setTargetHtml(String.format(Sys.Extended.UI.Resources.DynamicPopulate_WebServiceError,c.get_statusCode()));a._setUpdating(b)},_onPopulateTriggerClick:function(){this.populate(this._contextKey)},_setUpdating:function(b){var a=this;a.setStyle(b);if(!b){a._currentCallID=-1;a._populated=true;a.raisePopulated(a,Sys.EventArgs.Empty)}},_setTargetHtml:function(b){var a=this.get_element();if(a)if(a.tagName=="INPUT")a.value=b;else a.innerHTML=b},setStyle:function(d){var b=this,c=b.get_element();if(b._setUpdatingCssClass)if(!d){c.className=b._oldCss;b._oldCss=a}else{b._oldCss=c.className;c.className=b._setUpdatingCssClass}d&&b._clearDuringUpdate&&b._setTargetHtml("")},get_ClearContentsDuringUpdate:function(){return this._clearDuringUpdate},set_ClearContentsDuringUpdate:function(a){if(this._clearDuringUpdate!=a){this._clearDuringUpdate=a;this.raisePropertyChanged("ClearContentsDuringUpdate")}},get_ContextKey:function(){return this._contextKey},set_ContextKey:function(a){if(this._contextKey!=a){this._contextKey=a;this.raisePropertyChanged("ContextKey")}},get_PopulateTriggerID:function(){return this._populateTriggerID},set_PopulateTriggerID:function(a){if(this._populateTriggerID!=a){this._populateTriggerID=a;this.raisePropertyChanged("PopulateTriggerID")}},get_ServicePath:function(){return this._servicePath},set_ServicePath:function(a){if(this._servicePath!=a){this._servicePath=a;this.raisePropertyChanged("ServicePath")}},get_ServiceMethod:function(){return this._serviceMethod},set_ServiceMethod:function(a){if(this._serviceMethod!=a){this._serviceMethod=a;this.raisePropertyChanged("ServiceMethod")}},get_cacheDynamicResults:function(){return this._cacheDynamicResults},set_cacheDynamicResults:function(a){if(this._cacheDynamicResults!=a){this._cacheDynamicResults=a;this.raisePropertyChanged("cacheDynamicResults")}},get_UpdatingCssClass:function(){return this._setUpdatingCssClass},set_UpdatingCssClass:function(a){if(this._setUpdatingCssClass!=a){this._setUpdatingCssClass=a;this.raisePropertyChanged("UpdatingCssClass")}},get_CustomScript:function(){return this._customScript},set_CustomScript:function(a){if(this._customScript!=a){this._customScript=a;this.raisePropertyChanged("CustomScript")}},add_populating:function(a){this.get_events().addHandler(c,a)},remove_populating:function(a){this.get_events().removeHandler(c,a)},raisePopulating:function(b){var a=this.get_events().getHandler(c);a&&a(this,b)},add_populated:function(a){this.get_events().addHandler(d,a)},remove_populated:function(a){this.get_events().removeHandler(d,a)},raisePopulated:function(b){var a=this.get_events().getHandler(d);a&&a(this,b)}};Sys.Extended.UI.DynamicPopulateBehavior.registerClass("Sys.Extended.UI.DynamicPopulateBehavior",Sys.Extended.UI.BehaviorBase);Sys.registerComponent(Sys.Extended.UI.DynamicPopulateBehavior,{name:"dynamicPopulate"})}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedBase","ExtendedCommon","Network"],a);else a()})();8// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedTimer";function a(){var a="tick",b="interval",c=Sys.version;if(!c&&!Sys._versionChecked){Sys._versionChecked=true;throw new Error("AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts. Ensure the correct version of the scripts are referenced. If you are using an ASP.NET ScriptManager, switch to the ToolkitScriptManager in AjaxControlToolkit.dll.");}Sys.Timer=function(){var a=this;Sys.Timer.initializeBase(a);a._interval=1e3;a._enabled=false;a._timer=null};Sys.Timer.prototype={get_interval:function(){return this._interval},set_interval:function(c){var a=this;if(a._interval!==c){a._interval=c;a.raisePropertyChanged(b);if(!a.get_isUpdating()&&a._timer!==null){a._stopTimer();a._startTimer()}}},get_enabled:function(){return this._enabled},set_enabled:function(b){var a=this;if(b!==a.get_enabled()){a._enabled=b;a.raisePropertyChanged("enabled");if(!a.get_isUpdating())if(b)a._startTimer();else a._stopTimer()}},add_tick:function(b){this.get_events().addHandler(a,b)},remove_tick:function(b){this.get_events().removeHandler(a,b)},dispose:function(){this.set_enabled(false);this._stopTimer();Sys.Timer.callBaseMethod(this,"dispose")},updated:function(){var a=this;Sys.Timer.callBaseMethod(a,"updated");if(a._enabled){a._stopTimer();a._startTimer()}},_timerCallback:function(){var b=this.get_events().getHandler(a);b&&b(this,Sys.EventArgs.Empty)},_startTimer:function(){var a=this;a._timer=window.setInterval(Function.createDelegate(a,a._timerCallback),a._interval)},_stopTimer:function(){window.clearInterval(this._timer);this._timer=null}};Sys.Timer.descriptor={properties:[{name:b,type:Number},{name:"enabled",type:Boolean}],events:[{name:a}]};Sys.Timer.registerClass("Sys.Timer",Sys.Component)}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ComponentModel"],a);else a()})();�// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedAlwaysVisible";function a(){var d="repositioned",c="repositioning",a=null,b=false;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.HorizontalSide=function(){throw Error.invalidOperation();};Sys.Extended.UI.HorizontalSide.prototype={Left:0,Center:1,Right:2};Sys.Extended.UI.HorizontalSide.registerEnum("Sys.Extended.UI.HorizontalSide",b);Sys.Extended.UI.VerticalSide=function(){throw Error.invalidOperation();};Sys.Extended.UI.VerticalSide.prototype={Top:0,Middle:1,Bottom:2};Sys.Extended.UI.VerticalSide.registerEnum("Sys.Extended.UI.VerticalSide",b);Sys.Extended.UI.AlwaysVisibleControlBehavior=function(d){var c=this;Sys.Extended.UI.AlwaysVisibleControlBehavior.initializeBase(c,[d]);c._horizontalOffset=0;c._horizontalSide=Sys.Extended.UI.HorizontalSide.Left;c._verticalOffset=0;c._verticalSide=Sys.Extended.UI.VerticalSide.Top;c._scrollEffectDuration=.1;c._repositionHandler=a;c._animate=b;c._animation=a};Sys.Extended.UI.AlwaysVisibleControlBehavior.prototype={initialize:function(){var a=this;Sys.Extended.UI.AlwaysVisibleControlBehavior.callBaseMethod(a,"initialize");var c=a.get_element();if(!c)throw Error.invalidOperation(Sys.Extended.UI.Resources.AlwaysVisible_ElementRequired);a._repositionHandler=Function.createDelegate(a,a._reposition);if(Sys.Browser.agent==Sys.Browser.InternetExplorer&&Sys.Browser.version<7)a._animate=true;if(a._animate){a._animation=new Sys.Extended.UI.Animation.MoveAnimation(c,a._scrollEffectDuration,25,0,0,b,"px");c.style.position="absolute"}else c.style.position="fixed";$addHandler(window,"resize",a._repositionHandler);a._animate&&$addHandler(window,"scroll",a._repositionHandler);a._reposition()},dispose:function(){var b=this;if(b._repositionHandler){b._animate&&$removeHandler(window,"scroll",b._repositionHandler);$removeHandler(window,"resize",b._repositionHandler);b._repositionHandler=a}if(b._animation){b._animation.dispose();b._animation=a}Sys.Extended.UI.AlwaysVisibleControlBehavior.callBaseMethod(b,"dispose")},_reposition:function(){var a=this,d=a.get_element();if(!d)return;a.raiseRepositioning(Sys.EventArgs.Empty);var b=0,c=0;if(a._animate)if(document.documentElement&&document.documentElement.scrollTop){b=document.documentElement.scrollLeft;c=document.documentElement.scrollTop}else{b=document.body.scrollLeft;c=document.body.scrollTop}var e=$common.getClientBounds(),g=e.width,f=e.height;switch(a._horizontalSide){case Sys.Extended.UI.HorizontalSide.Center:b=Math.max(0,Math.floor(b+g/2-d.offsetWidth/2-a._horizontalOffset));break;case Sys.Extended.UI.HorizontalSide.Right:b=Math.max(0,b+g-d.offsetWidth-a._horizontalOffset);break;case Sys.Extended.UI.HorizontalSide.Left:default:b+=a._horizontalOffset}switch(a._verticalSide){case Sys.Extended.UI.VerticalSide.Middle:c=Math.max(0,Math.floor(c+f/2-d.offsetHeight/2-a._verticalOffset));break;case Sys.Extended.UI.VerticalSide.Bottom:c=Math.max(0,c+f-d.offsetHeight-a._verticalOffset);break;case Sys.Extended.UI.VerticalSide.Top:default:c+=a._verticalOffset}if(a._animate&&a._animation){a._animation.stop();a._animation.set_horizontal(b);a._animation.set_vertical(c);a._animation.play()}else{d.style.left=b+"px";d.style.top=c+"px"}a.raiseRepositioned(Sys.EventArgs.Empty)},get_HorizontalOffset:function(){return this._horizontalOffset},set_HorizontalOffset:function(b){var a=this;if(a._horizontalOffset!=b){a._horizontalOffset=b;a._reposition();a.raisePropertyChanged("HorizontalOffset")}},get_HorizontalSide:function(){return this._horizontalSide},set_HorizontalSide:function(b){var a=this;if(a._horizontalSide!=b){a._horizontalSide=b;a._reposition();a.raisePropertyChanged("HorizontalSide")}},get_VerticalOffset:function(){return this._verticalOffset},set_VerticalOffset:function(b){var a=this;if(a._verticalOffset!=b){a._verticalOffset=b;a._reposition();a.raisePropertyChanged("VerticalOffset")}},get_VerticalSide:function(){return this._verticalSide},set_VerticalSide:function(b){var a=this;if(a._verticalSide!=b){a._verticalSide=b;a._reposition();a.raisePropertyChanged("VerticalSide")}},get_ScrollEffectDuration:function(){return this._scrollEffectDuration},set_ScrollEffectDuration:function(b){var a=this;if(a._scrollEffectDuration!=b){a._scrollEffectDuration=b;a._animation&&a._animation.set_duration(b);a.raisePropertyChanged("ScrollEffectDuration")}},get_useAnimation:function(){return this._animate},set_useAnimation:function(a){a|=Sys.Browser.agent==Sys.Browser.InternetExplorer&&Sys.Browser.version<7;if(this._animate!=a){this._animate=a;this.raisePropertyChanged("useAnimation")}},add_repositioning:function(a){this.get_events().addHandler(c,a)},remove_repositioning:function(a){this.get_events().removeHandler(c,a)},raiseRepositioning:function(b){var a=this.get_events().getHandler(c);a&&a(this,b)},add_repositioned:function(a){this.get_events().addHandler(d,a)},remove_repositioned:function(a){this.get_events().removeHandler(d,a)},raiseRepositioned:function(b){var a=this.get_events().getHandler(d);a&&a(this,b)}};Sys.Extended.UI.AlwaysVisibleControlBehavior.registerClass("Sys.Extended.UI.AlwaysVisibleControlBehavior",Sys.Extended.UI.BehaviorBase);Sys.registerComponent(Sys.Extended.UI.AlwaysVisibleControlBehavior,{name:"alwaysVisible"})}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedAnimations","ExtendedBase"],a);else a()})();fGIF89a��.�1��8��8��<ݡS����������Ǝ���������������������������������!� ,C
�!� 0@��F�h�B(�0��	"D0��8p`�AX���r;fGIF89a��.�1��8��8��<ݡS����Ǝ���!�,�p�(��v�^�_)���E;vGIF89a�������������������������������������������333!�,�@�pH,���r�l
���3JUN���v�}X!˟xL?~�%�x��UP.��i�
_qIufwxr�P^M	B}u�d���Kn}����
�d�d�
���������f�d��
������	����ʒ����ђ���G��A;�GIF89a����:���������������������������������������������������������������������������������������������������������������������������)^����!�?,���pH,��̆�l:�Ma'D*Y���U(B�\�x�Z2A�n���@F�	�Z���5B.8x�>����B26	:w:����B9;;������<w<����B0		>�~��	B
>��B� !! B�*)(&#!��BS�.0�.,($"<���C�+�(��O�#�x(1�E���H�h�
!$V�X#`#�8pܰQ�F3d��"�8@� Q�+k0 �
j)XʔW���H�;�GIF89a����������0e����������������������333���!�
,���I��A��{��'z�(0�P���jL��4��Z�g{��NM�k�� lhS5�覷�@�l ����X�	:�l^��fv�
)�
Z��%�=	T:� �4���� ��=:�� b����c������ �����;�GIF89a����������iii�����렠�AAA�������������333������!�,J0�I���j���ݷ�Sc�&g�c:�@����}�>n>�bH���B��l2^Ψ#ڄR��v�@m�ZGbLNhq�;*�GIF89al���������������������������������333�����������������������������������������������fff��������������������������������ݴ����è���������������������ƺ�������ȇ�������������������������ܱ�����```���������eee���QQQxxx������			HHH???WWW���NNNKKK'''��ف��������EEEuuuBBB{{{ZZZ��˳��---���999<<<���TTT������ccc���rrr***$$$������000!!!~~~���666]]]��Ͱ��������������iii��������Е�����������������������ooo��������Ļ�����������������lll���������������������������������������������}}};;;���qqqtttwww\\\zzz___���kkkPPPyyyGGGhhhsssMMMDDD|||YYYJJJ>>>vvvnnnVVV)))AAASSS


bbbpppmmmgggXXXdddUUU&&&888"""^^^   aaa...+++jjj[[[


������!��,l�@��
	� ��t*\Ȱ�Ç#J�H��ŋ32ܢf�C�I��ɓ(S�h�@
��0cʜI��͛8s��y�B�	D��ϣH�^p��
@H`@�իX��3 5A�
8\���ٳhӪ]��/�ɝ���x�.dA��	,�@%+0Y`��ǐw��3�1J���`���K"�q���ӥ��^ͺ��t
88AB�J�Q�o�YjLNS|�8@���
���N}k	-GN$�p�G�58�P]=��0x��	,8�0��+���?�
L��X�<�PރF�Rt0ׅ��$�����h�(b��\�0
0�HT)�1)�b��a���Ot!�`NTD	)P�`h,��3P&F*�!��H��J. �@�  C]C��yd!�����4�C`�1X($����aD�
�F*�u��M
��6��3$�㦜v�駠���I�R�j�%�7!�C_��a㬃!��0F(��<����?"0î`a���:�!h�5D��t�V$��aP�RxP��$@���d�*`�M$�� 8�aAB�`I� ��	�V4�F4n�L#M
@���@РīP�cH�P>�P�`p�DT���'	@A�7Ao���~	\n�#
`
D�}�9��kQ���	'pp4J>vD�\w��-��_�D^��u
Q�Dh7%�z�6UE�`U����ߟ�@�`^@��r��\��2�Ez�*�Q�
�ڡ�
��n�����녀
\4QY,�ŕ��^T�EFH�%а�*DRk�A0CF
�f@��&�5�lh�
�2�E��$P%��%H�V���H���C�3ήV�9�V��6`.l z܉&�<�]�����z�B�H���- La�8�;2,L!
��-���c	W@ct@V62D���l�>����DN
��L2�;�
V�����.>�PP`Ak(��D�:Ӌ@�v�h�:�
t`
H@&p����2���d@���G!(B�Ѐ1
8�5��!8=����J	%�(XdT�Vx���@�lh��0A���,,(J0�f:ӆ`����
=������%D+!�
�$X�9��Άh��LJ"p�x������~*D0�+�bY�-�e�0p����	��D=%�!'��0юz� 
�ڰ�C%`� ����``�)
L�Қ:D�gL
����@
jF0��^e�I�H�ʵ��p S���%
1�*��ծz���l��I�c�P��Q$0ֺV��Q&	��@׾���I
V���AvvP��Xt�0	2��K�&r.x#��E+���z��\�\p������R���jd`��R[S�@�gh���5�iH�`�5���<P�q2�����-�`F��!��ͮv�:��u$��|���!8@Y�?����t�F 0'������B6Ll��.H�UR����b��B2%�"����0�zы���Z~ ��$��C&p��ߌF�H@����W�@R�&Q�\%n`�
E8��4ꆓ`�FAN����� �
)�B㵜��&YW<\��h�X	N�.����Œ)�\\0������@T��Sl�p�΀��Qt�9L�#�+����Y�����U	�T��!9@�<�N{z-
D*�g*:�@��EP�-���^��
���ε�#�(P�"�ç�R�4����x�;�� j��H�7��؎I	��ߋl�l!�-�����(�0e���l�鎷�)[�X�0�D%�=��!̑Hր~�@6x��L���4`m���mW�����|$bu��!�$�N�@F��_��WX�D��`��k�!�Bl�
�`EЂ��U����cV� �p�ѧ����B_��@�� T�EeЀ��ҤH���'#([6���۽���K�"3�=$0�a�@����U��D
~p��_$h<�%T�-�$0��7O�ICb�zdp��[��**�;�=Z`�]��&���xO��{����w�
a}H��rH|B(n�d�Է��QA�|j��`��O?�i0	-d����k|Ƃm�)��Z���?T7 s�y6� �?01@-@,PE���1@(�PAAd����i�R%!�!h�0�Z���'�>1xH�>���P����ecR16hc�N���P]p�z9�`F�&p1���UX.�4p%A(`oc؆t���EP�wF���0��
�Їy��� ���58qQ��F�"Q�{P�D"�d�4)W�����)���w���J�w$-�H�R� T�E#�YWP%+���1���
���p�،55�|x���6��]�,B9 0)7Q '�6�q`
��b'r("BM@�����Ev'BP#`�
F��9�sa��Kh1.�zi�̨p��OJ�J���7`�2!EP*�C�0@�x�7p��
��	K�	A�
�P
�	c?
K�bpE�`b�PI^ ��t��E�C
����g ����A7�%R"�Gp��n�v�avi�o���V�1�H��Y��@) �p?P��14@y�1. -�PePE��I�@��/��[	L��>P�P
��������L@#`&�t@L�r�>�6�
��[�c�5�:H
1k���	_1��8��PK�i"�C
�z���Gp%)
0%�a= �`幟I)$T�b؆\�3�"( ���PT�?p��*�a�DW���١��p��Xğ)�;�࡟dc&ڢN�`�Z��#�C	J���g 	� 
P�hb�*���E:p�41�.Z"$j
Lz5P�Uڥ�w741m� ��1`�Y�p�q�2����tT"�!)�0�ԢWZ���!��z��*�ॊ�v$�d��Q�0n2 i����	`?P	G@k�b���4f 0����LH2W�7�j�b
�!=�\D�r#���2�;���if"�r_�	;�@ 9�!!���o=�:� ?�	�SyqJ ��9���`�~�-L���40�uo?��
��#P�J�07���Hk��0B�8Ϥ�&k2*���gD�+K�R�pJ�`!�"BN`t%���խ8+h���	�Kzc�L�г3A���[�2'1mT�8A�� r��&�5p�f!�ZV��@9k"�H��v�U,�E�+�Cv��\���2>PM����r{%�g+���+aL�W@�Y����ݖ3pǸ��k��p	A�,�5�b�%1�ʡg���Qe�A��6�&"$�PY[E�]��AHK"�9�[��E)��NE >�J���<���јfI仾k!b`��0`��T N�
�[:�u{�.q`M�[�!��v�%N�mtЬ#1f�ȾaX��4!	@��h�:���	��]`� 0
}6�:��G��3���$VW��7�?i@t:��(��e ��p��*�%��VL�C��G!)�t��{8�)��<8 k|�9N�i<ǥ�)WT�? >�nh� 00z!��@ЯW����� �cP��ȉ��$0zq�h]˺X��b��Z�Yp�t�6q��먁�49�5v�~�$P#qo�,LAP6��n�^b#�ì�';W�	@<F`�x70�>�L`8�Pr���V��X��p
)@~J1��}�rP1x@	��<q7���}~g�-	�p�`
�y|�}�@'@A�oA�4��B�`s����
�Fob#N�������7�=��6�i)08�a
Ip��ӛ���0�s�۩�X[������	D���50�[��(	��W�1���1pp>jt
��� @��!�b�>�	�@- 	�@>�b��4;!4q��u
�B���� ;�am��b:
p�2���T#��a��H�)$�-�!po@�[���0&3�k�V��w0��6\�
04{�&r���hm
� 	��9� �z0�։~ ��]6��%�/�L�xp�`A�r��q�J	��
�P��	9�b�!�S��I�m�Bb0�\s�>�$~O���R�1> ���T1��w�tMx@<��S0�D^�� => b�6�Pp���
��5h��is����b��#P"08zp��3�	��p^�:A�$�xi;)�b+�`,60�D`,F���!6��1���\�:�~�5*���!�,��f`,��*p�f:`{bF�����Q
 �h�j��h�n,°�$��G1.	$��������n@�pc0#�-���3e��i`	��6��sI	[�	����.�<4p��*A'@ĸ�	��NB���- 	`ޯqp4ЁP��n�F���(`(�/�:Pt�,0�_��´M��ݺ��r�D
�`�ag	�7�fs뿑D@(�>��J����8��T)pU˕��F)p�L�*�F0Ӄ�T�)�U$��z]p�%1AE0�E���4�礴��@�H����P	-@�|�l����T��#�DϞ���*�-�0K�N\1��#?�2���j��	r�@?y��"ըTbLE�Ȍu�<�;��}j1,]p��J��[`$�K
R�G]�_bn �61�5 7M�P6a���gSp+�AGjH��e�Ii`H���A�	.d���C�%N�X��B% pѣ������I�)U��H�C�(��K�`8��S!3�
%Z��Q�I�.e���S�Q�2��I�h�����W�aŎ%[��B|z���-f�Υ[����Pb2�*�i3��aĉ�� ���,�
F�%�So'Y����ΡE�&}0@0Pe&h8����eϦ]�v��5
�����_���
	�M�s�ְ�
ǚ�/��
��ŏ'�T/��`Q�{��_pR���k�������������A���Cbx�!bX�3�pC�(��	g#�84�DSTqŃ8!���`=��Q��¢#��F �TL�z����@H&�t�I(�\�	�xN�fbqK�
p� b����L4%�$�0,-�	tHsN:��ΆL���
����,�RX���h�`PF��A�($h�RL3�tӧ� ��	@@�Jh�sU����)��@d�X�58<I�b-MZ�Xd�U�7tq�%�
8��)�"C'@�[��.:07��%C0�������C0.X�0	xxw_~������`�0(ca�U�9@ȕ4P��hÅ��� F��@��)�Pd?$Q�	:�0�`PX�
���4�h�yf��z� !�4��_��i�(�KI:��1�8(���bi�{l�Ƕ‹7|��3p�i��{n��@��8��eØ>\��U���A�$U��I1!Ə4XC�K>��J���P� �(7тA�{u�[W���h��"�;�,�#a�g���*|�	����-\�i��y裏�
��(LW~W��C��w
`�٤�PF�Ѓ��A�~��<Bv����
G@�͈�7��V)�O�g�BP@FP����"r��,�U58�2���*� - ��İ��Z���$8(�?
�dH���xD$&'b���`��rԔxE�N
S�b��\�K"�餃P��Yfd#m����s��q��5��������~��GD&R�cLE 5B:H=�C�IL��&�
2�IP.�	a�H�,�?XK�Tp��
	�xE\���-����q<v�!"e��6�R��Te��p�Y屘�A8*��*��
���4�4!��`�I�	1 �L$
��8�bP��r�A
,�������0-��E�N�l�ҜSv�ONS�M��00�,�Je@ԇ�LA
s )Iw��t)c
X&�@���(@D�$^�N\�/�@a���dv ҉B�՘yU�J/wP����!��,F1��a
�&GB� m� �K2M$(�
(�\�!`���� ٔ�*�P ��Et�f0�fV��	�>�'���@C{��"����
l$�=~��	!A��Ձ��+0MW:`��`m�
���/�q[
QO�`�~-�;uA�"`$AY�nw��i�g$�Ѐ
-h�	<��&D���犒(��*@h�<`p@� 	$�x���V@��  ���ےE�𳙝��(�
���AU@A.lу"@���@����XǤ)�j���`�y%8
���ؠ
�[* #a\
�A��\,�y��R6F`=B��~��@�F�@�f8[k
I�Jp
�`Z��D@
��xD"AV8S�"��D',_%>���1��ЅF����t0�N�Z�yA*A��z!
*�0�U�I��3��PR�T%
�&v��$(��@��욕C���5�$@�j�H���P2�	`'��&7pЈH�@~�V`�al-��'!R+�}o|��@9C؍Dp��E4`�2@ه�gx�)�	��N�B��e�E<hv)�:�<���Җ�T
A��M��)�{_穈3e~s�ǧ1N@����F
B.2%"
$��N�@-P�QU�"
��f�`)8�2�:P��3��(+8uD 0۸�]��A�3��	�I��`����A0Tȸ���'������L5r",��=�y��	%8��D�b���@�
t��$@Tx`E��Z����6P��$
��!� ���jY��1�z�4�	@�N
��<�)(�D���_�s��\�
` 
��7� �5D�k�oh��>�+�#r�`��@T5����
�TX?��캁���� �@'ـ�r�@�ZAL���8@���?�d�5��k���2�ɛA���s���A$̬p��8&P�� +��(�:8.(�9��b	L��,C1$�GI3� �HHB�x���H(6��"C�@c�C?,�5h�
�=C��<�0��D��x�‰�axDL��<�#�@�J�=?T>�(o��縀;x9�T��X�!@EZ�$F����-�,�Dtp��(�F(�D`	0�,@FhĹc� �8(�1�0 �����Ш�M(ؿ����Ds�G$R��"�Z�h,
$ ���"G�G')���7�<H8���@�^�(T�/vT���Lx�z��h�1�H��ȁ7L�?<�$�h ΰ�	���d`
�@.�I�\�/��K`�=���	�A&IA>8�!�b�PJ���\����T
y��h�>���"
`�c$K��XHv��x�Lh��48�W�\�KᰄJ���D��A�KĤ��(����'lˣ������˓L�Ѓ��
a���}ɀ��9�(����4l��IL�؃?���d���M�G���Q�%�K�����Mt�5
��_["#N���Ѳ��`N�d�j�I
�GZ���4�$��"(�
���(��M(O�t�h-Ѐ\\r���=��ƒ�#�Τ�*x�|��mP��|ݬ
�HX�x�N����, �A��5@�(��@���۠(�KH���Q� �C���5�
@D�5'0!j��l�
CX��i�R��!p0��\x�Y)���R�3p�(ai�/��;� ���0��2�Y�����*�p�������0JЃp���L��[(�����0�X08���HpTU�����U���O`�Q%j����pH��\��|ID��%-H	�@x ����N�xu
	؋���L��8��p7��(H3��x�� EP���*h �#��� ȁ�	�)�pS��Z3��+
 ��$`���8���O��'*�؀T��	�aY��X�#�*�E�c����P����O5���?PD���yG��;��lTbUp��%GSR�p�k+
�
��G+3��(��P�I�G��ʼn(@TpM�������
@[��6�J(�	�U��P�N����P[�,�`&H�D[(>؃2��&�O(�G@��1���8�$b%`/����}��
89'ÅfX`�%�׿�.���@
 �q�DЃ�J58�Y�h�?aS#�\�;�
��aX(��$�4�<�2��(Ȃ8L�m��B��ڦ]	 �@��p� �2�A8HN��2�� j�Ƈ Y��Wx<�X�!�G�UҐ,Ё���6�� �H�%pJ�9A�`���Q8�C�!�����
@�h�7�W5�z�|M`9 p��E�	x����2��c�.H��ı�� �)��0�o05�)��XAdB&$H.�0 ����c�!��	��	#��c���������]n�xЁA(����2J@�N��p(�$>�WA@���tx8B��•6;��?
p0����`@�&����L�P8UpQ�O���1x(���06��?P�C��[ M(DȄK� �FP�=h�5ȡ�r�GkTf�h���h���H.�S��#��gf؀؀�hx�h�^i�ni�N	SQV��iٗ�i��i����	���'lf�4P�D8D�P�� @U(�,�U8�B�>�j��j�^V`�;�R�=�O(J8�DP>�������p�Ȱ
�i���W�%v��Z��\R�]�.�����lH�.XvI_p���.z�%HS`�3P�W3ZV"����:�a0%|U��x���00#0��.C@�����:�&n�&D�%8>0��8IȄtZ�vJ�(/O�'{�'}�'(�"(�B(�b(��(��a�a486�F(���#D�W(��4�(IN�	�X�"س�D@�>���1���1
ـЂW[8�IH�M��2(�p�P�6���)��)�*��b����h*�x�#$��l;��C����
A��X�� x�2"�#���.0M��bA�X�^.9��1؃��2,��Y@��f��Ț,�9e��J�$��>�A@��-p����,�4�8Hش�J���\x�L�1��	(����(.,ܗ�
�Al�v�.~�.ݩ.4Y���p����\F���;�$�-�Gp_(�SR'˄^����01�M(�����*�9�i�t�>��6H4��&���E`��5�"pV@��/mO����pؤ830C�`�����@�� �8�2����l����x�8YpL�Q����:�p��M(���k�A(E�x��5���_�0��Rə�����N��	�T�����Sd�`�
�;ބbh�=��uz�p7��
yC�ΐ�C�z��(ʃe��ADpi	88��
�oi��#h�Pt�����
�K�G�̽|� �{����6x�6�Ã5���U
�x����|�PD��8�|��Б�5|0�?x|��^�uU�7�PEЁ�������Cy����@	}�y�y�	�?�R^(�Wʦ��.�//���h��~��1f	�$���M�>-�L�M��n��HJ�qH�@x���B�9���)Ig� „
2L���'R�h�"ƌ7r���#Ȑ"G�,i�$ʔ*W�\���2gҬi�&Μ:w���S�-�+��(ҤJ�2mzS��J�j�*֬Z�r��kS	��xk�,ڭ����-ܸr���ɋ�v A�/�.l�0b�.�DI�1d����5!2�̚iR�!��
�G�.m�4j�4����5l�P�Hl�6n�y��:�	���/n�8��#�f���	LF�n��Qhp@���Ǔ/��
�דn�V9����Hq��U����?�ʽtw���- Ɂ
b�A`]`xZx!�"�@E��!�XU@*�x�I�0�V#|��(�8#�5�X�d�C�=f5���8$dPp�w:h��M:�$vZ�APZ��q#�3�ǣT��@]�y&�i�Ø\0p%�G`C�y�R	T�T�q��
:�T0�a��*�&��&���A�S 4��j�)��Jt�0��(�8����j:P-%@1$�*��^�48`���.$��)�*��UM�E��:��r/��Zk��õM>�RT�^��`3nAC{���B����:+�@o�d~�/���F~a�o�p��"l�\p���e�P	$i�!5�B	@��;������ri*��@$�3�Jap)�%�l`ƨ�G
�����F�<5�Uf�L�3�	0@@��A	X�'��H�\�
Zb4p�Ӯ<PBׅ�Y��›�;~�
|	1#�;1� ��nt�y,`�矿�\�T�jx4�����b5��Β�*<��Bp@H
�Pm��hPB	@P��=���X`�s A
\��Mw� {���ޟ\�M8�<��W�I!A!��!�C~H��#D@0h@2�`hTH&P��I���찻����	
��t�0�4���\ @�x�,�M��M"���!��
��D��"4h��ȵLa���t`7��v��_>0!ӨF%�R|��@�$���7� ~P�+��|�]y@�H)�1��"#��F-A���$�n�%H��0��V 3L,��U�N~�X)K�E���$.s	-`q���k~)Lx}`	��0�Y8	�%�|&4���A��,\"���R�/��6�	/6b"��<'�2�3�R������yz��'>�%������<β�)Є}h�5�*�#���—�)щFG2p(FmE&e����� �N��N��(�ҕ�$��J*SV=��3�iV,�	,p�>%Tt�:����B^~��'�%���S�A�(E'@шM�'p�
�*֙\@k�HǪV���tt��T��N�WQ�j�-�!X+`}t3�$B��B#т
6�u@
Pp:�����>���Dn0�@��L�e9�$h�,``!$`K��W��E���M\p3\�zX��)�b W�DR-�����#Pę�K�A&��tP m�5K2��X�{R�w���@W�5H$�i��Fp`��ox���Hd	1B�@�K]q[lR
.8S$�
�-|�Ltp sx��,bO`�d�#��0x�,(AfU��ApT�J��&��ʽ��L0�t�F& �/�� �K�*�P�p!�����+d�+0�X��A�0�$��q�B���#�Y�`�F`d]`E@j=-�
�h�h0"",y��^pb$'`���$�����������
`��S��U/�+��ؠ��ն�5�s��]�׾�5�/4\��\+@�s� FHFj��!a1
6���'�m��:hA
���D�V=E"�@�`b�5C#>A��A,�A	$���W�d�6�@@0AF�A"��T@hAr�D%�0 �A<�%D.��@ZP�D�B��!8A	 �H��N�	�`L�&�@Q�
������Q��`�- ����x�a	��!:�5$$�1`'
!�\��\!�� �u�'���|hDF[l�k�4�~ �#�(C�z���s�:�@��D�b��2x ��H/KP
�<��b��(-�.NlbE���T��r�CD�#�!�$��%�
9��gJ�SȞ8��R/	�/spD�O��	[�>�oB���@����$hG)��A�@���@�A���4���B�\�������B��01��Z� ���A֠JM����@$,���S��Wҙ#@9� �o5���@��$D�@�@	t�ט�@�!��v�e
��؝TL�Ե�L]
��b������*����R ���%�&�^�~�RI��}9�@1�RbG�F�("'��1�
`�M�x�(�L�)��dV'��D5C[��L	��A(�"=��.�����0>�2@�bGEl�%"�,�3�	���5��@D�O@�#!7*R�8*���5�#�$��9�@@��@�!�#�cC��@l�;��`A[e@���l�(��BF��D�@��Av���}<��]dG@�@<IF�l�E��@ـy$Mn�
��L���(�N�OC2@3e>aԤRj�]@��Q���$ BT����	<@Q^e8��R�e� �@��W���dZ�P����8ec�%^>/�]*��|B_J!p f'QR^.泴��!b�P� �D�1
��e���,0&h:��)��l�"��+��}�a�f%���lv
@ ��"1�$���fI����"e$0̦qB�n��p��A&,'�!t.���q^'�|b.N���&Hw>��fx�
@+`�z�����"�,|�T}*R��z�'|,�g$x�����؁.R���'��/]Ap.h$@$Y�x���ӕI���_D[�ɇ�fAs�h�̥�����hI���h����A��L��Γ{8iᨒJ���i>]@	���A)vDp���l@D�d)I�����@p�
(��^5.ib�@֘�݁�G4��G:T�
l�K�VhDDP��2��	�p�?����M��#(�1t@4\Bk��`�!!�C!��A�%���*@�@�"���VA�iH�D�@8A�[U�z����Ҩ(A��Bd`졄t�|*����	|�(�N�X@�l�y�D(��@e�5�?6��Q��	`��&@�H�
��
��-�«�M�F��}E�p�V�Jt��D,�B�����Ԃ�\�t��Փ���.��ʮ�
�$�
l���F����^�>�h�@l�@@x�t��5�	�@W��7�@
��@/TNP��\t�R��dh��Y��Ա�����-�������@|��T��A�/���(�Ά%&���@H�Oي"��O�-\Õ���@���r�-vP��l�$@�L@����4���8�h&E��$�(C%Є-
t}p�A(���;
�Dd$�Z�LD2h��b�4*B�@d�@@�r��L�,%-���*��Bz��o�����,���
�)������AhX|�!����
pN��.,���PATi�4F�hc�Z*�Ft�������,�4@h��� ��%�!x�#p�`2�	H�B�\�	�PB�<*B<H/�L��oOE�q@E�U���p�ڨ��R)��U$�����>�� 3�p�ׄ���
@��T� ���|��T��q��'x$�@f}�"��@8��A�J}A%L
@��΄t�A^!�؀�:�Y�+�Dg��B���P�$F
��э$X@
(A+�B�d�G�Yp+�@���k�_�hG�&'(�9����A�
�Th�D@dЩ��0��}�܂�JPtA
h��H�ЁMB���F���8��V(@	8�a�T�@�O�@|��I@	��f<�H��VC��~�V�X�I@Xa�L��ı�d��
�D�tN��h�(p����+{HŌ�*�\��K}��<���%��	���V��2�����h����\׈�H��M|�@��
�H��{�uZ�6RG�@5��2��*x�-��`¥<�8�U0$A�UA4�I@8��T�G<�"
�R[1�F	\�Q��%<H���ltM�X���`��x���D�@��rQ���6�K$_V��x�$@'w
d�o�}s'�F��V��r�]X�ED�C�,�M�N��
�H��UG�\�����e\�_i�h�/	�D@{�d4�HĀ�L@�'/ĝ�b���T@���܈�(yYud�5Z��9�ލ�K�6W�rA��*�g��	̸�W�@�/���A
��X=
pkV���/y(Hrf`pܩ0&\S��D9:`��6R@�蹠��{ �~E�%��"� �9O�e]��R��y�0�(��/�DЭ�!}��R���
-œ�������GZ0�'�+�#%�D�	�Wp��[�
s����xb�\
�(,Z}��7�ǚ�Y.R�1̺���n'S������!��7O(�@(����OP�	�����P	R��#�D��g�XX��v�Q��G|J�#Z�|�5�$���;Ep �׊U����A���yNp�vM�T8N���z�-��BAR�lH�П�}ND@��0E@�qR�]�t�L��|��/���J�:�B��
�@JR`��x�[��߀T`�0=ܓ�/������	<Q�	H�Rq� �O�*	T��
��M|	^.F	�΢����7W�Vh�=�kD-�؄�@����3�ŋ�r�&(���Q�9�a��	�����m�G.�$�M$�����9W�t
w��[D1�>�4���Sׄ���ә�@�[���>�0���D�E��"6���H��H��U�:�:�	4xaB�6t�bD�)V�xcF�9v��@�t#I�4i���4�$�t�fL�3iִygN����H�&�t5ziR�K�*@(AS�4D��BjV�[�v���lX�cɦ�Ɂ�S���n\�v,��@ٔ	����[.#����obŋ7�����Լ��sf͛9w�����`�(AǠ1�P}�BYٳi�Y�C���>���vp�É�HV@lj7w�zt�ӥ�pau���"�A^|q�D�)�K���$l4��Bz�����]��+���\��|��~p��f�V#�‘"�a�CB��,>�D��C\���`E(Y�Tph���d 
((�`A��\ҹ0�.�N��*���,-db�6@˛F���+�Jea���6�!7��v�k(� L�f)�@Ŭ�j����F}��8�'V�3����2���S,i��`C"��c�>��7Lo:�Ym��%>�P�)L�
�`���
��2>(�b��� �j�ȃ�.�J' ��p���As0�&����vm5�4 q�^瀐v�ڀ�"��
 �>�h����a�T�f�If��0*2��r=���Ȁ�� ��U^��@�lh����	( �X�#�N
��=&��BPȁj~'(I�R�ڀ�ޚ뮡+�m$�_���6���6��k�6<(Y���֛$��D_�`�F�g�hA����:j��
p���xˊ��:P�=����. ���J��_������J

؀�
*�`��z `Ҁ�a��
,0^�0�aNQD��4��֑
��p��)�H�J�����P���'�@���_6о�Y�"B�����*��*��An@�[t�p�-W��x0t��Tx�%n�(�Ae���@
�����^MGc��iX�ϥ ]! �&,Q��3	�T�{(4
�@���p��)O9B'p�-� ��h10�iT��"D�xb)m���4k������O8�A����T�"�%"p\���	)���sV��4�G��р!� ��Z>��J�����Hp���`d�.�[�=x�{̴7cƥ	��#K��)���4�� ���\�@
�	,��a����-a��*2!@��jE	�	��P��~H ����������M�t~5@�V
e�jJ�B�D������Fc%x%�8E�����)�	P 	����jP�xKm�[b�J	 I��L�IU�RR���.-X��z*:p��j<V\B���$���ZV�^�&��W
���x�cL�L .zV�eI�Af@�(�ZX���0r 
�ƮY���pz��0��
�考��hi��5)��[Vp�И
xF3�C!4�-f�2��6]zPtd5�eo�9��Њ�HoH��H��	$�;a���᭡`���a��Z��$��Z��(�:;8�(Y@�y�H@$��r3h`�*c2��X.i��@,��\
d`H�I,�����	5�?��q)�c�����+�В� ��!���	o5�Tz�#y��֡)��^^\e+��P^
N �g�F�dV7�
|�*~	�$��
�J��P��A��$ȦQ��ˁtI*��0�&��,��%�b�������<9�c6�; ��\�]jS;��W��R��Z�:p�����?��U��8��+�-��(��^
kg��x�¬u�
8���]�r�(d;RD�T���C$D��V�b&Н$I�}�~6S �/e`ü�3�D@�Y1���	~��x�~��%����ˬ�q�������������I��#�K�M!@��l���4m
�r��f�]����k���e�R(�_�@�n�-Xz�@b��[.���_<��4 8@�&��{H��u�9����Q@��N�@� p���M$��tN��G-�/��*fㆼ�Q@��3�!zA�E�NC��l0n��(���@��(i��(�w,�E�ޛ�o:�����I�C�	�`����?h�+	��$^������~/H���o��'�DW+���@y�T�t��<�1�����8A���*�\$�
��
l��BR@	�k����x��F@8F�"a�`a(a
�N�:aJAVa�
a	�`
�@`)(�x�~���B6 ��暯,�	�K;L�N���!Paf`
�o&�)�JAA�@� 8��
&�g�`��@��,�AF��'� �F��� ��Bذ(&�r�P�&aҠ��$�H�I��;� <� �������
l`�?�.th�^���[��t��@L�" `���&.� V`�p, F�@A؎6��@`$�>�h�
Z����j`jk��^@@� @� �:�{<�nM�Bx����	Ff@&��@Wv�_Bza��P�� �C�na2�4�A� ��ff�!$Zv &R+B��M0���.N�sr.� >z�'�D'> �c	 @]�k*�a��*aB���T�a�@EV؀~O�� �����`0�L~b/�)�B��L`՘��,`4 ~`
Z@�@� zn�&�P�
V!�`���X�@��FL��,� V�:�
��6��	A�12@ ؑ��.�S�4�
R�A�Π���9��9_�P�͞�+V�&��;�*�" @.�3)	���Q`�;|�<�� ���]�
F,��v$J�P@h H�H ht``�z�(@_I�>��I� >DCTDAt*4C'�h@�P &F�༂����c��
��3�bf�
��-H�``"V���-��R��$�A=��>�f��
#.R��`J���iI��	�2��`��C
��2.�'�Ku	�
�) J;$�D�B�x@,P�Аt�8
�@.!@ �r�@:������"�Q	:�*~�
�OqbJN�,0��YP���&�/	i�vS$R��2<~�X% �?�¿��Xy�<���J&���&`Us���%f���H��	2OPR���`	�B	��J���d����
^���<�	0!�$�d.��
V�j��
b.���(r�RA
�`�’���VH
�˾ *��X�Ҁt �`G�$2<AB`��$�
�V�b��|:uT�L���JV��oUw@�^�u��<o�hu&�P�l@"��+�T��U .�
j�&.g��Zަ\����`�6#29`�)��-�`�p">�	�`W3�d�#.M������2��&,�b�h�B2h�y`�h	8@aR��f�nt'X@�.s��J+"�&� �g
l"fԕy�Bfc>-o�w3B�R�d��*��#�pg�:�˄1:Arn�  �Z,-&l��(,@73`n��$`��A��@J�Ja2����Y��N�s�w �n�&$�dn�������S��� �c8�@�� i�������o�"��x�&
 X������,��i�b�"��*�(0�-РdX1,���`�&��x�J�;Hx8���@Z8&�d(�ޜ�%$`A��0�ؐ�#8�,"�
p��@�r��+��t�M���
v�6X�:ٔ�i袐eW`�8���3@lq�y8`\���~ C�,�
�O6X����'�x&��	� �I�z7Lc��D���	�688ĭN��3�BB)z�h�%?�2 ��%^��|�!�~�:�-��9& ��"f0�AZ�^& `�� *�Ũ�ȫ�7:��J}o"4@��:a�nX(�؀@�o��&$�IB����6 @�7�@
�~���D�����9h j&�b�:�k�K
�.�a|�p�Mzd�:I��� T(.� 	�Ĭ�w	�ڮ�� l���9A��:KP'4`D.ܠx�)
����$�@�&��"��G{8���tp���HK�W[�i�6�&@��3�c]�BX��ط��+$im���%o�;K�Czg[�)�O��&��;a N˹��@�X���;+|&�m�� ҘR���1�#����?�2���L������gd�sT��@���`� 
��T�6[`
~ ��~S8q|��č�4��Mb��l�Jy���D��P�3R�ޢr 8@����"�� r��!�d�˫�
���ۥ���[��Z&*�  �k@ ax �`X>�V�< ���`6�Q��N!@����<+��B`�@r#v���X�� ����dS.�!.uC��m�f�&4z!L�@�)��
�J�D &�bq ��C��	x@\\@c꠷i�p���QB�p�@q��B�
�yʗ=P(.���Ӂ�N��@�E'( �k�L@4`�Pi\��m`! �r�%��`XW,����ր���O���$�~@�gB��I��W� :@
:�
�4,����53d@���j��s?玬��d�E�@tX*D�Z��gBb�	�(*���$@��
!� L�N�xgBK�xz�幂B�
4��=`R4������q������ �^�9n�|��/� 0�`$� ޠ�ލ���
h!.'n�)n���#����j��T0�>rf��;�7�5&�8��_"&��>�k���
��B��!�>' ���1��g_+(`����!^��I�H`Ӎ��9��P ��Y2n�M��=:�Oۄ�ϊ@ƅ_!bH'HG�ݟ�3���
l��6�l���4�BU*�
MG�\��D�
9+�pZ� �J�,iC�;�2�ʕ,[�T) ��(8���0�2�СD�PP4�ҥL�:}
5�SGh :@�\�z�
6�رd˚=�6(�J]a@L
�ٽ�7�޽|����<#�*hPG0�(YD�}�QCI�v�'TD�:��ѤK�>�:2�Vv�:��ٴk۾�;��ݼ{�q@��B$�!g��B�-aI�R8��C��d2�|%>xʄpph��ԯ?>W6�8z�������`���Bpm�v^PE:
$!�޶� Q�|<��Hb���ZQA�.�c�2�Hc��E�d�,�U&5B.��0�R����INI%X'R�A]�CU~	f�b�IfP1H�^Y*Њ�n��΃I��B�y��z��@�TX�g���h���F$�U��hRf�^�@Bir5@��G%�YJ*�:���B)�B��
k���l��X�h��=�T��&��l�y� �
P1��NKm��^[�1���������%�(��ܸ��<����n�����zl���Y��Y�'?lc\�X4o�q�˨6��@~��o�	X`���Y�r��U�Q]�>�t�'���n�!�_�0�/9�KO
��Q�WD��^
v�{�jq�0�BW�SKL���r�u�,���@�ME��s�
x�`:@�cE@�`U8&��&��B5��_�[r.�ց`z�+
T�E�-�
�,b^��T�~��T�\�E�M% F$�O|�c�`W`���R@M���_[쀳Th�8��O�m\��Sh��)�h|����ď?��̠�B�h),`��̮)V�B���85(eE-z�����+���?B�aPR�[!2a@1a F�$��>�	���N0��p�<��?�T)!���e�1���0@C7p���5X"���PW�0L'��K��1�@�bp�
�q�t�� � &�b�"�
-��`0���<�� <, ��	�H*� C��b��~u�`����A�A
��E�d�l�+壁D�`z|
��&I�@.Y�J,�[x�2  (h��l�o�8$�--^�J�*x�%�Y�hAH�{
p�4����l�;�"�ChmqÅ
8�7�tBm��(f�vx�S2%$R1u�E�����B�`��OR��N_�D?
R�X4j�OL� 	��,8'��)�a�R	�pot�w"�L�/]�[��|�Kp	x�	�u��t$�
u@7H�`�Ё` �{a@�!�$�A�i:�QU� T��j�Xz0��8PC*�*�)�3��*a����D�p��DI8S��u|f�h��"@c�1E��D����
b�@@Y�*J���
L�4��^oE#��	�ZX�
�՗��-�9zч�?���JO^��@�@I�5L�ZH�#�P�� ���&T�@����|��
L��Ѐ{��� �H�"&��)�
��!0<0� *�0��0j���2����4�õ(����@����%7@>#��+��B[,3`s=
���V�7p�	G@0�H��J��h� �a��9Cr�^/���:��(�v�X �=�&��Pb8B�m�,�%�u� Ad�K�C!!�!�C��Z��H��.Tp����lx�+gN�����\��	K	�B��Dq�X�I�؂
��5� 0�W`��&��	(�X��h�wՆ�6
8BL��.�5L"���!BB/]"���E0��@� ���gx �%�H�F��Ѕ���Ť0���k�@@`#,��������s�YP����nN
�NU��l��t�4��I-n�D@�:@��P��(�J�Q 
��@�l@H��L(n'�"��לx0@"0���"�B%�p�>ؠKP�a�gS&$�U�!8�R���c������5vy@�44���L����o���DŽ�	��:� �*�fI�@	>��u� ��πZ�$'�?�"�2���O@6��'��=��
�������������+@@m�N�pO��`
�4oRr@�F0e������=G�p�4�b0*@Z i�c0�C�*0b�k�0�>�U"�%�1 .P	+����02p@7+3�A��0��e�!P�M�?�GGq+�P�X�l�E��Py(��.�,�9�r���.�X',@/0!p�p~�����!j�H.�"u�d�a)�Q�qy`SQ�+@�F�
9�WS�o�J�!��	�Re[�s�9�P�p�A
�p3�4#p��W]�����tsPc�`�	� `	���Ra�wP!ix�	��8�k y�@	��5� ;�3 \$���	L�Fʆ���p�P��6&�P!���~0	}�i��87P	����G0L@(�@p7�$���E-.�(u@sC�a�U6�,!��Q���Q,Gpf�1��1O�0)E<��8
[��h �r���.  	��10.�?PN,!J'P��`p[�ri�k�j�"/ 	��C�xxD�e���%'�Z�	[�l�@��7 �%/�s�/"_CIV@�a�,��0R���r��n@�(o�1W��u�%c�I���4���Q>S�`��LI'�&Tۙ;����	{@v?a�'™�0
�pt�Z���nP��+q �ia��OJ�չ�BKy�b"��P�7b�JiA�`"��r��C�b��"`�(E�2��8
�Azg�C6�B&�	�s�N�kЌ]A@Mj�C2�Pe�y���Bz(��(\10�dʦl�#D�&�P�q� ��LQ/c�}* �t��c��Ѧ��"Q1`�
��Z�T���i~�|��
PSLq󦩡���	�`.���"�3��O5SЪ������p���j����J�αK�G�
ur'G�/�'N~�j�@�F����)��J�	�S�Q`�ۊ�h!��Ú�,1,�r,�J#��,`Qd�@��Z��@�n�.i��{ym,��
+
Py��
ï2"1C���˱U�[?�	���J"p3iQ��/���k ��
5Xֱnb5X��֓�AI�ͩ�o��	0�Pys-˴S�� 	�諔c9B�'���J0Dq�\k�������E�n�<���u�X�-�l�J=@{�p�=�c6#����:#��%~0v�P�L�s? |
�/�i�^J���o�A��W\�������/k&����)ѩ^a0RU�LKe�.��L�#Pz*f��10DN@��;�xP�����ۻ�b@����0HyPHΫ��H`!H�+�ՒH�Y`����L;�]�#��0�!��\��4��QLpLc1�#����"z�=#��E�s(��[���7��l���p2P��O�PO
�PŵuQ]���'  {>��Ւ�;�5J�j«�iE07�	�p�P�.L��L1{��*�P
|�
0�m��W�W�5X�uX��X���td��8�;W��ċ�0���k�d� ��$��^�"���Qq+�P������	x�¦|UF�8�'Z�\�l[��-vI��*$PI���d� ʬL�1�;%-e��v��%�M"�@C��0D�YP
���$���]��ƌ�������bp�p
��-�pǁ?�0��+�������QZ��vj�p<�e�,z&xG��"Jp���/0�`	��*�'@�fG����
)�-�+�5f�OvqV��,��M��ҷ9]��Q�L-�{.!1��ź1�SM�9r�E�ս��XM�P�`ݧ���C�L{>H��m�(���i=�+רz�p�u=��n��6��z]�?(�~*�Pl\�[3
٠�Ë
��D�+��`՗m���
ڻ�W ��ݰ�Ц���z�ڽ�,H���Mۦ1�tP���`ٺ��`о�/��[�ɭG �Hܵ�t4�}�p��ܸ7��	0�ٍ�n01� 0Ry�L(�(��׍

޻��C1m �p8��pY��B"�0�����a���8S�Kg�|��e:=�����qOD��2gՠ���,�]M��������)y��������3��g�F�N�L�]�Ӹ��m���"��v����!n�c��
��Y��
g\<��<n�l�r�[Pi��<@l�	�.��0(�|J�w ~	p�N!w�w�G�?�p4\��/���}W	�v�����8��v9�E!<�ZP`����w`�0Dp,�+� V�������	@j.!�`7r0�̂3��v��&0�?X�.�B�
pZ����y0e�gcC�V��T�9a��P����@0��qp�a��
������������V4�l}�{1�m���0І P�>%�k���P%��v�k��CO�Eo�v@�`��G�Qpc461��Y���CpcF,�_�1��z6�^�$�5	Z 	�@7�	�PSD0
� 
w��}�	S�	���O��?��`
��P��
�
�0����	��C�5Pl� ���@�����@,�a��I�=��g�<Pڷ�<@�b�p�p�F`Y�xc�@c'��P@

�KN@�!���e
�'�0��
��	���<�-��x �
0�2�
`ӌ-P�Ҧ��t��+"NZ~lHQ�D�-^Ę�2�,*���3ʰ�B�h�S�L�5m�ęS�N�=}�T�P�E��)
�jr��U�T�U�^ŚU�V�]�~�*B
�BB �ț8L�Zi$X�u�����QpH@X�`…
F�X�b�0����>�l�h�YsLE�Tb��@��
H��fП#SD�����f�BC��҃N�\�p�ōG�sD�J�>�]�t�TETaZ%C���0��Du��͟�:B
�/[���_�|��(�1�+V ��,�@!8#@�cQ�ɡ'�I�(B�^��C?1D�X���C1EW�.C��
+�z�Eoı<"�b@D2H!k"@�H�e�!�,��0`2ʞB�$�Ѥ�2K-�\l΀!G1�$�L3�D3Mt.�����3N9猉��p:��Ϡ�A�$�PC)d�RP�QG�4RI��$84SM7լ���%NG%�P����RWe�՜���Ig��V[o�U��$P�U_6�`��E6YA��e����@�!Wk��6[mm�'�6\q���%7]u�@	ׅ7�2�t[{��7_}�j�*�8��4��F- .a�.�^���b�/���c��"N*��d�5�Wf��0c�g������e�w����(�g�@���F�� ��f���:�d����.9�
��k��=ܯ��x�/Ô:m���6f#;�)�`�H�ƛ�	���aJ�m�'�L�z�P�o�����aqɳl|rˣ��
�s�ͳ`F.'Y*$X�(�u �t=vN��>�=wݿ¢-4"�=xN��`,>��`�h域��ؽz�w��;;d��{B
�Wr��(8�@���R���z����}��d`�Khq�8��
p�(�~�~���``, Ġ�@�I,"�<
��7�Є��DA�0m���N8��8 6�
u8��S;bfv�шQCx�D&6���D��,H �SĢP�ы_�Y+��,��'��XgF6���jcob,�w���0�я3�:�GBRd(d"12'�y�d$�E;"(Ғ�� ���K�q%��%��
I�Ҕ���NR�|H+�xQ�2�S��)u�K1az�l%�K`�p,�%�(�ҙ�$O���d*�-�D�	�\p��d��9Nr~�
��7m�)?@I���@�	L	�aQ��g>#+��3�`�
����E�-f
Є�ӡ��إ:�8@����(0Ќ�CEA!x��EiE���tg
��Ke*�4
hiN���DAl3�E���4AM�p�8�(� $��,�8�*� �U���(�*��<Hb p@��T�� ��0� KaJ�@L��v��tj���	
�		l���1�RhR4�0�
OD?C�B���x����Q�'�A����8`�@u
����R0����?-�4I��
��4t �v�ύ�(��!�����12�� ��\b����Y��^���@J.�l��hi| СG����Ġr�!�j��"��*F��E�A&��oػ�U 6h����F��
p��6
pC3��	h��@��RX�J��G�? ���d��b*0(�Wv@Z��Q	`_�P
b��MJ{�
��=�A((�D$��Z �	$0_#���~b�x5��`^�V�gF7:K����0._���U>��V���!���A�
�8:�(���9v��;)�LY�8�E<PN�Z��n�]]v�X5�0�i��
�Ux,�xRx�I�H�PY�T �?�.0�P�`7�B
0�\��
�/�"�:T$@@�	*`� X��͘@��":A0t��
8��ǀ9����`���E�)x��J�o�U'Hu���:o��q	Y
W��eI����*^2��A��P���w��v�z��>��/��gg����"G�Dx�$`#؀&�H��%.`��4��
p@��@<�x��@�7e�� lDPi�ǀ�X�2�9s��<-�.
�P@,0�[,Adm�T��w@k`�Ý(]BV���d��d
l �p�
3��N�\�6�Ͼ�oA��B�C%<��@�Ta�]��,���� �(X�C�3X3�e7�����
� G�h���Q�
0��r+�.�x$���!��18�h9���h�H���,�s�[.�97�9�R��(�A(1`����<�@�P��J���3
6������ڀ�k�
>�P2��X�,�
`�?�	-x��;�����Ê0%�ɓ�x1��x@�a��P�D�)�5��؃2p�����=��
ػ��
$k*㛀
�D89
㓀��h	
 �P�H��3>F��pF~�	x�
p�J���K>7d�ECI%+ȊH!�I�x�&�(���<���P�`��ʂB���b
(��� EA�;LЈ
Ȃ�`�VP�!@�xβ���hGЃB!\�o�9��@�p�R����9���x��p��`�;P�˂��s�
����$��b�H�,���P��C�P��dp��=X��	��`�5���P���n*6��7L����H=x�Ђ4�:@��
@��t��t����� �K��[�44<��jl	�xc��
`�,
x�?����H�PЄ����L�0h͌P0Lu�X<��$SDZ���@�9����4h�'X5h��l���Yဥ8������s7�'���4�	���P�'�x�&�/Pu��܁@��P�HAc
/� �I�P����-��())�n���%x����+'�+'�w�n��t�]Ѕ;ȁ�X,�=��"<�I�H�0��)�D��0��p� =p�8��ɋˣ�X.� >P��;DƘ�������^�1-�3�+� &8��p/�24��`�����HD�Ӏ=�XE�����6�
@�Q�f#lY��C�w�,
�O��
8��ٛ x�h60�ŌH��0�+I��.Q!��`: �
!s��hE�j�.���.@�(�@ň�#��[GH(%p���:��	��E
���š�?(Չ@�@�(��
h��x��uEy�%�`�X�	
��p���D9\R�ـȰ<
��J���BD��
,!k @�	��$����U˃��!+����
��� �'CX4�IU��
��f�c����-���_ŋ�*V�xGP@.�U�.�c�����זpl͉��"��EP��S�L Mh�JP�2�|�Z�2�H��%1�h�pX����2�> �B�����9��\X�,�ڝ1���'��V0ک@�$(_��(97�H��������挾�=� P�+�!h�$pH��
��4�%J��	������!,�p8��%���5��:-�F��?�HF(�"�
�� !��RxW����V��[��T0ީ����P������.�U�YE��]	H!$X�ƑH"p���{����ڡ����,âx,���A
z=���j�ћM����yW��]�ڠ��{`#6��X�Ȁ��X'& _xT+F/!(W�������x�p4���K��.�_͐�.�b�]���\��b�{:`����@Vd��U����[Z���Μ��Iޟ����	0:�	���Ȁ�+���`oYd�+�`����X�e���BN� EPؓ�K�		`�:�#�H�e�y��`=�b�
��]N��6H�	��o6g�)��$��h�E��7�	
0%��N?��
��hf��jN;�^�V���]8g2"���(x�~_j�:�Z��������j�!̞�5�h���P)h,/2ݝ��U.g�.��`F꣮���(-	���1��e�@#I�
�6��N$�n�8c�����`��%(���Aj�"�`$ ���k�I� 0�������̀����N �� l�88�	
��Ez��bH"$�g�P�	��ƋP���D�Ԧ��M.l��	��4�։
h�D��2Qĉ`���I�a��Oq��~����XQm� ��ډ�������p�0n�D`�x����	0�J@�ș0��
Ё���E��� ]��i�Ί=�h�� ���v��4�VPR�`��D�QB�"Ц�n�o�	�=H���9g�S��0�-@U8�c���ڿ�x�Ц��2��(\�����P�a���A�j�؀=��'��C�Yj�Ƀ�0"�/�q���
��Z �5��I����Zr�hB�3o�i>ꅉ��2�r�����0j�� ��	0�-�f��3�Z�X�H��H����(��B`�~��������	���t�!@8�آ1�褛����t�0�.0�`Gv4�V��k��Q�u��;�; �/��#ǀ�XG�j8���𖛰�{J�����p�4o�z7���ru��C_������D0r�������
�	����e8���w��?�x���W��� ���G`�K��x&�
�g����g�X�:O�]!�s��&XY���@y����z���
�O���4���Aw�(,�_)��"'kBH���y'w�r�e/yXψ?�z���	��8�(8��'|���J�@�M���!�0��	 �8��=���{��Q���	`.�+�U��	���¿�$�2C�i֧��x�����1�D�X�t��?��s;�6���Я	Gg
!���x�ǚ��گ���G�����G�Whn�?��PX¡1�E�"���N��?*�`CK��"L�p!ÆB�(q"Ŋ/b̨q#ǎ?�)�Fި`%�+0��)s&͚6o�̩s'Ϟ>�d�fe�! � t)ӦN�B�*u�������	�T��
+v,ٲfϢM���@@R�B� 72dͫw�F>|01q @F-Z�M�x1��?�(��(8άy3�Ξ?���Ȇ� H��GI�¦z�Jh\��W�޾��i������#8��ΟC�.�7�0���E"����J�
}:��ӨR�V�*��ϔ-bL��R5L$`�G�D~"��Eeh @bp�
RX��b�a^���fb0aLg���H�2�4��
���Zj<4�����bro� g�@�CY�Ȑ"RAA�OB��SR�\��QA�$�%_H�	}$�C
#h��5��Y��z1q‡#Ah�w������a�2��x1�s�C�����P���R�Br{��ˁ�������R?�����"�2�48��H�(�F,�H
5�쳀���:��P�xf�	)용��z�#�^������� �
��m��X
��)+���>4���Į�y�Oܱ����+U1k�PAr4�
d��$� �C<�(��!�?[A%��Q���K3ݴD14�E��B pCot�u�j@�u8��VST*!�]��0��ж�w㝷OY���h���v0Ѐ�e+������
r��t �t0�>,�E'��#b�����H�댩P�Ukt
����W(|��A���W ����kU��H4A���S_��3��8�}b���}ޓ?Q
�0<G$����� i�����B
3�,b"#x`�Be
8��� 0��`o��&��l�۠B�t+�@��Db��`���p��y�N����u����
@�9$��A��,�" �6@�'�dU�L&�P�"��, '/��:�+!- 
DPJ���h�"�P�rd ���Gy=���6ECdA��#��k��#8�`/*Oȩ���bt��%)mbt��h>��l��rV�@8�*�O�A�Gp�5�2�ʼ�J�'sI`y���,�a�6hQ��M#�bD�/�@�������!���"��TP�U�a%v��b#�3����@j�*0�yd	��8��O3.P�(�"�
� �:��� @�PB`��D�"�� �,3C��Ġ��#�b��ԧ^����Vp��Ak�B�~�Kx�H�"�@HK	V�#���X���
@a5����Ox�>����j"6����@����� ��H���b���z0��,D�` �	�*0����U�bT
��*V���@R�Vd�
*��`�%\�20A]��@,!ZЁ��A87��=�@���nf���0
l�h�D~�v��Q�
�f�!_�8v ��S�Y�H`	�Z`$��l����Ndbz&	Ȁ)��(�
��J�F%(�x@�d�݌����hH�$�<A�0�e�L��~��j�1��v�l��X��P _*m��L���,L)QX�5�i��ѻ6���s� z8��?�/8RG�X��	n� 52�f��\UGu�
:y!�š޴�&�_t�8A�(��
����u1$�`�X�&���=�	2����p�Z�&�"r:�D&1��":�DpBЁ"po��h����m�����Kk��U��6h0A�( ��Ȣi"@=�L�p�
�������c
���j��@�@�x����"�
4���8Z�
X`��	~����(�D 1�- AF��h`[P��� ��
:����#Ĩd��r�_��i"�+���L!{��%E�<4=�b�'ð
`��E���#0nB	��A&�	�S(�h@^ ��B_;���X1���,@��x�WR(#/�S��H���D��`�_=��?'�/���+"�D �`�"H�}@�"Z���D��&d�����R��c�!���ER���a�M��A �U��_�o���%���)�
H�a���9��A
0��'$�! ���Z<�#���$ B&���!�@@@��*i���� 
_�籟TI�`�(�1���`Y(�T�<�BD̎��@
��D���� T��]]j�E��_�Z�a@������I�!TB�_ �;�E�/�a�`r�t�B�"b"�2@(F�%�� Uʫ�@�m@b:0�X&�b!E��b8�J�"�D�D)

�����VD�')�+�b"��eE��D]�4�,�	0A*4.���1c6ސ$4�f(5��/��*h#��U�d�'F�f�8����ud�@�'����c~@H	��A��0��`�������D�O �����(Ḷ�L�)�Ȉ~�$�M�@F�R|dL�^�#H�T��^��A
d�MV���	@�@�Q"�x�8�$@���v
�D����B@$P�W��	��5���L΄��5�օ�&�J���H[-��Ԇ!H����@���j`dg�p�Q�\F�M ��d���H�`�N�_	B
@���<h��9$@l�V���K8��E��� el=�<�P�Vڞ<�lN�S�_�@BLBߙ�	�$B#�T]��@���v��$H��e���["H��A ��s���H$c0�A����Bx$Ud�
�:��t�DlxN�@8pH��g�J/��D,�)�(@B~h]b�$�$�$~D\@x�X��ĨD��fE\$�hb��pg�6
�
u�x����?u����������p|�D����A�E�
�^y�B�M�ؗ��p����=���G���,�$��;:�X��(�HP>D�Q�a�D��I:H�F�@I�	XB��#�QGp�u̩L��J�cgD��LL		�dC�W\�#�� �UR
&�DDN��݀H�D��:+1Ѿq��+��H���<@(i�(�	�hC�E	g�T!�%�Dh	(�G$���ګ�X�v��S<�L�(�H���e�X@�P�Bd]�y����YB(\jb�"��k��V��HD@i6F@d^@�iӴҟ�T<*��
���h��A!L�+<�!T�!Nj�$D�*���@%�@�Z�����D>!�b`�L���J�i��%��fŻ�բ��H@M>�F�^�N�	�@�j+a��r%P
cP����k�I��7@ݤ-:�����
VA�E���f(^A�岊�(~���	p�H��m�@�vd�D��nh� �[H�����"<=L`.S��dFD�o�B�
@�.G����������`�Rq� $���n�*�
���E�U<�m�vC^<�{*�Rd�#]&c �@���sІ�v�-w€HiG@��28�b�� ��S�GA`�̎Dk�d��3�Ų��69N�f�,	��Y����bX��v�@��7�Ra?��E@�
L�#�D�@"�@�oG������JX�^��0S G}:�p�l�OE��f�!��D
 �H��	pn/DHgj���4����r� ��mF-h�Z�]Lb������Mg���T@r&����8�g*$TB6����eE� �qC�@@m^��'���2��
���iYE��d�D-8��5�&�!�)h��׭3O�J<�<��	�%0n�@�DD��A./!��9oD�h%��33P���iUHtCߨ��J�xF�B5�����d��s̀��J\A�@���0tp��*�&�����4t�~��c�<�/(���@!l�&cP@	̀v���5r�@�](@@����sfȀ&\4���!h�2Z�!0O�XB ��$b���2L���"6T,~��#�G�D�f	��\@*��
.��m/�Z��4D�A��*_�E
T��G��^��@�
�SS���.\tm,�
�0*� ��!��' �������tUW�yI#��wu��X	�#\�&|�|+_��Ll�@|��,���$x�"D�T{D,�'�Y0��@�4������H��%�%�!���u�L�\R�@PA�4�'�DrxA�S�n,�S!�zچ
Hf�(A+��9��@���H�M@Ca����Ə� �%Ԁ�1�7�PB�*���d�8@	�@�&�A&LBhB6`h�x%�"�\`��	x@<�8B@����B!yO!�*,�d�?o��h
�A
�4Lby��%d�%B%A @�8��-��yAiK���3�BB/$2�:0ë/ë�:) �.̂*�伨��Rs!���M@,��b����j�$������v+H�B(�d�'d�O�<�	x@�?�0(%,�+�45	��$@��	�V�45{��P�@@���}(BS��,�u���	L@�k*�|y������C�wO�'�)f�/$��M@d�tmā0���4����t�
d,�'�h@lB��}g�@n#�@�9�P���Ts�u���L���#�B'�"�|�n@�@#��-|�!pB�A���+��#}C�.P|�H*\���@0/��c��)�‹���8	��ĻE��[adMthb�$C6-AAj५�Hִ�-�.,d��,t@w���T
����%��g���"��A|@�3�\�T!�,B�rTqB��@ @��A&�@��-�"��@���@�`��F�R�4M:�#Ő2bZ����
H��cG�A�9�dI�'Q�T��eK�/aƔ9���	p@y��gO�?�:�hQ�G�&U��iS�<]`�fU�W�fՊ��_����lY�gѦU�2�$@А�Lj$ZbQ�B-b�@Ã���U�R�
G�<k��K-,h���sZm<8��%2��A�
!"d�p1$M% �]Z��I�>�z4�ӨR��'G��Ք%}�G�}I�U����ixM}pLBt�H"?xxX�3��H��!Ć�Jx� !��.�@��,�LP&�㇧ �P�	)��B���
9���AQ�I,1&
 ��Y�FD���i���q�Q��raD�P�!�,�H	��%�l��'C�B�)��A�
��R�,�B�/�*C��3�L���� ����5�D��8R�=���H=���:	-��C�y���8E4F��ғ@��.���OG��
J��������.Vm� U&$@��]y��ף�@
[a�V}�U4X *��VZi�h�Y!:P��-����oid��Xo@�L�\h��@�A��H�!
A)��A�TP��.�c�C��c���K��8P�N'���
x@�@Y��c�h�[pA� �Y)BM� �
 ����x�� �
��f���ڀ�b���.�g�!�i8A?AD�H�P��S�A�2��)��A�
%�
+�DÇ��€�.�X`�ë\@� d�z�� �_)��r?���H+."�֔V���&�<�\���<��v5�z2���50��z�&VP��@��E")-�Pb� A�|I��T#�B
��N`Ij��\\�$>�  u�̵��t�<����@*0�
d�LH��P����1�P��E�4����	L�g$D ��r���P2
8�F@��R"d-+�]0���
R�C�\���aJQ�B���DaJPHY��;���]�b���
5i[����*�_t�O$p�0�J*_p�
>�4�
Ux���#����P�"A��΀v��C�T�0���
�¡V��As2�X�D�
�!H(p���(Â>�B�x(Cp����: ���0�F(�4���1�'p�	�-oq@xƁ�F8� ����1�CV�9,S+
������� *��n��l�ɘB��t�Cߘ�;�H@#��n�)7�”����hD�B@���ad!��4�KNim��R���ځ�%�.���P�av�nph���@#�D%,"��B  ̖�lw�
@0�9��5��T�[�Q�6
L��Uh�0�%Δ%�9]@h��@@�=hay8x�J�"��<��<P���k�K�B�KV!
#��Z��`@]��B���m�H\~HR��0��.WB,��T���A�B줲�*�̅�
^'��)ɀ���(!��Z&տ!�����&�Q�
��I
@��T2���� �^�8P�
�W2(@[!��:X$H@	80ؒ�e�0�=�8BX�u1R�:�&�%h�b�X(�@y�/H�
B��#�3H%*"�|��)�!.@2�s�*�]���bl�f�p2��M�Bk�fI����t��	(�.@�j��d���y&��M��D	�Y:�9\��ʊ
Њ+o�'�L�JN����:�E�A�v���P�',�%#hÍ��-���<Ɂ�P<n�|&�;- +0���R�.$�I���B@X�&�k�@�����Y��0���| ���g$�*@*z}���(�
1�p.�
����=q��BH4G�4v@�xO2�(�#3��7%+�`+x���	"h��~@r�4�~E�a�sEX�@*�t=2xj��Ct"\�ŀ�#B�����_r'@ms v�)��b�9�`�ugJ�$(���}OA�pu�@��Y9�&d��T�(�� `��+����[K77���r�������b�}���J2�#F���JA��I�ܸ����_@�˔���RV@B�"�V�n��u,�xVB�O��&"0�� �Fs����pz8���鴄��=x���{�
K?��/&Z��D��.�pEb`���B"`�o-�8�3���/��H*X��
,���K�҂A�a0׮
d�$C�.�%��ޫ$`j��'9�|@�h�4��	aΆ���bd�W�
`B��	p G���
�+-� '�p
ׂٰ�%�
E�2!��  t�)�<�B��p&\��q��e�N-T@
���
����*���,Q�D@ʜ��"���Q1w����œ0��`H��pR (�$�^�
A��b�B�	2����H ��9,�`l�%"�����TQOL`nh
-��hZL�Z�БbeV�b���)"�	�`ӂ4��qQ+�`�	+��*��q$"� ��`"��`������|� G"f`
x`J@�C&`4�$9�
��.�V������Y���&+�f
�`�$l&�r(�(���S�*`%?�\����F�&`g>N�~@F�������'u��aP��%��X�)���  0&��|�(���"�|紐�|G*���` �"d� j����
��C�
�4Q��W%`�4��g�@`o�<@2!0�J$�:�V@��<@��-R�&��9cF`�!M��)5�����b�
<`�B���X&`�3=��H0msX�N���#D�2a$@	G��)?�n��b �~ �`�@R`�!��
�4A>�&��n�� 
��!�@2�,�֩D �-�3F���`4Gb�
��H�dX�^��`�HɤB��j$baG��I%$���6Q"�PF=bhAB��I2@n�(	DD���>@�%�K�\Ā��fJ�$
� M"`�hJ��V �d� 	L����8�O!5R�BJw�JK��3NC���1G�~���*S�"����` @$��T���V=�$>*$uH��Q;��T�U:@
�1�\E[bD��O~uZ���Nb�W;��,UK�"N��@r�|���`	a��^�@L _�U�@�@�@J!&���J @?��F�M�ub%��7IB	��Z+`(Mt�19�d���N�l0d%���B�I��`fqVM�##C��p�d#��+g�D��6i�WΌ$v�b
�d�e�vG�Ơj�6KaKB~$��)����I���vm��A�%�4d9!
��lw�> ��n��F#\G"�Ԗm�d,I��I��p7
���K�4��/qm�~�Ps=�C"���$�D
�(p�?7KV@�B�ta7�+SE�*���0�SD` `w��J@�su�WA�d����pc�	��F2����`P�p�`̠���4go@*�,v���FI��� �a;c{��b�f��@�a�L��DB@�u8��~�� 
j NX46��w/��Ăk�f1yE�@�@�w#����8���	��D* �(Ӕ@��dޠ��	l�VDD�A��R�VT�i�$� }���PVe[�-
 0Fj��d�0����3�GP@,a�@f���`6A�I��^�b@8(A\�N�؂}r`LG�:�``>@D�F@da�=y1�.&n�3ݮV�R�h�Q�-D"�
n���Ⱦ�
j�j�Bz 	�Ol�0�H�� �f�FZ��8�?.I�B%�DU�:���
ޠhaT�v�a�oA,@#�M>@6<X2`����N��^™8Ġ���>u1h�da�$�G܊`��5:+rtGb��0�"Z9�^b�� 	���H*��D$~�
��8��="p�h�` 
�����?�e^W��Z�4��Xb�JB�@^V����*?�B�4@H���k�.n�E���8D��`N�@x�
AP��|p2@���vD��D���.Ĝ2@r7z�kx�$��h�(��gj+8�*䠅���V�2�"‚X����A�
x��G$'J��<���q?^��x,���A^�wn�;�``n�@{$�/`��7$���X@
@x�~��4�+5 �̻3.�T��w��� 
@ �n���	y$
A	(AP`�6#" �(;��� :%$p

`��b�*O	~�p�r��ߠ����L��܀#X`��z��k�y2�
` �u��2Dz��$� .�2t	�$a@�5�C3�@��K���w2t�B����2��D�`~R��yD��B�0�ķ�0@>|�i�2�P@�K��
�*��h-��-P� R�B�PΠ=R����〠4J��`Ƞ�ͳ"I�`�I}�L��`z[^`Dj��q,�� 8L�т�,�d���3`
> ~M��|k��&AJ�k�>@���U�B�H@�x$T�]$�p
^!^���C�EU�Y�
��p`V��RLq�K��(��7+X�G�/���B@{t������S�0@4�ЦY�	����҃�j��~F��0��j*
�VJB��i�K��q^%�!���7"v� =�1M�^)�2�&�7
�>�_���`�[b�`� �'`��q��T�q` �edbR:7�ٞ#��V@���~$@���)�
�#�1�-�_u( ��`o��32��vJ`�1n�̼�$��~�A��P ��}�c��a�>��?���a�r0-'.��g��|�@A\$*��l?�'���$�=c?)b\�Q[����rb@[G�6 .J�P`5ƒ�|&�V��p���"��������a� �	H����*\8�A�.dH��d�0#Fl4�H�\�L���J�S�\ɲ�˗0����͛8s��ɳ�ϟ@�
J��ѣHo���C�J�J��իX�j�ʵ�ׯYg����t�$�A��I�������@l*�:4fЈ
(�U(�B�
0���G��4�8�9r�ƍ��dJ��R5X�8�!A�V8���װc˞M;�-R3|C���N������~�` 9LP$�	#,�-�\q���o��$���G X����/Rp�r������Ͽ(]��`�g�&��6���}	��3 Š+,P�t�	�h@C| 2����Ap������aA
��D��P��C���PF)�TVI� %q���D�AQ�Jt!P��6�!�9@��!��|:xO���i衈&���@?0Ax�"�oV� 	
	�X`�E#�3�Rb0F%-T��
�h嬴vA.L��e�Z�+�TNp�� ����D�(�8�E��M,A������E�,�.�����k��Сq@� �4@l:DB��d��
;�
r������ݿ�
e8�&�P�� �,���a�n�M�K�Dh� /:HQ-?b`S3���`���X>m��H�;A� g�i���$SI�\@���I�
^+T�l����l�M		wR$}�ڑp�[�!6�-x~xg�R �0��7�WY�pp�*��-25��,mi���%9x���1��Z'�@k�.��׎d�3<޳�M�0�D��E�'�a�dJ(/���'�n�q��(z��N�{L�]8�*��/���	�/���o����@Ä��@+ՋWt�0@D�����.0�̰�
Z���p&��`���B��d�$P �*�9��P��@.̡w�1d�����Ar-�{I��(X��P�	$ �DD\Q̢�� �I ��?�
h�>�]�Q�l�A���A�x̣_B6��68D��D	#O,!��RP�
^�fN�l��FZ������ Zڣ�>�Dž@��(�G�2`�9g)
p��Z�R�� ��~��� �J�vR2��t�\
����Ќfg�#P.-�o��H!�7ٷV�!P%L$ ���FP��@"��f
P-���������PKM�B��D`8p@�O�@	1�	VQ�@~���2��a�M�J�6�38���.
�kZ�
�N�a��
�ӢU^[@��	�����ౕ���(�	�ʾSL!⋉L0�r��h�R���D�
���0pԮୠ	�P��*Au�C�J��*�B�j��6�B
����`���*� xm}�@��q���M�rʞe	�����EHH[���Q�!{K���G�T�0P�C�"�M-�B��Q��+B)�P�n,c-v�K^�!Ե����^E]l��Bv�@�6n)�L�`���*��2���J�iyWs��W���\p�XЉ��Dp��$���DJ�z��_�4���d	%K<��E�./#�gL㝄!qv!�	R �Jx�,`�>��\��_{�~X�� �H����Ⳑ	5����#�'�Es�^�������Y�I���R�K>�Y� �q�$��R��y�ȳ����2&I�L����@���x�u��}��J{��A^��1�ȃ�It�焈7�ĂAZp��������I�| �,��>=���NN%$�M.	"�6
$�M�hb�^³����2�,�MJ�oGI�`�|������ƣ8A�Z��z��Q�)��
�V����0�Ox`�Y5N�DU�	�!Xū4�4`�eQ��P���\�=��hxu�K�D��Kp�;B�0Ήel�So)O�l�J$��.92C�n�'G��,iC����X�!��%mH����(�d"����3(�8p��Nw�	`[9�
B��d}�7�F�H�nA�,�M�	q��_��&B��ը��u�"p	D�
ȼV6 ���>�+�E�qY�BNL
	���e��n{�x@Y��7�p����C"Z����)��^w��ot{b�"���LT�-�����Ɔ�~�Q�	��~�`�	(� @��|�h�R$/�	��h$�)��WI�!�s2�o�1
0am��g�W�,< XRp���!
�&| p�u���h '�C�	��	�`�`�p
�@	7�b0` �w�#�2+�R�p	���X�	|�Q�# Q 3��@�g d�i9!]��;��,�w� X#��|ȇ� �W\Y�%/(2A i^0\*XX0/fHf$(Z`o�&��Pg+aЄ�Z�0��
��	��%� W�o@'�,\�r�	�P�Y8�0����� �D2�h�8567�(t�qiuPB�Q�"AS%K����:7�pLA~
�8�;aY t` SЈ�v�	�4CG4p�@�
"J�D8pz�B,�v�5��XPe )�Gp	����IX	p�'�������(��
��)e����k3PE�}p	9$P	�@i@��	8�30�
��9�xT���	+P5y���S ؇j�Ж�S0�~C#@B i�PA� Q�P'�p7�.*0(��3'j�B���Ж���2p
��Їu 7~x$
����)0�D�>�
� #Y�p,"����� n '41�f1= i)y�<E3���
�0MP
��`#L�0��XQ���	��
��C���!��y+i�@
 4����H5  -r�(����l#1@� 8�
��b�1)P�P~����5(*1P	}`	����8�Z�6��wJb0�pA�	�P��@�p (�����V��#A@�38�R��% LT�.���,�@&X" V�,���e�	����&d_6�U1n��p0s8�e��9T�0�
�ВX/�#�0p�<�5��A�R*%	 !P"�����${PZ	@�~��
����� c��A
:	�zajqb0�0�L�x�%��0	|0!�#��ʩ'@@ +p������=�	c�3�e -�'P���B@-^�}"O�7$�S�+nnٖI�1d�a+�>�I o ��h��T�"�2��l2�i���]���w��9p��&�D��>{8ePyF2�
� �� ��f{fk��n+�wff%1C0!�Pp@�� '���ke{p
��o�8�	*����w��)iq�V���@��v�'�t���
�0��al���	� Z�(�x�P�w0�^ ��!6(w�tR�[��CJ��	A!r�rl�R
P�2��A��%�>p)Up�i��7�	f���
y`D��DU\�6`y0�{�y�
 	��a�kdiQ�7��1� ��'�n�nP�
�	�e�r`	*�Z�	������p>@6�š�0��1(�J�D��	�&" |��`��Z��(�+
Y��p	c�b� ��:�T\#`U0�#�
aA�=��� ���P�IY+C�<�[ͳr��<��Apǜ\Йo�my�j	�`�F������(����n��Ж[Z���0
�P��D�
 �
�H,?	����q@r����- 2J8�X�x
��
D@	|P `tT�@/��12���pK���;|�w@��,z��'�1P��|��P�P
D
� t` Ͳ�& L�	x�	��
��[p�	Z0E:p0��"��*�25O�"���h��04���P�R�6`�%�0Pk���0w��,��Z*�A�	"����G`�S� 
v�0�'#��$�{5PL�� 9�c���~P�7�����1	�����=ڤ}
�P���	�p��+�	|`	)���.��0"�E�100(p��;\�G�u
k�'�3`G
 �}�؝� 3`@-`Z0��5��{�����������=��]�}������G�j��z��0�0�%�0�����0�0����G=�� ⩦���m�Ⱥ̇vб�.��m��+���L��)�D"��$w���y{
`�(�,P.�������	�pxP{p&�Ñ P��
�	� 
��	���	L$��J����\.䨕< H�|`@70�B^@\���]P��80S��=�+��i�)�6���..�3Ζ��!w�緔�|1P3�	��	�n�=�4Л
`(	c����iP1p�K���@��n�ܶT`�$ ���}�����w�
��|�E`�)��mS���0�k@2(��	+�[�	S�
��	��=0��LPZn_�)! 1�t����`�AP�p��r���#`% ��r�S�8��L��a��6��""�������M�R�
���Q,p�(P`�!M�A]-I�eL;�Y��j��T��(�֙���V�Kг:�6M�"`	�
����y ��	2p�p�$E�/��P��
Y7 e�p�	������o��l�|
�0HO8 �����|�p�kE��=���Y�6%	��P
��x���q�}�1o5(_��3
��p���=�L�6��	�j�D��A:�	.d���C�%N�B���v�@���G�!E�$Y��I�)U�4��@'�@P�YӦD	<:�8p���;9�$Z��Q�2lp�	� nN�Z��U�Y�n�ڕkD��T,E�i
؃�̉h�(���J�F���ک *5����/�J�H�1Q���e�
H
�j�%@(0��f� �XH��C8V�`ڶ�*
��@�'8<�p�q�ɕ3�@�H�O�d ��US�h̄��Mb�����Mh`
���ϧ~B���P�0‘*�hGR`�>T$Y�'*f�oB
+��18�J��XD��B`��6�@>��EB��E�@��*@��f�`G"e|�Vȡ
���ؠ��cD�xA�"��JMd	�-b���TsM6��<JXpΑ<�+*���#::
�Y�M�����QH#E*����!t .�ORPC���*�bDSUuU�.�@�>z��U�,p�����E�"h��9�@a�'�$��*�a���,XAD8ȑ*�6�P$���ܚ,�آ�Sz@w^z�b�D�Ԅ9p#!�
��)�6E��'�0xb�+B�+p�j!Lb��CY:0i�P�Uy���`�"�X�Q,��!�(��d��j�aȝ���`�cB4(�D�8�"*Y�.��z��ȅ9t�@���Z�~�9R ��mP���+� �X�n��34r�2�D�b�*D�q�S�` 2FP�r�`��b��s�`(�y� ,$�t֩��N���4,���u�:��Qi��s����;r�G)���X.�~�P~z�€_��~��H���BP$��^�̽��(S~��gH�7
„����Ũ��^�B��6
P��@FP���<f�+�A"d��ֵ ��LP��P��#�P
�p�3�	�	�p6�S����pD�C$b�8'�@�4d�D���������@�RS�b��Ql
�iȼaQ����A��k�c��xǑ��'D0#
`���_c@��
�j��d��.!
K� W�Ta�<fA�CWV�M�R���ཚJ����D*w��q*@�+myK��5p@�p��`��$fQ�煭�)(f3��̷�Ic���<�?P�^��,i�l@��$�e2�	Fh���d���@S�"!���8�g?���1%��bp��UgU(p*T���%�@���k��

�@+�q�GMzR��d���F�v���}.%�����T�;E������k>	R*J�	Wa���T�>u	����@�2�U
����u�EEJ�Q����BT��t�*��[�z�yZ�	�L���6�}MNdh�$����������2���ՈB@�%jV��%@���Jp���N�"H�q6�&� ���m#U�L��j2��̒���
�V�Z�FW�G\��[$8 )�,.������	�^�N���lz-�*D{�5��ΐ��2�o�[��
��Hh�
� �mп�(@�
��
�?|��L��w����bxbT�XŁc`8|W��3y�eƫ����;n�4��1$83W�$�	=�g�pd(GY_�2`�-�b�rU����]&��:���U�i; e&��aF\g<�A8@ ֬���8�����D �i���]/-�A}�M��=GP^@L#�fZ�ԣ&��R���P͕���䊉^}�T%�t,�%"@�:��HL��P@��f�Gމ__C�khD+���L��[!�����
�"
�u�A;4[���m&g,�[�zv΢�M�a��
�fo�[���D$�;p�t�o@��0�N�t�-��W`�O�Z�	q�*����"��W�+�J
,q�r\�����W���@��y�G�i�18�$Xn�2(�@��G�&�pL��{�����rf2��:�`�c�k|1!�d`��:U�i�aaJo{�)��`@��>=��2 ���w���W�q���I��4��խR�o����
�{�
pN9�����~z��l�k�-PP�~��W��p^��2��P �=�d�7�b�o~��9��Ԟ�DN��
\Q+0!�~��`(��W*X�bj������_���AV����H-�t@��� �3�����m���@���?I�/G�8��@T�('�&ԌH�=�>�;��"�;�khH��8��A�8�^ۊx���A$| ,x�&p��A��`�pA�2��?(�`����B��Ӣ�
HB�؀RY��
&5����#Ú@9��붴؀��C~�V(<(h@Ct�,���Ò��?��.�DO,�$r�G��+1(DG
��8���
���8�������Q�9IxJP�x�^t�h�~��6"$|��@-�h�O�FZ��b��xX, ��B���Mh�%pQY�wT�Y�D�1������l<�4(�#(�^�Ǫ`�=X}j
�\ȅ$J��,x?A%8C�#	��H��� j���9���	��H���
�,d,o��?؂;=X|T@	�:���Iɣs�\(�2��DJ̨��2�蒀%� �ZJ�(
}Lj@�- I�4� �2�'�ʮ�Ap�A(�"0�K��F��D�\���#h��ſ�
8�� 5�+XHSX�0���L@����� 0\XS`�:��D��;���X��8�8K��	8�� �!X�T��I�`�
�P�(,�1�G�Ū������ͨS�>N��
x'+8��i}�h�p(��	�)�N�ʫ<�M���	����+,�.Lp	?10?c$p���(�Hp��� �L�PM�8Q8��5
�/�G������Q=ؙH��T�8�+t�̃�R���ZQ�X-	@�H��mi�x�
�hI8TP^�@�(0��N��"$e�2�^3�6�
h�*8�� e�@��8
@���*8��	8�;+	\���	K�$"�T�i#5����8�ӫx�؀�\�eY���Rذ R��
�p���mBM�8 �2��]u�p�*聏�7�X�tx�hxBִTj�aX�`ݑWe�P�8��J�L�R=	�NQ�
x�@HO���&X�O�h��H�J���1l�@�l�����%��Z���� 4�j�X���{ZX
�R
 �%��B�B���2�b-��86𾕭��������Q��Y��+���H
@,P�t��E��2��FX�u�[���Z}Q`2��pү5�#�Pӱ�4R�m�HY�Ѵ}4ح�]3U``�[T���t[�M��:;���@���1:X��J�h�@�\�
�P�u�5���1�2��}����-����h��DU]
[��N׭120]�%
^��W�����1Ȁ�[�#�]�	�������M�
��W�(h^�	ӂW����L��t=�s?���3`__3ĥ_�2?�����2K�6��҅��O��4X=��DX�_n0%(`�5��i�����_��]��`T�X:��6�����H~�
S83�&җ��7��n���h�!64g������;9�$NE1[
(���H�1 ��PN�b֡�!8b2��x'�|=�O�'!pb:�>%JcG����0=��.�
<��{�c���D[E��z���؀�B�L �*�:��$�!�}�?3��ea0�Qh�4�aQ^�p�e�*�=�H!h��<p�N�#x�, �+�^\~4G~�P�@?��^f�16xm��?CX��p� ���H*�'��) ������=���ŎL0�����L�<��W�t8�ip� ���]��"�W+Q,�H�����e��68�i�~18��-�]ا� �7XH5 �!�Ӣ�-�<���78�8�؁7p{N�>��H�
X�'�`F��p\p�X�䔾�5q��� 6X��'��A8D����˰�@���&8\��>`W�ҚxU�J[��
��	H�~����:8��h�p&		��R����Ж\P�V�c��e�x;��o�Y �FЂ5��f�HX�3Ai�PEVWqEN �����v��(e�k�����'Rv��v��.���n�.3�r���'h]
����� x�O$�%8�V.���J�PZ�u�jX�L���@`��n��EСr�[�����1Xp����E���*�Ϟ�a ��Q�h#��QHC�.X�q׍��R:H>��!`�Fl�(ip�#���Ν�,��t@���
���H��n!o��4�d��P�2fЊ�v�@����b�_�d��%h �L��*��̼#Ѕ�HA���Ȃ#@�Ls�5	�+B��bX��fɊ�KȁSt�@�z�V��p���t�������\�E�tF#��rF��LgvhGX7vjʆx%XK`�pU$(��>���)�R�wo=�
 W��	�wz�w�w�
�w~�
����z�u	��ns�n�8�i�v2��pC�����@�H�W�x�y�y�/y�?y�O�&
��
wh�W��	�
�1π�c�h��y�ׁ��1/x[�
8W}x�o��R�)X�����z`�L��z����d�z��x���vz�����=Ѐ�&1PI?�%@�R`V8�-H-�pa��@F�-��N�PX�1`�A`0
����r:�`y0
}��{��#��i�]0#X���#A}�d��@�0X]�%	��̼�h���z�O�3�L5��@�V}��r	(�h�H�?�U(:	؃��(������QEP�p��5 `��1xm)�I�+V�>Yq):&�L��!ƌ7rĨ��	*��CS�)�2���E
kP|�`�@:����'РB�-j�(ҤJ�2m��)ԨR�R�j�*Gw���J��ƒ-k�,ڴjײm�-\��p�
�X�BeѠ͂v�ե�q3n[��.��`E|7s��3�ТG�.m�	>���*Z66�8m�*Bx2�ƒ��
0P ��!�Ғb�S��tZD���V+�CIS(N3j�0!��׳o�=����Wp���n������?cEWW���|=�@DO�1D�p�Zx!:C(�ʃ`�� �!�8"�%���P��F�8�OȐ����
GAh�Be��'6�R
E\@#ih�I#�@C		\��]z�%�a�)TftG
`�&�m��VBt����yصKD��&���9�
T؅��(��:�hhl����!�)X@��"(„�U$�
5�����H��g�$��!�*+����k�*���Uz,��Z��i'U"��DW�$q��j�m�8r�mT,��{�pD����b�:: �r��%	�Ђ7h��
L /����k@P�K<1��]�A�{�1[��U$�@��"2�-�郙;�q��5�|s�8��2ΐb��:�ڑ��1��t�%
 B
-@p��Qk�5�	��U.�=v�`6�@$��6��`W�5�y�D�"{o�A@0�"�����3^��H�u�[~�P�ԍEܝ{�m`��9���đ死~y �Hi�~;�TY 
�;�K�B�~<��+�������K�k�0	,L�=�@)�
t?>�4*�髿>����Q>���Wx(!���w?1����Q�!��1��|`��R��TQ@�PhY�������(��S���PP$�
J(�f�'�-P@����X� 
-<"����@`"�w�� �Q�b�hB3,rqz8@�(�1�Q�I���F���H��(1h�r��ކ�d���~�#��౐yc�n
C2�W:H@##52�m��$&3��#���d���Q����>@�S��\�)4)�Y��c���]�JH�(x)L��I�<&�"�]Բ��|���$dRLЂ
����@|�扼�!@���<�bR�p�3D �$h��y�&Ƥ'>�ա����':
'0�=����2�3��*�Ϩ�(F3Z�@
��g�&��,pҕ�W@4*ә���&c)N���9��P0�E��)[�h�ԥ��`Q���x@z�*V���d��D��Ա��}�!��֟T��X�O)0�ҵ'�cY���݇uu�+F��J@������T�+d#+��(V�@�TZY�:`��eA��`ɒ�����<�Xua!P-8-Q��U�is�[(�5l@�1t�l��1�ܿ.A0��-t��C9b�p%�qY� ��e���]���++�.zӫ� ���Tu��#�b�����	|�z`�\/sj
0�Lp+/�M5�ɂ�3�ޯ ��Jc'Jta� �d���t
H�0�sہ�@A�,��00�Q,�ƌ��
�㕖W
1>�^y@�'�`�E�@	fP�J8y���LT �^�)���j9�	C!Yf!
�*^sQ�y�/�Y�0��	�@3�E�Dȡ%x��WzԹ�3Ac��D340�dDi(�@ x��7�N�:��`N�,�m
�CȂ_W���u;����4��>�km��6	d���`��i������K� 
���iX(7ܻ��1��n�R2m�6��p	���4����mH%��L�%l}3�l�[	�E,@��.q�f��/��H��_���8�����ܟ9@GD���*�4�r5�y(9��ϩ�`�\@	r����D�b�Y��;�8�7�P��$t@���`L��,E�u!h��Iȁ	���#���~�Y��m�ahp�ݽ��p�I�W����z�K��"�Ɖ�_gOCP���|�
Uɗ0"�9?��]�#�<"��ի�;@��;xf�>��s��Gx�?����ܝ{Nq�~�$0[��
��>c`
�!P @\?w�u�=X�K�������Ap�MV?���|�P
���9��߃��D��$�	`�@��- �pR�a�"pF��U 	M���v��T.
Z���%4�Z�`
��O�y��	4�4�`�L�K�[RPyA�a�TT@O��������
F�)@c��fa\JP!
	���I����]��aYTA�Z�(��Aa�!�\�O�!�[��5�o�!@!��1��W����@=��@b]����h�i\�$��@��@�0A$�����y����D�vTPb9%�����l,4VeTFL���@mP�U(�|
�#�A&��-�,DCtA# ������Ā@�6�(A�t�%}L؀ u�4@ȉȀ0�#�aF�]�A ��	`�@�L��`�( c`������@��.�F|���w1�DLL#ip���0�4@C5���$P�̟Jz���],�-�X�G���}����O���9-$Ȁ�ԍ�1�$�]xA�G�
(CXv��F��\�X� =�T�P��@�f�Xz�_l�	�e�"Qp�7~����Ť�#��)t���T��4fVE�
�%)H�Z�%	��@"�
�������AW�A��f	@�l@$�\�T����T.@	��!N@8bgG@u�b'vj'N|���$B0�R�"l�� D�
�#,�����|�8�s��`B�xXl%�@̂3v�A=��Ԝ���@]��h�\P�3^�
^(Qq�@
�@	�'5��Mq��0�@TBsvD\�����A.8B�"(!OX@�Kx�hVI@�8�`��.(� ��W�@�/PRe<A8��T�L@4@L��e
5��A\���_=�8��D	X@�z�<@�H�$@N^��D�z:�`@�8�dg\g<�q`@T�BQ@g�r�`�`����L�\@�:�b��4�#H��i�.�,@3A4� Ĕ�h����v�$��B���@A�A�e����
�����dA,�,��@$�n��'�~|@	Lց���eJ�p�$N���N�d���	� ��@"|��/�Ѐ	8����a�jh+���"����K�Z�Q2֬��
@�a<�4m��uN�L-�N-x�h�T�v��V��q�@@ժ�|F�v*�2��P@Xhh)N,�-�ZlR�(&�	�"|�=���$��/�,A�������XG�.��
����`d�a�Ae䁡>���lȟ�V@�ip@��|fF�$��n���8K+%���	�_�I�������G!�`\o#�i:`poT]hG�@�B/ŀ@G�N��ΉT��
܍��a�_5���:�/�@�����@6fDT�d,
I����(@�'�ʭAY@
�VGB	��`��:ʌ}�
d�X���0R�d���d�z���E�	�1�E����d@
��"$$d�u��@���@d�(���D�O)�B��H�(�FX@l�#�t^/ױ��
��/@u}�9���d�GIU"��D@�=��E���ܬ�6��t@�.���+(?�t�h������qc	 �	�7jj�V�)S@g�@(w����-��gH,�
(��nO@�P����$P��$�!��l��1��2L����jT�������S���p��V��9��l�0x"	lheT�_E@�e�B�;��H���re�At���$���oWU���Z$��@,AT��㹒���A*��x�����KO�.��,@A��W�Y��jD4��x@kDh��i�jL��.P�H��B�1��D�p��Ft�������@�)	<�|��e�3�J����;;�9{�$����G�@Zp� �@O@
�KU�/��
d�[`�4/絽�M�� �j h�jk�`+��m�����S�Ui�xeH���%g�,�&t)犦�W��&�ۅ��-4@
 �^���6@�)TFx�^wP @�T��
(B!��BJ��%������W��7S�p�8@]{Ft>�����mp��+�x�j��U�hh���BåOv�8vp<�Ѿg�ڭ�]��ya���b�!��$��3YS�,�"�b�\�����wt����<�uZ�Ċ�ت���s�2l��gw2����`�@[8®m��_WD�
�o��@P�t�x7	�@�Oe����K���9�f����Be��A�������F��]�A�����@.l��@pAG+Kwr*���
lzU��t���4K�����?#dbgL�
A`v�����������E���(�th�,@eCt���<4��(�#P7T��8yl�`������Ln�WE��qT3���wa��P(@�C���R\�	�A�p����i��`@UEq<���V�8OX<�J�	���%4i	dvT��H�E@��oT\����;=�ƣ�^'��C�9'8��m�/�;K�{@ź�N��+�[l@�FD���c`��eW�|O���[$`���t��t����r��rDPLA[`�1�P�&�W�8�,A��KA!�Hή��Ϊ�|�@ZV�\F��[� ���`p�����`X�<�9i��	��Z���s���,��4����x�L��,�3^At���J Q��@D�i=3@�c�cJ�~s�L�l�U��A���+��'�(�#��	����X@�Q����t	4xaB�T��@�B�)V$(�…8���� LР��,lxp���3i�<���%�@�	h&(q��Dp�0�@R�S�V�zP@�
.ȼ���
����	��u�4��:8�����{�Jp@t�	��	�"$�ʈ“)W�|3�<i u�+�󼑜uj�.� y� Eߙ�H�A5����䱙.,rnj����M�=UF5sW����cF��ʾ˺u$R��x~���HP�CqXJ\?��a�����?3	����3�0���.�0$<�Hƈf�5,0F�X�k�7V�@����,��^ @E�0���*2`��F�(a��ꋂ,�
��€�
�	J�@� @
`�� �z J���XR"`H/'� ��a�C	�1d��
N�*����L��F;%�t�	|,�NJ���P�6�H�I8�5P��2K�q
'"�.�V��6�u�#j�#!��6�x�І<�� 3X��ೂBpL�@0<�?�0�1(^�� � 6�Wz���V��И�W-����uњ聋�S�ۂ
>87�}�.&���|��� @��]	P!�cH��	.l@��
�A��LH�>���\M� N� S�x ��q&(" �֨��Hǀ�-��>H ��� 4�@h��L!�`�x�6��e��ɀ�5���S���Ro� �P����`���jU��xLߎ7�@��d@(!�r#��>RT#��8���x�!&�?:x���t� "�)�A��8C�
a�m�#¶�r�(�`@���Ulw���2`%8��0�8m��5d ��;��!ħ�֐�P:�A��%*!�A`�~	�����	,H��4�\@0�
�` n	@J8�`�(۫(����UWUt 	�&ـy�l�+�È��4���0r0�7$Ze�ق�Xo�²�G���1T��s��6�Fu�7�\!^�O
*���ej�€9ZF���)�sy��|P1��
��$)������&$0��BVIShwP�c�p�<�N؀�X�:����P�,�0�]~E$ �T4�H�@�` ��$�����`����0���|`�(Ț���I�S����0�!h`<�x�$���D����S�Y���*osd�"P�!BMP��9T�����#o�Q�AH-�LȪ	���07�;X�DzP�(��A����ǴAy�R�
��0navB�j�ꬱ�(LP�x�`�MN�ϷPi�hE �O�',7�cZD��*L|D+T�Z0ä`�0A��K�S���
J0*3]@+	��dyLV��H�`��� Z�U��vp��ᡳ�����pXPmjJ.6Z���#�[�  �Rx��*����X����8b=p��q�۾	��T
�p-�=�Uon�@=\����F X�J3��U�4��+
r�O!(�}p�3�@H ,L`��=N���$>�C~D��H�UqU.@$2�e)�*�bX@%��'�����p�&e�AW@��g�z!d���
�L`+﬑�b��:, ���pA��UV�p`Tb�bY�{Sj�Ϙ�֘i�p�6~�P67I��&�p�E����t�	Z�8��B|@�����ĀHb1PJ
p�9� q��"h[O�$:�J����[���'�W�!�م�"���9$9ل��r�`���
K�va~�3��U,@@m'��@��5D��&��R�K5�I�߃qCm̸\	* �5?���S(@`2�
hp��4RN���n�����y�� `[x�(@Q�Sd�8���P�H
��`�iN|�g5�k
�]s��0�<���o<� �APFC�&؁ґ����郹ݛ�G�p��Y{q&��G�`&!��c�`��}�j��g�`��4���S���~�@jA{�-*ʫ�R��.t*B��_>u��D���b>�(���5��]ɞ�x�Ǩ��� };	���W1�N�y�
�d�:Bb	!x����0�b�A?� �|	�^}�_��O�(�y� ��B8mV���o*@j��uP��q�9Н/�
���j�
j�Y�l~��2��1� 6ҁ�`=�� �\@9��ȨF4���.�-(@��A�>@˼��L�J^�>�
r���, �JE�8иz����*��
�P�H�1tGSFB�N
��0l ��D�y��b "%���"4�����`��<����m�<�^� �p���"�yz���$eŒ
(�3Qy/d
�pR���gF��b �
J���"@�Nl�o�` �R��\`C��n/��/�.`��Nn< �Q���#f�K8�	^)�&N�-ba���<��Q6�4���iN�_e7�`M�5�1,&������
=^@V� R!���,^�b@�b`n���T�"m���ď* �`7�$O�T�"�(E�`!�hr��-¬�^2�2`4*=�(
�&(�J�PSV�%'~@m��,)%JL6@�1*�R+5��=HG
�2{F��" �r�

8NYdO-�R.ݧ����$�>�Z`+U�*��/�+< ���
�0�1DP��(��a�-�N03�f
d��!=�4O�c

(��r�.�/T�"�
K6J4 1gBho8��&8 V�NF 1�
5yE3�b7�a�9��zvj/0R :�S;3�	�K(����R8����*��<�� `7)��<�?��"� J�<l�1@g;�$�-��
t��
<��5V@A#TB3C8�B1b@�@?�"�`6�"N�;��Z�K��^@M�E�<�kd����&45T	ނ:�GK��-F9�Hq�s��R�|�C_�"`3)<@j
J��@1)@< K�4?!���F* �F��2�x~S**��T���*�%�O@��?�b,,�KL%�,��"�)Uqh f�"(��R3�6@R1EB��@
��O)c2�̮�d�JՔ�3U!2��Uou9o`���-:�J5� ���*�(X%��(��� Y��0/�
�BIW)c�l݂	q[+���⡨l\�5.[�x�*$�$�US)��@r""`�TZ!�``>sf>�_6)`
�u/�6�4�u08@9��9�6$V���ڬB 4Vd����@Vg�!2^��n�
6@_'b�	�U2�i�B `l�gMrE[�+�ԌF6�� �Σ��h�G��*�H]��j�q	Rj/. N~� &�'ґ/(�f`��6H���Ki��n�qt`e-�s� �D�j��=���jC�9�8`p7k�
¢�~0n1�r�fbeK@�5nS�	f.)$`NvsG��2��"��1�pd�10At�F��`
w*8�vw��:��&�m�Vp@|)vi�ʠ�t�B�s&���y��c���*挌v�4�N��xwC���b��}�W	#@ꤷ&
�f��'d�27 ��0��/�s��RU��X�m�"��u�v����/"�����;�c��t"��G��tUI�"+�ru~�SS����V����V*��[k��}������tp ��@S0�b�su~w*
;�����w�ts?��2,�� ah����b�ű�ʘ�}�
t�&$8�Nq��O�ER����1c��*�����h��"Z`���>RE��~r۸&< 
J``m���;Y���"j�x� ����v����QC�n��"�c���N�n&��`x y-�g�^=+x��X�1����^`Rg�cC~���"��v/�U'`����ٜ��fbg{��G`2�"(`�	���Ġ�k��`�����t&�t�9��b�,Z��1#ꚠ����/�DŽċ" ���I��� ܆.���'�_Z��,uH~_�x�� FJ.�3#s�@�
"1৏Z��-�Z�y�H@�
8�`�&~`Z HzJ 
�ت�ZSJ�
�� cG����*f�/��v@'�b�k����h�"6`̩�c��y� �Y����P��C�u�'[o�~H��*&���@p�z5�R�kU�O۔�.�>����X`�)BjѬ)� ��Z�о£����T�@�*"ko��a�	�������CW���Nm �����4
*""��
�B�"ȏ1�[!��D����`�[��D��"���wi@��<�-у�&�9&1n{ &��ӓ&Z�o�;��D�P7)�@�-\�B�[!8#��,� ) ^�W����<�
�; �%��{�@t&���a�R�cX�F\��f�"t�
Fx
�j��#�c�N��u� �ϼ`�O��\��	A~�J,�����T��Z*�"§�߂t�LB9l}G� '>n<Ǐ@ꀠF*S
���7�������±wB�Qql'=@�*�F��=I�խ�Z��	B���uX�" -�t�-E�4�/]���"
��`�5�	j�K������R!�tZ]�?�Y"��
��voGh�c�Oؑ�\U���p��=7
@�f"�`��BM��<�r a���#��%"H�7sʝ&\#�/u�@E��	��;�2D���j����t��>< 8\D=�	��k>!T`��0J�j�e�ic���1vT��J<^�)cgb$@Ah�6���^�� B\%|��m���@b�s�`���s� �bLO�'�j�w��^�M��i�T^��n-�j@�)"@��;:=�w�����-¬
B{]UwJތ+Z��UdP	tK���O*� .[Z�@��Q��;9@|�/'��@r>)@���� ƕ��u*�7�c�U�*>��>�@g ���_@��N�"���a
0Y�?�<A���_�ۿ�
d���<�0�…:|1�ā.�8##�ƍ;z���$K�<�2�ʕ,F�Ǚ4k�4�!-{��	4�СD�=��m�p�O98��5�֭\�z��B�j}���׵lۺ}7�ܙ�$�;S@�Z&�8��>�8�⬐FȄ{ĊN2�T$����.:��prd�ѤK�����,��`:��ٴk۾�)o/@h1f��
���*iI��h������a��DY¡����˛?���&�d�N���Q� �h�
�C(M���[J`C�>X�Qj;A�a�nȡ�.\��[�q��L�G��b\@2� Eh��{^)�!-�ȣt�Ab|B�F�d�JVW� ?��24`CVv�@�|1_��}�A����ED�`8���n��)`���K2�z��g�~�L�@��F$)$�C'��*0A&\
�]K��E��A�4�V4԰i��v%�
��Jk��޺)+�q�<��
j�����@,0l�|�����Z%H�m��~[�
I�Xl�'�-�P�"� C$th��$�`� �<%�x]@�K2�\`�[H%pī��g���		J�q�,W7d�xnQK-6��BJ$ܠ�0�t���6@�n���� _�t�N?MP�a1���H s�BD|r�,� �U�%�3��u��Er�a�r��w� �pI�"I�$�@�$�>(�^NN��d�aC
�J'>@
�h��0�RqA誯�:�2�t������h�!�@��l�P�t�"=H
XP��YPC~O_�8϶ @}����&�p�� H@�ݡ�Er<��N?P�`P�l����&���܎������<��
l�CQ�$���(��G��$�&@A�F��`���h@
 �c�!�o��1�v�| <<,��x��@�ަD��*�4/P�N�C���h�"I|����`ȁψ�4N��B������h�c�P��(8��ƀ�H@,�HDr(��D��r�/ٕ�@Sp����P�r�Z�>�7\E ���!����:pǏ}�j�%BF=
��,�1Ө�@፪2�t�#a�[�"��Lh����r�IR�| ��l�;y��Ih�h������HP
�����̯	3��%&����pi�E/���@	7���0��(�P�5(���A>��}Lp�9N@D�o�t S�
u�}B\��zN�>x��T���I �
B��nj`
��i��Y��-X	�[�E�H�aK�.!�5��+��&<1�%\��B�U�=��"*!`�$�+�����JL��4�0�Q�bZ�A��
);�k_�&����
|@l@���Kh��h�$&��Bxb�8D"8�9��48���H�M1X�7E�=
��x�>p�w�GbD!Ҁ�׈ #@a5g5�}qi���6�(&0N�
� y<���7���s�q�
XP�� ఉO<��{ЀRQ�C	�7�Ж�0���$6/�_��t0>�"��Ep��+@"@�a��d����"2Ȁ��,�?�㒀ݨ��ln�J�:0� ��D�#��%JL�Zuw
�dKJ��@+z�4�2AD ���U����"?p�T���%~Q�O
�( ѩ����m�	@�>�ZI�HC���L঻.��A�FD:�56�q�	��C��
���zC����Á`��.7ATY;{U���9B���#�@
��u��>@@�B4[�w,"�ʂ��r�I+��
�27n, �wx�Z,rT��3O��MF�l (�1g0A:XrM
p�P��'������Å?�rϏ����G�q$�}C-l���� ����K����:3h}��N0�t�\��^��!0�#��i�@�N{b ��`�_�i��x�z�����X�l�o����PQ�#eMgR7`T�͋��, �:*0��(@�%\
C��E$عp��6q�	耈ؼ�sс'����+x���QB�
�$dC���A7�1�O`R��	�`�6H�-��.�#�("�bWgAk�����M�r
�P`	5p	�<<d{cpYa��H�/���*�������Wx�V$���ԗ*�
���a
�+3�.���E�`r�A� 
�0�Q(��@���@um!`���/��ЅI�C
���@�G.�2�
8��9lh�F:K€P�{na�0���5*�~(���8X���@{7q���3���bx�	K�r���p0.pA��W�}`	l`w�qX��H�G����A	�t&60nA!�������@F^b
0��!�Y`���09��
��?�:��g��p�
Y�@U,�ӍZ"�F@����q_���`8M��rw(��evO�n,�P�W.�@io1p�8�6
0`C4Q0P}Q(@��:��6s�X0cpDP|�3	�0S�{P��n�5�ň��?Pk�ڠv��20[�`
Y��
98��d��]p���03�}?�#�8��1����W�ZU��f�u�,`�3?����?^�qT<U��0�4�V3��aP<Y5�0��`P�l!��4 .�x�8��w`���0x�+��0)t���W���0	��.v�m1% YI�1�1�
W#@+0f�0]A��y��y.�����5�(c
��j�c@oU�&�>���V=^3nך��ZWa𙩩
PP	�� $�YS�0��0p&�:04$�E��P�PtP	��VF
��@�80: =���34V�9\rv� N���I`Z�a���?������#�b�RVh%D�q:�jjY��'
�]u�i���#�������l�>hN��w$��pb�>�R)(��Y@�����7&�W���>rR�����  L�
����
Q��V+ �Jm-=�J:�@+�@�#0AP��%V�@�,"r��jQ��m�k�j$�)�&�JD=�4 ���2��P��#�*�	�FT 	>�	��r�?����=�ʫ)�7pw��[ &R�יɠUd_`� #.��'fS�!�] �3��V�o���$ˀ�YkQ���%��GP�*��	������	�@:ЕK"@< #Y�
n��<&�5�k 	��	Y����P-��p���L����7�r�C�<�&0��p
S�n�Up��5=��U�?(�@�I�qZ�ƴ P�`�$? ��RX0C�h���;B�~��zp�0���1P�@����~�������	���
�>p�0i�e l���[a;RM�	�1�J9-��=�'$��'ur3o(҆! `E;�����d�'�K���q#0�t� ��R�l��@dJR}01 3�`�z�z�����Wab����S1(�����,��d�'7�u��>p�z�{G$���m�F(��/�Č6S��� 7�	T�#"�	~P��H0 �T�ȶB�l�C`�4��q3���>@ƣ1]�q��T�nl��g�_�]#�t
ЊuG���	}
9L�N)0�e���F���l+@�D�	\B�[��:a��|�pI���M!T���l�{8p��x&3|+�����ˋE�	��#�RIJ�Z`�	M+/��9���9��C2R����F�����+�6`y�,]rI��Y
�?�,Ӭ�b����&�#0"	�
nP<�9Px@K�E����S���]�$Pˋ+u0�k�χI�

W�Z�%R`%�!i^\�3��P#���m�*��X�}c.�u4P*�=�����Kp+��Mbp)�m"@*����P
A0	70.��XPؕ�<4.��^mہ����b7���}��q\���-4� ��@���M=2��(01���{`�5 ހ�,:p'���ۢ=&0���",�;�-��`�
��"� �-�������Y}0����q,�N��A4��rA�.�9�
nd}N�ܢ%�kt����4��/N�A1p؀�
���{Y��d%n�~�J0�$	1�oA~���
�U��-��1f�;�A�,V.�}�c�'>����X�$`�	���s�>��:B�maS��a�N�c�@�.&��9�q^�~�gb��1�):P�4�-P�N�^!�aeK��:Q�]�Q�8P ����軮!8��A0�3�w*�ԯ^����k&��.�Ni.9��K��0�XA�.�?WaE��� r�u�A��`�H�.��3�� <�p��������������Cдhz���i�o��1�i�x	�Ǯ��{`	NT� 80�30��^�0����H��l���CQ�%R0@$�XQ ;K�Go_U�k���w$�N�HC��EP	��	K�
ڄ
@{�6���5�"����w��,����>��w�#�p �[!.€�?]D�#i�"��V��N�p�ya#�N@�N��k���.- �x!�j���v8\ҷ
o�+�����c����Da���	���x� o�"W@�u?�3A�n�9���璀����B��I��K�<��3&Ug�f�Dp~b a���İ�N�@���B�
>�Q�D�-^ĘQ�F�=~R�H�%M�|�A�-]pa�
/m�ęS�N�=}�4H���:���*x� �6<P ��
,( P�X�e���#ņ�e>��y����u��śW�^�}��|t�y=0��Iƍ?��
$�ɪ�c���Hp�j����h�EXΛ�daY�l���n���<f@\�p�ōG���Y�RH�a7m����f�Q�.8��{��p����I�@@�
��~��%B-Y�h!��`�C0Ad�A����g�6��0C�6��eZxp�
����V����3&QpD���-�֚X@�.P!��Tp�5���c�"�24�2J)���J+�3�%�@B��	���.//��4H����6p�+��3uz��t`���;<p��� �"����“D�h���x*�K�$�TSOE5U�R@�O�J���+g��;�f�U��35~S.��6�#�HA�(�h-�<���2��V ˆVp��
(����	��%h��%� �p��@h��^{��7_�nh׮J�RU��€�~P`N:	���|�.P�/�6؊��*�+�5��D�{W���0�`�(�X'����o�9g�w.�H8���Dзh��L��
f�U�J7n�!	�R��$���\  �zP#����Ӗp*ʠC'V��D��;o����12 �,
&0�gÁR9P8��P�˘���F.K�*ǭ�܃jbI�>�i�,��'N���g��v�C�d��������Y���06��h{I�b3/�5�v�� J��l)dh��
0��.���>}��g?�-�5��o�ߠ��&�r�o��.7��%��,P	Pl `B�n��'
`�AvЃcy ����ah�C!D`�j	
�Pj���x��`��0Ѕ[@Bd�<��/	g!ԐB*VъW4	��8$`
$���&�Gu�8�*���
��@U�`-�[R��(3+�8HB��@Ё���D�U��Њ�H 
p�炿�aK8���Tb��@�_�@����"8�r7<Җ�ĥ-d�/0$�>P��F%{�p�� c�������I$D���g8ʼn*�H��fޖK��m"����%���`�W�a߂p�n��6��,��!,��`�����hF5j��
f�@�8NU]@�1O0��=��cI�����n�ϗ`� 8P�"ّԨGE�e80��)��6ʾ��M���r�N*OA J)X�K��@0������&���p
]S�k^���[��,�A	�z�8��x��8�A�@�(�Z?��9H�)��$.�B#�P���/XAi�Zֶ�'����r�z�U}�q`�+��\nH�$�`�+>@
�A/i�f���υntE�=d{p��F0	�%�� 3�$��� ~@�L�CҠ�� q�����f׿�]�jpN����.��y��F
��G� C�=�2��C��b �q��ܖ�!X�qF�(�!#qNm�����=�A�*r�7�!h��<	.*b����ċ���\�@��$	�e2t.��<f�vT8�\�*dT�����e6�L�#_`1���ut�U5�d�H!4I�|���z�+o���+���6iNw�}�AC]6��T18�SӼ�#�ZU �_���K��շ�u�N��V�E؂��e>'�e�²��wa��2
�)�=mj���^�����\?�,�s]N��n��5YB$b��w���A���@�nQm+�����o��/�L��@p�7C�{�]]�[A(û�B���9{
dۗ��x�U~���@��.���E����`@�X&^^�yЅ~�^)/@�$V�|��`��o�{,0�� u�w}'*H�	�;f�C?N<�����x;n,3���w�;E@�5��ZЀ�ec&h�(��Ag*
d`�Ӏ|�x�/����r�3�8S8�]�I��˝V��]��
��oo��(����!�@��H�f�7�t@n�@{�D���x; b@�^v���C&���|X�{��/�KN�}�W�im@_P�4l��wC? T��`���ʗ�`���4�1���H'-)?�`�������ͳ��B���
�ぃ��?���@�`���l��?��.1�`��
���U�J�(�@��0n�b�+Y5��Z�$��炥&��M�A�h�4���	0���B���`��J�2��p
��8�������‹8."̋�]�C*�00�
h�(,�Fĥ#،%��p�H�8�	B����;LD0���>8�U��1�`��@�_�*G� �6��[̐���٘���
��cl������E�CV4�H���Q<i��"�?C����EPE�m4G�لD@�	(ǿ(3�@dD��y��ڋ.��`l����<�}$H}	�8�ؠ�x?��s��.�(�P:���
���p�h�Ȓ�@E(vDX�z�c|����)(�㠧��PFF�ɠ�`%#JC� ЂPp:P<(��16`�0I�@������B������%�H0:Ȇ�ȁFTF]����Jሢ.Hx+5�0{�˻d�5��<x��|Q�)�)��?@��sJA����HN������?��Ȫ�������O��#�`�8h� ��ژ��4�|��������L�v��
�7�*ΰ=�� ��	�Ij%8�(EO@�2|�C�B�v��EM��m�
�P�D��óOU��W�KH1T	IЄ��S�fq�@����l���*�{���'x���G=���.��O����{
Ѣ�a�K�H��ڌX��)x丁�$�:��h�1XEx�哄%��HK˸�D�5�Э<���HP�y�D�I8JH-/- ��I�D � ��=���(�B�`
����m�!Έ30%h�Im�T�j%(�#$���K
�e���4&��bp]@Q�x�		`�*(RR��`�$hJ����nٌ���$�X�,Y(�қ�7�&P�)�4H �H�A(6�F�`H�?(59=��[���6��F@�p��p9hTȄ?Ѐ
x�KX�3�a�O�S8�8��@-�ЄNȄ›
�T@�1�9����Y�d0Yd`��eg���0���n(��͐]	�&P�!�T݌8 #��иԥ�I]#030�0%ȁg͉�0�肨�Y
��3���,���p`ȂXڷE�#h�;0_ ���0P�
* 86��H�U(E`:��p\�LSÂ(�1 DU˼`��Qرtu
8��K�N0�x5��D��)h�1P0��t���S���U�M����tӜh� ��([(�=��F M8�?���W��ZL��b�(���q�R1����x�Z���p�Ȃ���^*���I��)5���E�
��D�"�=�`���*�^=�,h X�q
�
8X6h(1���H��-`I���A�G��p�:X�%�A���߼�C�A�
�8Rќ�06��4�P��Q8OP���p�3v\�&�?��BP7��K`��B8y��@>�I�1)�� h9��
H�od������A8M�J��@�N6`�X�Q�%8��`����2��λ�-��Z��Տ �P�a�e�k���:�7D���I�TP�@Ve�Pی9�3�x�i�D��z� �O�9`�h ٤89@�� �@�L�X��(Ё ��@��}n���8��8���p�>�S���g��Hx�B�&x
��P�@�X�"�����"h���F�?�\�ZL�����6h�m ��l٨Αk�]X{����f�0��
���R�î~��L�.P��f	zN0��0�ChH�p�����}D�IXX6�H�6�LXb9�^�4�6p�(�G��k����N�>`����g��
�*a��$�2�-�!8�6����qʓ�i�b�X�=�p�a`֢��kB�J��I���O�A`6؃2`�J�D8J�P�� xTx��MJh?�?`(�5���V��@�l��sJ��N�����NXiB���Q���UN��xl�<
��EC�(�x��J�N���m�x�X@p"P��"�ϰ�H�F$ �_ ��x.����	�:8�kڰ�P`���gx�8�
H���/��.߀(�0��n��p�Cr����ݔ;�P�I�E�Qh�MXGּ�ȁ�EJPH(�����6�	��G`"�0���d(�2"�/������%� m�8�;��:
@�W����2��,�et�0�8� ؄74�HЄL�,�X���7��6o��JSʳ����"��4�LX�@���H�C@<��@�Q4�u�X�@΀�Z�!�ٍ��n�Z�T�����u��.���,����SX_0Pڰ�+K��Ж�ґ/0�(�{��Հ`�K8�B��0=�5P"8�(�؀87$p���ׂ?��(����1p�?��CX�N�%h���PAK�` eS�DHA�-��@��j�Kh���k�j�vR��B��R��"xx����3�us�hZ%���оR``�Z#pJ�Է
Lƀ���J��͏Z�>��V�  P���=��;_�Q��K��5�8���=�O�%�H,��������}�x�LPz8����<��x�"�:��1��7m�RP�>8�H�2���0`�MP�B�X�U���!(>xpA�ąq#ǎ?�)r$ɒ&O�L�r%˖._Œi�^L�˩s'Ϟ>
*t(ѢF��"M�ti�ܐ)u*ժV��À��^�t�aٲs��M�v-[��ʒ�"֑W�2�F��w/߾~�ʤP �:� ��%���!j0i�B�&!:��S
9e��8�!��O�p�Ԯ_���I�b�έW@D�ACXb3��Hc�Xj�MDF���	�'JxV�ɡ�	:&Ο!���M�)������,�S�ͪR6Pi�$�� c@2e��Gk�`DX��m�qء��"L�@�0���+�آ�/�S]�X��7☣�;��o0�y�D*�����p@�SR� �Uri#o��p	H�h�	(��
1��E�!B
w�	.hѧ�Z0"$��Q������0�t� Ý5�@��
#�|�8`AG>P�hإ���+l@@0������ګ�S<E���[���"�,�|���ϢV�5T@��V�[�r�-�a���KB�ૺ��n�H��=�[���⛯��
��pH���X+��3ܰ���R\���W�����cw�AVYdr�h����"-8`��7��n$P�P@�����@`ܴ�O��
]��W���!�[5�Ss`�5������b���k���Ö�ܲ�[@���O����?l�\�¸��P���B�n�����H	�ޤS޺믣#�$���p��S�~g�=d�,ɪ�{���;��C_��9&H"r��������Q�����������_�n��S���(�@��0��X�~X�A���+8��,�	(�i�f�5�V�m�
IL����	L�ajh����vH*	��TZ:�� ����"
R�HR�	�f@p��Ж/�!
������|j\#�*��\m�A� �8�_$\���G��B�l�����`Gx��'��Y�_�p���D(
q��'���p�>(�KHD
"��8�����6 �@oj/{I����,pP`y~��HX�����(pl���#"�<@��1���B�	P���L���@��@�!h�
��L4�)(�&p� z�ZL�0��H���4�eoPdn&��#x%b��P�C��[�R^�<xX�����!k�ta� �x�p� �V`K�p��G���	�dIx�f�Hb��z���XE9pE0��!���L�wd�{`BzpP�"�PD���0!��M�%np
W����D"�0� � �=�R�5�M�]������= �ԡ檬$�L�
�N�vd�ږ8��D�$0����/2��S�`�JmX�ƺଫ��I8�ZL��Y�8�y�`�Z, �iف� �L��/�/}]��!�+C�.wђ�d�*�@}�d~C���t�rZA�W�4�1��d��:����c�z��҆�]�/8��A��5H�,l�9���H��B<�LZ`��x�TA	AЁ
0��x�	t�]��l��)@5���&�
�s4��[5}��8r.! $	�B�mH.�*ܙ��T�q+b�&Y *�
��v�.&*<�K�rI���!<���.��)�_Cp�������Q*�&�TY��J��]$C	��5�
0�,D!-q�
t�,�\��IA��T��jRB�!�y����1� �;ҝdP
��{�>PAl�C8B1�0@�|ވ6���~Z��>��Dt0�p�$���$B$ Y`@�9G[��,n�ƛkF�;�j�#@��։\9��L	0p�D`������j(�&>���Z�aX�Rp�.���;�wr���K�BZ����i2PB+�2�. `_���ߴ,�h�$����� �Z��.��2@4L�.� 9!�Vl�l���X1�b�����$�
#x�H��K��A�d1A���+K>��s�X�)
x /�3�4����7��l7Pfdэh�@
`���ʼne���(B@�KV�G.�
vG��Dd��%�
��ҁ�T���]��yݫ(@����8���Ȁ#@��A%�̀l�Z .�@�m`O��2,�S8A������ۭ��#�@ƽ�@D�و��(�$��| �A���A0�B#�$�����!�Ba�l�)����q�,���m��qS�߾ahl��-m@�J�$�^&h%� x��	0�A"0�	(@�D<Ӭ��{qD�S@��O�S�A�؉]�bK9ETI,���-�Q��A�}�
�ؔ`�H��E,�0.E���S��
��K(�P׆܀�FX@��\��B
���T@�����(,���x�=�Rr����������;9�x_�ؕU��!��� ������p���@b�Ȁ�@���T��0�K���c<Eh�KE��J�(5%��@E�	�MN�@Q�W
`ڭaB7��A1�)HA�T�J
H�!e���
<�@Q@�TZ,��� ��`@/hBu	 ��#�
<�I<@Ȣ@R�<ύX�@2"3�@�߇�S�ZnN�T@pI�������\_@���������|+�f\��)����X�f�,��|�B�&��s9xfl��|`s݁$��D@��Sԁ(�F��f���3���������u��A�!8�Kz��0f���Пk�8@	��~z��h$V9	,�<���G�$�`L�X�}JE@R[�	�	�]*�@T�����u�h�xU�(������hٹ�v�A��E؀�<��K�h�l���K$�G��A�����UD@xh����,��e��(��@��,)��癦C�I�j^��Y���h	��Z���g��T���^�$i���ХI@�&j�����&� �B�H�*C5�sJ�$Y��˦��t���@ ��F̎����U(����؀-�A��HL�h��������,"�+I�9)�L�Xj�eM�n��@%d�T�@��J������O�(�B��+S��+l��:B��`�>X�J`�l��`B��k�����h�l����8�X��ib,x�@�Tj��H�U�T@��z,JX���J�a�(@��$,B���A�N��8c��<Nm��JnD���P�Ҷ�0W�I s�h*ն������0��@��%�8��QE�ҙ&�+��	xdG�	�����kxp�k�`e�-K����J�d&�H`�������MC%�N*z�ID锂.؞�F
�Q���ڢ�-~����́#|%캔`�mF��8�S�1� �ᡃV�@��S8�w��h@��	�
��n��`F@p�_P�d@Ȏ/H0��fGP��@���!�@�A���
d�8�����p�����@�۫��N.���!��F�u%A�jp}�]�s�@D�P�,<�UE�*�:�$�8p:�-L��FT�0L��-S�` H�������@Ё 4@'A#����I�	�$ B'PB
�a�J�A	;Mp
�j����k��j�Y�����AMH�!�<��k ��:@�A�|��V���W�'cE���rILP�]}@��@�d$��x��)U���#_��NI�'s��
�F*$3T�F3�aAM������Ђ%��R"hb�2j�@8�ߺ���$��;��d�$�^$�uVs����&�g>��+v�i�S�-@#tB�����on��ߎ�#��GP�A���^�A_Pt�F�4��a�Sx�B��߸�G�2��-b�#�8c��N��R,��F�$n)�P����AI_E
�uU���1S[5l\�NEČgO�(��I0pL-X��8��
��؁�u\˵OXF�
�k,pFlh@�UKHL�KP�4a;�kD�	�2j���ε��X�I�$5�e��������h��\��YAn���؂
<�GD�"D�c��dB
p@=���@m�q��iD��uj#�S�D�,@	@���3��_(�Y�u�wO���=�kP�(��(�is�D\B�!wI�Ԇ:�ĭ�|�n�J�+$-Ax�t��(
l�����UHC��*�[8B�J�Ćj�"�7HEQB�wG�"�A����Ab�x��@un��^�O�Kd��4��p���K��>��3�nz�,��uG��@P�6�7PB�r_@T�����`A	�N"A09:�v���bעH���xQ�0`,�S��0N�
X�l,�G�
H�7r�'��V�E�Ϧy�_���LT�ϛ39�O��lg#��ȝ�W�D��+���3�����A#0��/�����l� �@o��
tb����z�c
h�NEl'���/��gm]5w�A�zQD���;jA�{��n����\���$�(��t�F��	Ss�$,�0@³�ʷ�s�T|@��E��(���|Uo�rg-d���g��[��������|Ҿbk_$�HL�@R�%��`|G̞����L���r4@(h���K!Dzǃ�J��׻���:�sFI�k��܁,��mX[pe��u�`�<l��~Ҧ��O�h �@ȝ,h��X��e��,�*]B%Ȁ	��h�d��E�d��}����S��t�;x�y�*@�Bˀ,��i�8�~���VժL�s$���&#��,=J�`$��rԀ
��������
d4�'TG��*�-���[���������Aѫ���@�@!]A�&T(�� F�8�bE�1fԸ��cG�;���L�'Q�T����
O�9�fM�7)JX@�3]B�:Th�p&U��iS�O�F�:�jէ^!���1:��;�lY�g:����o�	 �x��	Xp��D�#�&V�8�I�
�����(�sgϟA�=�tiӧ�xpvKOVaǖ��AOLnO���ٰ+���*jR����
��v��wu�ױg׾���#A�-�t��1�T��e�h��a�}}�鄣���,�7��)��LP�l�SbA����6��PC�f�
³Th6���޼�B9�LY`#`��]@f�1#pY����C�*�0%G(Q�%�l��'���8� �"0RK�
���
ز%L�a�������,��D8�4�@�#Â4
T�A	��+_�����.(��v@�G-bh�P������(\4�TS�h�&���8���[q�u�.PB,, �=Y�%��^&)���M'�`�aXK�aH�p�<|(�RTY�<����cL��:�PA�|��W:�c?�`��t���H�hV�nxKN`v+@"]1f�/��D@+���'F&�c�* ��a�Y�i��T�*V�$�遆����c�		��<�@�(`&��vu��)BD�BZ !�P�@$�@��,ԃ�}�[���^IA���l��{n�/�p�
���o��2����9����R��@!�����Iq�`YH�4
��4/P��!B��nԇ@:�/���`�6��>�>�`��E0�'8)��)���7+v�^���o�".�!x(��G4�d�߉�b��Ix�ʀ'��p1����@	N��b�^� ��Vp9�e.S�.�4�y=1C*H��A��5��
c��a(�@�5�O�p
$��������#<b*��p:� d.`��F1���j	�nn _�V)���
@��>�E�S�1,<��HE*)�PBJ�h�z68�E��%��
E���i�
�0�M�@(@)'Y����-c��
h1!j@9��<z�),@E@r�3�ӄa	��eX��[����fUn�0e	���K�� z@,�, @@XD!:��L�&��V`�2��(��,�`�L�ZP�N����3
���$����+����,�)<�R���#X�sXrs��Ax�0	<P�j��bP�0A)�D"��.AAx�#�0PL���@�b�@ˑ���Y�ʰԏ%m�Xz+��!�um�p��q��T�?ٕ@'PE�ZA�1`/}�K`,�
@�xIX���,��p�"$��쫣�'|����N[�*�BK����\ .��n��,���5.i2�3���$��zr\¾]x�u��>�	�T�;70!�ᥨZ�`^���,xS�Fd�D!�{�:�З���o޸T
���@Đ�_��|�!�Ԡ�EH8����L���D+��
h��%~�10��<�ÉaB��1�Cfg�c��2VI��i���1.e02��M�N8�ْ��cAD
�[e &<��=��dp���e�K"�9�R���g� ���,I���3��l�υ��(,�$[a�r��t�`�1.
*p�1��4d(���B�1��Ǡ�_�k�?���$b�₆d �M�k�[�E�K��������%�@�
†4����6��X��O;���c�$���3</�6��
D�D��6��EF�@γj�?��~ ���Ѐ&���X��@<�!�
/4����C���a�F6*��W2����%�t��R5SG�:P�$<@@A�@�b��(�\!
T}��(�pW��h@#�� %���*��A�A���AZO��*<��i��l)	�\�64@
�(9��:���6��o����6a,x@;�,������	|�'�5,�J(���
Md�t`
 ��ǜx@90�
`�'0
B����o�pYw��1XA�}�
` $5�C&��d���$T ��� `	I�QO!�
��X��T��i_N:N�����
ʂ���.�.�!j��A�$���d��Bca	d�����3� <�h�"A���NA\�
a	� ��`
>�\!D���� ����*���<�Ba�o�d@��
P���\�f�@��`�̠X@60�‡��@D�@
x
��n�FZa�v��@
� gVfx�@0g��b�
 *����
�4���n�.�F ,�< N@�`��A#��r��@ �.1�"�B���a
| X`�ނ�T!ln j�>�^�P��`���P� 2�,��BH",-ӆ~:&$6
� B�;@@	���H�� �Ʌ^�0�)2`�f�
�������$q#�*t� ,(@ @jV 
�>A���N4 �F�h���A�h@8�����!
bn-&02��(A���J�.���`Z����*�����B `0h+Bܱ!���� H@	����� G��4 �@	Ү	�@*?��O�lI@:T�0#!!��h�:z@
�����㈅2E#9r4�IP�(�>�t�V����*�B+@��H@�O�,���$w`� �$ Q� �@a�>�rA<�D, �҄ݰ ��,Փ4ay��54�""R@����Ip�V���c��<��H "{"
�PLf�׮ j%,���,`�'� OCT��z
�CP$�7�H�D��7&�(�Q����|��#$@����H�b�2,�A�0������|@2�v�Hz`J@LX�Xa*�J@�:@` ��sM��[¾� #`$:�b`�D�V9z�	A��:c��'�U��@��QP�	a��x�JEA5��2@E��BԠhanG(�j, =/'>�N@��A��'���@Ҁ-,�h�j�P d��ҴLG#"�^�M��>8��v� �c�#�	,�,+2J��j�x�p�n@	�!V���3%��@fJ@{�_SP�
�SW���`���G
 1T-�j�	�u+��  �a0�h5 [�C���H��\��� ��
!�^��`����aV@J�c?�Z�AO��iM�A$@i�.4	6 #�� 1H@E����6�	|�� 	$��vE� l 5M"�7����
6!V@E�@�f�1�=B�c|�b�� |��Jx
��~63hJ��`
&@e��$��&`D7,2�`@%�`��>�j�f?�`
�n'5MOVwaT�4!��9�c�j�74Z�b�h�"$2�"8lR1@�5C�'� <�hQ�@o9���{B4������=+���=�!}��4��`*a��_b z�wx�@&�e�"��A"�؂���� �LX���X�h �`��Z 
 �g�X�j@�74
 �6z��1 z�y[�F�#:&��`�3D������<t	�0@E�@z�b�'`Bk��1�<��	��X}��	�x,R�Z,����
X�27a �t�h 8@�.���<
�������WF�V�xҠU��Lv4(���]�3`�`hf7�`�\d$�1�r#�`��E*��q:�`��g1�+zb|ۇ�ؓ;CDC�x�;���	�WB�20��d� z F@$���j�%Br�51`�
>`�V�(@�`Mk�p�> qCP@�_�����H�� 6��(b�:�>�
DF9��`b&4���V����chQ���9F�
�9,��
.��}ZfT`$�`.�b7�~`��`]<`� ��@�ĔJM�"��ACL@*���(ln[����,���-*�;c��y+|)dB"��`S}�
�@"��� 	�@���@�~�#� 4���1�P}�,�&@"a2�*x�.!
� �C��"@L�`:%@0�2��
	i �����@b r%|(�޺��B
A~��B"�@%��'��\�(���9b�� D1#|�Y��I�e�պ
�h!4�D��րB��ICB�/��&��h��(jP��
@A>��ât�˹5�% ��@��d
e��Vk�`�zz�1~&w1�BH��i|CR@R� �࢔@(a ``��z)��\�d�^�zϢ�@M7��Q�z�wX-�ct�z0�ʻ�j\#p����B%e�˼ͯ#§	"�1���@���z �<&A*O<F�I���"R`	�`�,\,F F��Ӯ�"F5&�~��==6�����
���(�� n4׭�ҭ��T�, ��=*a
��<�(q}1���1"Rq-AS�}٥�y��J=؅"��3�A.�2@����
�>��
 ڿ�$�)��"�G��BJ»��)�G	�=�U�v�;�`f��[@ߝ[f����#t���)+Bh,`ے��-�&�zJ�Z�w�z�˼���9�i@���O⵬��%BR�7,��W`��k›�������G��ȧ��Eܮ2ܭ�K�b�E�����5���т���e��B p��k�zb͊e�ln
�`� 
,��`|(�n`a�@��� �W~�Y�!�� ���ҋ�LP&�@
�v��c��p�������B�>�g���hP&P�AB�VaT�~h(���`� R ��1X4��$4 P�kb����f~�m&��0+M^q�9��4%��<`�%0� !M���`��#0���'� ތHG����*\�p�#
�@�b�;
| ����Ǐ ?2p`��(S�\ɲ�˗0cʜI��͛8s�<�ɀ�<p@�ѣH�*]ʴ�ӧP�J��4�@�j�Q�	 �9�J���L���!$0����8d���I��@�*�ʕ�D~n�`˜��H9���䑧D|���q�?�ֺA��ӨS�^ͺ��`��1���s��ͻ�������Eː�y ��h�c���.z���dN��L-�e����#f1Rk�)�Ẁ���nQ���Ͽ��Z����߁&��6�`�B0����D!`�RF}��/@�@h\P�&��tB�*����j���"�B0Xp�&4@E&�䒣5rHx@�LVi�Xf��u]���qA���	�@Es�,A�h�]���&S�Ѕ�}F\��I<h衈�Th�G$*餔Vj饒Z�a`9�԰�*��a�.�@��|Ђ7h2�i
��R��f����VD5$�Qk����Vk��z�YF�DsU�p�
��W`"'y��a ��)h�P`��Ii�Z�@�l�'L��Q�8��"�� I �Ph@B���D�2���pB�)I���l�A	��%��7-��D�*`V�I\�P�v`G)�źI���
y�•8�
��ps@M��l���p�ā�[$i�
(L��$/$�q
|'���I�[���	�\�FW��(Zp��X�砇n�x\a�u���=ABD���F��T	��[��h�4�n���'� sm��-�A�"�PFPA�t��NP�0<0�p(p����3�M9H���o��\a��
��;X`$$�"����(*)t��&(,$[@3(�z�5��@� 6P��e>����~���H��v��0h!
r��"��.@�D�Se���A��.�Uh��8��q��F�������6����b��bĀhi8��0B8@r�@���Bv�>��R������$��8J�F� n�
����΍�T��������,gI�G�8 D(h��I^I5 �VU�
��%${��� �A�I�jZ�7?� w���!���"�\P�<��g2h��8P�<�IO�<q�Q@��g^�y2�\��U�Z��&���"��/XdB@�54��(HV���Dm�4���A�
R*�*T
<[JӚ��%/hXGSc�X�Ш� ls5�	j�#�	�������OͪV�I�$�7hT�M�/ ���� �Ճ��Ŵ�ʷ��� Zw1�!+[��L���`(`� ��F;-��0��Z��F|A��9%�	��r3/r�$���`Є�je	�EjgK[1fH؍4 �;H���
t��T`�p�7�M� e����Z�r
(�x�ԡ��	���@o���.dQ�P�|�뻮Q�5�>q��4��j�P0@�Wtȁ	�@����%
D�52�諟�́��Au�pE�-l;�W]B�8���0�10���Ą{�,��+
��n�c�	�-�Vp9��P�!PpI�T��qT| 6�L��P �������5����� @	���e�� � O@"�9h(j���9�ψN�n�Q�<�lf
������nМ[�
ȁ�GMꨄ-���!t�h�`�@�j�Vی"�@��b�A|��v]�@��*^(5R�(���?Pv�d�֠��ζ�o��7�fp��-��z!���]-a�ފUk��z�;!$h��]�(n�&���؆_j�g��jr
�;��(A�xco�� �2������.B�g�W.l@�7���c2��;�f>��97^|χ�l^�ڼ!r�H�w�����t,ݠ�`�qRFh��`�r
h��րA��%�J��.�A�:�U�7��x�.B�
T�	
{A���@�����4Q�1��[�@��G�!�7i��������{�=��G�t5W�2�W?_���7G��N��'Dx��U�I�`�8
*���Ww~n��R���zD��5@�����N��A��`�9�$J��|H8�,���[��F"!jgw!/��}��Jj�eF؀c5<�wa? }0����S�U2� !Pv-i�(�Q'P~�(�D�
Ӂ
1(w�2(��i:��tvn��& |�	����~,'`���L�ŀ:@�! 0`�bXM�@_�!j͡@Ht`VTg$i&�
�:��t���T������
���{���Lc�$�<@euM��I3��
p�!
�y+~�wȇ
�F	�Y�V��k}v��: 	� �p���>�G���$5�
ͤ|vQCp��������Q3�Bz�)R�'��-Hw$�N�x�$q�q7 
YPk�W��T�X!�
SU������{��APp��Y��3���g���o9(��;�U�P���p��G�`{)�~`� @{]AbВ6�9)@��!W�I��QC�������1�(tFٔms��0bp߃`> �-x���P�(|��^y��2;��s��́	�u�A��1<�a�|�0~���Q!Y���@��Ēh��
Z��jq��b�y��R	4`���ա��7�Ra�}I����o�p���)��)�!	�>��{{0�[Aʅ��a�sɈ@�ʹ%1���!��s�7^��	4����|@�9���l�ib�	���a��P2����K�'�Y �Sc0����J�X��\�]2h�?`V��?@�MA@N���X���	AExP
С)�4�4 r�
П��0x`�):��	2��j!�:�f_Е!>��JQ��5g,E�L��b��:�`Т�WE��YI�j������f�П�	Y4�BX(�r ��Mj<���i{Y�|�j�Y�n�P����g
p
͂ 5p��z�8�/@\p�.��'�?ا7�eB������H�D<���	ψ��2��!~��&�GNƫ�Z9Џ�A��X.���Ȫ3a��1(�"��J�mb���Ј=]���
�	8*�0tP��
������I��Sg0���F���]�D�V�Z�-�oݘ��P~�H���o�zL`	x��r�������'��pV!1��!j�V�6��/�_�P�`��([���ZG����*� [�(���d"�|�]u0Zc�9���"�s>i��
GP���!��&���@��]���~��n;�X0��z�%[�x�Z�`��4�����(���������8�ׅ�X��r��u�q��y��-�(з�h��z ��p[g����)��u�)?��璏k����k���1G7���k�C����{�bq�P.z��ߒ�@u f���4�ϚV����0���h�X����>�K��tPB+�F��0�Prw�F�*�eZ 0�T�J&p@��%����"�ۨZ�['~�	�ۿ7Y��q��b�{����5hFMj]�LGd���X@K�����T��ȫ?����!~��,�?@����%���D��ށ%��jH��JR�C̗�EyP���{�V��{�nj��|�����A@[��[l�'�5`T��aV`B(Bz��DNP��Y|bp\%�stul��4�hcPl���2 �,��_ü!������[�&ƩQfW�:����rb
Зa��k%\@�|��r�)�*t���,@��-4�	P���VX2�Zy%�=�����`	#���j��܇�G 0_Ը�(\~�T-[�sB�{X�V!��e��p�`@��) ��+���	������һ{�`�bP7��l�aG��	kpCE!f�ë!H��Z1�
�
��g
�'��@�B�^�o���"��& �
ؖP�A�X�~ �q~0Pi�	@`	<�K�p� ��
8��@&�0��,P�2-L��
�*���06DԮ�S�w��;�)-�FpF��(�@U0����]�A��p�aKj�.�zL-
�V���x����K
�ɂ���+#l"`�`o�
�	�P?oV(!@P��	@)�����g=
Lpm% �Es�CJ�}pTB� B-v� �׍���нU�27f�~�V�\9"P�/0YK�9�B�P08�;��\"`( �zop�
����(G�
Q�0
��

P	E�@@p	�0�t��`� 	��
lS�@��)�"<ҵr0}`	H���$��p.PEgpq���4!����Gj`b@q
.'M?�5_D��{�\�m(�3�i	I!0T���S���2��=--0�m]����HE Z0G�00C�߭0����{���Sa-p"�s�!��0	��%-���@���T�%p	���Ir<N'*�lC����`�������W"@j~j�:0�h�p �RБp�r^��/�q���z0���YP�1B0�f0��"�X0�c���|�
@����@}p<�#��� �04���3a�(�`�~-G�e���	S�$���
������R���(�0@b��p�@�0��$?p�pZ@`�7CJ��oF�����5J 0Mp�����\6�G��b� �R��6=�R��@+�z#0AP7�V�@j�?O�� AP��gj|`HW��!��f:�%N�X��E�5n����G�!E���&�&J dٲ��J�0dG	$'��&3YB�$Z��Q�I
(��D��N�Z��U�H\�p�Ȍ�VE������8���X
4���O���`�^��N���	\�K��c�Tx��ϩPC&��� KV�ab��<�QT-gرeϦ];��>@ZL�{P��J�`�d̢>�(A�P�`�J�
�(�ƒ�ε� ����;, ���O��x���{�$�aEE�;4è�x=�Ra��h���:��A�:`h
�BX�)h"=;��
/���JtN��8=$��#ni`�%`4�NB�<�!��*h��+�B$�TrI&��(�7f`�8!*��Ɋflb�[`�<S8$�
0qM�``4�
<��N{��`���(���hĕ[fQD�x�꯫PQ�2@p�1
��=��$H �+ 0� ,8���6��%�&@�4.飓Lr�P"4Ʉ������60!�D�(cVl��6�e4(R�(( �
@`C�4��� 6aA*�>�$U��!�A�`1r��v-�p�`$XA�Tz"
b �b�aH+�"���
�zp�*�C���	 �y�2@���d�f@`��F�@��ae���Vzi�F
��B�5G؂�7�[b��z��ni� @�z�M�M	� p#��s�8T8U�(!�C, @�(8�q��
�$x�%���(@�6� �78�
`V�#��4�r�P:q�O�Pd<T`Bˀ���SJyd�E��@A
0�u��a�1&�D�]����>8)#.�*����E@E<~�C�+PD��
U���@�
� �A���hֳ�Ǧ��
L�jQ���!�
�0�X��K�K&�!p�
��ܠ%��

�׶�+�	<0�\)L�� �"M]P�S�����!,Xb��Ő��
Pc���*�Q[8���F�<`T8@Z��>�‚F��s9k$Q�JHB{��P
`/bpPp���F2�"����Q�U1[6 ��(���� 4�B@��@�U֫aV@�� �[@�
~0JdRQ�h��#��"���c`�F}��#�A��5�@(0A>�8 
`@$�)+\Ix-�$��>PB��!���a�A
$��%�I(��ܡy O�0Ya ��C`ω��zh�;Mz҂�+�MpR���I*��2�T	�;�M"@��m�* ��M��@���((�"Q��8��xT!H�	�LA��,��
"4@t�A	��d@8c���J| ��G�&V[�ـF K�B[�¯{��X@[�\�@p;�%mV@D8���@ �(���HVP���*.`)z�@��� ���h˴	tAJq�Bi���+e�&� ����fW�!�:�O��A	3��s���@��F{�1���#��k���@,_�h��ܹ4����t�	&XA���D
z1Lda� 6�����V"3��:o�e��@-�B��Sȋ�.�q:2�	J���Z��J�=fr:D��*�`�/p"�0m�����R%�B����6�E`\�+V��%M�I(J� �&�9rp�
�����9��v
������zȠ�@ϓ��Tu��
l�B5Q�&�h@M}t�#|b��+�0	E����o���B0�(�$������&@ x�)�l�F���	h��m8�`x�v2�IԀ
 P$���D �`�!'��\`�:P��I D�	N�
�"/�!�(� H	�Y�|a�^�8V0#!
����4�[�3�
�@3$f0V��C��"/HA��1��<aB��"�r��q�A8]":�zS�3
�|�� �+����y`
%P@v�ǁ�'�k�j��[������g��w�L��@8���o�^�L��"��R���`÷	����)K�p	K�A�� �^^>�x��ZA��"��Њ�xa'�`�ML��U�Q�`�X��ݩ�ր@�G
�)�£\��[���<=VX�2�p�l�!:P|�0�9(��3����?
S����8��(�
 �?�"8�6!����$ۀ�1�Ѐ` ��DP�?�x/��>�&�p**�
����+���P�9���Wi��?!�Q�����>�C(�G(UE�@0� �?h-X@�)�C�>H:��"x�0=Wa�-B�{x/h���/H"P�S�!Y�������07�'@�`)�95�^8"*X29�DL��@�h�,��C�<�	2(`��>�YE�q��{E�V�;@E#P�E��7h���Lƪ�&$<�H*�p�<�!+ ���X:(�?3�6p$�;�L�G(�-H��h�

��"F{��t��x��Uҁ(�ApHx�C�M �RX�S�0�H&Ѐ�*0᱄8��QxP@�#P>�-( ,0�\��
x���C|�I�R�h�0��)P�* ɏ<ȁ����t�H�?�I��J� ���Y��J��������,`ō�8�<��Ȝ[㓮
��Q�X��1B��8�
`�4؂R(�M��Ё��gY�[��P�H'�:�R���a
��HL�U‚hs9�>��Ȅ-��%ЄG�7ȂU`�OX�>��J��M?�a�N&�:�8N�<N N����TEȄO�%(VXQ(�Q M�O@H��>���&�@(�x
<�\r�L�L����a����d���(�LP]Pm�lQK#t�	�� �:`	:z@�4`�
��1�tP�?͹��9�ѹ�	��
(�H;�����X��X"�"�#=R$1(� �Y�r����	Q��Q���8���5`	���0J@J2�S9�S:��b0-п�hG��Ă��:TB-TCݿ��/�/��t@D2hF<TJ�TK�T��;�P����G倵k���TTMUU]UVmUW}UX=T�)�k	��\�U]�U^�U_�U`
VaVb-Vc=VdMVe]VfmVg],Z�Vi�VK|Vk�Vl�Vm�Vn�֩PKP�
�L�A�`�=��2`�-��4��1�W}��}M�?�F�:��%u�Y
�8�t�O�/o�X���Y�P�ɚЃ�C]�/(3�j�	3�MY�]٩(�����@�A��NHD(M�R�B�N�F�A8Ā��H��pC�?�OVȂ��D�J @ �\'�bY�M�n�X��
(RX�V��/i�#��{
�8�h� ������"��P[�=ˬ⪼Ó	Հ��s�P�L������ 9BB¬-�N8�I�L؄2`�ԙ��N���R`�Q�D�1�ʙ���������ʓ�
(��,�靀P�.]���J�X��>��8L��c;�IP8���m�.�R@�&�00(T����=TÓ�[B:�AX��A�Qp��*"p�Q�h<HF��@����e��U� �HHN8�O��P-��K��;X�G��4�0�@�}6�M��0�t%�!&`Hnl�����Gx"�R`5�)��d5V�7��D�LH<�?PC6��
P�x�j�`�C�.�3�[�#9ف�]���㖘��c+��%�h_%!�!p��<�8F���0����E�TX���Gh�}JCB��h&�l�;�� �(����c�K�����L~L�P����X;NE'�|IP�GiC�I�-(<��"��S��Q�E�1Ёy��;&���*T��h1(�!H�h�I8��!Z<( �c���-9H��0X����D�4���H��WN:�zc�X�"�p�@�%�3�0)�*긏k�8����63�$X�#��/%�=�h*X�^7��.��.[�3��H����#�#�X�����(�������Fx%(�LӎhN��=`6j� �M8(�H��,�SH V���Ã��B���G C3L�H(���g�L� �C�9�LL�ȅRg-h�h��ʛsA�`1`H�F��GX�PP�5�Q*��E��U�+OHK`p0p�����)�
�.�"�� �&ЃM��S�9��;i�� \A)���BP׃����jC��%�2z��~���=韰�d���i����EcЅ�	I}�X��6/(+�B�Rp�֤"�A�Ky�����(-�C��R��SP0k���"D�}��F��/-��JO-��T�?(0�?�����`5���.��L���5p@�ȁ-�Vx�-9�5Ȁ	P�O��(;�"P,��u�0e�0�W���X���	4���~{�.����K�+�BF��!EF���RP� 8��-j.����w"�98Q���u�?��H�hF���P(�����2��Y�����M�2-�PW@�J@�y*sAu�4�J�A � ��\�P��F(f�S`i!P��R	"��pG�"�3��)�3P�u���(��u��بЃ_w�P��0؂�{��a�8u0#,{x*�*,��IP�>�i�!�A��WV
�P�2�B��`��mǖP�F8��wҒ�&X8�B:p�`(�M�h�
7I��(�F(�`=�DЂt�P�H���w��� ���/����-��/�.���.�@-4p�y�����͗	�$�c��,�׷��2j�;(���ĀX�;@�#HȀPB�_��<8�b8 �J`�Kr���p?ȁU���\X>�d����13� �C�A��
2l��!Ĉ'R�h�b�
�X�*$H�

`,i�$ʔ*W�l��JB��&Μ:w����'P�Yh��`A�Q|m��)P��h�(̬-{ Q�*ذbǒ-k��,ph������T��@e˄�z���tH�94�40�0�Ċ3n�P�r@���q	F(�(��9&+����xԀq�$��|(�O�غw���T#F4&0�U��~������yS��X��a�a����Ǔa8X��[�Lz�qP��h@��>T�)eBy+E���M��	*��M#�A706@
z<QKH� �*x�4]q��x"�)
P�	rL��)��?(`�Bp�����a2���&"`P�B6�&�у(9e��xRL|�x+Q��:�0�!x�A�i"V]�r:8p��j�y'�E�y��a��h�pv��$AS��P�j�)�;��`��+���
 t�*�b
�`9L:+�iPA��C�YP��3
ZP"(�
9�!A�S�5XR��26C�(R�	LW�$�i4Dں{�(�{|�ڻ���Ps��*��aC��K���!��
�A�,|1���I`{RS�)���|rNn�����rJ@`�3C0�C|���	8/Ā5h ��@@��	��I"(�F"�����	���YC
���� <0��m���D��^� B:9\��s��M�LI]\��7�5�D�`Qa��[~���F�n{�o��I.�-@��"��/0�Au��"L����?�+�d�BD��xC=��{�C�.H �<����y]�ש5m�	{O�9��OA4����C�(Bd�>����`�_=�D
0�}`�@�:օg6!��	(�����؂h	|`@��&�3�S��, 6�0<C�B�bx1,��
��N���@�>D� ���0�
�~�DF�``OpA�H�h@���v@��a��`�,"p��*
Qّ�e��*.!���vD.��=j�4�AxF`��������
�P/��\P��;R&�P��J�1��
#����$*�Sy'?��L�@�T)K��-
��e����f:�p)�as�)�
:7�eBd,��'�����utJ �QI��ޤN��	9� ��d�y�b��,\�t88x����'>Qf��偁�%N`	Z(���F� $h�A#*Q����B8QJ��'H����c�yU�ҕ�����ðQN�8P�LiE8�mZ1��Ӝ��QA/�E/U�:�K��� j��Q� �r��^�
��T)B�Y��X���%@��*׹2���	�V�z.��W��$f|�I`��Ŏ�	*�+��1�i‚������lS`�N�!m�ꦋŶ�S8�R�Ҷ�Q�P�9�@�Э�B͞�k8%p��"�b-H@(���`�
i�6�(2�.x�	��8M�0�	�p�(X�J@����������^|���-@WV0�3��@Oe��/�a	&O
�����p%/�J�� ��`0��b� Q0y��V,��p&U8q�" �>�Ǽ)@��
|�>>2��tɳ�@caB�.��0�-s�rX�Bt��$��`b��r3�����,n�
�YH�������	a�H�=�����Yg!E`���w"@A�3�;ta18���ԃ�z���XҟE��ծ����P��t���e�D�l��
3#/൰�ㆎ�Z���JDЧfS������l�P�3��[b5��7��5�b(B�N�n�
CkO�[��XM�}�{,K�*���m9"�(1��Q"����wz�p�k:<6#����8�Ą.�8�CLl��	�`�[�e&	���H�B*Ms��Q_��8����FG�;��sQn �0����\��Q��u&
1�뉩��utV�*�Ʈ�~G�n.��a��6�=!�:F�T���F�����D`-^���9�l�Ll���|�}��(���~cdF�<�SW�!���
��=�{�AJ?I��ٗ:�wI
P�"����t��p��o	%&QP%)H��i���+�����@���/@^��K�S��	���o���G�r1� ��" � ��G�	R��@TJ4���UYԟDP��@
�#��_�Q J<�)�B�"��.Dh��*U��DG}�	�`xAB.��A)��
��h�D�H�
aCl������A���~�M�J�1@!ږ0����T�(����B��La(l��
�A0e!�4N�E\�ء��h�
��̈́��I@�Fb����������~��X�K8'�bT=����#���
^����Db$ڀ ����d�)�E�Y�Vڠ��1�T@�ߊ��$h,���)}�D���rB������1��|�$��:�S��EA�Q�$���Lc.�X 6n�؀
d��a���:��La)(T�C>҅�!���(���)�=f��c
�*������C���A*���I����
��!�AЀ^@˄��G��'��@]ݹ@�4L���L�c4p�RNe�`�Sʩ�&���]�H�DeP6�& BH����Q�X���e@���]Z�$OB<�o ��t%L0`Y�h d ��ܥXL���aT�@&f����	���e�%�L@X����aR�B$d�I[dfX����c���&o�J�P��@(,���AldV0�j6��#@�uE��&T<�8FX5�X�w2J,��՝T.���a@��V�>6g��Bha�ܲ)�wBŲ-�c0�Z�A~��t��i���4�b@5�'֡�|���
�$��:EGY�c���@��h_�X��
@	@�*���m.2�l@(衂H��Y��6�@v:�<��G�iX`��]����
���i�8��Ҝ(&cF�)P<JB:��T'���O������!���@��Ŋe��\
$�P)�U�iO����[�(֏�*N����pR�
����f�0����5�@���"�N�o���j��Q<����A$je&| t#�:!�(g�Y�����nȡ�*���L��
M�!h��������\4�jݍ/+N��bbH|�&�k���p���
p� Т��J0�H��]��Q�B�^쐺���$b�@WDA	l�"��'�	���'�b@L0	h�{�@|Z�
�ǩ+1��"FFԡÆ�䠁���)D)��a�R��j�l��@���^�L0��^=�/��Ĭ��Mt��1k"�@$��K\�DB�
-�����Q0�+�=CQ����
���
�T�,�6T{Z!H��:�	�A�x������a�@��@�f(L	����Ā��n���j�V��	�S���2�[L̼=n~�@W@���@"aؚ�4ݹ}n��,u*�ML�*�u�V�4���A*A��
���(�E�X/�F� ��/�
�`8�Rh�H-�/./m�� ��������������J��T��n��kK�e�/mz��@h��9�"����.>f�o��@�.f@��@�lt0L��:0dR�AR���D���������x��}�d�x�(����ElVT����]F4mY@��R�-F@	�0��
D��b��G���eV�QC1L
@$���(�@%�����L�
��I�@P0��d���"��ْ�dR䁁UiL@
���l3Q!!�,��2���Y��g ��T�I&EH,���(0�1�����(�X�XB8�"�"4lfZ� �����-/e	��@̭��rq���E�����]*�����$��]�G�]sKP�nn3U`�N�	�W�@P�<�\@:SD2;/Z�"�AF��
 �(/L�TV�V$��4U�@���b���!4��	@�o@�@�@�
`
d@H�F��B���f4�iA/L��ss�	�����Xmb��4d����M��gp���f���|���'lAxB!,A!4��@
0A���R_@�:u�
BlA
t��@�X�9D�����됀
P��,@��DҊ5f�$����	
\��X��!h�&t+�	x@:H@�$,����qD$�i+v�-B0(B0�"T���x�����y4�z���	�`�4������O @U �
$�"=�J�jg&�<��-r(d�	|���\�t�B'@C3�B\��K��hLS7�1�A�@���w{��zwA�x���ԅ�Z(A����S�T�S����8o�� �qN�$�L�h@	T�C�T@	L��q�<�(@��T��4��B�ID3�DՑx��,$BD@E��(֥�UtO<VB�;-�	�����D���*9m���2�k�� U��@
A!�B5�J��I�qWz�|�~3�3������
M8���L���4T����;�+�g��U�:DP��@�G�(%��%��$�+�UKD��y:X��*�����M�K��I�Q��_�|�Y��A-�8x[��m�I��E�X���L�r�?��@BWD��K�
6I$B)��JT��rt'<��-�
�x��#bɐ@�VB��
t�,]����<������I���\��,C�['V���/�����Kp|@|����J\�X�8�W�B��@(`4E�BS�\��+ĩ'���@.�|��{PE��@����T����OL�ܦ4Kc�=��;�8U��1�4@#��D@���(@0��s�
�� @���4(�N��Q���$��/�B
d�Y����(ܷ��x�`@,,@2�1,���DzK�,�u�D���(@�Ѥ<��r<����=�th@X�ĢE�Y���s�b�"V�xcF�9v�dH�#I�4yeJ�+Y��G�
]ִygN�;AbH@�,�5ziR�K�6E���P=y֔�`H�HX2���,H���iZ�kٶu�n\�s�ֵ{o^�{�� EU��	6�3���4�@A� `p@
 t��BƘL��t1�딢H�,ݸ�h���9�0wnݻy���;ݒI,7~y�3�P�Ѿj't�4��&����`�\`&H�Lw�~|���׷������s�~���8���H0��4���1�( �� x��M<��c�(�H�c�`��3�2�n�#�0�&��AF��`���@�h?$��*���,��+�(�0���4�	&+ �h+��	�H�Y,�H� �
"  �
5�@�B
=Q����
}R�dB
$�sn�|1�<��PE]�S��#�K�"��ԡ�%�<�#xb�^}��`�6���d��)"��0���P �x�P$��EV�(�"��5Z���J��͌8X��z�U�Q��@�{���$��@:8X�^X���h@��U�	:Xj���!�&5 �E�䒝��,�U^�\
�*�Jpg,x�g�H@,p�,8�
���@��Ŋ(8�6���G���4�� /� j��>��N�~�/�b����(^�@�K�@`#(���
?�����~r�#T��b�A
Р�J�ȥ�A J�������]�H�#h(��m��"Z�*0J��H	l�P��_�yt��ۥ�>��
8 ��$��,�PN.b��
������P��K� ��`W�V�������ǹ�t�?�#
�H�@^P@3h�0�A�׉�+�4!ea�w @��1��
����5��Ƞ8�@� ���UI�b@�$>�!qA��tDp������.�Q�-(��q�0ĥYDA$��K$bW������‹�� �W�����D�޸o)�c�CP �H^���)�IO~d��0Y�9Z���� "�"���[@YK[�rJ�b���̗�D_1"aS~30p�Lg>S/�!�Y�
����f���r���BMs��iI�s�������H��(`��|�
 �t������O��-�<�B5NT���@��^��$CE%��z�Z)�<1�ی��|�Q����/RZ�C
�6��qJP�F���0��`ZT���BP���豩Q=L�O�^�8�i�Q�����UX�q����5'K�D��V�)^��\C��0���1@z��W� �y��`�7�����F�BX��Dn{�d/�:@�����IX�~����YӮD|=�d���t��	�Z���=�ʀly;����yE� \�f�'n��r�K�.�����8(ݱ��Ee��v�1�Ѳ���S�i�"�,z�
�L���܍@�0^�޷�(vpR|�{���w�>�Aql�4��kBDx�X�Q��!h�������s��#<aGt)�zO�|G� ��W:�KW�7^�6Q>쌉\Ԥ���8�c��iA��L��{�"_������[�r�(�q��,�*@XV3:���2G�d~s,i��XuΫ=����f
Άy6.�)hXր`��W;���ϑ�$*6FwK�4$+!dxӓ
!� iSw�
�pC�Y ��Vl[]�TBխul{%��4�Ѐ]SV`�Jp��0(����t���m��/h�@�ɽ�0̴����
�@�؄�Јp�.D4��m���t
p�*�`HBуt?�@s�)~8����k
�@�X���[t]pE�������x��X�3o��
(��7���N���	���Av�,A�y՜�J.AH��X��0$��&��_�֢�Rd�$=i9I��^�^��g�kb<6L#��Z����]zb(B�����)834K�!�v�}B�3��m5@�5�\Ԣ�D$Np��G�e�Ar�z�;`��^B�xO���
�r��U���b���X�k/` $�}�z�-�r��A�@
&���o�54'oȁF�@
�Xk���!�@$��m�T��tP���ڢת #*@
���`K�IH��J�F�#@��/����&�W&��	�@���#D@^a
*�
 @l@�H9�P�~�L@
N9�
o6l���"��"��n���C�
����*�
J ��~��2p 	�
(b�
������ ����=��AƠ ���! ��~ 4`��(l���ݰ'`s�^ M�1���
؂�>����\�/T�
t�n	�4B�
�p
���/	��#$�:��R���`�//2`	~�9���z"�<�3����#���@��!�f�*P�&@�m���t�/B@h6�s�L@(�Nq�����
�Bf�$�`;���\@T>�``	��� UT�� ��#"@cf�`�Ό?��KB� ��	�!R�#����|#���`��!ϪY,�^�r� �� !�$!BXa��*��4"B [�%"��L�߼�!Q����֠��$�%, ��$��P�]d.*ϊB�"�,�)z�	v�%B� : 
�3��`0�Sd@�ZB��)5p&���@�t�X-'`�
8�6@: �01�*���`�
dA� �0�
2�� 1CŒh��h��gz&8�hJ`f>�&�h�f.5b��$�
h@��V�ݸS>���?�K�>� P~�*��zgZ3 l(̀$�@���%�I� Ԡ�15�B���c��1T���������@ ��2���=�L6`��.���+]��d�
8)H�ؾ$"$@<���_*`
z�q`GJ��l���T�I��4�!:Aj&�A�rfJ$�Vvh��.�~��tMu���1)��qZGn >(��z6�f�
�H�#� r2Q�m(���
#p�r��@�"��Q��h�s�
L�K��tk)�Y��\��� C�	p�f ����|���	�R*���%0Z�`
`��,���qVum�-�&:�	�4 N�f��H��h(�T͂2�����R����K��pa)��� ��2v��Z`n��A�@ '�4���@qz�q{>�I�H 52& 0d_o6*H�4!�
)��V �`�NU��4�l�#�<)Tz���Z���: x�7�v���*l������B���6@^�g;�Q@��V_gA�
�@#@�vVnC���ЁrO�0�<��$7�
ⶎ&``@	4sLm��H���S�(ُ/ `(s w��vKRav!v�VaԠ��Tp27s/��B���b���ʀ	Z��_(O\�"@�s8 h�pe@�w3Г@u&�U��E��(Re4 <���	Ber�`ns�ׁ�R�6�@�!w@B6���9��e��P�]�r6��hM)O��?�h`�<�j�h�g]��g
%-<#�<��<=гJ�3�07��.�����x��(0ͪ��Ս� ��	<��*Ob
��8�1����$(\`l���؎/m3�\������l����|8�Y��!�����U�'��+ْ���bm��;ٓ?�CY�G��Kٔ$�c���Zٕ_��	`�b��Oٖo�s�0ʗ`�4�N�F��Uj@"�	�`���`,�A���Y��9���Ơ�@����j@�Z`
��ņ-����uٞ�HB�(3S&[!�ն�
��7��Y��(�.[@N@��f��a
!F!Xa>!��@|��&2�N "z�
l�
!.�����@` ��f!ڨ�'��jv�	f6�|@T�t:X T��l�rTm�
�����Zn��<�h��@����l`X�AX�8 �&�&!�@d�t�"y�n(O(�O��5q9`�kX@6Z��2��=�'@q�� ��@� �FU���@(�6qB �`��RȠn�c)����(��w͌�>��	�`��r�V�F�^0@�&A�`�L6��l��z�S_��@�@f ���dO�:a\AD�������?a
V�\�����`�@�#� 
��Ā^�@�u�M�����2���Rs���2ϋH�����6}"�(��� �U%l���6@��@71�KE��2�*�(��!|`�.rN@���@� *�+�\�J�F�Ġ� dz4a�`��ATJ`2J "!8A$�`�ߴ`X�~u��Mɥ�� mu1��w�iPT[����&.3�@dzv �q��G�J^@��$��a��
f`����r�@,��J� (~�z�`�b�,�e;`@օ�� Jܠ��<FN@ �>an`�@�4`g���+�:���
��� Z4R^�0���R�@#q Ty���x��	Рx �
~@r�!����|�������^=�^@��� ��
hAAt��e$~@V�|��`��ԫ�-~�r 	>�h�f�5�	��%QdJ�Tfa	d���T���
��U�ෙ��v�HL8��a
a���f��`N l�^':q�u���`��
d�����m�6�|`��>�C���	Ԁ��
\�z��v@F@@0�L�Rdq �&�� [����i~`x��j@�;H�`��f���{
�@z��\}J`B��@B�r���l��w�,�u�72�
l(HA
p�ҋ*�>���c"���<�0�…:|1�ĉ+Z��1�ƍ;z�2�P����I	�![�|	R�3bx(0&�,|�Q��M��b�3�Ҍ�lj���	,��5�֭\�z�
6l:y�f��lۺ}7�ܹt�ڽ�7�޼!��=�#��
SИ�$L�{;~9��Ah�f��͜;{�:��
Th�g[!F�[`�'�I �,� �t'�
��g��@&T5=���ԫG7`�	�+o${�>���7,'i�2�(�S��1>����G�9c�
R���`�
��A<���
�	��E4� 
\`�Ep�4���$��
��E9�����b�.�#HtaV)Їc�:���~`�
)�E�Uр<.�d��DЁYO��@�V^�e�.0	ch�%Z�9�i�A�M�94�'��G(�(q�	d�G���mw�	h��j���!���.ʨ]K �SX4�;���nʩx9paV2Jj����P	� �$� r�V�Eh���	��+��P���U��($@���>-�"@�j���^���=,pU6�f�Fٞ�ncQ��Y��/u\��G)�L�����8Pi�	"w�"F��Q�	��p�O���
�n���fu�A�a(H�q�*�E��P`@q�2ϼ���H.
Ks���� p`1x�ڳq(���H'
u�R�Y[��u֍�P�YjT�o��EZ���R���n�=���@/i�-`���J
x�&(��߆.�aIڎ?.Wj��_�q��؈�:�xP���z�W0@�z�w�Y�c�{��-�α���?�	��-��<�0B���OO�W,h7��o�}��	��!�WO~�-�������C[�:���?��Px����_�	0ß�l ��E�A 0xZ/�?�Z�?�=�
�à	��J��	_��q�Y0�!��9��<��&����DT]*�G|��Ll~P�&J�pK�~��,j1]~�÷�ƞ�@rPE#ˆ�$`�]�1`[���Ȥ\jp�#����N(�4N0@�B*�X>��HJR<�	�"/9(8@��&?�� ��,��Xp�I�r��ċ�RBSʲAh�l1�\n�/P�.ɠ��,�1�y���̴P %,���Iذ�jj3:U��1�	�I� R�ڦ9C�tB�lgF(�l�s�b��|곎* '=��`���AB�5�]��n�ψJ�����4�я8 ��DF?J
`�� -iF&SLt�,�_2�`ҘV�&؄(d��
� �8��C�x��
u�����Ӥ*D$@���zP���P�j:�v#�ju��W�jU��"�?A �Zus�[ߪ�8=j��\�
y�՝PܫO)�
v��J��W�j@�H�;0U��4�!�e/�(qA� �Ҁ
Ξ�!�GQ�R̪v�8J�vbiZzz@���6)p���X��glD��A9�����H�rj�@����^\{�>��	�'<��\ T
�9��#Xw��K3�I�k8���,��ġ/���#�y��6��?$���lN�8@��.@S3bX�4�I��̔�*����$�NH�x���s)Ld �<�,*�pc]n�
�p����ry�<pd��L�X �K.�*���U���ݲ)��(�٭�@�J��{@s1�B7/�H��YZ�,���
��"z`��^���y��!�
�H����4-�\K+����?�O{ZAӅ|
�iRc�P�"
�P�ژ�����������k?V���.�$M%;�(#��z�~�#��{�x�T��F㵠�7�m�4��ර�h�����rB��M=�;�!@t�
pBH��0�!��S�ш�$a�x�����OQU4�C�5��
|�R��
���w�0ɛ�� �~9�,@m�q
0���99�A�0O@V���Ln
�҉�1@��ֆ�r?��px0�\h`�R���n�h'	��۳���Ѐ�>�o�4��AL|��_�
p*��u��`q��lg���a~�[��n��"8,*z�]`��`9��\30Z�>U�����e��߿O�Y����U
�7N�N�b�͏>^}�
�0j@��������^$��C�b
��
��Ϯ�H��Ϥ\��䗿��G[����r�7���P�ǀ:B�6p��S: �0�,M���cr�M
(��1vqpo(;�c���B���#��r#���a�Yz5�7@�P'�w�I�:�AL;(�����!G��ԗ�XR8�3�{S��uq?� 0���1���}o�"0v�:)Y���UX#t���s?���o��"p�ň�#.D�����n��%�Y��� ��'��@��Ȋ�q@���7	}pF� �,N��o#�b�Ȋ�6;��7��M���!e�0`��5��i�H�+�m\`��(1��	� ����//p����w��sX���2t`��
�uF��Xe��V��"��L����X����	��0�h����00�Ў%	4�P^,i*+��7yx;��2�*�
<	 ��$%���6�v�7�8^t���"p
5��FmT���h��KIf�7Y�'����bI��^��WBYHЕqYIm�%'9�H��(�y�"�q���X~#�x�	�Y�Fɘ-��F �q@��"@G�{�)�}	����i��S�
�1p�ךƑ'�����d��Q��	 L�2����U�����Q|��֡-�.0��6�����ٕ���ٝ��l
tP��1@��)�	�]�Jz��A_� ���%���8�0�K�����
��+	�`����fP�e	A�b�H#!p�z��A`���C�/
7A���V*��D�y��!V���?���D��:J�jIH
��P�p�T�@Ť�ȣ>��\a  ��K�FV�\`[ʍy��\Z��q
�vzF�ynʊ�8��Yq,�	00�-1��:ѥ~ʊe&���a�aI�1����R�j�r���U�������:199�S�]�
��e%�1gy� !��i�u^��-!1:D�:
0����9�:��ɬ �>��
��ؚX��*�|ʭ11���@��]��kj�����z_I�*�+Ư���:�A�csb������f�@���;96]�}=j��q��hʯ@�#�X�}��,K.�+�J�	!x���wx"۳k|�Q)��E��hA�y�ƴ�A_�P�jSk�m\	�oW5`���F�����9�ѫf�n�uq��!PO5���s[`Eo[uѕ�|����<K�!G�*�_��A% 	����3�A#I�%O��a��¬8�q�����&xD��A04�����r�H�klcS�+�����ZuH�qx�
��V;\мPĉ����{,p)g�v���a<E�	����w������;f�#�	����
����	����c��
��.7�4��!�b6\aQ�C�����{���5�F���pУ!\���i����q=&S���H�l3��F7����<l
*p���N��D\�I{�~w�N	�l�Ę��;�V�uW��~g0��h<�`�?�[�U_n�P2p��9�~��'��('��Pgl��s�1rLT,��v����EP�)@��!@L�C	� ~���	�p��c05��Ĝ��&�ql�������[�Y�
��%�
�*:P�J��|�XPL���K@�@����	n�	��t�����	>�P���1�b�20a���70g#�R^2�	�r˰�`w�
�F0�`Hp_�pk�Y��0�p���	m 
9��A_0�(�)`��J�-*���N���X�h^��I�fa
I� �.
���]P% ��v(]Чx�He�)M0��͛���{�3�@P: 
6����0U���s�/��QN7 .f�JpoP�
��8��9+�_p�d�$=�5��`%�/(*���P�1��_�p0P�X�[,�P(`��#��Z�AP�P����K���
�(�R`��7 reMP8��q�����C�Q���)�P*��L
�j@�f�SPi=`(��0��ֽ?��J�p%T�1�/]Ux��!P3
&P �<,���
���нQ+��q�R�9���F�7�O�O��
F�ܲ��80�q�����.�Rr��,`P��fA`�Q.�p�l���mRp�<��=�a�AW:�!�3-� ��{`@ɩ�@/��
�wyhpf���s����P	8@mp�!�}@k�Ƈ6�
a���>��
���%A�ଈO=.`�.1.�I�۾a�����1�f�ܸ-� � � `�� ����+�
1�&0��s��j/�&�`�n��	`�./�Q�# �@o`�
1���#�/�!�0�0�p����}Xn��;8n`@�d��A��	���_��#bv���N1��A�i0	Y����'@E�)�+��������0t� ��]?���p��
J�7A@R6.m0�
⭎��pa
h��*0ӌ�0����A
(�YM1�����s0�� &��5"�7
� 
J�
�p6pZ�:p2 r�i���*pzv�[б�FC���%�<Pߒ�5.0 �]`���	�~խ`�������_1��'@`H�N�B�
>�Q�D�-^ĘQ�F�6XH��%M�����l2
 � Þ1�����!�"8T�P�E�E�T�R�M�>�Uj:>�X�5��c6rh@V�X�e͞E�V�Z�mݾ�{vD��h�������X��ة�E�C�.h���._ƜY�fΝ=zb��>���h֭'>H A@]/@��
&B@0 1��N����#3^�.�l\�0�v�ݽ^��+�@�bI2^
\d�_�|���:@�@ɱ;�
%za������!+�0B	'��B��� � �*���Gd�p�����D� ��8��(�(@�(� �(��R�FD��C�2���	
h�E-��K/�,*�!p� 
�`3�x����>9�xh�#�Y�48c�lX�dM
p�3�a
D'��RK/�p
8�0�&��L�
@�SL����T�`9b�(8@T聒 \aE	Yh)�Dfh�d�6Zi���)dh ��X`�?sbq� ��Νu�%�N�XW]�=�r��E�3��ʎ�� �R��Z�f�@�|�%��8�! �@��c�?>5x�#<��4Ѐ	1Z
��8����UXI�T�#-
�d�d�`	"��2� h���:�SX�^m;�q�Ƙ_��mblq��%��A]���������p�XB���Ȋ��Łn�G<����� �9�@�*(�*Р	n&��P`��F`��$H� �v��K �����L���C4� 8�6���	t`�7��tާ��z�Ǟ��-Ǟ�:{��'�|�| }��W�P�+D�q��1��N'Jh�M,2�8@Ѐ �AVR��fa���8A
VЂ�P��@v�A�Є'D�S*��-4~Iae8C�p!�#�<�9�@N0��;z/* default layout */
.ajax__tab_default .ajax__tab_header {white-space:normal !important}
.ajax__tab_default .ajax__tab_outer {display:-moz-inline-box;display:inline-block}
.ajax__tab_default .ajax__tab_inner {display:-moz-inline-box;display:inline-block}
.ajax__tab_default .ajax__tab_tab {overflow:hidden;text-align:center;display:-moz-inline-box;display:inline-block}

.ajax__tab_xp .ajax__tab_disabled { cursor: default; color: #A0A0A0; }


/* xp theme */
.ajax__tab_xp .ajax__tab_header {font-family:verdana,tahoma,helvetica;font-size:11px;background:url("tab-line.gif") repeat-x bottom;}
.ajax__tab_xp .ajax__tab_header .ajax__tab_outer {padding-right:4px;background:url("tab-right.gif") no-repeat bottom;height:21px;}
.ajax__tab_xp .ajax__tab_header .ajax__tab_inner {padding-left:3px;background:url("tab-left.gif") no-repeat;}
.ajax__tab_xp .ajax__tab_header .ajax__tab_tab {height:13px;padding:4px;margin:0px;background:url("tab.gif") repeat-x;}
.ajax__tab_xp .ajax__tab_header .ajax__tab_hover .ajax__tab_outer {cursor:pointer;background:url("tab-hover-right.gif") no-repeat right;}
.ajax__tab_xp .ajax__tab_header .ajax__tab_hover .ajax__tab_inner {cursor:pointer;background:url("tab-hover-left.gif") no-repeat;}
.ajax__tab_xp .ajax__tab_header .ajax__tab_hover .ajax__tab_tab {cursor:pointer;background:url("tab-hover.gif") repeat-x;}
/*.ajax__tab_xp .ajax__tab_header .ajax__tab_active { margin-top: 1px; }*/
.ajax__tab_xp .ajax__tab_header .ajax__tab_active .ajax__tab_outer {background:url("tab-active-right.gif") no-repeat right;}
.ajax__tab_xp .ajax__tab_header .ajax__tab_active .ajax__tab_inner {background:url("tab-active-left.gif") no-repeat;}
.ajax__tab_xp .ajax__tab_header .ajax__tab_active .ajax__tab_tab {background:url("tab-active.gif") repeat-x;}
.ajax__tab_xp .ajax__tab_body {font-family:verdana,tahoma,helvetica;font-size:10pt;border:1px solid #999999;border-top:0;padding:8px;background-color:#ffffff;}

/* xp theme vertical left */
.ajax__tab_xp .ajax__tab_header_verticalleft {font-family:verdana,tahoma,helvetica;font-size:11px;background:url("tab-line.gif") repeat-y right;}
.ajax__tab_xp .ajax__tab_header_verticalleft .ajax__tab_outer {padding-right:4px;background:url("tab-right-verticalleft.gif") no-repeat right;height:21px;}
.ajax__tab_xp .ajax__tab_header_verticalleft .ajax__tab_inner {padding-left:3px;background:url("tab-left-verticalleft.gif") no-repeat;}
.ajax__tab_xp .ajax__tab_header_verticalleft .ajax__tab_tab {height:13px;padding:4px;margin:0px;background:url("tab-verticalleft.gif") repeat-x;}
.ajax__tab_xp .ajax__tab_header_verticalleft .ajax__tab_hover .ajax__tab_outer {cursor:pointer;background:url("tab-hover-right-verticalleft.gif") no-repeat right;}
.ajax__tab_xp .ajax__tab_header_verticalleft .ajax__tab_hover .ajax__tab_inner {cursor:pointer;background:url("tab-hover-left-verticalleft.gif") no-repeat;}
.ajax__tab_xp .ajax__tab_header_verticalleft .ajax__tab_hover .ajax__tab_tab {cursor:pointer;background:url("tab-hover-verticalleft.gif") repeat-x;}
.ajax__tab_xp .ajax__tab_header_verticalleft .ajax__tab_active { margin-top: 1px; }
.ajax__tab_xp .ajax__tab_header_verticalleft .ajax__tab_active .ajax__tab_outer {background:url("tab-active-right-verticalleft.gif") no-repeat right;}
.ajax__tab_xp .ajax__tab_header_verticalleft .ajax__tab_active .ajax__tab_inner {background:url("tab-active-left-verticalleft.gif") no-repeat;}
.ajax__tab_xp .ajax__tab_header_verticalleft .ajax__tab_active .ajax__tab_tab {background:url("tab-active-verticalleft.gif") repeat-x;}
.ajax__tab_xp .ajax__tab_body_verticalleft {font-family:verdana,tahoma,helvetica;font-size:10pt;border:1px solid #999999;border-left:0;padding:8px;background-color:#ffffff;}

/* xp theme vertical right */
.ajax__tab_xp .ajax__tab_header_verticalright {font-family:verdana,tahoma,helvetica;font-size:11px;background:url("tab-line.gif") repeat-y left;}
.ajax__tab_xp .ajax__tab_header_verticalright .ajax__tab_outer {padding-right:4px;background:url("tab-right-verticalright.gif") no-repeat right;height:21px;}
.ajax__tab_xp .ajax__tab_header_verticalright .ajax__tab_inner {padding-left:3px;background:url("tab-left-verticalright.gif") no-repeat;}
.ajax__tab_xp .ajax__tab_header_verticalright .ajax__tab_tab {height:13px;padding:4px;margin:0px;background:url("tab-verticalright.gif") repeat-x;}
.ajax__tab_xp .ajax__tab_header_verticalright .ajax__tab_hover .ajax__tab_outer {cursor:pointer;background:url("tab-hover-right-verticalright.gif") no-repeat right;}
.ajax__tab_xp .ajax__tab_header_verticalright .ajax__tab_hover .ajax__tab_inner {cursor:pointer;background:url("tab-hover-left-verticalright.gif") no-repeat;}
.ajax__tab_xp .ajax__tab_header_verticalright .ajax__tab_hover .ajax__tab_tab {cursor:pointer;background:url("tab-hover-verticalright.gif") repeat-x;}
.ajax__tab_xp .ajax__tab_header_verticalright .ajax__tab_active { margin-top: 1px; }
.ajax__tab_xp .ajax__tab_header_verticalright .ajax__tab_active .ajax__tab_outer {background:url("tab-active-right-verticalright.gif") no-repeat right;}
.ajax__tab_xp .ajax__tab_header_verticalright .ajax__tab_active .ajax__tab_inner {background:url("tab-active-left-verticalright.gif") no-repeat;}
.ajax__tab_xp .ajax__tab_header_verticalright .ajax__tab_active .ajax__tab_tab {background:url("tab-active-verticalright.gif") repeat-x;}
.ajax__tab_xp .ajax__tab_body_verticalright {font-family:verdana,tahoma,helvetica;font-size:10pt;border:1px solid #999999;border-right:0;padding:8px;background-color:#ffffff;}

/* header on bottom */
.ajax__tab_xp .ajax__tab_header_bottom {font-family:verdana,tahoma,helvetica;font-size:11px;background:url("tab-line.gif") repeat-x top;}
.ajax__tab_xp .ajax__tab_header_bottom .ajax__tab_outer {padding-right:4px;background:url("tab-bottom-right.gif") no-repeat right;height:21px;}
.ajax__tab_xp .ajax__tab_header_bottom .ajax__tab_inner {padding-left:3px;background:url("tab-bottom-left.gif") no-repeat;}
.ajax__tab_xp .ajax__tab_header_bottom .ajax__tab_tab {height:17px;padding:0px 4px 4px 4px;margin:0px;background:url("tab-bottom.gif") repeat-x;}
.ajax__tab_xp .ajax__tab_header_bottom .ajax__tab_hover .ajax__tab_outer {cursor:pointer;background:url("tab-bottom-hover-right.gif") no-repeat right;}
.ajax__tab_xp .ajax__tab_header_bottom .ajax__tab_hover .ajax__tab_inner {cursor:pointer;background:url("tab-bottom-hover-left.gif") no-repeat;}
.ajax__tab_xp .ajax__tab_header_bottom .ajax__tab_hover .ajax__tab_tab {cursor:pointer;background:url("tab-bottom-hover.gif") repeat-x;}
.ajax__tab_xp .ajax__tab_header_bottom .ajax__tab_active .ajax__tab_outer {background:url("tab-bottom-active-right.gif") no-repeat right;}
.ajax__tab_xp .ajax__tab_header_bottom .ajax__tab_active .ajax__tab_inner {background:url("tab-bottom-active-left.gif") no-repeat;}
.ajax__tab_xp .ajax__tab_header_bottom .ajax__tab_active .ajax__tab_tab {background:url("tab-bottom-active.gif") repeat-x;}
.ajax__tab_xp .ajax__tab_body_bottom {font-family:verdana,tahoma,helvetica;font-size:10pt;border:1px solid #999999;border-bottom:0;padding:8px;background-color:#ffffff;}

/* scrolling */
.ajax__scroll_horiz {overflow-x:scroll;}
.ajax__scroll_vert {overflow-y:scroll;}
.ajax__scroll_both {overflow:scroll}
.ajax__scroll_auto {overflow:auto}
.ajax__scroll_none {overflow:hidden}

/* plain theme */
.ajax__tab_plain .ajax__tab_outer {text-align: center; vertical-align: middle; border:2px solid #999999;}
.ajax__tab_plain .ajax__tab_inner {text-align: center; vertical-align: middle; }
.ajax__tab_plain .ajax__tab_body {text-align: center; vertical-align: middle;}
.ajax__tab_plain .ajax__tab_header {text-align: center; vertical-align: middle;}
.ajax__tab_plain .ajax__tab_active .ajax__tab_outer {background:#FFFFE1;}
�.ajax__dropdown_arrow {position:absolute;height:100%;overflow:hidden;}
.ajax__dropdown_panel {background:white;border:1px solid #868686;}
.ajax__dropdown_frame {border:1px solid #2353B2;overflow:hidden;font-size:1px;text-align:right;position:absolute;cursor:pointer;}
.ajax__dropdown_frame_line {overflow:hidden;font-size:1px;position:absolute;cursor:pointer;}
.ajax__dropdown_arrow_image {background:url(<%=WebResource("DropDown.drop-arrow.gif")%>) no-repeat 50% 50%;}
.ajax__dropdown_arrow_wrapper {position:absolute;top:50%;left:50%;}
.ajax__dropdown_arrow_wrapper img {position:relative;top:-50%;left:-50%;margin-top:-50%;}
@media screen and (-webkit-min-device-pixel-ratio:0) {
.ajax__dropdown_arrow_wrapper img {top:0%;}
}
��PNG


IHDR#"Յ`�	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�F�IDATxڤ�KoW��֫����c0m���<H<`�,�,H�(B��D��ؐ]�����H�D�e��@��3Ba�@����Y�{ϙ���v�gIGU]]U�W�{��`f��M!�����k��z�b��W�.,�����q�i�r?@�'"�y0� 8f��m�}�g�h48��'a@��<�ѣG�����4M�RJ�?~��ŋm�dƔ1c����0�I1c������:��o��R�T���&�YZ1@���+7nܸ���o�}��+�zP��͛=�����0�c ��_}����۱c�!)�ff!��j�D�PJ�n��z�ʕ�s��]�p��C]1��i<77�D��{�1L�v����|���C���8N��Q��a��'�.?�"�V�-��G�Ϝ9�5���Jl�K�.�#G�L�e���S\�p����r��RfN�WO!���ȀfA�7n�����.�,���[��V_�N��0��$A������;�Tgff���;�����	9|f.����cf����:�R6���79r��+����B�8v�XcM� ؽ{�� Ɖ(&"bf�=x�X0s`���Z+!D{۶m8�����ǵR�c�8�a{��?��M���J)�̮�`~�X��gf��\"r�,K�0��}��߿��k�1�{6C/f*�������?
�a�TW�0�'��w!�#�����d��-��ZgJ���O?]�V�;\�9�Y��j�S�����L!�֚�W<�"B��u\�/0����j�)�hzzzb��ݛM��!�?�V�����B�0�eY��BJ�
!)��8E!�oy&O���Y3s&�H��}j���)�t���c۶m�\�~��#��r 8��O�q܊�a�����J)�n�;�j�J��RJGѫ�h��Z)��b�X��(��4M#"r� ���rPm�RjX)�VVV��nw1�;�Je��˗�^�xqrbbSSS�y�W�(�p��=��u�ٳ�N�<yeaaa���t��b(���Z�@ē`D���$I�e�4���F��o�m}������ם���V�Ռ�X�i
��@D�t:P�W핕�(�cWk�$If�V��ݻ��S�N�0]��T��*��h�Ν7��fE%I�B���m��lf���a����^��0�$I��""�<��S�y饗~���8��$"�$I�v��^^^nw�]����[XX+++m+
�A0��7��ޱcG6;;[�Z7�4�4M�N��j�Z�q�Wc�u�ZkRJ�~���RAP�z�j���T3}���m?P_}��R�Z}�o߾M��գ(��d��/�FGG����sss�f�Y�Z���Ycg�d~~��_|����F���e���M��yN�\.��V�ݷz��ΠiR��?��ߎ�lߵk�L�T�<x𠩵�_
�8�ܸq���۷7}��gK�z�6���[ҵ-ċ/�h{&߽{���?�<ok�T!"��)~��,�J#̼��ٳq�ټ�a`b�.њ�d�~7)��Ν;����_:w�vg{�R�}��Z��dZk��e˖r�e��|�M�����I�|`�D�3=o���Ç��/���k������g�����8qbzvv����Z���N��)�zs]W��R�866V�|���{�w��*�n��h�4���{0��׮]��߂i�F�/�J)�˻^xᅠZ�&�r��qFD$��a��7n��?���V�-�e�
�e��r�c�T�UnݺeK�x(4�∔r<�=R�)#SSSrxxX4�M�{�.i��D�BD?���D˚��d-�֭[{����
�3@��Tn!D	@���LY:�kY4H�X��1���������/g��߼�������Am�ȺkD[flll�(��x���<Ki�km�'o��$���)
k@l�� ��WR�O��(�:�qz�Ǿ��'�uտOm�� ���&~��?����ZIEND�B`���PNG


IHDR#"Յ`�	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�F	IDATxڬ�kl����y���v�y�y8��Њ4P*QH�j@iZ�~�TTP�XU+�!�*P��!*�HHU?�(��$!$Q���ر]?�Ǿfw�y���.�V�+ݙ���o���=�?���Y~�1�z�>�D�,�R�1�LB�nܸ9�Ec���Q�݀"���1*�࿃�A0����6��@�G�0��ej��?´�Т����۷o��\J�N�:5���ϗ"�@E���r������}Z��@����P�C=toOOϭ	M��~�5%7WQ�.g����|�����s���bф@�|�	�s��01A��=x���u�����q6q�c�B*0�$'�%�F�Tg��R������O=��K�>���:�It��ERJaϞ=��42\�
b�s��v<�����o
��	\����T�����|�y5a��avU����uG��W�z@-���@�ϟ��{�~�3A4�.>5�o�q`p�� 
IxW�B�N���aY����Z:+�Jza�;��>�hd���Q�[�}��ѣ����co�^��hY�ض�l6�PE�8~���n���_$��X�BUR�ԑ
����(�4@J2R���=��%-[���-�����?���cǎ�@%Rɋ�PS�����y��KO'��(Zk�2�nx�f9:�c�q0��$���}%E@��"2-���cd\�g/&w��u��X"�_�
�u��~�ĉ}��ѯ�ҘQr��q��f�����A�hed��5�ktO�>��鍾5ٓ�,tZ%�d�D��*�y(8�l�~�ܖ�����
  =t���̆
���z��[��T��)�����Q`$�^��O^����7�ǯb$_��.�?����޵%�u���JI7 ��2���3o�7n������_�LlI�>|�Y����/�`�/X��9��B!���+ȏ֠i
���~f��l�#�Q�Q��t
�.O�T�^Y�gϞA#�!.Q�-ڲe����;�3+��g��rL�,�C%4M���%CL�4H��ؓW�'/�2��\��Iiz=��ɝY�>窵q��]�45`8�Z8!���'Gwr�d�%���un�5���f5MӰ��K�X��/��A~�N>r�.�(��/�5�-VxjM���k�H�έ�M��C/.�P��+9?�-��q1���eYH&�B�m\���o�q�;W����W[g �5�1�*R���a_��}�m���r˫i��L��T��>�Ԯu���<!i	�ܶ�S�{����3x�;�.�LE�A=$3pE�3d�ZE��߾j�J%�e������ FI�`��9�]�T�\۱5�/ݲ�$�O4��Jr�֓ 6�����Vµm�iw�V@����sF�H8BVC&$H����`���j���Wt|���l��k`���
����
���b�h�x522r�2�T�>W蚧	���u��loe�Y�@����o;\�uMGׅ�Y}�8_�����Ge��S;e���ٳ��6}g�_�r:����(tA�e0�>��f��Va|*�1���  ߩׇ/���Ba"�J4��e0�v�?���/��g�V��(r��j��Û�VY`�A�=P�8�GnK ?D��@.V��B�$`����t����¥Xo���i�3!��̙3g�]w�cG�/����dPF�ظ����@0��p��A�>B߃������p�����P�%]�3���+�p'&&^��ȶɉA�f�R#��C�ڐv��U/A�(�Y+B�VJ�$�HfB���d&+���ƍ�%��6�j�x��|>����3�|���_�*��\�E�
2��d.3j�xB�sB�[�R��|�O���ӎ�@)�q"eT|���P�������k���zO>Y���LA��� ���8� �T� ��<2�O�islj����8�,F��+��[�No��ݐR�����7 	 �i�ꮮ�ov��iw�3���¤�HL\#�=/���r�X�)ȷ�0<GDs
�*v,�ö0۷o�R
~�aܢ�QA��d�=�e��9�<�n[�I��{�3D4&��`.�y%�㵀,�h����V��G@V�T#��>)"�h16�^�@#�vV%f�?����]f7K�R��գ�Ì�1{+�\�[��f�]fښ0�\n�)w]���m��1����{+�N��2�D"�$-_x��[J�j1�ׅX#�h��}��'��?�I�z+���Ï}��{PvH��IEND�B`���PNG


IHDR#"Յ`�	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�F�IDATxڬ�Ol��ǿ�3���$0#hH�H!lJU�D�E�V���m���ZU\+@�Pq@H���\r@AP�
�#@"�BJ��d��ɐ��ɐό��g���x�����s�7�ǿ�?�1|�C!|��禌�q]�_5M��?<�?\��y��wΡ�eY,�W�u࿃	@D���s!����(
���"�A��0�@ȞDD�z{{;,�]�FGG�]���P�'�7�H0��۷,SgG.!�G6�;w�/_��}�T����`�j�U*V*�����??~|�����v�6y�W������9���"�ɼ&�8{��'�^��V��ªժ�%���؃�?~�'�f	�~455����o,���H���"yo}��i_gg痢(�8_0h��(�� ����U�����ԩSPP`zfs���1v��A��f�mò��y�SSS�loo���1M�m�R
�q|�sHJ��O�e�R)�ٳ�wW�\����Ѡ�*�J�ft]G<�Z���o����篚��R�;��HP�\S�1d2�����ҥKw�<-���3̏&�40O@����犢�4M��A|3�5x5�ה(�hkkÎ;�<DW0��o&B?D���@<�)��e�q�$IX\\D.���߿r0�q`�&TUEGG�ӧO���Ew��<���LhJSS�@4�!EQ���AȲ�'N�ѣGx��
fff��ׇT*U�8(�hooGss���pd�N3��.�?�{��|�;(�L,C,���VVV��`�&�^����(�Y�}S9�۶!IR�����⊧A�h���F�Q�<�$I�a4M�,ˈF�PU�X�,�Ν;�w�EA$��R
B�lق���zfR�Q.�L;Mӄ��e�x�w�L&UU!�2$I�}�1Y�a�6�={���%>|؇!��u]��I�>�7�su�I Z�����T*�4M���`�ƍǓ'O�J��u�V(�R�#)��cnn������G2��a�~۶�B �`]�]˲`YL���\�d���8v�����۷��˘����www�…X[[C�Z�	��\.�u*��U�X,�#��qX�A�F���I�j�vww�ƍ�d2Y��ىl6���5PJ!�2��2t]��{n8����.
`��4MBP�T��:è˺�m#��1�P�VQ.�Q�T@cx��ݛ`��M�z0������<EOz�_‡i�u�`��M�(
&''����w����3�����LKK��]�v�E���Xc{~,//chh��4PJ��:LӄeY�4
�bϟ?����d�7]a�`�hf������݋r�۶��:6l؀��Ah�A�7ECCC�6)����T*p]�������=/�/�ڑ�1`���?1�~���YCC
�*�
(��4��1�X��|S[d�/��`uu�R466��ט��x����P��xKZk��G���7or�XH6��6<<��ɓ'����i�T�[���$<�%	���/�T*�
@у!�����&��x���Lf"�����ˈD"H�R�>D�4,���d2	J)Μ9�B�0T�V����f\?��<p�&&&��U����---�����#G��`���(
(�~��$IPU�xMMMx��!�_��0�`�]y�Ps���|���8�����`���l�ey�M�~�ǿ8t�v�܉D"�y��rx��nݺ�B������1�� ����\�o�tuu�u]����� ��<���b�/A�c������A�u,,,�q�y��?\׽�[�^�Vn3R�m�6��-..�'>��<MqQEQ� �3c��CLO�1N[R�y��qsmm-<�F��#Ż.�[�sL+�;�p֭�!>L"���	!덷,wó6
��N Ӳ�@j`TU��Bf*<����ↆ�B�H�T����O"u�?�I�Cup���mo���:��S�IEND�B`�#�PNG


IHDR#"Յ`�	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�F	NIDATxڤ��oEǿUՏ�y�1~%v�`����]%�k7��{@��@V"
BB$8p���@.rD!�	8�P	2��n6ِxc�;��ӯ�z�n�=1�j)��iU}�W�����Dk�_�!��7��j�7�Rj��f�0�����Iʒ{?���Js�u=@�+���IA��䚤`4@�{˲4�������W�- ��L�c�=�;z�h�
!��痿��Z D���Tcc�����t=���I��!��{���_?���=���ڴ�4jii�z�ƍ�ӧOO~��Ua�֡�[�n�
n
�a1���/����k�����6i�5!D%��	UJ!�<oybbb�̙3����K<IzrrR+��o߾
���c� �g�}�dd�c�9��+���
� M<I1X��r�������pc�0
t��E=66�3Q%k�^{|||tϞ=���(���:��B�������A#۶�����cǎ��R�}뭷���}�ϻ��O
���$R�{�7088x�0�!�/��J)� ��Zg�{'u�QJRʐR�����466v��g�}@>~֌����<�Z�=44tȶ��T{-�kb�����+���cke�5�*�!�����4<<�[��ر��԰�LA �>��w۷o�@
!c̡�6,..vJ)��&��b�T*9���&ZkH)#Ji���cN)%����8l�޽�<���Ϟ=��8��T�l�tww�����s ���!��PJ>���R�dY����9rd�O>i�ZC!�0D�X_z�OJ�	!��z�800���T �$��`���;
�B!D
!4c�`B2���l6˲`Y�mۦ�~����"�����O?-p�	!�`i�
)eh۶����644�y���Zd�ڔ��w����L&����k�	��`h�Y.��B��	�0`��۹R�B(!���r9J)b/���������ׯ_�`����,���`-����4
��֚i��w�ޚ�Ҏ�C-..:�a�MMMJ)%	!�a���5R?6��f���s_)eض�T�t����B��BT�Պ�ys���;v������?>>���Ң�=�&�4&&&Z9�6���\�ohhXٷo������R�t����B��fBH��2SB~
��j5�!�(����Rն�w�y���w�E�?333p���w��)�;wnfddd~׮]�7�x��W^��T*���I0MJ)���-N��<�n�j����R�0�!���bQJ��i����n�:u���<yr�ҥKC/���؅�-��+��c���5cuu5�j�z
@/,,�*�
!���@�qA	!�1�2�L�a9���~���g�R8q�D�_|�����al�!������Z��R��z���v�����Td�vVJI9��+ι�Zk����d��+W���螝������`RJ�9לsH)�m��˗/G�x;��a[��o��v�￟ð�4M�s��뺞�R޼y�~��'u���?���Ä��3��}��wN2�B�j���s�4���������j9UJ$��F	���!X=4::z�СC����L&cttt4�J�~EJ)�}���V����ߖ����F?�r{{�?���+AD���gϞm�Y�T�`@��0�X& �t���c���677��rٽw��JSSӵ\.���8�bii�!dgggɶm�0E��</����|ߗ��������.\X�T*��웜Mz�g�z�)|��G4>�����G����������ڝr�\K`�Zk)%!����-�]B���V�,k�S������0oXPIy%��c&�I�p�?��۷o_<s�d�=���U$�P�ue�V��� ��2�mmm-r]WBhggg3��7ߔ�Ri:�;�cϬC�'��3��7�|�$ #N�9
�s��o�?޳������J�Rq]׍���A���ܜmll,~��׍�Ν<ϻ)���H�j\���e��0��ÐR��ի�7B�XKss���b�O<a��b�A��R�R�8�5;;��q�����ry!�X�!��I�s��5��R
SSSi�b�r�r�@)mq�ה�.���.�����ꪾ{���R֔RU�ԿSq����u �av�ܹ.��ݻW��T��MY�� ����d"�����[I���؀����$7������vʬTa��[&�p|���I���466> ʃ �J�&`fJi�kmQ'oeZIn�	&��lI[�����uG���?�cl]��ܷ���$��_�6�������F~���j��n��IEND�B`�a4// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference name="MicrosoftAjaxWebForms.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />

(function() {
var scriptName = "ExtendedWatermark";

function execute() {

Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.TextBoxWatermarkBehavior = function(element) {
    /// <summary>
    /// The TextBoxWatermarkBehavior applies a watermark to a textbox
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// Textbox associated with the behavior
    /// </param>
    Sys.Extended.UI.TextBoxWatermarkBehavior.initializeBase(this, [element]);
    
    this._watermarkText = null;
    this._watermarkCssClass = null;

    this._focusHandler = null;
    this._blurHandler = null;
    this._keyPressHandler = null;
    this._propertyChangedHandler = null;
    this._watermarkChangedHandler = null;
    this._oldClassName = null;
    this._clearedForSubmit = null;
    this._maxLength = null;

    if ((typeof(WebForm_OnSubmit) == 'function') && !Sys.Extended.UI.TextBoxWatermarkBehavior._originalWebForm_OnSubmit) {
        Sys.Extended.UI.TextBoxWatermarkBehavior._originalWebForm_OnSubmit = WebForm_OnSubmit;
        WebForm_OnSubmit = Sys.Extended.UI.TextBoxWatermarkBehavior.WebForm_OnSubmit;
    }
}
Sys.Extended.UI.TextBoxWatermarkBehavior.prototype = {
    initialize : function() {
        /// <summary>
        /// Initialize the behavior
        /// </summary>
        Sys.Extended.UI.TextBoxWatermarkBehavior.callBaseMethod(this, 'initialize');

        var e = this.get_element();

        var hasInitialFocus = false;
        
        var clientState = Sys.Extended.UI.TextBoxWatermarkBehavior.callBaseMethod(this, 'get_ClientState');
        if (clientState != null && clientState != "") {
            hasInitialFocus = (clientState == "Focused");
            Sys.Extended.UI.TextBoxWatermarkBehavior.callBaseMethod(this, 'set_ClientState', null);
        }

        this._oldClassName = e.className;

        this._focusHandler = Function.createDelegate(this, this._onFocus);
        this._blurHandler = Function.createDelegate(this, this._onBlur);
        this._keyPressHandler = Function.createDelegate(this, this._onKeyPress);

        $addHandler(e, 'focus', this._focusHandler);
        $addHandler(e, 'blur', this._blurHandler);
        $addHandler(e, 'keypress', this._keyPressHandler);

        this.registerPropertyChanged();

        var currentValue = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element()).get_Current();
        var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element());
        if (("" == currentValue) || (this._watermarkText == currentValue)) {
            wrapper.set_Watermark(this._watermarkText)
            wrapper.set_IsWatermarked(true);
        }
        if (hasInitialFocus) {
            this._onFocus();
        } else {
            e.blur();
            this._onBlur();
        }

        this._clearedForSubmit = false;

        this.registerPartialUpdateEvents();

        this._watermarkChangedHandler = Function.createDelegate(this, this._onWatermarkChanged);
        wrapper.add_WatermarkChanged(this._watermarkChangedHandler);
    },

    dispose : function() {
        /// <summary>
        /// Dispose the behavior
        /// </summary>
        var e = this.get_element();

        if (this._watermarkChangedHandler) {
            Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element()).remove_WatermarkChanged(this._watermarkChangedHandler);
            this._watermarkChangedHandler = null;
        }

        if(e.control && this._propertyChangedHandler) {
            e.control.remove_propertyChanged(this._propertyChangedHandler);
            this._propertyChangedHandler = null;
        }

        if (this._focusHandler) {
            $removeHandler(e, 'focus', this._focusHandler);
            this._focusHandler = null;
        }
        if (this._blurHandler) {
            $removeHandler(e, 'blur', this._blurHandler);
            this._blurHandler = null;
        }
        if (this._keyPressHandler) {
            $removeHandler(e, 'keypress', this._keyPressHandler);
            this._keyPressHandler = null;
        }

        if(Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element()).get_IsWatermarked()) {
            this.clearText(false);
        }

        Sys.Extended.UI.TextBoxWatermarkBehavior.callBaseMethod(this, 'dispose');
    },

    _onWatermarkChanged : function(sender, eventArgs) {
        /// <summary>
        /// Handler invoked when the watermark changes
        /// </summary>
        /// <param name="sender" type="Object" mayBeNull="true"/>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="true" />
        if (Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element()).get_IsWatermarked()) {
            this._onBlur();
        } else {
            this._onFocus();
        }
    },

    clearText : function(focusing) {
        /// <summary>
        /// Clear the text from the target
        /// </summary>
        /// <param name="focusing" type="Boolean">
        /// Whether or not we are focusing on the textbox
        /// </param>
        var element = this.get_element();
        var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(element);
        wrapper.set_Value("");
        wrapper.set_IsWatermarked(false);
        if(focusing) {
            element.setAttribute("autocomplete","off");  // Avoid NS_ERROR_XPC_JS_THREW_STRING error in Firefox
            element.select();  // This fix displays the blinking cursor in a focused, empty text box in IE
        }
    },

    _onFocus : function(evt) {
        /// <summary>
        /// Handler for the textbox's focus event
        /// </summary>
        /// <param name="evt" type="Sys.UI.DomEvent">
        /// Event info
        /// </param>
        
        var e = this.get_element();
        if(Sys.Extended.UI.TextBoxWrapper.get_Wrapper(e).get_IsWatermarked()) {
            this.clearText(evt ? true : false);
        }
        e.className = this._oldClassName;
        
        if (this._maxLength > 0) {
            this.get_element().maxLength = this._maxLength;
            this._maxLength = null;
        }
    },

    _onBlur : function() {
        /// <summary>
        /// Handle the textbox's blur event
        /// </summary>
        var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element());
        if(("" == wrapper.get_Current()) || wrapper.get_IsWatermarked()) {
            if (this.get_element().maxLength > 0 && this._watermarkText.length > this.get_element().maxLength) {
                this._maxLength = this.get_element().maxLength;
                this.get_element().maxLength = this._watermarkText.length;
            }
            
            this._applyWatermark();
        }
    },

    _applyWatermark : function() {
        /// <summary>
        /// Apply the watermark to the textbox
        /// </summary>
        var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element());
        wrapper.set_Watermark(this._watermarkText);
        wrapper.set_IsWatermarked(true);
        if(this._watermarkCssClass) {
            this.get_element().className = this._watermarkCssClass;
        }
    },

    _onKeyPress : function() {
        /// <summary>
        /// Handle the textbox's keypress event
        /// </summary>
        Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element()).set_IsWatermarked(false);
    },

    registerPropertyChanged : function() {
        /// <summary>
        /// Method called to hook up to Sys.Preview.UI.TextBox if present
        /// Note: This method must be called manually if the Sys.Preview.UI.TextBox
        ///       is added after the TextBoxWatermarkBehavior is initialized.
        /// </summary>

        var e = this.get_element();
        if(e.control && !this._propertyChangedHandler) {
            this._propertyChangedHandler = Function.createDelegate(this, this._onPropertyChanged);
            e.control.add_propertyChanged(this._propertyChangedHandler);
        }
    },

    _onPropertyChanged : function(sender, propertyChangedEventArgs) {
        /// <summary>
        /// Handler called automatically when a property change event is fired
        /// </summary>
        /// <param name="sender" type="Object">
        /// Sender
        /// </param>
        /// <param name="propertyChangedEventArgs" type="Sys.PropertyChangedEventArgs">
        /// Event arguments
        /// </param>
        if("text" == propertyChangedEventArgs.get_propertyName()) {
            this.set_Text(Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element()).get_Current());
        }
    },

    _onSubmit : function() {
        /// <summary>
        /// Handler Called automatically when a submit happens to clear the watermark before posting back
        /// </summary>
        if(Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element()).get_IsWatermarked()) {
            this.clearText(false);
            this._clearedForSubmit = true;
        }
    },

    _partialUpdateEndRequest : function(sender, endRequestEventArgs) {
        /// <summary>
        /// Handler Called automatically when a partial postback ends
        /// </summary>
        /// <param name="sender" type="Object">
        /// Sender
        /// </param>
        /// <param name="endRequestEventArgs" type="Sys.WebForms.EndRequestEventArgs">
        /// Event arguments
        /// </param>
        Sys.Extended.UI.TextBoxWatermarkBehavior.callBaseMethod(this, '_partialUpdateEndRequest', [sender, endRequestEventArgs]);

        if (this.get_element() && this._clearedForSubmit) {
            this.get_element().blur();
            this._onBlur();
            this._clearedForSubmit = false;
        }
    },

    get_WatermarkText : function() {
        /// <value type="String">
        /// The text to show when the control has no value
        /// </value>
        return this._watermarkText;
    },
    set_WatermarkText : function(value) {
        if (this._watermarkText != value) {
            this._watermarkText = value;
            if (Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element()).get_IsWatermarked()) {
                this._applyWatermark();
            }
            this.raisePropertyChanged('WatermarkText');
        }
    },

    get_WatermarkCssClass : function() {
        /// <value type="String">
        /// The CSS class to apply to the TextBox when it has no value (e.g. the watermark text is shown).
        /// </value>
        return this._watermarkCssClass;
    },
    set_WatermarkCssClass : function(value) {
        if (this._watermarkCssClass != value) {
            this._watermarkCssClass = value;
            if (Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element()).get_IsWatermarked()) {
                this._applyWatermark();
            }
            this.raisePropertyChanged('WatermarkCssClass');
        }
    },

    get_Text : function() {
        /// <value type="String">
        /// Wrapper for the textbox's text that will ignore or create the watermark as appropriate
        /// </value>
        return Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element()).get_Value();
    },
    set_Text : function(value) {
        if ("" == value) {
            Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element()).set_Current("");
            this.get_element().blur();
            this._onBlur();  // onBlur needs to see ""
        } else {
            this._onFocus();  // onFocus sets ""
            Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element()).set_Current(value);
        }
    }
}
Sys.Extended.UI.TextBoxWatermarkBehavior.registerClass('Sys.Extended.UI.TextBoxWatermarkBehavior', Sys.Extended.UI.BehaviorBase);
Sys.registerComponent(Sys.Extended.UI.TextBoxWatermarkBehavior, { name: "watermark", parameters: [{name:"WatermarkText",type:"String"}, {name:"WatermarkCssClass",type:"String"}] });

Sys.Extended.UI.TextBoxWatermarkBehavior.WebForm_OnSubmit = function() {
    /// <summary>
    /// Wraps ASP.NET's WebForm_OnSubmit in order to strip all watermarks prior to submission
    /// </summary>
    /// <returns type="Boolean">
    /// Result of original WebForm_OnSubmit
    /// </returns>
    var result = Sys.Extended.UI.TextBoxWatermarkBehavior._originalWebForm_OnSubmit();
    if (result) {
        var components = Sys.Application.getComponents();
        for(var i = 0 ; i < components.length ; i++) {
            var component = components[i];
            if (Sys.Extended.UI.TextBoxWatermarkBehavior.isInstanceOfType(component)) {
                component._onSubmit();
            }
        }
    }
    return result;
}

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedBase", "ExtendedCommon"], execute);
}
else {
    execute();
}

})();
��// (c) 2010 CodePlex Foundation
(function(window, Sys) {

if (!Sys || !Sys.loader) {
var merge = function _merge(target) {
    target = target || {};
    foreach(arguments, function(o) {
        if (o) {
            forIn(o, function(v, n) {
                target[n] = v;
            });
        }
    }, 1);
    return target;
}
var forIn = function _forIn(obj, callback) {
    for (var x in obj) {
        callback(obj[x], x);
    }
}
var foreach = function _foreach(arr, callback, start) {
    var cancelled;
    if (arr) {
        arr = arr !== window && typeof(arr.nodeType) === "undefined" &&
            (arr instanceof Array || 
            (typeof(arr.length) === 'number' && (typeof(arr.callee) === "function" || (arr.item && typeof(arr.nodeType) === "undefined") && !arr.addEventListener && !arr.attachEvent)))
            ? arr : [arr];
        for (var i = start||0, l = arr.length; i < l; i++) {
            if (callback(arr[i], i)) {
                cancelled = true;
                break;
            }
        }
    }
    return !cancelled;
}
var callIf = function _callIf(obj, name, args) {
    var fn = obj[name],
        exists = typeof(fn) === "function";
    if (exists) fn.call(obj, args);
    return exists;
}
    function append(target) {
        target = target || {};
        foreach(arguments, function(o) {
            if (o) {
                forIn(o, function(v, n) {
                    if (typeof(target[n]) === "undefined") target[n] = v;
                });
            }
        }, 1);
        return target;
    }

    var attachEvent = !!document.attachEvent;
  
    var notLoading = 0,
        loading = 1,
        loadingCo = 2,
        loaded = 3,
        autoToken = {};

    function foreachScriptInfo(arr, callback) {
        var cancelled;
        if (arr) {
            for (var i = 0, l = arr.length; i < l; i++) {
                if (callback(getScriptInfo(arr[i]))) {
                    cancelled = true;
                    break;
                }
            }
        }
        return !cancelled;
    }
    function toIndex(arr) {
        var obj = {};
        foreach(arr, function(name) {
            obj[name] = true;
        });
        return obj;
    }
    function contains(source, item) {
        for (var i = 0, l = source.length; i < l; i++) {
            if (source[i] === item) return true;
        }
        return false;
    }
    function getCompositeDependencies(composite, executionDependencies) {
        var dependencies = [];
        foreachScriptInfo(composite.contains, function(scriptInfo) {
            foreach(lazyget(scriptInfo, executionDependencies ? "executionDependencies" : "dependencies"), function(name) {
                if (!composite._contains[name]) dependencies.push(name);
            });
        });
        return dependencies;
    }
    function getDependencies(scriptInfo, executionDependencies) {
        var dependencies;
        if (scriptInfo.contains) {
            dependencies = getCompositeDependencies(scriptInfo, executionDependencies);
        }
        else {
            var composite = getComposite(scriptInfo);
            if (composite) {
                dependencies = getCompositeDependencies(composite, executionDependencies);
            }
            else {
                dependencies = lazyget(scriptInfo, executionDependencies ? "executionDependencies" : "dependencies");
            }
        }
        return dependencies;
    }
    function requireParents(scriptInfo) {
        forIn(scriptInfo["_parents"], function(parentInfo) {
            forIn(parentInfo["_composites"], function(composite) {
                requireScript(composite, null, null, true);
            });
            requireScript(parentInfo, null, null, true);
        });
    }
    function getScriptInfo(name) {
        return resolveScriptInfo(name) || (Sys.scripts[name] = { name: name });
    }
    function requireScript(scriptInfo, callback, session, readOnly) {
        return Sys.loader._requireScript(scriptInfo, callback, session, readOnly);
    }
    function requireAll(scriptInfos, callback, session, readOnly) {
        var waiting;
        foreach(scriptInfos, function(dependency) {
            dependency = resolveScriptInfo(dependency);
            waiting |= requireScript(dependency, callback, session, readOnly);
        });
        return waiting;
    }
    function resolveScriptInfo(nameOrScriptInfo, onlyScripts) {
        var info = typeof(nameOrScriptInfo) === "string" ?
                Sys.scripts[nameOrScriptInfo] ||
                Sys.composites[nameOrScriptInfo] ||
                (!onlyScripts && (lazyget(Sys.components[nameOrScriptInfo], "script") || lazyget(Sys.plugins[nameOrScriptInfo], "script"))) :
            (nameOrScriptInfo ? (nameOrScriptInfo.script || nameOrScriptInfo) : null);
        if (info && !info._isScript) {
            info = null;
        }
        return info;
    }
    function state(scriptInfo, newState) {
        var ret = (scriptInfo._state = newState || scriptInfo._state) || 0;
        if (newState) {
            foreachScriptInfo(scriptInfo.contains, function(scriptInfo) {
                state(scriptInfo, newState);
            });
        }
        return ret;
    }
    function getComposite(scriptInfo) {
        return scriptInfo._composite;
    }
    function isLoaded(scriptInfo) {
        return !scriptInfo || (state(scriptInfo) > loadingCo);
    }
    function getAndDelete(obj, field) {
        var r = obj[field];
        delete obj[field];
        return r;
    }
    function foreachCall(obj, field, args) {
        foreach(getAndDelete(obj, field), function(callback) {
            callback.apply(null, args||[]);
        });
    }
    function lazyget(obj, name, value) {
        return obj ? (obj[name] = obj[name] || value) : value;
    }
    function lazypush(obj, name, value) {
        lazyget(obj, name, []).push(value);
    }
    function lazyset(obj, name, key, value) {
        lazyget(obj, name, {})[key] = value;
    }
    function all(tag, element) {
        return (element||document).getElementsByTagName(tag);
    }
    function createElement(tag) {
        return document.createElement(tag);
    }
    function listenOnce(target, name, ieName, callback, isReadyState, isScript) {
        function onEvent() {
            if (!attachEvent || !isReadyState || /loaded|complete/.test(target.readyState)) {
                if (attachEvent) {
                    target.detachEvent(ieName || ("on" + name), onEvent);
                }
                else {
                    target.removeEventListener(name, onEvent, false);
                    if (isScript) {
                        target.removeEventListener("error", onEvent, false);
                    }
                }
                callback.apply(target);
                target = null;
            }
        }
        if (attachEvent) {
            target.attachEvent(ieName || ("on" + name), onEvent);
        }
        else {
            if (target.addEventListener) {
            target.addEventListener(name, onEvent, false);
            }
            if (isScript) {
                target.addEventListener("error", onEvent, false);
            }
        }
    }
    function raiseDomReady() {
        if (Sys._domReady) {
            Sys._2Pass(getAndDelete(Sys, "_domReadyQueue"));
        }
    }
    function raiseOnReady() {
        var ready = Sys._ready;
        if (!ready && Sys._domReady && !(Sys.loader && Sys.loader._loading)) {
            Sys._ready = ready = true;
        }
        if (ready) {
            Sys._2Pass(getAndDelete(Sys, "_readyQueue"));
        }
    }
    window.Sys = Sys = append(Sys, {
        version: [3, 0, 31106, 0],
        __namespace: true,
        debug: true,
        scripts: {},
        activateDom: true,
        composites: {},
        components: {},
        plugins: {},
        create: {},
        converters: {},
        _domLoaded: function _domLoaded() {
            if (Sys._domChecked) return;
            Sys._domChecked = true;
            function domReady() {
                if (!Sys._domReady) {
                    Sys._domReady = true;
                    var autoRequire = Sys._autoRequire;
                    if (autoRequire) {
                        Sys.require(autoRequire, function() {
                            Sys._autoRequire = null;
                            foreachCall(Sys, "_autoQueue");
                        }, autoToken);
                    }
                    raiseDomReady();
                    raiseOnReady();
                }
            }
            listenOnce(window, "load", null, domReady);

            var check;
            if (attachEvent) {
                if ((window == window.top) && document.documentElement.doScroll) {
                    var timeout, er, el = createElement("div");
                    check = function() {
                        try {
                            el.doScroll("left");
                        }
                        catch (er) {
                            timeout = window.setTimeout(check, 0);
                            return;
                        }
                        el = null;
                        domReady();
                    }
                    check();
                }
                else {
                    listenOnce(document, null, "onreadystatechange", domReady, true);
                }
            }
            else if (document.addEventListener) {
                listenOnce(document, "DOMContentLoaded", null, domReady);
            }
        },
        _getById: function _getById(found, id, single, includeSelf, element, filter) {
            if (element) {
                if (includeSelf && (element.id === id)) {
                    found.push(element);
                }
                else if (!filter) {
                    foreach(all("*", element), function(element) {
                        if (element.id === id) {
                            found.push(element);
                            return true;
                        }
                    });
                }
            }
            else {
                var e = document.getElementById(id);
                if (e) found.push(e);
            }
            return found.length;
        },
        _getByClass: function _getByClass(found, targetClass, single, includeSelf, element, filter) {
            function pushIfMatch(element) {
                var ret, className = element.className;
                if (className && ((className === targetClass) || (className.indexOf(' ' + targetClass) >= 0) || (className.indexOf(targetClass + ' ') >= 0))) {
                    found.push(element);
                    ret = true;
                }
                return ret;
            }
            var i, l, nodes;
            if (includeSelf && pushIfMatch(element) && single) {
                return true;
            }
            if (!filter) {
                element = element || document;
                var finder = element.querySelectorAll || element.getElementsByClassName;
                if (finder) {
                    if (element.querySelectorAll) targetClass = "." + targetClass;
                    nodes = finder.call(element, targetClass);
                    for (i = 0, l = nodes.length; i < l; i++) {
                        found.push(nodes[i]);
                        if (single) return true;
                    }
                }
                else {
                    nodes = all("*", element);
                    for (i = 0, l = nodes.length; i < l; i++) {
                        if (pushIfMatch(nodes[i]) && single) {
                            return true;
                        }
                    }
                }
            }
        },
        query: function query(selector, context) {
            /// <summary>Queries the DOM for a set of DOM elements.</summary>
            /// <validationOptions enabled="false" />
            /// <param name="selector">Selector for a set of DOM elements based on id (#&lt;id>), class (.&lt;name>), or tag name (&lt;tagname>). Also supports an array of DOM elements or selectors. More complex selectors may be used if jQuery is loaded.</param>
            /// <param name="context" optional="true" mayBeNull="true">A DOM element (exclusive), array of DOM elements (inclusive), or other Sys.ElementSet or Sys.UI.TemplateContext (exclusive) to restrict the search within.</param>
            /// <returns type="Sys.ElementSet">An object representing the set of matching elements.</returns>
            return new Sys.ElementSet(selector, context);
        },
        get: function get(selector, context) {
            /// <summary>Queries the DOM for a single DOM element.</summary>
            /// <validationOptions enabled="false" />
            /// <param name="selector">
            /// Selector for a DOM element based on id (#&lt;id>), class (.&lt;name>), or tag name (&lt;tagname>). More complex selectors may be used if jQuery is loaded.
            /// If multiple elements match the selector, the first one is returned.
            /// </param>
            /// <param name="context" optional="true" mayBeNull="true">An element, array of elements, or Sys.UI.TemplateContext to restrict the query within.</param>
            /// <returns>The matching element, or null if none match.</returns>
            return (context && typeof(context.get) === "function") ?
                context.get(selector) :
                this._find(selector, context, true);
        },
        _find: function _find(selector, context, single, filter) {
            var found = [],
                selectors;
            if (typeof(selector) === "string") {
                selectors = [selector];
            }
            else {
                selectors = selector;
            }
            var includeSelf = context instanceof Array,
                simpleNonTag = /^([\$#\.])((\w|[$:\.\-])+)$/,
                tag = /^((\w+)|\*)$/;
            if ((typeof(context) === "string") || (context instanceof Array)) {
                context = Sys._find(context);
            }
            if (context instanceof Sys.ElementSet) {
                context = context.get();
            }
            foreach(selectors, function(selector) {
                if (typeof(selector) !== "string") {
                    if (filter) {
                        if (contains(context, selector)) {
                            found.push(selector);
                        }
                    }
                    else {
                        found.push(selector);
                    }
                }
                else {
                    var match = simpleNonTag.exec(selector);
                    if (match && match.length === 4) {
                        selector = match[2];
                        var type = match[1];
                        if (type === "$") {
                            Sys._getComponent(found, selector, context);
                        }
                        else {
                            var finder = type === "#" ? Sys._getById : Sys._getByClass;
                            if (context) {
                                foreach(context, function(node) {
                                    if (node.nodeType === 1) {
                                        return finder(found, selector, single, includeSelf, node, filter);
                                    }
                                });
                            }
                            else {
                                finder(found, selector, single);
                            }
                        }
                    }
                    else if (tag.test(selector)) {
                        if (context instanceof Array) {
                            foreach(context, function(node) {
                                if (node.nodeType === 1) {
                                    if (includeSelf && (selector === "*" || (node.tagName.toLowerCase() === selector))) {
                                        found.push(node);
                                        if (single) return true;
                                    }
                                    if (!filter) {
                                        if(!foreach(all(selector, node), function(node) {
                                            found.push(node);
                                            if (single) return true;
                                        })) {
                                            return true;
                                        }
                                    }
                                }
                            });
                        }
                        else {
                            var nodes = all(selector, context);
                            if (single) {
                                if (nodes[0]) {
                                    found.push(nodes[0]);
                                }
                                return true;
                            }
                            foreach(nodes, function(node) {
                                found.push(node);
                            });
                        }
                    }
                    else if (window.jQuery) {
                        if (!filter) {
                            found.push.apply(found, jQuery(selector, context).get());
                        }
                        if (includeSelf) {
                            found.push.apply(found, jQuery(context).filter(selector).get());
                        }
                    }
                }
            });
            return found.length ? (single ? (found[0] || null) : found) : null;
        },
        onDomReady: function onDomReady(callback) {
            /// <summary>Registers a function to be called when the DOM is ready.</summary>
            /// <validationOptions enabled="false" />
            /// <param name="callback" type="Function"></param>
            lazypush(this, "_domReadyQueue", callback);
            raiseDomReady();
        },
        onReady: function onReady(callback) {
            /// <summary>Registers a function to be called when the DOM is ready and when all required resources have been loaded.</summary>
            /// <validationOptions enabled="false" />
            /// <param name="callback" type="Function"></param>
            lazypush(this, "_readyQueue", callback);
            raiseOnReady();
        },
        _set: function(instance, properties) {
            forIn(properties, function(value, field) {
                callIf(instance, "add_" + field, value) ||
                callIf(instance, "set_" + field, value) ||
                (instance[field] = value);
            });
        }
        ,require: function require(features, completedCallback, userContext) {
            /// <summary>
            /// Declares what scripts or script features are required, loads the appropriate script resources, and executes a callback when they are available.
            /// </summary>
            /// <validationOptions enabled="false" />
            /// <param name="features" type="Array">Array of all the required scripts and/or features. [Sys.scripts.foo, Sys.scripts.bar, Sys.components.foo, ...]</param>
            /// <param name="completedCallback" type="Function" optional="true" mayBeNull="true">Optional callback that is called when all the requirements are available.</param>
            /// <param name="userContext" optional="true" mayBeNull="true">Optional context that is passed to the completed callback.</param>
            var session = Sys.loader._session++,
                iterating,
                loaded;
            function raiseCallback() {
                if (completedCallback) {
                    if (Sys._autoRequire && userContext !== autoToken) {
                        lazypush(Sys, "_autoQueue", raiseCallback);
                    }
                    else {
                        Sys.onDomReady(function() { completedCallback(features, userContext) });
                    }
                }
            }
            function allLoaded() {
                
                if (!loaded && !iterating && !iteration()) {
                    loaded = true;
                    raiseCallback();
                }
                raiseOnReady();
            }
            function iteration() {
                iterating = true;
                var resolvedScripts = [];
                foreach(features, function(feature) {
                    feature = resolveScriptInfo(feature);
                    if (feature) {
                        var contains = feature.contains;
                        if (contains) {
                            foreachScriptInfo(contains, function(scriptInfo) {
                                resolvedScripts.push(scriptInfo);
                            });
                        }
                        else {
                            resolvedScripts.push(feature);
                        }
                    }
                });
                if (Sys.loader.combine) {
                    Sys.loader._findComposites(resolvedScripts);
                }
                var waiting = requireAll(resolvedScripts, allLoaded, session);
                iterating = false;
                return waiting;
            }
            allLoaded();
        },
        loadScripts: function loadScripts(scriptUrls, completedCallback, userContext) {
            /// <summary>
            /// Loads the given scripts, and executes a callback when they are available. Ensures each script is not loaded more than once even if one is referenced with a &lt;script&gt; element on the page.
            /// </summary>
            /// <validationOptions enabled="false" />
            /// <param name="scriptUrls" type="Array" elementType="String">Array of all the scripts to load. The scripts are loaded in sequential order.</param>
            /// <param name="completedCallback" type="Function" optional="true" mayBeNull="true">Optional callback that is called when all the scripts are available.</param>
            /// <param name="userContext" optional="true" mayBeNull="true">Optional context that is passed to the completed callback.</param>
            this.loader._loadScripts(scriptUrls, completedCallback, userContext);
        },
        loader: {
            __class: true,
            combine: true,
            basePath: "",
            _loading: 0,
            _session: 0,
            _init: function _init() {
                var scripts = all("script"),
                    selfUrl = scripts.length ? scripts[scripts.length - 1].src : null;
                if (selfUrl) {
                    this.basePath = selfUrl.slice(0, selfUrl.lastIndexOf("/"));
                    var i = selfUrl.lastIndexOf("#"), list;
                    if (i !== -1) {
                        var args = selfUrl.substr(i+1).split("&");
                        foreach(args, function(pair) {
                            var parts = pair.split("="),
                                name = parts[0],
                                value = parts[1];
                            if (name === "require") {
                                list = value.split(",");
                            }
                        });
                    }
                    Sys._autoRequire = list;
                }
            },
            _loadSrc: function _loadSrc(src, callback) {
                var script = merge(createElement('script'), {
                        type: 'text/javascript',
                        src: src }),
                    loaded = lazyget(this, "_loadedScripts", {});
                foreach(all("script"), function(script) {
                    var src = script.src;
                    if (src && !loaded[src]) loaded[src] = [];
                });
                var ls = loaded[src];
                if (ls) {
                    if (callback) ls.push(callback);
                }
                else {
                    listenOnce(script, "load", "onreadystatechange", function() {
                        foreach(ls, function(callback) {callback();});
                        loaded[src] = null;
                    }, 
                    true, true);

                    this._loading++;
                    loaded[src] = ls = callback ? [callback] : [];
                    all("head")[0].appendChild(script);
                }
            },
            _load: function _load(scriptInfo, callback, session) {
                var waiting;
                if (isLoaded(scriptInfo)) {
                    callback();
                }
                else {
                    waiting = true;
                    var notifyList = lazyget(scriptInfo, "_notify", []),
                        key = "session" + session;
                    if (!notifyList[key]) {
                        notifyList[key] = true;
                        notifyList.push(callback);
                    }
                    if (state(scriptInfo) < loading) {
                        state(scriptInfo, loading);
                        this._loadSrc(this._getUrl(scriptInfo), this._getHandler(scriptInfo));
                    }
                }
                return waiting;
            },            
            _getUrl: function _getUrl(scriptInfo) {
                var debug = Sys.debug,
                    name = scriptInfo.name,
                    path = (debug ? (scriptInfo.debugUrl || scriptInfo.releaseUrl) : scriptInfo.releaseUrl).replace(/\{0\}/g, name) || "";
                if (path.substr(0, 2) === "%/") {
                    var basePath = this.basePath,
                        hasSlash = (basePath.charAt(basePath.length-1) === "/");
                    path = basePath + (hasSlash ? "" : "/") + path.substr(2);
                }
                return path;
            },
            _getHandler: function _getHandler(scriptInfo) {
                return function() {
                    Sys.loader._loading--;
                    if (state(scriptInfo) < loadingCo) {
                        state(scriptInfo, loadingCo);
                    }
                    foreachCall(scriptInfo, "_notify");
                    foreachScriptInfo(scriptInfo.contains, function(scriptInfo) {
                        foreachCall(scriptInfo, "_notify");
                    });
                }
            },
            _findComposites: function _findComposites(scripts) {
                var scriptSet = {},
                    compositeMapping = {},
                    foundAny;
                function visit(script) {
                    script = resolveScriptInfo(script);
                    var currentState = state(script);
                    if (currentState < loading && !getComposite(script)) {
                        scriptSet[script.name] = script;
                        foundAny = true;
                        foreach(script["dependencies"], visit);
                    }
                    if (currentState < loaded) {
                        foreach(script["executionDependencies"], visit);
                    }
                }
                foreach(scripts, visit);
                if (foundAny) {
                    forIn(Sys.composites, function(composite) {
                        if (foreachScriptInfo(composite.contains, function(contained) {
                                if (!scriptSet[contained.name]) {
                                    return true;
                                }
                            })) {
                            var offsets = {}, offsetCount = 0;
                            foreach(composite.contains, function(name) {
                                var otherCandidate = compositeMapping[name];
                                if (otherCandidate && !offsets[otherCandidate.name]) {
                                    offsets[otherCandidate.name] = otherCandidate;
                                    offsetCount += otherCandidate.contains.length - 1;
                                }
                            });
                            if (composite.contains.length - 1 > offsetCount) {
                                forIn(offsets, function(offset) {
                                    foreach(offset.contains, function(name) {
                                        delete compositeMapping[name];
                                    });
                                });
                                foreach(composite.contains, function(name) {
                                    compositeMapping[name] = composite;
                                });
                            }
                        }
                    });
                    forIn(compositeMapping, function(composite, name) {
                        Sys.scripts[name]._composite = composite;
                    });
                }
            },
            _loadScripts: function _loadScripts(scriptUrls, completedCallback, userContext) {
                var index = -1, loaded = lazyget(this, "_loadedScripts", {});
                scriptUrls = scriptUrls instanceof Array ? Array.apply(null, scriptUrls) : [scriptUrls];
                function scriptLoaded(first) {
                    if (!first) Sys.loader._loading--;
                    if (++index < scriptUrls.length) {
                        Sys.loader._loadSrc(scriptUrls[index], scriptLoaded);
                    }
                    else {
                        if (completedCallback) {
                            completedCallback(scriptUrls, userContext);
                        }
                        raiseOnReady();
                    }
                }
                scriptLoaded(true);
            },
            _requireScript: function _requireScript(scriptInfo, callback, session, readOnly) {
                var waiting;
                if (!isLoaded(scriptInfo)) {
                    var waitForDeps = requireAll(getDependencies(scriptInfo), callback, session, readOnly),
                        waitForDepsCo = requireAll(getDependencies(scriptInfo, true), callback, session, readOnly);
                    if (!waitForDeps && !waitForDepsCo && state(scriptInfo) === loadingCo) {
                        state(scriptInfo, loaded);
                        foreachCall(scriptInfo, "_callback");
                        if (readOnly) {
                            var contains = scriptInfo.contains;
                            if (contains) {
                                foreachScriptInfo(contains, function(scriptInfo) {
                                    requireParents(scriptInfo);
                                });
                            }
                            else {
                                requireParents(getScriptInfo(scriptInfo));
                            }
                        }
                    }
                    else if (!readOnly && !waitForDeps) {
                        this._load(getComposite(scriptInfo) || scriptInfo, callback, session);
                    }
                    waiting |= (waitForDeps || waitForDepsCo);
                }
                return waiting || !isLoaded(scriptInfo);
            },            
            _registerParents: function _registerParents(scriptInfo) {
                function register(dependency) {
                    var depInfo = getScriptInfo(dependency);
                    lazyset(depInfo, "_parents", scriptInfo.name, scriptInfo);
                }
                foreach(scriptInfo["dependencies"], register);
                foreach(scriptInfo["executionDependencies"], register);
            },

            defineScript: function defineScript(scriptInfo) {
                /// <summary>Defines a script and its dependencies.</summary>
                /// <validationOptions enabled="false" />
                /// <param name="scriptInfo" type="Object">The script to define. You may use the following fields: name (required), debugUrl (string), releaseUrl (string), dependencies (array), executionDependencies (array).</param>
                var scripts = Sys.scripts,
                    name = scriptInfo.name,
                    contains = scriptInfo.contains,
                    loader = this;
                if (contains) {
                    var composites = Sys.composites;
                    composites[name] = scriptInfo = merge(composites[name], scriptInfo);
                    scriptInfo._contains = toIndex(contains);
                    foreachScriptInfo(contains, function(contain) {
                        lazyset(contain, "_composites", name, scriptInfo);
                    });
                }
                else {
                    scriptInfo = scripts[name] = merge(scripts[name], scriptInfo);
                    this._registerParents(scriptInfo);
                    var isBehavior;
                    function registerComponent(component) {
                        var name;
                        if (typeof(component) === "string") {
                            component = { typeName: component };
                        }
                        else {
                            name = component.name;
                        }
                        if (!name) {
                            name = component.typeName;
                            var i = name.lastIndexOf('.');
                            if (i >= 0) {
                                name = name.substr(i+1);
                            }
                            name = name.substr(0, 1).toLowerCase() + name.substr(1);
                            component.name = name;
                        }
                        component._isBehavior = isBehavior;
                        component.script = scriptInfo;
                        var components = Sys.components,
                            entry = components[name] = merge(components[name], component),
                            fn = Sys._getCreate(component),
                            target = isBehavior ? Sys.ElementSet.prototype : Sys.create;
                        target[name] = target[name] || fn;
                    }
                    foreach(scriptInfo.components, registerComponent);
                    isBehavior = true;
                    foreach(scriptInfo.behaviors, registerComponent);
                    foreach(scriptInfo.plugins, function(plugin) {
                        var name = plugin.name,
                            fnName = plugin.functionName || name,
                            plugins = Sys.plugins;
                        plugin.script = scriptInfo;
                        plugins[name] = merge(plugins[name], plugin);
                        var target = plugin.global ? Sys :
                                (plugin.dom ? Sys.ElementSet.prototype : 
                                    (plugin.components ? Sys.ComponentSet.prototype : null));
                        if (target) {
                            target[fnName] = target[fnName] || Sys._getCreate(plugin, true);
                        }
                    });
                }
                if (scriptInfo.isLoaded) {
                    scriptInfo._state = loaded;
                }
                scriptInfo._isScript = true;
            },
            defineScripts: function defineScripts(defaultScriptInfo, scriptInfos) {
                /// <summary>Defines a set of script and its dependencies.</summary>
                /// <validationOptions enabled="false" />
                /// <param name="defaultScriptInfo" type="Object">A default set of properties to apply to each defined script.</param>
                /// <param name="scriptInfos" type="Array" elementType="Object">The set of scripts to define. You may define on each: name (required), debugUrl (string), releaseUrl (string), dependencies (array), executionDependencies (array).</param>
                foreach(scriptInfos, function(scriptInfo) {
                    Sys.loader.defineScript(merge(null, defaultScriptInfo, scriptInfo));
                });
            },
            registerScript: function registerScript(name, executionDependencies, executionCallback) {
                /// <summary>Called by a script when it loads and it supports deferred exeuction.</summary>
                /// <validationOptions enabled="false" />
                /// <param name="name" type="String"></param>
                /// <param name="executionDependencies" mayBeNull="true" type="Array" elementType="String"></param>
                /// <param name="executionCallback" type="Function"></param>
                var scriptInfo = getScriptInfo(name);
                scriptInfo._callback = executionCallback;
                var existingList = lazyget(scriptInfo, "executionDependencies", []),
                    existing = toIndex(existingList);
                foreach(executionDependencies, function(executionDependency) {
                    if (!existing[executionDependency]) {
                        existingList.push(executionDependency);
                    }
                });
                this._registerParents(scriptInfo);
                
                state(scriptInfo, loadingCo);
                requireScript(scriptInfo, null, null, true);
            }
        } // loader
    });

    Sys._getComponent = Sys._getComponent || function() { }
    
    Sys._2Pass = Sys._2Pass || function _2Pass(callback) {
       foreach(callback, function(c) { c(); });
    }

    var obj;
    if (!Sys.ElementSet) {
obj = Sys.ElementSet = function(selector, context) {
    /// <summary>Represents a set of DOM elements.</summary>
    /// <param name="selector">The DOM selector, array of DOM selectors, or array of DOM elements to query the document for.</param>
    /// <param name="context">A DOM selector (exclusive), A DOM element (exclusive), array of DOM elements (inclusive), or other Sys.ElementSet (exclusive) to restrict the search within.</param>
    this._elements = ((typeof(context) === "object") && typeof(context.query) === "function") ?
        context.query(selector).get() :
        Sys._find(selector, context) || [];
}
obj.prototype = {
    __class: true,
    components: function(type, index) {
        /// <summary>Gets the set of controls and behaviors associated with the current DOM elements.</summary>
        /// <param name="type" type="Function" mayBeNull="true" optional="true">Type to limit the search to.</param>
        /// <param name="index" type="Number" mayBeNull="true" optional="true">Index of the component to limit to.</param>
        /// <returns type="Sys.ComponentSet" />
        var elementSet = new Sys.ElementSet(this.get());
        return new Sys.ComponentSet(elementSet, type, index);
    },
    component: function(type, index) {
        /// <summary>Get the first control or behavior associated with the current set of DOM elements.</summary>
        /// <param name="type" type="Function" mayBeNull="true" optional="true">Type to limit the search to.</param>
        /// <param name="index" type="Number" mayBeNull="true" optional="true">Index of the component to return.</param>
        /// <returns type="Object" mayBeNull="true" />
        return this.components(type, index).get(0);
    },
    each: function(callback) {
        /// <summary>Enumerates all the matched elements, calling the given callback for each with the current element as the context.
        /// The callback may return false to cancel enumeration.</summary>
        /// <returns type="Sys.ElementSet"/>
        var elements = this._elements;
        for (var i = 0, l = elements.length; i < l; i++) {
            if (callback.call(elements[i], i) === false) break;
        }
        return this;
    },
    get: function(index) {
        /// <summary>Retrieves the element at the specified index.</summary>
        /// <param name="index" type="Number">The index of the element to retrieve. Omit to return all elements as an array.</param>
        /// <returns isDomElement="true">The element at the given index, or an array of all the matched elements.</returns>
        var elements = this._elements;
        return (typeof(index) === "undefined") ? (Array.apply(null, elements)) : (elements[index] || null);
    },
    find: function(selector) {
        /// <summary>Searches the current set of DOM elements with the given selector, including descendents.</summary>
        /// <param name="selector">DOM selector or array of DOM selectors to search with.</param>
        /// <returns type="Sys.ElementSet">A new element set with the matched elements.</returns>
        return new Sys.ElementSet(selector, this);
    },
    filter: function(selector) {
        /// <summary>Filters the current set of DOM elements by the given selector, excluding descendents.</summary>
        /// <param name="selector">DOM selector or array of elements to filter by.</param>
        /// <returns type="Sys.ElementSet">A new element set with the matched elements.</returns>
        return new Sys.ElementSet(Sys._find(selector, this._elements, false, true));
    }
}
    }
    if (!Sys.ComponentSet) {
obj = Sys.ComponentSet = function ComponentSet(elementSet, query, index) {
    /// <summary></summary>
    /// <param name="elementSet" type="Sys.ElementSet" mayBeNull="true" optional="true"></param>
    /// <param name="query" mayBeNull="true" optional="true">The type of component to filter by, or an array of components to include.</param>
    /// <param name="index" type="Number" mayBeNull="true" optional="true">The index of the component to retrieve from the filtered list.</param>
    this._elementSet = elementSet || (elementSet = new Sys.ElementSet());
    this._components = this._execute(elementSet, query, index);
}
obj.prototype = {
    __class: true,
    setProperties: function ComponentSet$setProperties(properties) {
        /// <summary>Sets properties on the matched components.</summary>
        /// <param name="properties" type="Object" mayBeNull="false">Object with the names and values of the properties to set.</param>
        /// <returns type="Sys.ComponentSet" />
        return this.each(function() {
            Sys._set(this, properties);
        });
    },
    get: function ComponentSet$get(index) {
        /// <summary>Returns the component at the specified index, or an array of all matches if not specified.</summary>
        /// <param name="index" type="Number" mayBeNull="true" optional="true"></param>
        /// <returns type="Object" mayBeNull="true"/>
        var components = this._components;
        return (typeof(index) === "undefined") ? (Array.apply(null, components)) : (components[index || 0] || null);
    },
    each: function ComponentSet$each(callback) {
        /// <summary>Enumerate all the found components. The index of the component are passed as parameters to a callback. You may return 'false' to cancel the enumeration.</summary>
        /// <param name="callback" type="Function" mayBeNull="false">Function called for each component.</param>
        /// <returns type="Sys.ComponentSet" />
        foreach(this._components, function(c, i) {
            if (callback.call(c, i) === false) {
                return true;
            }
        });
        return this;
    },
    elements: function ComponentSet$elements() {
        /// <summary>Returns the underlying set of elements this component collection came from.</summary>
        /// <returns type="Sys.ElementSet" />
        return this._elementSet;
    },
    _execute: function ComponentSet$_execute(elementSet, query, index) {
        var components = [];
        function match(c) {
            var ctor;
            return (c instanceof query) ||
                ((ctor = c.constructor) && (
                    (ctor === query) ||
                    (ctor.inheritsFrom && ctor.inheritsFrom(query)) ||
                    (ctor.implementsInterface && ctor.implementsInterface(query))));
        }
        if (query instanceof Array) {
            components.push.apply(components, query);
        }
        else {
            elementSet.each(function() {
                var c = this.control;
                if (c && (!query || match(c))) {
                    components.push(c);
                }
                foreach(this._behaviors, function(b) {
                    if (!query || match(b)) {
                        components.push(b);
                    }
                });
            });
        }
        if ((typeof(index) !== "undefined")) {
            if (components[index]) {
                components = [components[index]];
            }
            else {
                components = [];
            }
        }
        return components;
    }
}
    }
    
    obj = null;
    var getCreate = function _getCreate(options, isPlugin) {
        var body = [],
            arglist = [],
            type = options.type,
            typeName = options.typeName || (type ? type.getName() : ""),
            isBehavior = options._isBehavior,
            description = (options && options.description) || 
                          (type && ("Creates an instance of the type '" + typeName  + "' and sets the given properties.")) ||
                          "";
        body.push("/// <summary>", description, "</summary>\n");
        foreach(options && options.parameters, function(parameter) {
            var name = parameter, type = '', desc = '';
            if (typeof(parameter) !== "string") {
                name = parameter.name;
                type = parameter.type||'';
                desc = parameter.description||'';
            }
            arglist.push(name);
            body.push('/// <param name="', name, '"');
            if (type) {
                body.push(' type="', type, '"');
            }
            body.push('>', desc, '</param>\n');
        });
        var returnType;
        if (!isPlugin) {
            arglist.push("properties");
            body.push('/// <param name="properties" type="Object" mayBeNull="true" optional="true">Additional properties to set on the component.</param>\n');
            returnType = isBehavior ? 'Sys.ComponentSet' : typeName;
        }
        else {
            returnType = options.returnType;
        }
        if (returnType) {
            body.push('/// <returns type="', returnType, '" />\n');
        }
        body.push("throw new Error(\"The '", options.name, "' plugin requires Sys.scripts.", options.script.name, " to be loaded with a call to Sys.require() first.\");\n");
        arglist.push(body.join(''));
    
        var fn = Function.apply(null, arglist);
        if (!isPlugin) {
            fn._component = options;
        }
        fn._slmock = true;
        return fn;
        
    }
    Sys._getCreate = Sys._getCreate || getCreate;
obj = Sys.loader;

obj.defineScripts({
    releaseUrl: "%/MicrosoftAjax{0}.js",
    debugUrl: "%/MicrosoftAjax{0}.debug.js",
    executionDependencies: ["Core"]
},
[{ name: "Core",
    executionDependencies: null,
    isLoaded: !!window.Type
},
 { name: "ComponentModel",
   plugins: [{name: "setCommand", dom: true, description: "Causes a DOM element to raise a bubble event when clicked.",
                parameters: [{name: "commandName", description: "The name of the command to raise."},
                             {name: "commandArgument", description: "Optional command argument."},
                             {name: "commandTarget", description: "DOM element from which the command should start bubbling up."}]},
             {name: "addHandler", dom: true, description: "A cross-browser way to add a DOM event handler to an element.",
                parameters: [{name: "eventName", type: "String", description: "The name of the event. Do not include the 'on' prefix, for example, 'click' instead of 'onclick'."},
                             {name: "handler", type: "Function", description: "The event handler to add."},
                             {name: "autoRemove", type: "Boolean", description: "Whether the handler should be removed automatically when the element is disposed of, such as when an UpdatePanel refreshes, or Sys.Application.disposeElement is called."}] },
             {name: "removeHandler", dom: true, description: "A cross-browser way to remove a DOM event handler from an element.",
                parameters: [{name: "eventName", type: "String", description: "The name of the event. Do not include the 'on' prefix, for example, 'click' instead of 'onclick'."},
                             {name: "handler", type: "Function", description: "The event handler to remove."}] },
             {name: "addHandlers", dom: true, description: "Adds a list of event handlers to an element. If a handlerOwner is specified, delegates are created with each of the handlers.",
                parameters: [{name: "events", type: "Object", description: "A dictionary of event handlers."},
                             {name: "handlerOwner", description: "The owner of the event handlers that will be the this pointer for the delegates that will be created from the handlers."},
                             {name: "autoRemove", type: "Boolean", description: "Whether the handler should be removed automatically when the element is disposed of, such as when an UpdatePanel refreshes, or Sys.Application.disposeElement is called."}] },
             {name: "clearHandlers", dom: true, description: "Clears all the event handlers that were added to the element or array of elements." }
   ],
   isLoaded: !!Sys.Component
 },
 { name: "History",
   executionDependencies: ["ComponentModel", "Serialization"],
   isLoaded: !!(Sys.Application && Sys.Application.get_stateString)
 },
 { name: "Serialization",
   isLoaded: !!Sys.Serialization
 },
 { name: "Network",
   executionDependencies: ["Serialization"],
   isLoaded: !!(Sys.Net && Sys.Net.WebRequest)
 },
 { name: "WebServices",
   executionDependencies: ["Network"],
   isLoaded: !!(Sys.Net && Sys.Net.WebServiceProxy)
 },
 { name: "ApplicationServices",
   executionDependencies: ["WebServices"],
   isLoaded: !!(Sys.Services && Sys.Services.RoleService && Sys.Services.RoleService.get_path)
 },
 { name: "Globalization",
   isLoaded: !!Number._parse
 },
 { name: "OpenData",
   executionDependencies: ["DataContext"],
   components: [
        "Sys.Data.OpenDataContext",
        { typeName: "Sys.Data.OpenDataServiceProxy", parameters: [{name: "serviceUri", type: "String"}] }
   ],
   isLoaded: !!(Sys.Data && Sys.Data.OpenDataServiceProxy)
 },
 { name: "DataContext",
   executionDependencies: ["ComponentModel", "Serialization", "WebServices"],
   components: ["Sys.Data.DataContext"],
   isLoaded: !!(Sys.Data && Sys.Data.DataContext)
 },
 { name: "Templates",
   executionDependencies: ["ComponentModel", "Serialization"],
   behaviors: ["Sys.UI.DataView"],
   plugins: [{name: "binding", global: true, parameters: ['target',{name:'property',type:'String'},'source',{name:'path',type:'String'},'options']},
             {name: "binding", dom: true, parameters: [{name:'property',type:'String'},'source',{name:'path',type:'String'},'options']},
             {name: "binding", components: true, parameters: [{name:'property',type:'String'},'source',{name:'path',type:'String'},'options']},
             {name: "activateElements", dom: true, 
                parameters: [{name: "bindingContext", description: "The binding context."}, {name: "recursive", type: "Boolean", description: "Specifies whether processing should occur recursively."}]}],
   isLoaded: !!(Sys.UI && Sys.UI.Template)
 },
 { name: "MicrosoftAjax",
   releaseUrl: "%/MicrosoftAjax.js",
   debugUrl: "%/MicrosoftAjax.debug.js",
   executionDependencies: null,
   contains: ["Core", "ComponentModel", "History", "Serialization", "Network", "WebServices", "Globalization"]
 }
]);

var ajaxPath = (window.location.protocol === "https:" ? "https" : "http") + "://ajax.microsoft.com/ajax/";

obj.defineScripts(null, [
 { name: "jQuery",
   releaseUrl: ajaxPath + "jquery/jquery-1.4.1.min.js",
   debugUrl: ajaxPath + "jquery/jquery-1.4.1.js",
   isLoaded: !!window.jQuery
 },
 { name: "jQueryValidate",
   releaseUrl: ajaxPath + "jquery.validate/1.6/jquery.validate.min.js",
   debugUrl: ajaxPath + "jquery.validate/1.6/jquery.validate.js",
   dependencies: ["jQuery"],
   isLoaded: !!(window.jQuery && jQuery.fn.validate)
 }
]);

obj._init();
if (!window.Type) {
    window.Type = Function;
    Type.registerNamespace = Type.registerNamespace || function registerNamespace(namespacePath) {
        lazypush(Sys, "_ns", namespacePath);
        var rootObject = window;
        foreach(namespacePath.split('.'), function(part) {
            rootObject = rootObject[part] = rootObject[part] || {};
        });
        rootObject = null;
    }
}
Sys._domLoaded();
}

})(window, window.Sys);

�// (c) 2010 CodePlex Foundation
Type.registerNamespace("Sys.Extended.UI.Seadragon");Type.registerNamespace("Seadragon");Seadragon.Utils=function(){var a=null,f="number",i=true,e=false,b=this,d={UNKNOWN:0,IE:1,FIREFOX:2,SAFARI:3,CHROME:4,OPERA:5};Seadragon.Browser=d;var c=b,l=["Msxml2.XMLHTTP","Msxml3.XMLHTTP","Microsoft.XMLHTTP"],n={bmp:e,jpeg:i,jpg:i,png:i,tif:e,wdp:e},g=d.UNKNOWN,h=0,j=e,m={};(function(){var e=navigator.appName,r=navigator.appVersion,a=navigator.userAgent;if(e=="Microsoft Internet Explorer"&&!!window.attachEvent&&!!window.ActiveXObject){var l=a.indexOf("MSIE");g=d.IE;h=parseFloat(a.substring(l+5,a.indexOf(";",l)))}else if(e=="Netscape"&&!!window.addEventListener){var k=a.indexOf("Firefox"),b=a.indexOf("Safari"),o=a.indexOf("Chrome");if(k>=0){g=d.FIREFOX;h=parseFloat(a.substring(k+8))}else if(b>=0){var q=a.substring(0,b).lastIndexOf("/");g=o>=0?d.CHROME:d.SAFARI;h=parseFloat(a.substring(q+1,b))}}else if(e=="Opera"&&!!window.opera&&!!window.attachEvent){g=d.OPERA;h=parseFloat(r)}for(var p=window.location.search.substring(1),n=p.split("&"),i=0;i<n.length;i++){var c=n[i],f=c.indexOf("=");if(f>0)m[c.substring(0,f)]=decodeURIComponent(c.substring(f+1))}j=g==d.IE||g==d.CHROME&&h<2})();function k(a,b){return b&&a!=document.body?document.body:a.offsetParent}b.getBrowser=function(){return g};b.getBrowserVersion=function(){return h};b.getElement=function(a){if(typeof a=="string")a=document.getElementById(a);return a};b.getElementPosition=function(a){var a=c.getElement(a),b=new Seadragon.Point,d=c.getElementStyle(a).position=="fixed",e=k(a,d);while(e){b.x+=a.offsetLeft;b.y+=a.offsetTop;if(d)b=b.plus(c.getPageScroll());a=e;d=c.getElementStyle(a).position=="fixed";e=k(a,d)}return b};b.getElementSize=function(a){var a=c.getElement(a);return new Seadragon.Point(a.clientWidth,a.clientHeight)};b.getElementStyle=function(a){var a=c.getElement(a);if(a.currentStyle)return a.currentStyle;else if(window.getComputedStyle)return window.getComputedStyle(a,"");else Seadragon.Debug.fail("Unknown element style, no known technique.")};b.getEvent=function(a){return a?a:window.event};b.getMousePosition=function(a){var a=c.getEvent(a),b=new Seadragon.Point;if(typeof a.pageX==f){b.x=a.pageX;b.y=a.pageY}else if(typeof a.clientX==f){b.x=a.clientX+document.body.scrollLeft+document.documentElement.scrollLeft;b.y=a.clientY+document.body.scrollTop+document.documentElement.scrollTop}else Seadragon.Debug.fail("Unknown event mouse position, no known technique.");return b};b.getPageScroll=function(){var a=new Seadragon.Point,b=document.documentElement||{},c=document.body||{};if(typeof window.pageXOffset==f){a.x=window.pageXOffset;a.y=window.pageYOffset}else if(c.scrollLeft||c.scrollTop){a.x=c.scrollLeft;a.y=c.scrollTop}else if(b.scrollLeft||b.scrollTop){a.x=b.scrollLeft;a.y=b.scrollTop}return a};b.getWindowSize=function(){var a=new Seadragon.Point,b=document.documentElement||{},c=document.body||{};if(typeof window.innerWidth==f){a.x=window.innerWidth;a.y=window.innerHeight}else if(b.clientWidth||b.clientHeight){a.x=b.clientWidth;a.y=b.clientHeight}else if(c.clientWidth||c.clientHeight){a.x=c.clientWidth;a.y=c.clientHeight}else Seadragon.Debug.fail("Unknown window size, no known technique.");return a};b.imageFormatSupported=function(a){var a=a?a:"";return!!n[a.toLowerCase()]};b.makeCenteredNode=function(g){var b="border:none; margin:0px; padding:0px;",g=Seadragon.Utils.getElement(g),d=c.makeNeutralElement("div"),a=[];a.push('<div style="display:table; height:100%; width:100%;');a.push(b);a.push('#position:relative; overflow:hidden; text-align:left;">');a.push('<div style="#position:absolute; #top:50%; width:100%; ');a.push(b);a.push('display:table-cell; vertical-align:middle;">');a.push('<div style="#position:relative; #top:-50%; width:100%; ');a.push(b);a.push('text-align:center;"></div></div></div>');d.innerHTML=a.join("");d=d.firstChild;var f=d,e=d.getElementsByTagName("div");while(e.length>0){f=e[0];e=f.getElementsByTagName("div")}f.appendChild(g);return d};b.makeNeutralElement=function(c){var b=document.createElement(c),a=b.style;a.background="transparent none";a.border="none";a.margin="0px";a.padding="0px";a.position="static";return b};b.makeTransparentImage=function(f){var e=c.makeNeutralElement("img"),b=a;if(g==d.IE&&h<7){b=c.makeNeutralElement("span");b.style.display="inline-block";e.onload=function(){b.style.width=b.style.width||e.width+"px";b.style.height=b.style.height||e.height+"px";e.onload=a;e=a};e.src=f;b.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+f+"', sizingMethod='scale')"}else{b=e;b.src=f}return b};b.setElementOpacity=function(a,b,g){var a=c.getElement(a);if(g&&j)b=Math.round(b);if(b<1)a.style.opacity=b;else a.style.opacity="";if(b==1){var f=a.style.filter||"";a.style.filter=f.replace(/alpha\(.*?\)/g,"");return}var d=Math.round(100*b),e=" alpha(opacity="+d+") ";try{if(a.filters&&a.filters.alpha)a.filters.alpha.opacity=d;else a.style.filter+=e}catch(h){a.style.filter+=e}};b.addEvent=function(a,d,e,b){var a=c.getElement(a);if(a.addEventListener)a.addEventListener(d,e,b);else if(a.attachEvent){a.attachEvent("on"+d,e);b&&a.setCapture&&a.setCapture()}else Seadragon.Debug.fail("Unable to attach event handler, no known technique.")};b.removeEvent=function(a,d,e,b){var a=c.getElement(a);if(a.removeEventListener)a.removeEventListener(d,e,b);else if(a.detachEvent){a.detachEvent("on"+d,e);b&&a.releaseCapture&&a.releaseCapture()}else Seadragon.Debug.fail("Unable to detach event handler, no known technique.")};b.cancelEvent=function(a){var a=c.getEvent(a);a.preventDefault&&a.preventDefault();a.cancel=i;a.returnValue=e};b.stopEvent=function(a){var a=c.getEvent(a);a.stopPropagation&&a.stopPropagation();a.cancelBubble=i};b.createCallback=function(d,c){for(var b=[],a=2;a<arguments.length;a++)b.push(arguments[a]);return function(){for(var e=b.concat([]),a=0;a<arguments.length;a++)e.push(arguments[a]);return c.apply(d,e)}};b.getUrlParameter=function(c){var b=m[c];return b?b:a};b.makeAjaxRequest=function(g,d){var c=typeof d=="function",b=a;if(c)var f=d,d=function(){window.setTimeout(Seadragon.Utils.createCallback(a,f,b),1)};if(window.ActiveXObject)for(var e=0;e<l.length;e++)try{b=new ActiveXObject(l[e]);break}catch(h){continue}else if(window.XMLHttpRequest)b=new XMLHttpRequest;!b&&Seadragon.Debug.fail("Browser doesn't support XMLHttpRequest.");if(c)b.onreadystatechange=function(){if(b.readyState==4){b.onreadystatechange=new Function;d()}};try{b.open("GET",g,c);b.send(a)}catch(h){Seadragon.Debug.log(h.name+" while making AJAX request: "+h.message);b.onreadystatechange=a;b=a;c&&d()}return c?a:b};b.parseXml=function(c){var b=a;if(window.ActiveXObject)try{b=new ActiveXObject("Microsoft.XMLDOM");b.async=e;b.loadXML(c)}catch(f){Seadragon.Debug.log(f.name+" while parsing XML (ActiveX): "+f.message)}else if(window.DOMParser)try{var d=new DOMParser;b=d.parseFromString(c,"text/xml")}catch(f){Seadragon.Debug.log(f.name+" while parsing XML (DOMParser): "+f.message)}else Seadragon.Debug.fail("Browser doesn't support XML DOM.");return b}};Seadragon.Utils=new Seadragon.Utils;f�// (c) 2010 CodePlex Foundation
if (!window.SIGNAL)
    window.SIGNAL = "----seadragon----";

Type.registerNamespace('Sys.Extended.UI.Seadragon');
Type.registerNamespace('Seadragon');

Sys.Extended.UI.Seadragon.ControlAnchor = function() {
    throw Error.invalidOperation();
}
Sys.Extended.UI.Seadragon.ControlAnchor.prototype = {
    NONE: 0,
    TOP_LEFT: 1,
    TOP_RIGHT: 2,
    BOTTOM_RIGHT: 3,
    BOTTOM_LEFT: 4
}
Sys.Extended.UI.Seadragon.ControlAnchor.registerEnum("Sys.Extended.UI.Seadragon.ControlAnchor", false);

Seadragon.ControlAnchor = Sys.Extended.UI.Seadragon.ControlAnchor;

Sys.Extended.UI.Seadragon.OverlayPlacement = function() {
    throw Error.invalidOperation();
}
Sys.Extended.UI.Seadragon.OverlayPlacement.prototype = {
    CENTER: 0,
    TOP_LEFT: 1,
    TOP: 2,
    TOP_RIGHT: 3,
    RIGHT: 4,
    BOTTOM_RIGHT: 5,
    BOTTOM: 6,
    BOTTOM_LEFT: 7,
    LEFT: 8
}
Sys.Extended.UI.Seadragon.OverlayPlacement.registerEnum("Sys.Extended.UI.Seadragon.OverlayPlacement", false);
Seadragon.OverlayPlacement = Sys.Extended.UI.Seadragon.OverlayPlacement;

Sys.Extended.UI.Seadragon.NavControl = function(viewer) {
    this._group = null;
    this._zooming = false;    // whether we should be continuously zooming
    this._zoomFactor = null;  // how much we should be continuously zooming by
    this._lastZoomTime = null;
    this._viewer = viewer;
    this.config = this._viewer.config;

    this.elmt = null;
    this.initialize();
}
Sys.Extended.UI.Seadragon.NavControl.prototype = {
    initialize: function() {
        var beginZoomingInHandler = Function.createDelegate(this, this._beginZoomingIn);
        var endZoomingHandler = Function.createDelegate(this, this._endZooming);
        var doSingleZoomInHandler = Function.createDelegate(this, this._doSingleZoomIn);
        var beginZoomingOutHandler = Function.createDelegate(this, this._beginZoomingOut);
        var doSingleZoomOutHandler = Function.createDelegate(this, this._doSingleZoomOut);
        var onHomeHandler = Function.createDelegate(this, this._onHome);
        var onFullPageHandler = Function.createDelegate(this, this._onFullPage);

        var navImages = this._viewer.config.navImages;
        var zoomIn = $create(Sys.Extended.UI.Seadragon.Button,
                    { config: this._viewer.config, tooltip: Seadragon.Strings.getString("Tooltips.ZoomIn"), srcRest: this._resolveUrl(navImages.zoomIn.REST), srcGroup: this._resolveUrl(navImages.zoomIn.GROUP), srcHover: this._resolveUrl(navImages.zoomIn.HOVER), srcDown: this._resolveUrl(navImages.zoomIn.DOWN) },
                    { onPress: beginZoomingInHandler, onRelease: endZoomingHandler, onClick: doSingleZoomInHandler, onEnter: beginZoomingInHandler, onExit: endZoomingHandler }, null, null);
        var zoomOut = $create(Sys.Extended.UI.Seadragon.Button,
                    { config: this._viewer.config, tooltip: Seadragon.Strings.getString("Tooltips.ZoomOut"), srcRest: this._resolveUrl(navImages.zoomOut.REST), srcGroup: this._resolveUrl(navImages.zoomOut.GROUP), srcHover: this._resolveUrl(navImages.zoomOut.HOVER), srcDown: this._resolveUrl(navImages.zoomOut.DOWN) },
                    { onPress: beginZoomingOutHandler, onRelease: endZoomingHandler, onClick: doSingleZoomOutHandler, onEnter: beginZoomingOutHandler, onExit: endZoomingHandler }, null, null);
        var goHome = $create(Sys.Extended.UI.Seadragon.Button,
                    { config: this._viewer.config, tooltip: Seadragon.Strings.getString("Tooltips.Home"), srcRest: this._resolveUrl(navImages.home.REST), srcGroup: this._resolveUrl(navImages.home.GROUP), srcHover: this._resolveUrl(navImages.home.HOVER), srcDown: this._resolveUrl(navImages.home.DOWN) },
                    { onRelease: onHomeHandler }, null, null);
        var fullPage = $create(Sys.Extended.UI.Seadragon.Button,
                    { config: this._viewer.config, tooltip: Seadragon.Strings.getString("Tooltips.FullPage"), srcRest: this._resolveUrl(navImages.fullpage.REST), srcGroup: this._resolveUrl(navImages.fullpage.GROUP), srcHover: this._resolveUrl(navImages.fullpage.HOVER), srcDown: this._resolveUrl(navImages.fullpage.DOWN) },
                    { onRelease: onFullPageHandler }, null, null);
        this._group = $create(Sys.Extended.UI.Seadragon.ButtonGroup,
                    { config: this._viewer.config, buttons: [zoomIn, zoomOut, goHome, fullPage] }, null, null, null);

        this.elmt = this._group.get_element();
        this.elmt[SIGNAL] = true;   // hack to get our controls to fade
        this._viewer.add_open(Function.createDelegate(this, this._lightUp));
    },
    dispose: function() {
    },
    _resolveUrl: function(url) {
        return String.format("{1}", this._viewer.get_prefixUrl(), url);
    },
    _beginZoomingIn: function() {
        this._lastZoomTime = new Date().getTime();
        this._zoomFactor = this.config.zoomPerSecond;
        this._zooming = true;
        this._scheduleZoom();
    },
    _beginZoomingOut: function() {
        this._lastZoomTime = new Date().getTime();
        this._zoomFactor = 1.0 / this.config.zoomPerSecond;
        this._zooming = true;
        this._scheduleZoom();
    },

    _endZooming: function() {
        this._zooming = false;
    },
    _scheduleZoom: function() {
        window.setTimeout(Function.createDelegate(this, this._doZoom), 10);
    },
    _doZoom: function() {
        if (this._zooming && this._viewer.viewport) {
            var currentTime = new Date().getTime();
            var deltaTime = currentTime - this._lastZoomTime;
            var adjustedFactor = Math.pow(this._zoomFactor, deltaTime / 1000);

            this._viewer.viewport.zoomBy(adjustedFactor);
            this._viewer.viewport.applyConstraints();
            this._lastZoomTime = currentTime;
            this._scheduleZoom();
        }
    },
    _doSingleZoomIn: function() {
        if (this._viewer.viewport) {
            this._zooming = false;
            this._viewer.viewport.zoomBy(this.config.zoomPerClick / 1.0);
            this._viewer.viewport.applyConstraints();
        }
    },
    _doSingleZoomOut: function() {
        if (this._viewer.viewport) {
            this._zooming = false;
            this._viewer.viewport.zoomBy(1.0 / this.config.zoomPerClick);
            this._viewer.viewport.applyConstraints();
        }
    },
    _lightUp: function() {
        this._group.emulateEnter();
        this._group.emulateExit();
    },
    _onHome: function() {
        if (this._viewer.viewport) {
            this._viewer.viewport.goHome();
        }
    },
    _onFullPage: function() {
        this._viewer.setFullPage(!this._viewer.isFullPage());
        this._group.emulateExit();  // correct for no mouseout event on change

        if (this._viewer.viewport) {
            this._viewer.viewport.applyConstraints();
        }
    }
}
Sys.Extended.UI.Seadragon.NavControl.registerClass('Sys.Extended.UI.Seadragon.NavControl', null, Sys.IDisposable);

Sys.Extended.UI.Seadragon.Control = function(elmt, anchor, container) {
    this.elmt = elmt;
    this.anchor = anchor;
    this.container = container;
    this.wrapper = Seadragon.Utils.makeNeutralElement("span");
    this.initialize();
}
Sys.Extended.UI.Seadragon.Control.prototype = {
    initialize: function() {
        this.wrapper = Seadragon.Utils.makeNeutralElement("span");
        this.wrapper.style.display = "inline-block";
        this.wrapper.appendChild(this.elmt);
        if (this.anchor == Seadragon.ControlAnchor.NONE) {
            this.wrapper.style.width = this.wrapper.style.height = "100%";    // IE6 fix
        }
        this.addToAnchor();
    },
    addToAnchor: function() {
        if (this.anchor == Seadragon.ControlAnchor.TOP_RIGHT || this.anchor == Seadragon.ControlAnchor.BOTTOM_RIGHT) {
            this.container.insertBefore(this.elmt, this.container.firstChild);
        } else {
            this.container.appendChild(this.elmt);
        }
    },
    destroy: function() {
        this.wrapper.removeChild(this.elmt);
        this.container.removeChild(this.wrapper);
    },
    isVisible: function() {
        return this.wrapper.style.display != "none";
    },
    setVisible: function(visible) {
        this.wrapper.style.display = visible ? "inline-block" : "none";
    },
    setOpacity: function(opacity) {
        if (this.elmt[SIGNAL] && Seadragon.Utils.getBrowser() == Seadragon.Browser.IE) {
            Seadragon.Utils.setElementOpacity(this.elmt, opacity, true);
        } else {
            Seadragon.Utils.setElementOpacity(this.wrapper, opacity, true);
        }
    }
}
Sys.Extended.UI.Seadragon.Control.registerClass('Sys.Extended.UI.Seadragon.Control', null, Sys.IDisposable);

Sys.Extended.UI.Seadragon.Viewer = function(element) {
    Sys.Extended.UI.Seadragon.Viewer.initializeBase(this, [element]);

    this.config = new Sys.Extended.UI.Seadragon.Config();
    this._prefixUrl = null;

    this._controls = [];
    this._customControls = null;
    this._overlays = [];
    this._overlayControls = null;
    this._container = null;
    this._canvas = null;
    this._controlsTL = null;
    this._controlsTR = null;
    this._controlsBR = null;
    this._controlsBL = null;
    this._bodyWidth = null;
    this._bodyHeight = null;
    this._bodyOverflow = null;
    this._docOverflow = null;
    this._fsBoundsDelta = null;
    this._prevContainerSize = null;
    this._lastOpenStartTime = 0;
    this._lastOpenEndTime = 0;
    this._animating = false;
    this._forceRedraw = false;
    this._mouseInside = false;
    this._xmlPath = null;

    this.source = null;
    this.drawer = null;
    this.viewport = null;
    this.profiler = null;

}
Sys.Extended.UI.Seadragon.Viewer.prototype = {
    initialize: function() {
        Sys.Extended.UI.Seadragon.Viewer.callBaseMethod(this, 'initialize');

        this._container = Seadragon.Utils.makeNeutralElement("div");
        this._canvas = Seadragon.Utils.makeNeutralElement("div");

        this._controlsTL = Seadragon.Utils.makeNeutralElement("div");
        this._controlsTR = Seadragon.Utils.makeNeutralElement("div");
        this._controlsBR = Seadragon.Utils.makeNeutralElement("div");
        this._controlsBL = Seadragon.Utils.makeNeutralElement("div");

        var innerTracker = new Seadragon.MouseTracker(this._canvas, this.config.clickTimeThreshold, this.config.clickDistThreshold);
        var outerTracker = new Seadragon.MouseTracker(this._container, this.config.clickTimeThreshold, this.config.clickDistThreshold);

        this._bodyWidth = document.body.style.width;
        this._bodyHeight = document.body.style.height;
        this._bodyOverflow = document.body.style.overflow;
        this._docOverflow = document.documentElement.style.overflow;

        this._fsBoundsDelta = new Sys.Extended.UI.Seadragon.Point(1, 1);

        var canvasStyle = this._canvas.style;
        var containerStyle = this._container.style;
        var controlsTLStyle = this._controlsTL.style;
        var controlsTRStyle = this._controlsTR.style;
        var controlsBRStyle = this._controlsBR.style;
        var controlsBLStyle = this._controlsBL.style;

        containerStyle.width = "100%";
        containerStyle.height = "100%";
        containerStyle.position = "relative";
        containerStyle.left = "0px";
        containerStyle.top = "0px";
        containerStyle.textAlign = "left";  // needed to protect against

        canvasStyle.width = "100%";
        canvasStyle.height = "100%";
        canvasStyle.overflow = "hidden";
        canvasStyle.position = "absolute";
        canvasStyle.top = "0px";
        canvasStyle.left = "0px";

        controlsTLStyle.position = controlsTRStyle.position =
                    controlsBRStyle.position = controlsBLStyle.position =
                    "absolute";

        controlsTLStyle.top = controlsTRStyle.top = "0px";
        controlsTLStyle.left = controlsBLStyle.left = "0px";
        controlsTRStyle.right = controlsBRStyle.right = "0px";
        controlsBLStyle.bottom = controlsBRStyle.bottom = "0px";

        innerTracker.clickHandler = Function.createDelegate(this, this._onCanvasClick);
        innerTracker.dragHandler = Function.createDelegate(this, this._onCanvasDrag);
        innerTracker.releaseHandler = Function.createDelegate(this, this._onCanvasRelease);
        innerTracker.setTracking(true);     // default state

        if (this.get_showNavigationControl()) {
            navControl = (new Sys.Extended.UI.Seadragon.NavControl(this)).elmt;
            navControl.style.marginRight = "4px";
            navControl.style.marginBottom = "4px";
            this.addControl(navControl, Sys.Extended.UI.Seadragon.ControlAnchor.BOTTOM_RIGHT);
        }
        for (var i = 0; i < this._customControls.length; i++) {
            this.addControl(this._customControls[i].id, this._customControls[i].anchor);
        }

        outerTracker.enterHandler = Function.createDelegate(this, this._onContainerEnter);
        outerTracker.exitHandler = Function.createDelegate(this, this._onContainerExit);
        outerTracker.releaseHandler = Function.createDelegate(this, this._onContainerRelease);
        outerTracker.setTracking(true); // always tracking
        window.setTimeout(Function.createDelegate(this, this._beginControlsAutoHide), 1);    // initial fade out

        this._container.appendChild(this._canvas);
        this._container.appendChild(this._controlsTL);
        this._container.appendChild(this._controlsTR);
        this._container.appendChild(this._controlsBR);
        this._container.appendChild(this._controlsBL);
        this.get_element().appendChild(this._container);

        if (this._xmlPath)
            this.openDzi(this._xmlPath);
    },
    _raiseEvent: function(eventName, eventArgs) {
        var handler = this.get_events().getHandler(eventName);

        if (handler) {
            if (!eventArgs) {
                eventArgs = Sys.EventArgs.Empty;
            }

            handler(this, eventArgs);
        }
    },
    _beginControlsAutoHide: function() {
        if (!this.config.autoHideControls) {
            return;
        }

        this._controlsShouldFade = true;
        this._controlsFadeBeginTime = new Date().getTime() + this._controlsFadeDelay;
        window.setTimeout(Function.createDelegate(this, this._scheduleControlsFade), this._controlsFadeDelay);
    },
    _scheduleControlsFade: function() {
        window.setTimeout(Function.createDelegate(this, this._updateControlsFade), 20);
    },
    _updateControlsFade: function() {
        if (this._controlsShouldFade) {
            var currentTime = new Date().getTime();
            var deltaTime = currentTime - this._controlsFadeBeginTime;
            var opacity = 1.0 - deltaTime / this._controlsFadeLength;

            opacity = Math.min(1.0, opacity);
            opacity = Math.max(0.0, opacity);

            for (var i = this._controls.length - 1; i >= 0; i--) {
                this._controls[i].setOpacity(opacity);
            }

            if (opacity > 0) {
                this._scheduleControlsFade();    // fade again
            }
        }
    },
    _onCanvasClick: function(tracker, position, quick, shift) {
        if (this.viewport && quick) {    // ignore clicks where mouse moved			
            var zoomPerClick = this.config.zoomPerClick;
            var factor = shift ? 1.0 / zoomPerClick : zoomPerClick;
            this.viewport.zoomBy(factor, this.viewport.pointFromPixel(position, true));
            this.viewport.applyConstraints();
        }
    },
    _onCanvasDrag: function(tracker, position, delta, shift) {
        if (this.viewport) {
            this.viewport.panBy(this.viewport.deltaPointsFromPixels(delta.negate()));
        }
    },
    _onCanvasRelease: function(tracker, position, insideElmtPress, insideElmtRelease) {
        if (insideElmtPress && this.viewport) {
            this.viewport.applyConstraints();
        }
    },
    _onContainerExit: function(tracker, position, buttonDownElmt, buttonDownAny) {
        if (!buttonDownElmt) {
            this._mouseInside = false;
            if (!this._animating) {
                this._beginControlsAutoHide();
            }
        }
    },
    _onContainerRelease: function(tracker, position, insideElmtPress, insideElmtRelease) {
        if (!insideElmtRelease) {
            this._mouseInside = false;
            if (!this._animating) {
                this._beginControlsAutoHide();
            }
        }
    },
    _getControlIndex: function(elmt) {
        for (var i = this._controls.length - 1; i >= 0; i--) {
            if (this._controls[i].elmt == elmt) {
                return i;
            }
        }

        return -1;
    },
    _abortControlsAutoHide: function() {
        this._controlsShouldFade = false;
        for (var i = this._controls.length - 1; i >= 0; i--) {
            this._controls[i].setOpacity(1.0);
        }
    },
    _onContainerEnter: function(tracker, position, buttonDownElmt, buttonDownAny) {
        this._mouseInside = true;
        this._abortControlsAutoHide();
    },
    _updateOnce: function() {
        if (!this.source) {
            return;
        }

        this.profiler.beginUpdate();

        var containerSize = Seadragon.Utils.getElementSize(this._container);

        if (!containerSize.equals(this._prevContainerSize)) {
            this.viewport.resize(containerSize, true); // maintain image position
            this._prevContainerSize = containerSize;
            this._raiseEvent("resize", this);
        }

        var animated = this.viewport.update();

        if (!this._animating && animated) {
            this._raiseEvent("animationstart", self);
            this._abortControlsAutoHide();
        }

        if (animated) {
            this.drawer.update();
            this._raiseEvent("animation", self);
        } else if (this._forceRedraw || this.drawer.needsUpdate()) {
            this.drawer.update();
            this._forceRedraw = false;
        } else {
            this.drawer.idle();
        }

        if (this._animating && !animated) {
            this._raiseEvent("animationfinish", this);

            if (!this._mouseInside) {
                this._beginControlsAutoHide();
            }
        }

        this._animating = animated;

        this.profiler.endUpdate();
    },
    _onClose: function() {

        this.source = null;
        this.viewport = null;
        this.drawer = null;
        this.profiler = null;

        this._canvas.innerHTML = "";
    },
    _beforeOpen: function() {
        if (this.source) {
            this._onClose();
        }

        this._lastOpenStartTime = new Date().getTime();   // to ignore earlier opens

        window.setTimeout(Function.createDelegate(this, function() {
            if (this._lastOpenStartTime > this._lastOpenEndTime) {
                this._setMessage(Seadragon.Strings.getString("Messages.Loading"));
            }
        }), 2000);

        return this._lastOpenStartTime;
    },
    _setMessage: function(message) {
        var textNode = document.createTextNode(message);

        this._canvas.innerHTML = "";
        this._canvas.appendChild(Seadragon.Utils.makeCenteredNode(textNode));

        var textStyle = textNode.parentNode.style;

        textStyle.color = "white";
        textStyle.fontFamily = "verdana";
        textStyle.fontSize = "13px";
        textStyle.fontSizeAdjust = "none";
        textStyle.fontStyle = "normal";
        textStyle.fontStretch = "normal";
        textStyle.fontVariant = "normal";
        textStyle.fontWeight = "normal";
        textStyle.lineHeight = "1em";
        textStyle.textAlign = "center";
        textStyle.textDecoration = "none";
    },
    _onOpen: function(time, _source, error) {
        this._lastOpenEndTime = new Date().getTime();

        if (time < this._lastOpenStartTime) {
            Seadragon.Debug.log("Ignoring out-of-date open.");
            this._raiseEvent("ignore");
            return;
        } else if (!_source) {
            this._setMessage(error);
            this._raiseEvent("error");
            return;
        }

        this._canvas.innerHTML = "";
        this._prevContainerSize = Seadragon.Utils.getElementSize(this._container);

        this.source = _source;
        this.viewport = new Sys.Extended.UI.Seadragon.Viewport(this._prevContainerSize, this.source.dimensions, this.config);
        this.drawer = new Sys.Extended.UI.Seadragon.Drawer(this.source, this.viewport, this._canvas);
        this.profiler = new Sys.Extended.UI.Seadragon.Profiler();

        this._animating = false;
        this._forceRedraw = true;
        this._scheduleUpdate(this._updateMulti);

        for (var i = 0; i < this._overlayControls.length; i++) {
            var overlay = this._overlayControls[i];
            if (overlay.point != null) {
                this.drawer.addOverlay(overlay.id, new Sys.Extended.UI.Seadragon.Point(overlay.point.X, overlay.point.Y), Sys.Extended.UI.Seadragon.OverlayPlacement.TOP_LEFT);
            }
            else {
                this.drawer.addOverlay(overlay.id, new Sys.Extended.UI.Seadragon.Rect(overlay.rect.Point.X, overlay.rect.Point.Y, overlay.rect.Width, overlay.rect.Height), overlay.placement);
            }
        }
        this._raiseEvent("open");
    },
    _scheduleUpdate: function(updateFunc, prevUpdateTime) {
        if (this._animating) {
            return window.setTimeout(Function.createDelegate(this, updateFunc), 1);
        }

        var currentTime = new Date().getTime();
        var prevUpdateTime = prevUpdateTime ? prevUpdateTime : currentTime;
        var targetTime = prevUpdateTime + 1000 / 60;    // 60 fps ideal

        var deltaTime = Math.max(1, targetTime - currentTime);
        return window.setTimeout(Function.createDelegate(this, updateFunc), deltaTime);
    },
    _updateMulti: function() {
        if (!this.source) {
            return;
        }

        var beginTime = new Date().getTime();

        this._updateOnce();
        this._scheduleUpdate(arguments.callee, beginTime);
    },
    _updateOnce: function() {
        if (!this.source) {
            return;
        }

        this.profiler.beginUpdate();

        var containerSize = Seadragon.Utils.getElementSize(this._container);

        if (!containerSize.equals(this._prevContainerSize)) {
            this.viewport.resize(containerSize, true); // maintain image position
            this._prevContainerSize = containerSize;
            this._raiseEvent("resize");
        }

        var animated = this.viewport.update();

        if (!this._animating && animated) {
            this._raiseEvent("animationstart");
            this._abortControlsAutoHide();
        }

        if (animated) {
            this.drawer.update();
            this._raiseEvent("animation");
        } else if (this._forceRedraw || this.drawer.needsUpdate()) {
            this.drawer.update();
            this._forceRedraw = false;
        } else {
            this.drawer.idle();
        }

        if (this._animating && !animated) {
            this._raiseEvent("animationfinish");

            if (!this._mouseInside) {
                this._beginControlsAutoHide();
            }
        }

        this._animating = animated;

        this.profiler.endUpdate();
    },

    getNavControl: function() {
        return this._navControl;
    },
    get_xmlPath: function() {
        return this._xmlPath;
    },
    set_xmlPath: function(value) {
        this._xmlPath = value;
    },
    get_debugMode: function() {
        return this.config.debugMode;
    },
    set_debugMode: function(value) {
        this.config.debugMode = value;
    },
    get_animationTime: function() {
        return this.config.animationTime;
    },
    set_animationTime: function(value) {
        this.config.animationTime = value;
    },
    get_blendTime: function() {
        return this.config.blendTime;
    },
    set_blendTime: function(value) {
        this.config.blendTime = value;
    },
    get_alwaysBlend: function() {
        return this.config.alwaysBlend;
    },
    set_alwaysBlend: function(value) {
        this.config.alwaysBlend = value;
    },
    get_autoHideControls: function() {
        return this.config.autoHideControls;
    },
    set_autoHideControls: function(value) {
        this.config.autoHideControls = value;
    },
    get_immediateRender: function() {
        return this.config.immediateRender;
    },
    set_immediateRender: function(value) {
        this.config.immediateRender = value;
    },
    get_wrapHorizontal: function() {
        return this.config.wrapHorizontal;
    },
    set_wrapHorizontal: function(value) {
        this.config.wrapHorizontal = value;
    },
    get_wrapVertical: function() {
        return this.config.wrapVertical;
    },
    set_wrapVertical: function(value) {
        this.config.wrapVertical = value;
    },
    get_minZoomDimension: function() {
        return this.config.minZoomDimension;
    },
    set_minZoomDimension: function(value) {
        this.config.minZoomDimension = value;
    },
    get_maxZoomPixelRatio: function() {
        return this.config.maxZoomPixelRatio;
    },
    set_maxZoomPixelRatio: function(value) {
        this.config.maxZoomPixelRatio = value;
    },
    get_visibilityRatio: function() {
        return this.config.visibilityRatio;
    },
    set_visibilityRatio: function(value) {
        this.config.visibilityRatio = value;
    },
    get_springStiffness: function() {
        return this.config.springStiffness;
    },
    set_springStiffness: function(value) {
        this.config.springStiffness = value;
    },
    get_imageLoaderLimit: function() {
        return this.config.imageLoaderLimit;
    },
    set_imageLoaderLimit: function(value) {
        this.config.imageLoaderLimit = value;
    },
    get_clickTimeThreshold: function() {
        return this.config.clickTimeThreshold;
    },
    set_clickTimeThreshold: function(value) {
        this.config.clickTimeThreshold = value;
    },
    get_clickDistThreshold: function() {
        return this.config.clickDistThreshold;
    },
    set_clickDistThreshold: function(value) {
        this.config.clickDistThreshold = value;
    },
    get_zoomPerClick: function() {
        return this.config.zoomPerClick;
    },
    set_zoomPerClick: function(value) {
        this.config.zoomPerClick = value;
    },
    get_zoomPerSecond: function() {
        return this.config.zoomPerSecond;
    },
    set_zoomPerSecond: function(value) {
        this.config.zoomPerSecond = value;
    },
    get_maxImageCacheCount: function() {
        return this.config.maxImageCacheCount;
    },
    set_maxImageCacheCount: function(value) {
        this.config.maxImageCacheCount = value;
    },
    get_showNavigationControl: function() {
        return this.config.showNavigationControl;
    },
    set_showNavigationControl: function(value) {
        this.config.showNavigationControl = value;
    },
    get_minPixelRatio: function() {
        return this.config.minPixelRatio;
    },
    set_minPixelRatio: function(value) {
        this.config.minPixelRatio = value;
    },
    get_mouseNavEnabled: function() {
        return this.config.mouseNavEnabled;
    },
    set_mouseNavEnabled: function(value) {
        this.config.mouseNavEnabled = value;
    },
    get_controls: function() {
        return this._customControls;
    },
    set_controls: function(value) {
        this._customControls = value;
    },
    get_overlays: function() {
        return this._overlayControls;
    },
    set_overlays: function(value) {
        this._overlayControls = value;
    },
    get_prefixUrl: function() {
        return this._prefixUrl;
    },
    set_prefixUrl: function(value) {
        this._prefixUrl = value;
    },
    add_open: function(handler) {
        this.get_events().addHandler("open", handler);
    },
    remove_open: function(handler) {
        this.get_events().removeHandler("open", handler);
    },
    add_error: function(handler) {
        this.get_events().addHandler("error", handler);
    },
    remove_error: function(handler) {
        this.get_events().removeHandler("error", handler);
    },
    add_ignore: function(handler) {
        this.get_events().addHandler("ignore", handler);
    },
    remove_ignore: function(handler) {
        this.get_events().removeHandler("ignore", handler);
    },
    add_resize: function(handler) {
        this.get_events().addHandler("resize", handler);
    },
    remove_resize: function(handler) {
        this.get_events().removeHandler("resize", handler);
    },
    add_animationstart: function(handler) {
        this.get_events().addHandler("animationstart", handler);
    },
    remove_animationstart: function(handler) {
        this.get_events().removeHandler("animationstart", handler);
    },
    add_animationend: function(handler) {
        this.get_events().addHandler("animationend", handler);
    },
    remove_animationend: function(handler) {
        this.get_events().removeHandler("animationend", handler);
    },
    addControl: function(elmt, anchor) {
        var elmt = Seadragon.Utils.getElement(elmt);

        if (this._getControlIndex(elmt) >= 0) {
            return;     // they're trying to add a duplicate control
        }

        var div = null;

        switch (anchor) {
            case Sys.Extended.UI.Seadragon.ControlAnchor.TOP_RIGHT:
                div = this._controlsTR;
                elmt.style.position = "relative";
                break;
            case Sys.Extended.UI.Seadragon.ControlAnchor.BOTTOM_RIGHT:
                div = this._controlsBR;
                elmt.style.position = "relative";
                break;
            case Sys.Extended.UI.Seadragon.ControlAnchor.BOTTOM_LEFT:
                div = this._controlsBL;
                elmt.style.position = "relative";
                break;
            case Sys.Extended.UI.Seadragon.ControlAnchor.TOP_LEFT:
                div = this._controlsTL;
                elmt.style.position = "relative";
                break;
            case Sys.Extended.UI.Seadragon.ControlAnchor.NONE:
            default:
                div = this._container;
                elmt.style.position = "absolute";
                break;
        }

        this._controls.push(new Sys.Extended.UI.Seadragon.Control(elmt, anchor, div));
    },
    isOpen: function() {
        return !!this.source;
    },
    openDzi: function(xmlUrl, xmlString) {
        var currentTime = this._beforeOpen();
        Sys.Extended.UI.Seadragon.DziTileSourceHelper.createFromXml(xmlUrl, xmlString,
                    Seadragon.Utils.createCallback(null, Function.createDelegate(this, this._onOpen), currentTime));
    },
    openTileSource: function(tileSource) {
        var currentTime = beforeOpen();
        window.setTimeout(Function.createDelegate(this, function() {
            onOpen(currentTime, tileSource);
        }), 1);
    },
    close: function() {
        if (!this.source) {
            return;
        }

        this._onClose();
    },
    removeControl: function(elmt) {
        var elmt = Seadragon.Utils.getElement(elmt);
        var i = this._getControlIndex(elmt);

        if (i >= 0) {
            this._controls[i].destroy();
            this._controls.splice(i, 1);
        }
    },
    clearControls: function() {
        while (this._controls.length > 0) {
            this._controls.pop().destroy();
        }
    },
    isDashboardEnabled: function() {
        for (var i = this._controls.length - 1; i >= 0; i--) {
            if (this._controls[i].isVisible()) {
                return true;
            }
        }

        return false;
    },

    isFullPage: function() {
        return this._container.parentNode == document.body;
    },

    isMouseNavEnabled: function() {
        return this._innerTracker.isTracking();
    },

    isVisible: function() {
        return this._container.style.visibility != "hidden";
    },

    setDashboardEnabled: function(enabled) {
        for (var i = this._controls.length - 1; i >= 0; i--) {
            this._controls[i].setVisible(enabled);
        }
    },

    setFullPage: function(fullPage) {
        if (fullPage == this.isFullPage()) {
            return;
        }

        var body = document.body;
        var bodyStyle = body.style;
        var docStyle = document.documentElement.style;
        var containerStyle = this._container.style;
        var canvasStyle = this._canvas.style;

        if (fullPage) {
            bodyOverflow = bodyStyle.overflow;
            docOverflow = docStyle.overflow;
            bodyStyle.overflow = "hidden";
            docStyle.overflow = "hidden";

            bodyWidth = bodyStyle.width;
            bodyHeight = bodyStyle.height;
            bodyStyle.width = "100%";
            bodyStyle.height = "100%";

            canvasStyle.backgroundColor = "black";
            canvasStyle.color = "white";

            containerStyle.position = "fixed";
            containerStyle.zIndex = "99999999";

            body.appendChild(this._container);
            this._prevContainerSize = Seadragon.Utils.getWindowSize();

            this._onContainerEnter();     // mouse will be inside container now
        } else {
            bodyStyle.overflow = bodyOverflow;
            docStyle.overflow = docOverflow;

            bodyStyle.width = bodyWidth;
            bodyStyle.height = bodyHeight;

            canvasStyle.backgroundColor = "";
            canvasStyle.color = "";

            containerStyle.position = "relative";
            containerStyle.zIndex = "";

            this.get_element().appendChild(this._container);
            this._prevContainerSize = Seadragon.Utils.getElementSize(this.get_element());

            this._onContainerExit();      // mouse will likely be outside now
        }
        if (this.viewport) {
            var oldBounds = this.viewport.getBounds();
            this.viewport.resize(this._prevContainerSize);
            var newBounds = this.viewport.getBounds();

            if (fullPage) {
                this._fsBoundsDelta = new Sys.Extended.UI.Seadragon.Point(newBounds.width / oldBounds.width,
                        newBounds.height / oldBounds.height);
            } else {
                this.viewport.update();
                this.viewport.zoomBy(Math.max(this._fsBoundsDelta.x, this._fsBoundsDelta.y),
                            null, true);
            }

            this._forceRedraw = true;
            this._raiseEvent("resize", this);
            this._updateOnce();
        }
    },

    setMouseNavEnabled: function(enabled) {
        this._innerTracker.setTracking(enabled);
    },

    setVisible: function(visible) {
        this._container.style.visibility = visible ? "" : "hidden";
    }

}
Sys.Extended.UI.Seadragon.Viewer.registerClass('Sys.Extended.UI.Seadragon.Viewer', Sys.UI.Control);
�	// (c) 2010 CodePlex Foundation
Type.registerNamespace('Sys.Extended.UI.Seadragon');
Type.registerNamespace('Seadragon');
Sys.Extended.UI.Seadragon.Config = function() {

    this.debugMode = true;

    this.animationTime = 1.5;

    this.blendTime = 0.5;

    this.alwaysBlend = false;

    this.autoHideControls = true;

    this.immediateRender = false;

    this.wrapHorizontal = false;

    this.wrapVertical = false;

    this.minZoomDimension = 0.8;

    this.maxZoomPixelRatio = 2;

    this.visibilityRatio = 0.5;

    this.springStiffness = 5.0;

    this.imageLoaderLimit = 2;

    this.clickTimeThreshold = 200;

    this.clickDistThreshold = 5;

    this.zoomPerClick = 2.0;

    this.zoomPerSecond = 2.0;

    this.showNavigationControl = true;

    this.maxImageCacheCount = 100;

    this.minPixelRatio = 0.5;

    this.mouseNavEnabled = true;

    this.navImages = {
        zoomIn: {
            REST: '<%= WebResource("Seadragon.images.zoomin_rest.png") %>',
            GROUP: '<%= WebResource("Seadragon.images.zoomin_grouphover.png") %>',
            HOVER: '<%= WebResource("Seadragon.images.zoomin_hover.png") %>',
            DOWN: '<%= WebResource("Seadragon.images.zoomin_pressed.png") %>'
        },
        zoomOut: {
            REST: '<%= WebResource("Seadragon.images.zoomout_rest.png") %>',
            GROUP: '<%= WebResource("Seadragon.images.zoomout_grouphover.png") %>',
            HOVER: '<%= WebResource("Seadragon.images.zoomout_hover.png") %>',
            DOWN: '<%= WebResource("Seadragon.images.zoomout_pressed.png") %>'
        },
        home: {
            REST: '<%= WebResource("Seadragon.images.home_rest.png") %>',
            GROUP: '<%= WebResource("Seadragon.images.home_grouphover.png") %>',
            HOVER: '<%= WebResource("Seadragon.images.home_hover.png") %>',
            DOWN: '<%= WebResource("Seadragon.images.home_pressed.png") %>'
        },
        fullpage: {
            REST: '<%= WebResource("Seadragon.images.fullpage_rest.png") %>',
            GROUP: '<%= WebResource("Seadragon.images.fullpage_grouphover.png") %>',
            HOVER: '<%= WebResource("Seadragon.images.fullpage_hover.png") %>',
            DOWN: '<%= WebResource("Seadragon.images.fullpage_pressed.png") %>'
        }
    }
}
Sys.Extended.UI.Seadragon.Config.registerClass('Sys.Extended.UI.Seadragon.Config', null, Sys.IDisposable);
�// (c) 2010 CodePlex Foundation
Type.registerNamespace("Sys.Extended.UI.Seadragon");Type.registerNamespace("Seadragon");Sys.Extended.UI.Seadragon.ButtonState=function(){throw Error.invalidOperation();};Sys.Extended.UI.Seadragon.ButtonState.prototype={REST:0,GROUP:1,HOVER:2,DOWN:3};Sys.Extended.UI.Seadragon.ButtonState.registerEnum("Sys.Extended.UI.Seadragon.ButtonState",false);Sys.Extended.UI.Seadragon.Button=function(){var b=null,a=this;Sys.Extended.UI.Seadragon.Button.initializeBase(a);a._tooltip=b;a._srcRest=b;a._srcGroup=b;a._srcHover=b;a._srcDown=b;a._button=b;a.config=b};Sys.Extended.UI.Seadragon.Button.prototype={initialize:function(){var a=this;Sys.Extended.UI.Seadragon.Button.callBaseMethod(a,"initialize");a._button=Seadragon.Utils.makeNeutralElement("span");a._currentState=Sys.Extended.UI.Seadragon.ButtonState.GROUP;a._tracker=new Seadragon.MouseTracker(a._button,a.config.clickTimeThreshold,a.config.clickDistThreshold);a._imgRest=Seadragon.Utils.makeTransparentImage(a._srcRest);a._imgGroup=Seadragon.Utils.makeTransparentImage(a._srcGroup);a._imgHover=Seadragon.Utils.makeTransparentImage(a._srcHover);a._imgDown=Seadragon.Utils.makeTransparentImage(a._srcDown);a._fadeDelay=0;a._fadeLength=2e3;a._fadeBeginTime=null;a._shouldFade=false;a._button.style.display="inline-block";a._button.style.position="relative";a._button.title=a._tooltip;a._button.appendChild(a._imgRest);a._button.appendChild(a._imgGroup);a._button.appendChild(a._imgHover);a._button.appendChild(a._imgDown);var e=a._imgRest.style,d=a._imgGroup.style,b=a._imgHover.style,c=a._imgDown.style;d.position=b.position=c.position="absolute";d.top=b.top=c.top="0px";d.left=b.left=c.left="0px";b.visibility=c.visibility="hidden";if(Seadragon.Utils.getBrowser()==Seadragon.Browser.FIREFOX&&Seadragon.Utils.getBrowserVersion()<3)d.top=b.top=c.top="";a._tracker.enterHandler=Function.createDelegate(a,a._enterHandler);a._tracker.exitHandler=Function.createDelegate(a,a._exitHandler);a._tracker.pressHandler=Function.createDelegate(a,a._pressHandler);a._tracker.releaseHandler=Function.createDelegate(a,a._releaseHandler);a._tracker.clickHandler=Function.createDelegate(a,a._clickHandler);a._tracker.setTracking(true);a._outTo(Sys.Extended.UI.Seadragon.ButtonState.REST)},dispose:function(){},_scheduleFade:function(){window.setTimeout(Function.createDelegate(this,this._updateFade),20)},_updateFade:function(){var b=this;if(b._shouldFade){var c=(new Date).getTime(),d=c-b._fadeBeginTime,a=1-d/b._fadeLength;a=Math.min(1,a);a=Math.max(0,a);Seadragon.Utils.setElementOpacity(b._imgGroup,a,true);a>0&&b._scheduleFade()}},_beginFading:function(){var a=this;a._shouldFade=true;a._fadeBeginTime=(new Date).getTime()+a._fadeDelay;window.setTimeout(Function.createDelegate(a,a._scheduleFade),a._fadeDelay)},_stopFading:function(){this._shouldFade=false;Seadragon.Utils.setElementOpacity(this._imgGroup,1,true)},_inTo:function(b){var a=this;if(b>=Sys.Extended.UI.Seadragon.ButtonState.GROUP&&a._currentState==Sys.Extended.UI.Seadragon.ButtonState.REST){a._stopFading();a._currentState=Sys.Extended.UI.Seadragon.ButtonState.GROUP}if(b>=Sys.Extended.UI.Seadragon.ButtonState.HOVER&&a._currentState==Sys.Extended.UI.Seadragon.ButtonState.GROUP){a._imgHover.style.visibility="";a._currentState=Sys.Extended.UI.Seadragon.ButtonState.HOVER}if(b>=Sys.Extended.UI.Seadragon.ButtonState.DOWN&&a._currentState==Sys.Extended.UI.Seadragon.ButtonState.HOVER){a._imgDown.style.visibility="";a._currentState=Sys.Extended.UI.Seadragon.ButtonState.DOWN}},_outTo:function(b){var a=this;if(b<=Sys.Extended.UI.Seadragon.ButtonState.HOVER&&a._currentState==Sys.Extended.UI.Seadragon.ButtonState.DOWN){a._imgDown.style.visibility="hidden";a._currentState=Sys.Extended.UI.Seadragon.ButtonState.HOVER}if(b<=Sys.Extended.UI.Seadragon.ButtonState.GROUP&&a._currentState==Sys.Extended.UI.Seadragon.ButtonState.HOVER){a._imgHover.style.visibility="hidden";a._currentState=Sys.Extended.UI.Seadragon.ButtonState.GROUP}if(a._newState<=Sys.Extended.UI.Seadragon.ButtonState.REST&&a._currentState==Sys.Extended.UI.Seadragon.ButtonState.GROUP){a._beginFading();a._currentState=Sys.Extended.UI.Seadragon.ButtonState.REST}},_enterHandler:function(e,d,b,c){var a=this;if(b){a._inTo(Sys.Extended.UI.Seadragon.ButtonState.DOWN);a._raiseEvent("onEnter",a)}else!c&&a._inTo(Sys.Extended.UI.Seadragon.ButtonState.HOVER)},_exitHandler:function(d,c,a){this._outTo(Sys.Extended.UI.Seadragon.ButtonState.GROUP);a&&this._raiseEvent("onExit",this)},_pressHandler:function(){this._inTo(Sys.Extended.UI.Seadragon.ButtonState.DOWN);this._raiseEvent("onPress",this)},_releaseHandler:function(e,d,b,c){var a=this;if(b&&c){a._outTo(Sys.Extended.UI.Seadragon.ButtonState.HOVER);a._raiseEvent("onRelease",a)}else if(b)a._outTo(Sys.Extended.UI.Seadragon.ButtonState.GROUP);else a._inTo(Sys.Extended.UI.Seadragon.ButtonState.HOVER)},_clickHandler:function(c,b,a){a&&this._raiseEvent("onClick",this)},_raiseEvent:function(c,a){var b=this.get_events().getHandler(c);if(b){if(!a)a=Sys.EventArgs.Empty;b(this,a)}},get_element:function(){return this._button},get_tooltip:function(){return this._tooltip},set_tooltip:function(a){this._tooltip=a},get_config:function(){return this.config},set_config:function(a){this.config=a},get_srcRest:function(){return this._srcRest},set_srcRest:function(a){this._srcRest=a},get_srcGroup:function(){return this._srcGroup},set_srcGroup:function(a){this._srcGroup=a},get_srcHover:function(){return this._srcHover},set_srcHover:function(a){this._srcHover=a},get_srcDown:function(){return this._srcDown},set_srcDown:function(a){this._srcDown=a},add_onPress:function(a){this.get_events().addHandler("onPress",a)},remove_onPress:function(a){this.get_events().removeHandler("onPress",a)},add_onClick:function(a){this.get_events().addHandler("onClick",a)},remove_onClick:function(a){this.get_events().removeHandler("onClick",a)},add_onEnter:function(a){this.get_events().addHandler("onEnter",a)},remove_onEnter:function(a){this.get_events().removeHandler("onEnter",a)},add_onRelease:function(a){this.get_events().addHandler("onRelease",a)},remove_onRelease:function(a){this.get_events().removeHandler("onRelease",a)},add_onExit:function(a){this.get_events().addHandler("onExit",a)},remove_onExit:function(a){this.get_events().removeHandler("onExit",a)},notifyGroupEnter:function(){this._inTo(Sys.Extended.UI.Seadragon.ButtonState.GROUP)},notifyGroupExit:function(){this._outTo(Sys.Extended.UI.Seadragon.ButtonState.REST)}};Sys.Extended.UI.Seadragon.Button.registerClass("Sys.Extended.UI.Seadragon.Button",Sys.Component);Sys.Extended.UI.Seadragon.ButtonGroup=function(){var a=this;Sys.Extended.UI.Seadragon.ButtonGroup.initializeBase(a);a._buttons=null;a._group=null;a.config=null};Sys.Extended.UI.Seadragon.ButtonGroup.prototype={initialize:function(){var a=this;Sys.Extended.UI.Seadragon.ButtonGroup.callBaseMethod(a,"initialize");a._group=Seadragon.Utils.makeNeutralElement("span");var d=a._buttons.concat([]),b=new Seadragon.MouseTracker(a._group,a.config.clickTimeThreshold,a.config.clickDistThreshold);a._group.style.display="inline-block";for(var c=0;c<d.length;c++)a._group.appendChild(d[c].get_element());b.enterHandler=Function.createDelegate(a,a._enterHandler);b.exitHandler=Function.createDelegate(a,a._exitHandler);b.releaseHandler=Function.createDelegate(a,a._releaseHandler);b.setTracking(true)},dispose:function(){},get_buttons:function(){return this._buttons},set_buttons:function(a){this._buttons=a},get_element:function(){return this._group},get_config:function(){return this.config},set_config:function(a){this.config=a},_enterHandler:function(){for(var a=0;a<this._buttons.length;a++)this._buttons[a].notifyGroupEnter()},_exitHandler:function(e,d,b){if(!b)for(var a=0;a<this._buttons.length;a++)this._buttons[a].notifyGroupExit()},_releaseHandler:function(e,d,c,b){if(!b)for(var a=0;a<this._buttons.length;a++)this._buttons[a].notifyGroupExit()},emulateEnter:function(){this._enterHandler()},emulateExit:function(){this._exitHandler()}};Sys.Extended.UI.Seadragon.ButtonGroup.registerClass("Sys.Extended.UI.Seadragon.ButtonGroup",Sys.Component);�// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedRoundedCorners";function a(){var b=null,a=true;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.BoxCorners=function(){throw Error.invalidOperation();};Sys.Extended.UI.BoxCorners.prototype={None:0,TopLeft:1,TopRight:2,BottomRight:4,BottomLeft:8,Top:1|2,Right:2|4,Bottom:4|8,Left:8|1,All:1|2|4|8};Sys.Extended.UI.BoxCorners.registerEnum("Sys.Extended.UI.BoxCorners",a);Sys.Extended.UI.RoundedCornersBehavior=function(d){var c=this;Sys.Extended.UI.RoundedCornersBehavior.initializeBase(c,[d]);c._corners=Sys.Extended.UI.BoxCorners.All;c._radius=5;c._color=b;c._parentDiv=b;c._originalStyle=b;c._borderColor=b;c._isDirty=a};Sys.Extended.UI.RoundedCornersBehavior.prototype={initialize:function(){Sys.Extended.UI.RoundedCornersBehavior.callBaseMethod(this,"initialize");this.update()},dispose:function(){this.disposeParentDiv();Sys.Extended.UI.RoundedCornersBehavior.callBaseMethod(this,"dispose")},update:function(){var e="0px",j="none",f="1px",i="solid",h="px",d=this,c=d.get_element();if(!c||!d._isDirty||d.get_isUpdating())return;d.disposeParentDiv();if(c.style.borderRadius!=undefined){c.style.borderRadius=d._radius+h;if(d._borderColor){c.style.border=i;c.style.borderWidth=f;c.style.borderColor=d._borderColor}else{c.style.border=j;c.style.borderWidth=e}if(!d.isCornerSet(Sys.Extended.UI.BoxCorners.TopLeft))c.style.borderTopLeftRadius=e;if(!d.isCornerSet(Sys.Extended.UI.BoxCorners.BottomLeft))c.style.borderBottomLeftRadius=e;if(!d.isCornerSet(Sys.Extended.UI.BoxCorners.TopRight))c.style.borderTopRightRadius=e;if(!d.isCornerSet(Sys.Extended.UI.BoxCorners.BottomRight))c.style.borderBottomRightRadius=e}else if(c.style.MozBorderRadius!=undefined){c.style.MozBorderRadius=d._radius+h;if(d._borderColor){c.style.border=i;c.style.borderWidth=f;c.style.borderColor=d._borderColor}else{c.style.border=j;c.style.borderWidth=e}if(!d.isCornerSet(Sys.Extended.UI.BoxCorners.TopLeft))c.style.MozBorderRadiusTopleft=e;if(!d.isCornerSet(Sys.Extended.UI.BoxCorners.BottomLeft))c.style.MozBorderRadiusBottomleft=e;if(!d.isCornerSet(Sys.Extended.UI.BoxCorners.TopRight))c.style.MozBorderRadiusTopright=e;if(!d.isCornerSet(Sys.Extended.UI.BoxCorners.BottomRight))c.style.MozBorderRadiusBottomright=e}else if(c.style.WebkitBorderRadius!=undefined){c.style.WebkitBorderRadius=d._radius+h;if(d._borderColor){c.style.border=i;c.style.borderWidth=f;c.style.borderColor=d._borderColor}else{c.style.border=j;c.style.borderWidth=e}if(!d.isCornerSet(Sys.Extended.UI.BoxCorners.TopLeft))c.style.WebkitBorderRadiusTopLeft=e;if(!d.isCornerSet(Sys.Extended.UI.BoxCorners.BottomLeft))c.style.WebkitBorderRadiusBottomLeft=e;if(!d.isCornerSet(Sys.Extended.UI.BoxCorners.TopRight))c.style.WebkitBorderRadiusTopRight=e;if(!d.isCornerSet(Sys.Extended.UI.BoxCorners.BottomRight))c.style.WebkitBorderRadiusBottomRight=e}else{var w=d.getBackgroundColor(),r=c.offsetWidth,g=c.cloneNode(false);d.moveChildren(c,g);d._originalStyle=c.style.cssText;c.style.backgroundColor="transparent";c.style.verticalAlign="top";c.style.padding="0";c.style.overflow="";c.style.className="";if(c.style.height&&c.style.height!="auto")c.style.height=parseInt($common.getCurrentStyle(c,"height"))+d._radius*2+h;else if(!c.style.width&&0<r)c.style.width=r+h;g.style.position="";g.style.border="";g.style.margin="";g.style.width="100%";if(g.style.overflow==""&&$common.getCurrentStyle(c,"overflow")=="visible")g.style.overflow="auto";g.id="";g.removeAttribute("control");if(d._borderColor){g.style.borderTopStyle=j;g.style.borderBottomStyle=j;g.style.borderLeftStyle=i;g.style.borderRightStyle=i;g.style.borderLeftColor=d._borderColor;g.style.borderRightColor=d._borderColor;g.style.borderLeftWidth=f;g.style.borderRightWidth=f;if(d._radius==0){g.style.borderTopStyle=i;g.style.borderBottomStyle=i;g.style.borderTopColor=d._borderColor;g.style.borderBottomColor=d._borderColor;g.style.borderTopWidth=f;g.style.borderBottomWidth=f}}else{g.style.borderTopStyle=j;g.style.borderBottomStyle=j;g.style.borderLeftStyle=j;g.style.borderRightStyle=j}for(var n=b,q=d._radius,u=d._radius,s=0,p=u;p>0;p--){var v=Math.acos(p/q),o=q-Math.round(Math.sin(v)*q),k=document.createElement("DIV");k.__roundedDiv=a;k.style.backgroundColor=w;k.style.marginLeft=o+h;k.style.marginRight=o-(d._borderColor?2:0)+h;k.style.height=f;k.style.fontSize=f;k.style.overflow="hidden";if(d._borderColor){k.style.borderLeftStyle=i;k.style.borderRightStyle=i;k.style.borderLeftColor=d._borderColor;k.style.borderRightColor=d._borderColor;var t=Math.max(0,s-o-1);k.style.borderLeftWidth=t+1+h;k.style.borderRightWidth=t+1+h;if(p==u){k.__roundedDivNoBorder=a;k.style.backgroundColor=d._borderColor}}c.insertBefore(k,n);var m=k;k=k.cloneNode(a);k.__roundedDiv=a;c.insertBefore(k,n);var l=k;n=k;s=o;if(!d.isCornerSet(Sys.Extended.UI.BoxCorners.TopLeft)){m.style.marginLeft="0";if(d._borderColor)m.style.borderLeftWidth=f}if(!d.isCornerSet(Sys.Extended.UI.BoxCorners.TopRight)){m.style.marginRight="0";if(d._borderColor){m.style.borderRightWidth=f;m.style.marginRight="-2px"}}if(!d.isCornerSet(Sys.Extended.UI.BoxCorners.BottomLeft)){l.style.marginLeft="0";if(d._borderColor)l.style.borderLeftWidth=f}if(!d.isCornerSet(Sys.Extended.UI.BoxCorners.BottomRight)){l.style.marginRight="0";if(d._borderColor){l.style.borderRightWidth=f;l.style.marginRight="-2px"}}}c.insertBefore(g,n);d._parentDiv=g;d._isDirty=false}},disposeParentDiv:function(){var a=this;if(a._parentDiv){for(var d=a.get_element(),f=d.childNodes,e=f.length-1;e>=0;e--){var c=f[e];if(c){c==a._parentDiv&&a.moveChildren(c,d);try{d.removeChild(c)}catch(d){}}}if(a._originalStyle){d.style.cssText=a._originalStyle;a._originalStyle=b}a._parentDiv=b}},getBackgroundColor:function(){return this._color?this._color:$common.getCurrentStyle(this.get_element(),"backgroundColor")},moveChildren:function(b,d){var c=0;while(b.hasChildNodes()){var a=b.childNodes[0];a=b.removeChild(a);d.appendChild(a);c++}return c},isCornerSet:function(a){return(this._corners&a)!=Sys.Extended.UI.BoxCorners.None},setCorner:function(b,c){var a=this;if(c)a.set_Corners(a._corners|b);else a.set_Corners(a._corners&~b)},get_Color:function(){return this._color},set_Color:function(c){var b=this;if(c!=b._color){b._color=c;b._isDirty=a;b.update();b.raisePropertyChanged("Color")}},get_Radius:function(){return this._radius},set_Radius:function(c){var b=this;if(c!=b._radius){b._radius=c;b._isDirty=a;b.update();b.raisePropertyChanged("Radius")}},get_Corners:function(){return this._corners},set_Corners:function(c){var b=this;if(c!=b._corners){b._corners=c;b._isDirty=a;b.update();b.raisePropertyChanged("Corners")}},get_BorderColor:function(){return this._borderColor},set_BorderColor:function(c){var b=this;if(c!=b._borderColor){b._borderColor=c;b._isDirty=a;b.update();b.raisePropertyChanged("BorderColor")}}};Sys.Extended.UI.RoundedCornersBehavior.registerClass("Sys.Extended.UI.RoundedCornersBehavior",Sys.Extended.UI.BehaviorBase);Sys.registerComponent(Sys.Extended.UI.RoundedCornersBehavior,{name:"rounded"})}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedBase","ExtendedCommon"],a);else a()})();7


/// <reference name="MicrosoftAjax.debug.js" />
/// <reference name="MicrosoftAjaxTimer.debug.js" />
/// <reference name="MicrosoftAjaxWebForms.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />


Type.registerNamespace("Sys.Extended.UI");

Sys.Extended.UI.NoBotBehavior = function(element) {
    /// <summary>
    /// The NoBotBehavior is used to evaluate JavaScript on the client
    /// to ensure they are running from within a browser
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// DOM Element to associate the behavior with
    /// </param>
    Sys.Extended.UI.NoBotBehavior.initializeBase(this, [element]);

    this._ChallengeScript = "";
}
Sys.Extended.UI.NoBotBehavior.prototype = {
    initialize : function() {
        /// <summary>
        /// Initialize the behavior
        /// </summary>
        Sys.Extended.UI.NoBotBehavior.callBaseMethod(this, "initialize");
        
        var response = eval(this._ChallengeScript);
        Sys.Extended.UI.NoBotBehavior.callBaseMethod(this, "set_ClientState", [response]);
    },

    dispose : function() {
        /// <summary>
        /// Dispose the behavior
        /// </summary>
        Sys.Extended.UI.NoBotBehavior.callBaseMethod(this, "dispose");
    },

    get_ChallengeScript : function() {
        /// <value type="String">
        /// JavaScript to be evaluated
        /// </value>
        return this._ChallengeScript;
    },
    set_ChallengeScript : function(value) {
        if (this._ChallengeScript != value) { 
            this._ChallengeScript = value;
            this.raisePropertyChanged('ChallengeScript');
        }
    }
}
Sys.Extended.UI.NoBotBehavior.registerClass("Sys.Extended.UI.NoBotBehavior", Sys.Extended.UI.BehaviorBase);
i// (c) 2010 CodePlex Foundation
(function() {

function execute() {
Type._registerScript("Timer.js", ["MicrosoftAjaxComponentModel.js"]);
var $type, $prototype;
$type = Sys.UI._Timer = function _Timer(element) {
    Sys.UI._Timer.initializeBase(this,[element]);
    this._interval = 60000;
    this._enabled = true;
    this._postbackPending = false;
    this._raiseTickDelegate = null;
    this._endRequestHandlerDelegate = null;
    this._timer = null;
    this._pageRequestManager = null;
    this._uniqueID = null;
}
$type.prototype = {
    get_enabled: function _Timer$get_enabled() {
        /// <value type="Boolean" locid="P:J#Sys.UI._Timer.enabled"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._enabled;
    },
    set_enabled: function _Timer$set_enabled(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
        if (e) throw e;
        this._enabled = value;
    },
    get_interval: function _Timer$get_interval() {
        /// <value type="Number" locid="P:J#Sys.UI._Timer.interval"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._interval;
    },
    set_interval: function _Timer$set_interval(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
        if (e) throw e;
        this._interval = value;
    },
    get_uniqueID: function _Timer$get_uniqueID(){
        /// <value type="String" locid="P:J#Sys.UI._Timer.uniqueID"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._uniqueID;
    },
    set_uniqueID: function _Timer$set_uniqueID(value){
        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
        if (e) throw e;
        this._uniqueID = value;
    },
    dispose: function _Timer$dispose(){
       this._stopTimer();
       if(this._pageRequestManager !== null){
           this._pageRequestManager.remove_endRequest(this._endRequestHandlerDelegate);
       }
       Sys.UI._Timer.callBaseMethod(this,"dispose");
    },
    _doPostback: function _Timer$_doPostback(){
        __doPostBack(this.get_uniqueID(),'');
    },
    _handleEndRequest: function _Timer$_handleEndRequest(sender, arg){
        var dataItem = arg.get_dataItems()[this.get_id()];
	    if (dataItem){
            this._update(dataItem[0],dataItem[1]);
	  	}
	  
	    if ((this._postbackPending === true) && (this._pageRequestManager !== null)&&(this._pageRequestManager.get_isInAsyncPostBack() === false)){
    	   	this._postbackPending = false;
            this._doPostback();
        }
	   
    },
    initialize: function _Timer$initialize(){
        Sys.UI._Timer.callBaseMethod(this, 'initialize');
    	this._raiseTickDelegate = Function.createDelegate(this,this._raiseTick);
    	this._endRequestHandlerDelegate = Function.createDelegate(this,this._handleEndRequest);
    	if (Sys.WebForms && Sys.WebForms.PageRequestManager){
           this._pageRequestManager = Sys.WebForms.PageRequestManager.getInstance();  
    	}
    	if (this._pageRequestManager !== null ){
    	    this._pageRequestManager.add_endRequest(this._endRequestHandlerDelegate);
    	}
        if(this.get_enabled()) {
            this._startTimer();
        }
    },
    _raiseTick: function _Timer$_raiseTick() {
        this._startTimer();
        if ((this._pageRequestManager === null) || (!this._pageRequestManager.get_isInAsyncPostBack())){
            this._doPostback();
            this._postbackPending = false;
        } 
        else {
            this._postbackPending = true;
        }
    },
    _startTimer: function _Timer$_startTimer(){
        this._timer = window.setTimeout(Function.createDelegate(this,this._raiseTick),this.get_interval());
    },
    _stopTimer: function _Timer$_stopTimer(){
	    if (this._timer !== null){
	 	    window.clearTimeout(this._timer);
		    this._timer = null;
       } 	
    },
    _update: function _Timer$_update(enabled,interval) {
        var stopped = !this.get_enabled();
        var intervalChanged= (this.get_interval() !== interval);
	    if ((!stopped) && ((!enabled)||(intervalChanged))){
    	  	this._stopTimer();
    		stopped = true;
       	} 
    	this.set_enabled(enabled);
    	this.set_interval(interval);
    	if ((this.get_enabled()) && (stopped)){
    	    this._startTimer();
    	}
    }
}
$type.registerClass('Sys.UI._Timer', Sys.UI.Control);
}

if (window.Sys && Sys.loader) {
	Sys.loader.registerScript("Timer", null, execute);
}
else {
	execute();
}

})();
fK// (c) 2010 CodePlex Foundation
(function(){var a=null;function b(){var p="\r\n--",j="\r\n",i="--",v="DataServiceVersion",m="GET",h="application/json",f="Content-Type",o="DELETE",n="MERGE",l="POST",c="/",k="undefined",e=false,g=true,u="$inlinecount",t="$filter",s="$orderby",r="$top",q="$skip",d="";Type._registerScript("MicrosoftAjaxOpenData.js",["MicrosoftAjaxDataContext.js"]);var b,y,x=Sys._merge,w=Sys._forIn;Type.registerNamespace("Sys.Data");if(!Sys.Data.IDataProvider){b=Sys.Data.IDataProvider=function(){};b.registerInterface("Sys.Data.IDataProvider")}if(!Sys.Data.MergeOption){b=Sys.Data.MergeOption=function(){};b.prototype={appendOnly:0,overwriteChanges:1};b.registerEnum("Sys.Data.MergeOption")}b=Sys.Data.OpenDataQueryBuilder=function(c){var a=this;a._queryParameters={};a._uri=c;var e=c.indexOf("?");if(e>=0){a._uri=c.substr(0,e);var g=c.substr(e+1).split("&");for(var h in g){var b=g[h],f=b.indexOf("=");if(f>=0)a._queryParameters[decodeURIComponent(b.substr(0,f))]=decodeURIComponent(b.substr(f+1));else a._queryParameters[decodeURIComponent(b)]=d}}};b.prototype={_queryParameters:a,_uri:a,get_skip:function(){return this._getIntParam(q)},set_skip:function(a){this._setParam(q,a)},get_top:function(){return this._getIntParam(r)},set_top:function(a){this._setParam(r,a)},get_orderby:function(){return this._getStringParam(s)},set_orderby:function(a){this._setParam(s,a)},get_filter:function(){return this._getStringParam(t)},set_filter:function(a){this._setParam(t,a)},get_select:function(){return this._getStringParam("$select")},set_select:function(a){this._setParam("$select",a)},get_expand:function(){return this._getStringParam("$expand")},set_expand:function(a){this._setParam("$expand",a)},get_inlineCount:function(){return this._getStringParam(u)},set_inlineCount:function(a){this._setParam(u,a)},get_resourcePath:function(){return this._uri},get_queryParameters:function(){return this._queryParameters},set_queryParameters:function(a){this._queryParameters=a},toString:function(){var b,f,d,c=[],i=this._queryParameters,j=Sys.Data.OpenDataQueryBuilder._queryOptions;for(b in i)if(i.hasOwnProperty(b)&&!Array.contains(j,b)){d=i[b];d!=a&&c.push({key:b,value:d})}for(f in j){b=j[f];d=i[b];d!=a&&c.push({key:b,value:d})}var h=new Sys.StringBuilder(this._uri),k=g;for(f in c)if(c.hasOwnProperty(f)){h.append(k?"?":"&");h.append(encodeURIComponent(c[f].key));h.append("=");h.append(encodeURIComponent(c[f].value));k=e}return h.toString()},_getIntParam:function(c){var b=parseInt(this._queryParameters[c]);return isNaN(b)?a:b},_getStringParam:function(c){var b=this._queryParameters[c];return b||a},_setParam:function(c,b){if(typeof b===k||b===a)delete this._queryParameters[c];else this._queryParameters[c]=b}};b._queryOptions=[t,s,q,r];b.registerClass("Sys.Data.OpenDataQueryBuilder");b=Sys.Data._OpenDataUtil=function(){};b.concatUris=function(b,a){if(a.indexOf("//")>=0)return a;if(b.endsWith(c))b=b.substr(0,b.length-1);if(a.startsWith(c))a=a.substr(1);return b+c+a};b.extractETag=function(b){return b.__metadata?b.__metadata.etag||a:a};b.extractUri=function(b){return b.__metadata?b.__metadata.uri||a:a};b.registerClass("Sys.Data._OpenDataUtil");b=Sys.Data.OpenDataActionResult=function(e,c,b,d){var a=this;a._result=e;a._headers=c||{};a._actionContext=b;a._operation=d};b.prototype={_actionContext:a,_operation:a,_result:a,_headers:a,get_httpHeaders:function(){return this._headers},get_actionContext:function(){return this._actionContext},get_operation:function(){return this._operation},get_result:function(){return this._result}};b.registerClass("Sys.Data.OpenDataActionResult");b=Sys.Data.OpenDataActionSequence=function(a){this._actionQueue=[];this._dataService=a};b.prototype={get_serviceProxy:function(){return this._dataService},addInsertAction:function(c,a,b){this._actionQueue.push([0,a,c,b])},addUpdateAction:function(d,c,b){var e=this._actionQueue;this._actionQueue.push([1,c||a,d,b])},addRemoveAction:function(c,b){this._actionQueue.push([2,a,c,b])},clearActions:function(){this._actionQueue=[]},execute:function(p,q,r){var g=this,j=g._actionQueue,c=new Sys.Data._OpenDataBatchWriter(window.location.host),m=g._dataService;g._actionQueue=[];c.startChangeSet();for(var i=0,s=j.length;i<s;i++){var d=j[i],e=d[1],h=d[2],k=Sys.Data._OpenDataUtil.extractETag(h);switch(d[0]){case 0:d[0]="insert";c.addChange(e,k,l,Sys.Serialization.JavaScriptSerializer.serialize(h),i);break;case 1:d[0]="edit";if(!e)e=Sys.Data._OpenDataUtil.extractUri(h);c.addChange(e,k,m.get_replaceOnUpdate()?"PUT":n,Sys.Serialization.JavaScriptSerializer.serialize(h));break;case 2:d[0]="remove";e=Sys.Data._OpenDataUtil.extractUri(h);c.addChange(e,k,o,a)}}c.endChangeSet();var b=new Sys.Net.WebRequest;b.set_url(Sys.Data._OpenDataUtil.concatUris(m.get_serviceUri(),"$batch"));b.get_headers()[f]="multipart/mixed; boundary="+c.get_topBoundary();b.set_httpVerb(l);b.set_timeout(m.get_timeout());b.set_body(c.get_requestBody());b.set_userContext({q:j,bw:c,c:r,s:p,f:q});b.add_completed(Function.createDelegate(g,g._batchCompleted));b.invoke();return b},_batchCompleted:function(j){var b="actionSequence",i,c,d,l=j.get_webRequest().get_userContext(),v=l.q,t=l.f,s=l.s,q=l.c,z=l.bw,g=this._dataService._checkForError(j,b,e);function x(){var c=d.status?parseFloat(d.status.code):-1;if(c<200||c>300){var j;if(d.headers[f]===h){var i=Sys.Serialization.JavaScriptSerializer.deserialize(d.body);g=Sys.Data.OpenDataActionSequence._getError(e,c,a,i,b)}else g=Sys.Data.OpenDataActionSequence._getError(e,c,String.format(Sys.Data.OpenDataRes.operationFailed,b))}}function n(){t&&t(g,q,b)}if(g){n();return}c=Sys.Data._OpenDataBatchReader._parseResponse(j);if(c.length!==1){g=Sys.Data.OpenDataActionSequence._getError(e,-1,String.format(Sys.Data.OpenDataRes.invalidBatchResponse,j.get_webRequest().get_url()));n();return}c=c[0];if(c.length===1){d=c[0];x();if(g){n();return}}if(c.length!==v.length){g=Sys.Data.OpenDataActionSequence._getError(e,-1,String.format(Sys.Data.OpenDataRes.invalidBatchResponse,j.get_webRequest().get_url()));n();return}if(s){for(var w=c.length,u=new Array(w),p,m=0;m<w;m++){d=c[m];p=d.body;i=a;if(p){i=Sys.Serialization.JavaScriptSerializer.deserialize(p);if(i&&i.d)i=i.d}var r=v[m],o=r[3],y=r[0];if(typeof o===k)o=a;u[m]=new Sys.Data.OpenDataActionResult(i,d.headers,o,y)}s(u,q,b)}}};b.registerClass("Sys.Data.OpenDataActionSequence");b._getError=function(h,l,i,d,g){var c,f=d?d.error:a;if(!f)c=new Sys.Net.WebServiceError(h,String.format(i||Sys.Data.OpenDataRes.operationFailed,g));else{var b=f.message,e=f.innererror,j,k;b=b&&b.value?b.value:a;if(e){k=e.type;j=e.stacktrace}c=new Sys.Net.WebServiceError(h,String.format(i||b||Sys.Data.OpenDataRes.operationFailed,g),j||a,k||a,d)}c._statusCode=l;return c};b=Sys.Data.OpenDataInvokeParametersBuilder=function(){this._queryBuilder=new Sys.Data.OpenDataQueryBuilder(d);this._parameters=this._queryBuilder.get_queryParameters()};b.prototype={_parameters:a,_queryBuilder:a,get_parameters:function(){return this._parameters},addBoolean:function(b,a){this._parameters[b]=a.toString()},addDate:function(d,a,b){var c=b?a.format("yyyy-MM-ddTHH:mm:ss.fffffffzzz"):a.format("yyyy-MM-ddTHH:mm:ss.fffffff");this._parameters[d]="datetime'"+c+"'"},addDecimal:function(b,a){this._parameters[b]=a.toString()+"M"},addDouble:function(b,a){this._parameters[b]=a.toString()},addGuid:function(b,a){this._parameters[b]="guid'"+a+"'"},addInteger:function(b,a){this._parameters[b]=a.toString()},addString:function(b,a){this._parameters[b]="'"+a.replace(new RegExp("'","g"),"''")+"'"},toString:function(){return this._queryBuilder.toString()}};b.registerClass("Sys.Data.OpenDataInvokeParametersBuilder");b=Sys.Data.OpenDataServiceProxy=function(a){Sys.Data.OpenDataServiceProxy.initializeBase(this);a&&this.set_path(a)};b.prototype={_replaceOnUpdate:e,_usePostTunneling:g,get_replaceOnUpdate:function(){return this._replaceOnUpdate},set_replaceOnUpdate:function(a){this._replaceOnUpdate=a},get_serviceUri:function(){return this.get_path()||d},set_serviceUri:function(a){this.set_path(a||d)},createActionSequence:function(){return new Sys.Data.OpenDataActionSequence(this)},insert:function(g,d,b,c,e,f){var a=this._prepareWebRequest(g,d,l,b,c,e,"insert",f);a.invoke();return a},invoke:function(d,b,i,f,g,h,j){var c=new Sys.Data.OpenDataQueryBuilder(d);c._queryParameters=x(a,c._queryParameters,i);b=b||m;var e=this._prepareWebRequest(a,c.toString(),b,f,g,h,d,j);e.invoke();return e},fetchData:function(e,b,m,n,i,j,h,l){var c=this,g,d=a;if(typeof h!==k){d=c.get_timeout();c.set_timeout(h)}if(b)for(var f in b)if(b.hasOwnProperty(f))e+=(e.indexOf("?")<0?"?":"&")+encodeURIComponent(f)+"="+encodeURIComponent(b[f]);g=c.query(e,i,j,l);d!==a&&c.set_timeout(d);return g},fetchDeferredProperty:function(b,d,g,i,j,k){var h=Function.createDelegate(this,function(f,e,c){b[d]=f;var a=g||this.get_defaultSucceededCallback();a&&a(b,e,c)}),e;if(b[d]&&b[d].__deferred&&b[d].__deferred.uri)e=b[d].__deferred.uri;else if(b.__metadata&&b.__metadata.uri)e=b.__metadata.uri+c+d;var f=this._prepareWebRequest(a,e,m,h,i,j,d,k);f.invoke();return f},query:function(c,d,e,f,g){var b=this._prepareWebRequest(a,c,m,d,e,f,c,g);b.invoke();return b},update:function(g,c,d,e,f){var h=this._replaceOnUpdate?"PUT":n,b=this._prepareWebRequest(g,a,h,c,d,e,"update",f);b.invoke();return b},remove:function(h,c,d,e,g){var b=this._prepareWebRequest(h,a,o,c,d,e,"remove",g);b.set_body(a);delete b.get_headers()[f];b.invoke();return b},_checkForError:function(d,n,p){var g=this,b,k=a,l=e,c=0;if(!d.get_responseAvailable()){l=d.get_timedOut();b=l?Sys.Data.OpenDataRes.operationTimedOut:String.format(Sys.Data.OpenDataRes.operationFailed,n)}else{c=d.get_statusCode();if(c===1223||c===0)c=204;if(p){var m=parseFloat(d.getResponseHeader(v));if((isNaN(m)||m>2)&&c!==204)b=isNaN(m)?String.format(Sys.Data.OpenDataRes.uriNotOpenDataService,g.get_serviceUri()):String.format(Sys.Data.OpenDataRes.serviceVersionTooHigh,g.get_serviceUri())}if(!b&&(c<200||c>=300)){var i=d.getResponseHeader(f);if(i.startsWith(h))k=d.get_object();else if(i.startsWith("application/xml")||i.startsWith("text/xml")){var q=d.get_xml(),j=q.documentElement.getElementsByTagName("message");if(j&&j.length){var o=j[0];if(o.childNodes.length)b=o.childNodes[0].nodeValue}if(!b)b=String.format(Sys.Data.OpenDataRes.uriNotOpenDataService,g.get_serviceUri())}else b=String.format(Sys.Data.OpenDataRes.uriNotOpenDataService,g.get_serviceUri())}}return b||k?Sys.Data.OpenDataActionSequence._getError(l,c,b,k,n):a},_onResponseComplete:function(c,l,k,j,e){var m=this._checkForError(c,e,g);if(m)k&&k(m,j,e);else if(l){var p=parseFloat(c.getResponseHeader(v))||1,o=c.getResponseHeader(f),b=a;if(o.startsWith(h)){b=c.get_object();b=b.d||b}var n=b,i=a;if(p>=2){n=b.results;delete b.results;i={};w(b,function(b,a){i[a.replace(/^\_+/,d)]=b})}l(n,j,e,i)}},_prepareWebRequest:function(j,t,r,p,m,i,u,b){var c=this;b=b||new Sys.Net.WebRequest;b.set_url(Sys.Data._OpenDataUtil.concatUris(c.get_serviceUri(),t||d));b.set_timeout(c.get_timeout());var e=b.get_headers();e.Accept=h;e.MaxDataServiceVersion="2.0;OpenDataAjax";b.set_httpVerb(r);if(c._usePostTunneling){var g=r.toUpperCase();if(g==="PUT"||g===o||g===n){b.set_httpVerb(l);e["X-HTTP-Method"]=g}}if(j){b.set_body(Sys.Serialization.JavaScriptSerializer.serialize(j));e[f]=h;var q=Sys.Data._OpenDataUtil.extractETag(j);if(q)e["If-Match"]=q;var s=Sys.Data._OpenDataUtil.extractUri(j);s&&b.set_url(s)}p=p||c.get_defaultSucceededCallback();m=m||c.get_defaultFailedCallback();if(typeof i===k||i===a)i=c.get_defaultUserContext();b.add_completed(Function.createDelegate(c,function(a){this._onResponseComplete(a,p,m,i,u)}));return b}};b.registerClass("Sys.Data.OpenDataServiceProxy",Sys.Net.WebServiceProxy,Sys.Data.IDataProvider);Sys.registerComponent(b,{parameters:["serviceUri"]});b=Sys.Data._OpenDataBatchReader=function(b,c){var a=this;a._responseBody=b;a._boundary=[c];a._position=0;a._responses=[];a._parseParts(a._responses)};b.prototype={get_responses:function(){return this._responses},_parseParts:function(e){var b=this;if(b._readToMark(i+b._currentBoundary(),g)===a)return;b._readLine();var h=a;while(h!==i&&!b._eof()){var d=[];b._parseHeaders(d);var c=d[f];if(c.indexOf("multipart/mixed")===0){var j=[];b._boundary.push(Sys.Data._OpenDataBatchReader._boundaryFromTypeHeader(c));b._parseParts(j);b._boundary.pop();e.push(j);var k=b._readToMark(i+b._currentBoundary(),g)}else c.indexOf("application/http")===0&&e.push(b._parseHttpResponse());h=b._peek(2);b._readLine()}},_parseHttpResponse:function(){var a=this,f=a._readLine(),e=a._parseStatus(f),c=[];a._parseHeaders(c);var b=a._readToMark(i+a._currentBoundary(),g);if(b===j)b=d;return{status:e,headers:c,body:b}},_parseHeaders:function(c){for(var a=this._readLine();a;a=this._readLine()){var b=this._parseHeader(a);c[b.name]=b.value}},_parseHeader:function(b){if(b===a)return a;var c=b.indexOf(":");return c===-1?a:{name:b.substring(0,c).trim(),value:b.substring(c+1).trim()}},_parseStatus:function(c){var b=Sys.Data._OpenDataBatchReader._statusRegExp.exec(c);return b?{code:b[1],text:b[2]}:a},_currentBoundary:function(){return this._boundary[this._boundary.length-1]},_eof:function(){return this._position===-1},_readLine:function(){return this._readToMark(j,e)},_readToMark:function(e,f){var b=this;if(b._eof())return a;var c,d=b._responseBody.indexOf(e,b._position);if(d<0)if(f)c=a;else{c=b._responseBody.substring(b._position);b._position=-1}else{c=b._responseBody.substring(b._position,d);b._position=d+e.length}return c},_peek:function(b){var a=this;return a._eof()?d:a._responseBody.substring(a._position,a._position+b)}};b._boundaryFromTypeHeader=function(c){var d=/;\s*boundary=(.*)$/i,b=d.exec(c);return b?b[1]:a};b._parseResponse=function(a){var b=new Sys.Data._OpenDataBatchReader(a.get_responseData(),Sys.Data._OpenDataBatchReader._boundaryFromTypeHeader(a.getResponseHeader(f)));return b.get_responses()};b._statusRegExp=new RegExp("^HTTP\\/1\\.[01] (\\d{3}) (.*)$","i");b.registerClass("Sys.Data._OpenDataBatchReader");b=Sys.Data._OpenDataBatchWriter=function(c){var b=this;b._host=c;b._content=d;b._boundary=a;b._changesetBoundary=a;b._changesetEntries=a;b._contentType=h};b.prototype={get_contentType:function(){return this._contentType},set_contentType:function(a){this._contentType=a},get_requestBody:function(){return this._content+i+this.get_topBoundary()+i},get_topBoundary:function(){var a=this;if(!a._boundary)a._boundary="batch_"+a._createBoundary();return a._boundary},addChange:function(b,e,c,d,a){this._changesetEntries.push({uri:b,eTag:e,method:c,body:d,contentId:a})},addQuery:function(b){this._content+=this._startPart(this.get_topBoundary(),m,b,a)+j},endChangeSet:function(){var b=this,c=d;for(var f in b._changesetEntries){var e=b._changesetEntries[f];c+=b._startPart(b._changesetBoundary,e.method,e.uri,e.eTag,e.contentId);if(e.body)c+="Content-Type: "+b._contentType+";charset=utf-8\r\n";c+=j;if(e.body)c+=e.body}if(c)c+=p+b._changesetBoundary+"--\r\n";b._content+=p+b.get_topBoundary()+"\r\nContent-Type: multipart/mixed;boundary="+b._changesetBoundary+"\r\n\r\n"+c;b._changesetBoundary=a;b._changesetEntries=a},startChangeSet:function(){this._changesetBoundary="changeset_"+this._createBoundary();this._changesetEntries=[]},_createBoundary:function(){function a(){return Math.floor((1+Math.random())*65536).toString(16).substr(1)}return a()+"-"+a()+"-"+a()},_startPart:function(d,e,f,c,b){var a=p+d+"\r\nContent-Type: application/http\r\nContent-Transfer-Encoding: binary\r\n\r\n"+e+" "+f+" HTTP/1.1\r\n";if(typeof b==="number")a+="Content-ID: "+b+j;if(c)a+="If-Match: "+c+j;a+="Host: "+this._host+"\r\nAccept: "+this.get_contentType()+"\r\nAccept-Charset: utf-8\r\n";return a}};b.registerClass("Sys.Data._OpenDataBatchWriter");b=Sys.Data.OpenDataContext=function(){var a=this;Sys.Data.OpenDataContext.initializeBase(a);a.set_getIdentityMethod(a._getIdentity);a.set_getNewIdentityMethod(a._getNewIdentity);a.set_fetchDataMethod(a._fetchOpenData);a.set_saveChangesMethod(a._saveOpenData);a.set_createEntityMethod(a._createEntity);a.set_handleSaveChangesResultsMethod(a._processResultsOpenData);a.set_getDeferredPropertyFetchOperationMethod(a._getDeferredQuery);a.set_isDeferredPropertyMethod(a._isDeferred);a._proxy=new Sys.Data.OpenDataServiceProxy};b.prototype={_entityCounter:0,_saveCounter:1,get_lastMetadata:function(){return this._metadata||a},get_serviceUri:function(){return this._proxy.get_serviceUri()},set_serviceUri:function(a){this._proxy.set_serviceUri(a)},_createEntity:function(c,b){var a={};c._createMetaData(a,b);return a},_fetchOpenData:function(e,m,b,h,j,d,g,l,k){if(b){if(typeof b!=="string")b=b.toString();var f=b.indexOf(":");if(f!==-1&&f<b.indexOf(c))m=b}function i(g,c,f,b){e._metadata=b;d&&d.apply(a,arguments)}return e._proxy.fetchData(b,h||a,a,j||a,i,g||a,l||0,k||a)},_getDeferredQuery:function(f,g,e,h){var b=a,d=g[e];if(d===a||typeof d===k||d instanceof Array){b=f.getIdentity(g);b+=b.endsWith(c)?e:c+e}else if(typeof d==="object"){b=f.getIdentity(d);if(!b)b=d.__deferred?d.__deferred.uri:a}if(!b)throw Error.invalidOperation(String.format(Sys.Data.OpenDataRes.propertyNotFound,e));return new Sys.Net.WebServiceOperation(b,h)},_isDeferred:function(d,c,b){var a=c[b];return!!(a&&typeof a==="object"&&a.__deferred)},_processResultsOpenData:function(i,d,a){if(a&&a.length===d.length)for(var c=0,j=a.length;c<j;c++){var f=d[c],b=f.item,g=a[c],h=g.get_result(),e=g.get_httpHeaders();if(b){h&&i._fixAfterSave(f,b,h);if(e.ETag&&b.__metadata)b.__metadata.etag=e.ETag}}},_getBatchReference:function(d,f,e,g){var b=d.__metadata[f];if(typeof b==="number")return e+"$"+b;else{var a=this.getIdentity(d);if(g)a=a.substr(a.lastIndexOf(c));return a}},_saveOpenData:function(b,p,u,n,q){var h="/$links/",l="saveChanges",v=b.get_serviceUri(),r=a;if(!v)n(new Sys.Net.WebServiceError(e,String.format(Sys.Res.webServiceFailedNoMsg,l)),q,l);else{var m,t,s=b._proxy,j=s.createActionSequence(),i="__batchNumber"+b._saveCounter++;s.set_timeout(b.get_saveChangesTimeout());for(m=0,t=p.length;m<t;m++){var f=p[m],k=f.item;switch(f.action){case Sys.Data.ChangeOperationType.insert:if(k){var o=b.get_items()[b.getIdentity(k)];delete k.__metadata;o.__metadata[i]=m;j.addInsertAction(k,o.__metadata.entitySet)}else j.addInsertAction({uri:b._getBatchReference(f.linkTarget,i,d)},b._getBatchReference(f.linkSource,i,c)+h+f.linkSourceField);break;case Sys.Data.ChangeOperationType.update:if(k)j.addUpdateAction(k);else if(f.linkTarget)j.addUpdateAction({uri:b._getBatchReference(f.linkTarget,i,d)},b._getBatchReference(f.linkSource,i,c)+h+f.linkSourceField);else j.addRemoveAction({__metadata:{uri:b._getBatchReference(f.linkSource,i,c)+h+f.linkSourceField}});break;case Sys.Data.ChangeOperationType.remove:if(k)j.addRemoveAction(k);else j.addRemoveAction({__metadata:{uri:b._getBatchReference(f.linkSource,i,c)+"/$links"+b._getBatchReference(f.linkTarget,i,c,g)}})}}r=j.execute(u,n,q)}return r},_createMetaData:function(b,a){b.__metadata={entitySet:a,uri:a+"(__new"+this._entityCounter+++")"}},_getNewIdentity:function(c,a,b){c._createMetaData(a,b);return a.__metadata.uri},_getIdentity:function(d,c){var b=c.__metadata;return b?b.uri||a:a}};b.registerClass("Sys.Data.OpenDataContext",Sys.Data.DataContext);Sys.registerComponent(b)}if(window.Sys&&Sys.loader)Sys.loader.registerScript("OpenData",a,b);else b()})();Q+// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedListSearch";function a(){var d=true,e="keypress",c="",b=false,a=null;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.ListSearchBehavior=function(e){var d=this;Sys.Extended.UI.ListSearchBehavior.initializeBase(d,[e]);d._promptCssClass=a;d._promptText=Sys.Extended.UI.Resources&&Sys.Extended.UI.Resources.ListSearch_DefaultPrompt||"Type to search";d._offsetX=0;d._offsetY=0;d._promptPosition=Sys.Extended.UI.ListSearchPromptPosition.Top;d._raiseImmediateOnChange=b;d._queryPattern=Sys.Extended.UI.ListSearchQueryPattern.StartsWith;d._isSorted=b;d._popupBehavior=a;d._onShowJson=a;d._onHideJson=a;d._originalIndex=0;d._newIndex=-1;d._showingPromptText=b;d._searchText=c;d._ellipsis=String.fromCharCode(8230);d._binarySearch=b;d._applicationLoadDelegate=a;d._focusIndex=0;d._queryTimeout=0;d._timer=a;d._matchFound=b;d._focusHandler=a;d._blurHandler=a;d._keyDownHandler=a;d._keyUpHandler=a;d._keyPressHandler=a};Sys.Extended.UI.ListSearchBehavior.prototype={initialize:function(){var a=this;Sys.Extended.UI.ListSearchBehavior.callBaseMethod(a,"initialize");var b=a.get_element();if(b&&b.tagName==="SELECT"){a._focusHandler=Function.createDelegate(a,a._onFocus);a._blurHandler=Function.createDelegate(a,a._onBlur);a._keyDownHandler=Function.createDelegate(a,a._onKeyDown);a._keyUpHandler=Function.createDelegate(a,a._onKeyUp);a._keyPressHandler=Function.createDelegate(a,a._onKeyPress);$addHandler(b,"focus",a._focusHandler);$addHandler(b,"blur",a._blurHandler);$addHandler(b,"keydown",a._keyDownHandler);$addHandler(b,"keyup",a._keyUpHandler);$addHandler(b,e,a._keyPressHandler);a._applicationLoadDelegate=Function.createDelegate(a,a._onApplicationLoad);Sys.Application.add_load(a._applicationLoadDelegate)}},dispose:function(){var b=this,c=b.get_element();$removeHandler(c,e,b._keyPressHandler);$removeHandler(c,"keyup",b._keyUpHandler);$removeHandler(c,"keydown",b._keyDownHandler);$removeHandler(c,"blur",b._blurHandler);$removeHandler(c,"focus",b._focusHandler);b._onShowJson=a;b._onHideJson=a;b._disposePopupBehavior();if(b._applicationLoadDelegate){Sys.Application.remove_load(b._applicationLoadDelegate);b._applicationLoadDelegate=a}b._timer&&b._stopTimer();Sys.Extended.UI.ListSearchBehavior.callBaseMethod(b,"dispose")},_onApplicationLoad:function(){var e=b,d=Sys.Extended.UI.ListSearchBehavior.callBaseMethod(this,"get_ClientState");if(d!=a&&d!=c){e=d==="Focused";Sys.Extended.UI.ListSearchBehavior.callBaseMethod(this,"set_ClientState",a)}e&&this._handleFocus()},_checkIfSorted:function(g){if(this._isSorted)return d;else{for(var c=a,h=g.length,e=0;e<h;e++){var f=g[e].text.toLowerCase();if(c&&this._compareStrings(f,c)<0)return b;c=f}return d}},_onFocus:function(){this._handleFocus()},_handleFocus:function(){var a=this,b=a.get_element();a._focusIndex=b.selectedIndex;if(!a._promptDiv){a._promptDiv=document.createElement("div");a._promptDiv.id=b.id+"_promptDiv";a._promptDiv.innerHTML=a._promptText&&a._promptText.length>0?a._promptText:Sys.Extended.UI.Resources.ListSearch_DefaultPrompt;a._showingPromptText=d;if(a._promptCssClass)a._promptDiv.className=a._promptCssClass;b.parentNode.insertBefore(a._promptDiv,b.nextSibling);a._promptDiv.style.overflow="hidden";a._promptDiv.style.height=a._promptDiv.offsetHeight+"px";a._promptDiv.style.width=b.offsetWidth+"px"}if(!a._popupBehavior)a._popupBehavior=$create(Sys.Extended.UI.PopupBehavior,{parentElement:b},{},{},a._promptDiv);if(a._promptPosition&&a._promptPosition==Sys.Extended.UI.ListSearchPromptPosition.Bottom)a._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.BottomLeft);else a._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.TopLeft);a._onShowJson&&a._popupBehavior.set_onShow(a._onShowJson);a._onHideJson&&a._popupBehavior.set_onHide(a._onHideJson);a._popupBehavior.show();a._updatePromptDiv(a._promptText)},_onBlur:function(){var b=this;b._disposePopupBehavior();var c=b._promptDiv,d=b.get_element();if(c){b._promptDiv=a;c.parentNode.removeChild(c)}!b._raiseImmediateOnChange&&b._focusIndex!=d.selectedIndex&&b._raiseOnChange(d)},_disposePopupBehavior:function(){if(this._popupBehavior){this._popupBehavior.dispose();this._popupBehavior=a}},_onKeyDown:function(e){var a=this,d=a.get_element(),f=a._promptDiv;if(!d||!f)return;a._originalIndex=d.selectedIndex;if(a._showingPromptText){f.innerHTML=c;a._searchText=c;a._showingPromptText=b;a._binarySearch=a._checkIfSorted(d.options)}if(e.keyCode==Sys.UI.Key.backspace){e.preventDefault();e.stopPropagation();a._removeCharacterFromPromptDiv();a._searchForTypedText(d);(!a._searchText||a._searchText.length==0)&&a._stopTimer()}else if(e.keyCode==Sys.UI.Key.esc){e.preventDefault();e.stopPropagation();f.innerHTML=c;a._searchText=c;a._searchForTypedText(d);a._stopTimer()}else if(e.keyCode==Sys.UI.Key.enter&&!a._raiseImmediateOnChange&&a._focusIndex!=d.selectedIndex){a._focusIndex=d.selectedIndex;a._raiseOnChange(d)}},_onKeyUp:function(){var a=this,d=a.get_element(),b=a._promptDiv;if(!d||!b)return;if(a._newIndex==-1||!d||!b||b.innerHTML==c){a._newIndex=-1;return}d.selectedIndex=a._newIndex;a._newIndex=-1},_onKeyPress:function(b){var a=this,c=a.get_element(),d=a._promptDiv;if(!c||!d)return;if(!a._isNormalChar(b)){if(b.charCode==Sys.UI.Key.backspace){b.preventDefault();b.stopPropagation();a._searchText&&a._searchText.length==0&&a._stopTimer()}return}b.preventDefault();b.stopPropagation();a._addCharacterToPromptDiv(b.charCode);a._searchForTypedText(c);a._stopTimer();a._searchText&&a._searchText.length!=0&&a._startTimer()},_isNormalChar:function(a){return Sys.Browser.agent==Sys.Browser.Firefox&&a.rawEvent.keyCode?b:Sys.Browser.agent==Sys.Browser.Opera&&a.rawEvent.which==0?b:a.charCode&&(a.charCode<Sys.UI.Key.space||a.charCode>6e3)?b:d},_updatePromptDiv:function(f){var d=this,a=d._promptDiv;if(!a||!d.get_element())return;var b=typeof f==="undefined"?d._searchText:f,c=a.firstChild;if(!c){c=document.createTextNode(b);a.appendChild(c)}else c.nodeValue=b;if(a.scrollWidth<=a.offsetWidth&&a.scrollHeight<=a.offsetHeight)return;for(var e=b.length-1;e>0&&(a.scrollWidth>a.offsetWidth||a.scrollHeight>a.offsetHeight);e--)c.nodeValue=d._ellipsis+b.substring(b.length-e,b.length)},_addCharacterToPromptDiv:function(a){this._searchText+=String.fromCharCode(a);this._updatePromptDiv()},_removeCharacterFromPromptDiv:function(){var a=this;if(a._searchText&&a._searchText!=c){a._searchText=a._searchText.substring(0,a._searchText.length-1);a._updatePromptDiv()}},_searchForTypedText:function(f){var a=this,i=a._searchText,g=f.options,h=i?i.toLowerCase():c;a._matchFound=b;if(h.length==0){if(g.length>0){f.selectedIndex=0;a._newIndex=0}}else{var e=-1;if(a._binarySearch&&a._queryPattern==Sys.Extended.UI.ListSearchQueryPattern.StartsWith)e=a._doBinarySearch(g,h,0,g.length-1);else e=a._doLinearSearch(g,h,0,g.length-1);if(e==-1)a._newIndex=a._originalIndex;else{f.selectedIndex=e;a._newIndex=e;a._matchFound=d}}a._raiseImmediateOnChange&&a._originalIndex!=f.selectedIndex&&a._raiseOnChange(f)},_raiseOnChange:function(c){if(document.createEvent){var a=document.createEvent("HTMLEvents");a.initEvent("change",d,b);c.dispatchEvent(a)}else document.createEventObject&&c.fireEvent("onchange")},_compareStrings:function(a,b){return a==b?0:a<b?-1:1},_doBinarySearch:function(f,c,d,b){while(d<=b){var a=Math.floor((d+b)/2),g=f[a].text.toLowerCase().substring(0,c.length),e=this._compareStrings(c,g);if(e>0)d=a+1;else if(e<0)b=a-1;else{while(a>0&&f[a-1].text.toLowerCase().startsWith(c))a--;return a}}return-1},_doLinearSearch:function(b,d,e,c){if(this._queryPattern==Sys.Extended.UI.ListSearchQueryPattern.Contains){for(var a=e;a<=c;a++)if(b[a].text.toLowerCase().indexOf(d)>=0)return a}else if(this._queryPattern==Sys.Extended.UI.ListSearchQueryPattern.StartsWith)for(var a=e;a<=c;a++)if(b[a].text.toLowerCase().startsWith(d))return a;return-1},_onTimerTick:function(){var a=this;a._stopTimer();if(!a._matchFound){a._searchText=c;a._updatePromptDiv()}},_startTimer:function(){var a=this;if(a._queryTimeout>0)a._timer=window.setTimeout(Function.createDelegate(a,a._onTimerTick),a._queryTimeout)},_stopTimer:function(){this._timer!=a&&window.clearTimeout(this._timer);this._timer=a},get_onShow:function(){return this._popupBehavior?this._popupBehavior.get_onShow():this._onShowJson},set_onShow:function(b){var a=this;if(a._popupBehavior)a._popupBehavior.set_onShow(b);else a._onShowJson=b;a.raisePropertyChanged("onShow")},get_onShowBehavior:function(){return this._popupBehavior?this._popupBehavior.get_onShowBehavior():a},onShow:function(){this._popupBehavior&&this._popupBehavior.onShow()},get_onHide:function(){return this._popupBehavior?this._popupBehavior.get_onHide():this._onHideJson},set_onHide:function(b){var a=this;if(a._popupBehavior)a._popupBehavior.set_onHide(b);else a._onHideJson=b;a.raisePropertyChanged("onHide")},get_onHideBehavior:function(){return this._popupBehavior?this._popupBehavior.get_onHideBehavior():a},onHide:function(){this._popupBehavior&&this._popupBehavior.onHide()},get_promptText:function(){return this._promptText},set_promptText:function(a){if(this._promptText!=a){this._promptText=a;this.raisePropertyChanged("promptText")}},get_promptCssClass:function(){return this._promptCssClass},set_promptCssClass:function(a){if(this._promptCssClass!=a){this._promptCssClass=a;this.raisePropertyChanged("promptCssClass")}},get_promptPosition:function(){return this._promptPosition},set_promptPosition:function(a){if(this._promptPosition!=a){this._promptPosition=a;this.raisePropertyChanged("promptPosition")}},get_raiseImmediateOnChange:function(){return this._raiseImmediateOnChange},set_raiseImmediateOnChange:function(a){if(this._raiseImmediateOnChange!=a){this._raiseImmediateOnChange=a;this.raisePropertyChanged("raiseImmediateOnChange")}},get_queryTimeout:function(){return this._queryTimeout},set_queryTimeout:function(a){if(this._queryTimeout!=a){this._queryTimeout=a;this.raisePropertyChanged("queryTimeout")}},get_isSorted:function(){return this._isSorted},set_isSorted:function(a){if(this._isSorted!=a){this._isSorted=a;this.raisePropertyChanged("isSorted")}},get_queryPattern:function(){return this._queryPattern},set_queryPattern:function(a){if(this._queryPattern!=a){this._queryPattern=a;this.raisePropertyChanged("queryPattern")}}};Sys.Extended.UI.ListSearchBehavior.registerClass("Sys.Extended.UI.ListSearchBehavior",Sys.Extended.UI.BehaviorBase);Sys.registerComponent(Sys.Extended.UI.ListSearchBehavior,{name:"listSearch"});Sys.Extended.UI.ListSearchPromptPosition=function(){throw Error.invalidOperation();};Sys.Extended.UI.ListSearchPromptPosition.prototype={Top:0,Bottom:1};Sys.Extended.UI.ListSearchPromptPosition.registerEnum("Sys.Extended.UI.ListSearchPromptPosition");Sys.Extended.UI.ListSearchQueryPattern=function(){throw Error.invalidOperation();};Sys.Extended.UI.ListSearchQueryPattern.prototype={StartsWith:0,Contains:1};Sys.Extended.UI.ListSearchQueryPattern.registerEnum("Sys.Extended.UI.ListSearchQueryPattern")}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedPopupBehavior"],a);else a()})(); Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.Underline=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.Underline.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.Underline.prototype={callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.Underline.callBaseMethod(this,"callMethod"))return false;this._designPanel._execCommand("underline",false,null)},checkState:function(){return!Sys.Extended.UI.HTMLEditor.ToolbarButton.Underline.callBaseMethod(this,"checkState")?false:this._designPanel._queryCommandState("underline")}};Sys.Extended.UI.HTMLEditor.ToolbarButton.Underline.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.Underline",Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton);2Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.SuperScript=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.SuperScript.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.SuperScript.prototype={callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.SuperScript.callBaseMethod(this,"callMethod"))return false;this._designPanel._execCommand("superScript",false,null)},checkState:function(){return!Sys.Extended.UI.HTMLEditor.ToolbarButton.SuperScript.callBaseMethod(this,"checkState")?false:this._designPanel._queryCommandState("superScript")}};Sys.Extended.UI.HTMLEditor.ToolbarButton.SuperScript.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.SuperScript",Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.SuperScript = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.SuperScript.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.SuperScript.prototype = {
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.SuperScript.callBaseMethod(this, "callMethod")) return false;
        this._designPanel._execCommand("superScript", false, null);
    },
    
    checkState : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.SuperScript.callBaseMethod(this, "checkState")) return false;
        return this._designPanel._queryCommandState("superScript");
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.SuperScript.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.SuperScript", Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton);

SType.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveLink = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveLink.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveLink.prototype = {
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveLink.callBaseMethod(this, "callMethod")) return false;
        var editor = this._designPanel;
        var sel   = editor._getSelection();
        var range = editor._createRange(sel);
        var parent= Sys.Extended.UI.HTMLEditor.getSelParent(editor);
        
        if (parent.nodeType == 3) {
            parent = parent.parentNode;
        }

        while(parent && Sys.Extended.UI.HTMLEditor.isStyleTag(parent.tagName) && parent.tagName.toUpperCase() != "A") {
            parent = parent.parentNode;
        }
        
        if(parent && parent.tagName.toUpperCase() == "A") {
            editor._saveContent();
            var el = parent.firstChild;

            while(parent.firstChild) parent.parentNode.insertBefore(parent.firstChild,parent);

            parent.parentNode.removeChild(parent);
            if(el) Sys.Extended.UI.HTMLEditor._setCursor(el,editor);
            setTimeout(function() {editor._editPanel.updateToolbar();}, 0);
            editor.onContentChanged();
        }
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveLink.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveLink", Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);
�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.InsertHR=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.InsertHR.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.InsertHR.prototype={callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.InsertHR.callBaseMethod(this,"callMethod"))return false;var a=this._designPanel;try{a._saveContent();var e=a._doc.createElement("div");e.innerHTML="<hr>";var b=e.firstChild,c=a._getSafePlace();if(!c)return;var d=c.parentNode;d.insertBefore(b,c);d.removeChild(c);b=b.nextSibling?b.nextSibling:b;Sys.Extended.UI.HTMLEditor._setCursor(b,a);setTimeout(function(){a.onContentChanged();a._editPanel.updateToolbar()},0);a.focusEditor();return true}catch(f){}}};Sys.Extended.UI.HTMLEditor.ToolbarButton.InsertHR.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.InsertHR",Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);gType.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.InsertHR = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.InsertHR.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.InsertHR.prototype = {
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.InsertHR.callBaseMethod(this, "callMethod")) return false;
        var editor = this._designPanel;

        try {
            editor._saveContent();

            var _div = editor._doc.createElement("div");
            _div.innerHTML = "<hr>";

            var el = _div.firstChild;
            var place =editor._getSafePlace();
            if(!place) return;

            var parent=place.parentNode;

            parent.insertBefore(el,place);
            parent.removeChild (place);

            el = (el.nextSibling)?el.nextSibling:el;
            Sys.Extended.UI.HTMLEditor._setCursor(el,editor);
            setTimeout(function() {editor.onContentChanged();editor._editPanel.updateToolbar();}, 0);

            editor.focusEditor();
            return true;
        } catch(e){}
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.InsertHR.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.InsertHR", Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);
�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColorClear = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColorClear.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColorClear.prototype = {
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColorClear.callBaseMethod(this, "callMethod")) return false;
        this._designPanel._execCommand("forecolor", false, "");
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColorClear.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColorClear", Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);

�
Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.FontSize = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.FontSize.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.FontSize.prototype = {
    initialize : function() {
        Sys.Extended.UI.HTMLEditor.ToolbarButton.FontSize.callBaseMethod(this, "initialize");
    },
    
    callMethod : function(select,event) {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.FontSize.callBaseMethod(this, "callMethod")) return false;

        try {
            var editor = this._designPanel;
            editor._execCommand("FontSize",false,Sys.Extended.UI.HTMLEditor.fontSizeSeek(select.options.item(select.selectedIndex).value));
        } catch(e) {}
    },
    
    checkState : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.FontSize.callBaseMethod(this, "checkState")) return false;
    
        var editor = this._designPanel;

        var param =null;
        var _id = this._select.id;

        try{param =(Function.createDelegate(editor, Sys.Extended.UI.HTMLEditor._queryCommandValue))("fontsize",_id);} catch(e){}

        if(param) param = param.toString();

        if(!editor._FontNotSet)
        if(!param || param.length==0) {
            param = Sys.Extended.UI.HTMLEditor.getStyle(editor._doc.body,"font-size");
            param = Sys.Extended.UI.HTMLEditor._TryTransformFromPxToPt(param, this, _id);
        }

        try {
            var el = this._select;
            var i=0;
            if(param && param.length > 0) {
                var seek = param.toLowerCase().split(",")[0];
                for(i=0; i< el.options.length; i++) {
                    var cur = Sys.Extended.UI.HTMLEditor.fontSizeSeek(el.options.item(i).value.toLowerCase().split(",")[0]);

                    if(cur==seek) break;
                }
                if(i==el.options.length) {
                    try {
                        var newopt = document.createElement("OPTION");
                        newopt.value = param;
                        newopt.text  = param;
                        el.add(newopt,(Sys.Extended.UI.HTMLEditor.isIE)?i:null);
                        $addHandler(newopt, "click", this._onclick_option$delegate);
                    } catch (e) {
                        i = 0;
                    }
                }
            }
            el.selectedIndex = i;
        } catch(e) {}
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.FontSize.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.FontSize", Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeSelectButton);

�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeImageButton=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeImageButton.initializeBase(this,[a]);this._designPanel=null};Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeImageButton.prototype={_onmousedown:function(c){var a=false,b=this;if(b._designPanel==null)return a;if(b._designPanel.isPopup())return a;if(Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeImageButton.callBaseMethod(b,"_onmousedown",[c])===null)return a;b.callMethod();return a},onEditPanelActivity:function(){this._designPanel=this._editPanel.get_activePanel()},callMethod:function(){return this._designPanel==null?false:this._designPanel.isPopup()?false:true}};Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeImageButton.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeImageButton",Sys.Extended.UI.HTMLEditor.ToolbarButton.ImageButton);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignMode=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignMode.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignMode.prototype={};Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignMode.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignMode",Sys.Extended.UI.HTMLEditor.ToolbarButton.ModeButton);Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorSelector = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorSelector.initializeBase(this, [element]);
    
    this._fixedColorButton = null;
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorSelector.prototype = {

    get_fixedColorButton: function() {
        return this._fixedColorButton;
    },

    set_fixedColorButton: function(value) {
        this._fixedColorButton = value;
    },

    callMethod: function() {
        if (!Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorSelector.callBaseMethod(this, "callMethod")) return false;
        this.openPopup(Function.createDelegate(this, this._onopened));

        return true;
    },

    _onopened: function(contentWindow) {
        contentWindow.setColor = Function.createDelegate(this, this.setColor);
    },

    setColor: function(color) {
        this.closePopup();
        if (this._fixedColorButton != null) {
            this._fixedColorButton.set_defaultColor(color);
        }
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorSelector.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorSelector", Sys.Extended.UI.HTMLEditor.ToolbarButton.Selector);

�Type.registerNamespace("Sys.Extended.UI.HTMLEditor");Sys.Extended.UI.HTMLEditor.PreviewPanel=function(b){var a=this;Sys.Extended.UI.HTMLEditor.PreviewPanel.initializeBase(a,[b]);a._focus$delegate=Function.createDelegate(a,a._focus_event);a._blur$delegate=Function.createDelegate(a,a._blur_event);a._doc=null;a._content="";a._panel_timer=null};Sys.Extended.UI.HTMLEditor.PreviewPanel.prototype={_focus:function(){try{this.get_element().contentWindow.focus()}catch(a){}this._focused()},_focus_event:function(){var a=this;if(a._panel_timer==null){var c=a.get_element().contentWindow,b=a;a._really_focused();a._panel_timer=setTimeout(function(){c.focus();b._really_focused();b._panel_timer=null},0)}return true},_blur_event:function(){if(this._panel_timer!=null){clearTimeout(this._panel_timer);this._panel_timer=null}return true},_activate:function(b){var a=this;Sys.Extended.UI.HTMLEditor.PreviewPanel.callBaseMethod(a,"_activate");a._content=b;a._wasFocused=false;a._initIframe(b);Sys.Extended.UI.HTMLEditor._addEvents(a.get_element().contentWindow,["focus"],a._focus$delegate);Sys.Extended.UI.HTMLEditor._addEvents(a.get_element().contentWindow,["blur"],a._blur$delegate);a._activateFinished()},_deactivate:function(){var a=this;Sys.Extended.UI.HTMLEditor._removeEvents(a.get_element().contentWindow,["blur"],a._blur$delegate);Sys.Extended.UI.HTMLEditor._removeEvents(a.get_element().contentWindow,["focus"],a._focus$delegate);if(Sys.Extended.UI.HTMLEditor.isIE)try{a._doc.open();a._doc.write("");a._doc.close();a.get_element().src="javascript:false;"}catch(b){}a._doc=null;a._content="";Sys.Extended.UI.HTMLEditor.PreviewPanel.callBaseMethod(a,"_deactivate")},_initIframe:function(c){var a=this,b=Sys.Extended.UI.HTMLEditor.Trim(c);a._doc=a.get_element().contentWindow.document;if(Sys.Extended.UI.HTMLEditor.isIE)b=b.replace(/&amp;/ig,"&");a._doc.open();a._doc.write('<html><head><link rel="stylesheet" href="'+a._editPanel.get_documentCssPath()+'" media="all" /></head><body>'+b+"</body></html>");a._doc.close()},_getContent:function(){return this._content},_setContent:function(a){this._content=a;this._initIframe(a)}};Sys.Extended.UI.HTMLEditor.PreviewPanel.registerClass("Sys.Extended.UI.HTMLEditor.PreviewPanel",Sys.Extended.UI.HTMLEditor.ModePanel);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor");Sys.Extended.UI.HTMLEditor.HtmlPanel=function(b){var a=this;Sys.Extended.UI.HTMLEditor.HtmlPanel.initializeBase(a,[b]);a._onfocus$delegate=Function.createDelegate(a,a._onfocus);if(Sys.Extended.UI.HTMLEditor.isIE&&document.compatMode!="BackCompat")a._onresize$delegate=Function.createDelegate(a,a._onresize)};Sys.Extended.UI.HTMLEditor.HtmlPanel.prototype={_activate:function(c){var a=this;a._shouldResize=false;var b=a.get_element();if(Sys.Extended.UI.HTMLEditor.isIE&&Sys.Browser.version>6&&document.compatMode!="BackCompat"&&b.parentNode.clientHeight>0)a._shouldResize=true;Sys.Extended.UI.HTMLEditor.HtmlPanel.callBaseMethod(a,"_activate");if(Sys.Extended.UI.HTMLEditor.isIE){b.value="";var d=a;setTimeout(function(){b.value=c},0)}else b.value=c;$addHandlers(b,{focus:a._onfocus$delegate});a._shouldResize&&$addHandlers(b,{resize:a._onresize$delegate});a._activateFinished()},_deactivate:function(){var a=this,b=a.get_element();a._shouldResize&&$common.removeHandlers(b,{resize:a._onresize$delegate});a._shouldResize=false;$common.removeHandlers(b,{focus:a._onfocus$delegate});b.value="";Sys.Extended.UI.HTMLEditor.HtmlPanel.callBaseMethod(a,"_deactivate")},_getContent:function(){return this.get_element().value},_setContent:function(b){this.get_element().value=b;if(Sys.Extended.UI.HTMLEditor.isReallyVisible(this.get_element().parentNode))try{var a=this.get_element();a.focus();setTimeout(function(){try{Sys.Extended.UI.HTMLEditor.setSelectionRange(a,0,0)}catch(b){}},0)}catch(c){}},_focus:function(){if(Sys.Extended.UI.HTMLEditor.isReallyVisible(this.get_element().parentNode))try{var a=this.get_element();a.focus();setTimeout(function(){try{Sys.Extended.UI.HTMLEditor.setSelectionRange(a,0,0)}catch(b){}},0)}catch(c){}var b=this;setTimeout(function(){b._focused()},0)},_onfocus:function(){this._really_focused();var a=this.get_element();setTimeout(function(){a.focus()},0);return true},_onresize:function(){var b=this.get_element(),a=b.parentNode.clientHeight;if(a>0)b.style.height=a+"px"}};Sys.Extended.UI.HTMLEditor.HtmlPanel.registerClass("Sys.Extended.UI.HTMLEditor.HtmlPanel",Sys.Extended.UI.HTMLEditor.ModePanel);8// (c) 2010 CodePlex Foundation
(function() {

function execute() {
Type._registerScript("Date.UmAlQuraCalendar.js", ["MicrosoftAjaxGlobalization.js"]);
__cultureInfo.dateTimeFormat.Calendar.convert = {
    _yearInfo: [
        [746, -2198707200000],
        [1769, -2168121600000],
        [3794, -2137449600000],
        [3748, -2106777600000],
        [3402, -2076192000000],
        [2710, -2045606400000],
        [1334, -2015020800000],
        [2741, -1984435200000],
        [3498, -1953763200000],
        [2980, -1923091200000],
        [2889, -1892505600000],
        [2707, -1861920000000],
        [1323, -1831334400000],
        [2647, -1800748800000],
        [1206, -1770076800000],
        [2741, -1739491200000],
        [1450, -1708819200000],
        [3413, -1678233600000],
        [3370, -1647561600000],
        [2646, -1616976000000],
        [1198, -1586390400000],
        [2397, -1555804800000],
        [748, -1525132800000],
        [1749, -1494547200000],
        [1706, -1463875200000],
        [1365, -1433289600000],
        [1195, -1402704000000],
        [2395, -1372118400000],
        [698, -1341446400000],
        [1397, -1310860800000],
        [2994, -1280188800000],
        [1892, -1249516800000],
        [1865, -1218931200000],
        [1621, -1188345600000],
        [683, -1157760000000],
        [1371, -1127174400000],
        [2778, -1096502400000],
        [1748, -1065830400000],
        [3785, -1035244800000],
        [3474, -1004572800000],
        [3365, -973987200000],
        [2637, -943401600000],
        [685, -912816000000],
        [1389, -882230400000],
        [2922, -851558400000],
        [2898, -820886400000],
        [2725, -790300800000],
        [2635, -759715200000],
        [1175, -729129600000],
        [2359, -698544000000],
        [694, -667872000000],
        [1397, -637286400000],
        [3434, -606614400000],
        [3410, -575942400000],
        [2710, -545356800000],
        [2349, -514771200000],
        [605, -484185600000],
        [1245, -453600000000],
        [2778, -422928000000],
        [1492, -392256000000],
        [3497, -361670400000],
        [3410, -330998400000],
        [2730, -300412800000],
        [1238, -269827200000],
        [2486, -239241600000],
        [884, -208569600000],
        [1897, -177984000000],
        [1874, -147312000000],
        [1701, -116726400000],
        [1355, -86140800000],
        [2731, -55555200000],
        [1370, -24883200000],
        [2773, 5702400000],
        [3538, 36374400000],
        [3492, 67046400000],
        [3401, 97632000000],
        [2709, 128217600000],
        [1325, 158803200000],
        [2653, 189388800000],
        [1370, 220060800000],
        [2773, 250646400000],
        [1706, 281318400000],
        [1685, 311904000000],
        [1323, 342489600000],
        [2647, 373075200000],
        [1198, 403747200000],
        [2422, 434332800000],
        [1388, 465004800000],
        [2901, 495590400000],
        [2730, 526262400000],
        [2645, 556848000000],
        [1197, 587433600000],
        [2397, 618019200000],
        [730, 648691200000],
        [1497, 679276800000],
        [3506, 709948800000],
        [2980, 740620800000],
        [2890, 771206400000],
        [2645, 801792000000],
        [693, 832377600000],
        [1397, 862963200000],
        [2922, 893635200000],
        [3026, 924307200000],
        [3012, 954979200000],
        [2953, 985564800000],
        [2709, 1016150400000],
        [1325, 1046736000000],
        [1453, 1077321600000],
        [2922, 1107993600000],
        [1748, 1138665600000],
        [3529, 1169251200000],
        [3474, 1199923200000],
        [2726, 1230508800000],
        [2390, 1261094400000],
        [686, 1291680000000],
        [1389, 1322265600000],
        [874, 1352937600000],
        [2901, 1383523200000],
        [2730, 1414195200000],
        [2381, 1444780800000],
        [1181, 1475366400000],
        [2397, 1505952000000],
        [698, 1536624000000],
        [1461, 1567209600000],
        [1450, 1597881600000],
        [3413, 1628467200000],
        [2714, 1659139200000],
        [2350, 1689724800000],
        [622, 1720310400000],
        [1373, 1750896000000],
        [2778, 1781568000000],
        [1748, 1812240000000],
        [1701, 1842825600000],
        [0, 1873411200000]
    ],
    minDate: -2198707200000,
    maxDate: 1873411199999,
    toGregorian: function(hyear, hmonth, hday) {
        var days = hday - 1,
            gyear = hyear - 1318;
        if (gyear < 0 || gyear >= this._yearInfo.length) return null;
        var info = this._yearInfo[gyear],
            gdate = new Date(info[1]),
            monthLength = info[0];
        gdate.setMinutes(gdate.getMinutes() + gdate.getTimezoneOffset());
        for (var i = 0; i < hmonth; i++) {
            days += 29 + (monthLength & 1);
            monthLength = monthLength >> 1;
        }
        gdate.setDate(gdate.getDate() + days);
        return gdate;
    },
    fromGregorian: function(gdate) {
        var ticks = gdate - gdate.getTimezoneOffset() * 60000;
        if (ticks < this.minDate || ticks > this.maxDate) return null;
        var hyear = 0,
            hmonth = 1;
        while (ticks > this._yearInfo[++hyear][1]) { }
        if (ticks !== this._yearInfo[hyear][1]) {
            hyear--;
        }
        var info = this._yearInfo[hyear],
            days = Math.floor((ticks - info[1]) / 86400000),
            monthLength = info[0];
        hyear += 1318; // the Nth array entry corresponds to hijri year 1318+N
        var daysInMonth = 29 + (monthLength & 1);
        while (days >= daysInMonth) {
            days -= daysInMonth;
            monthLength = monthLength >> 1;
            daysInMonth = 29 + (monthLength & 1);
            hmonth++;
        }
        return [hyear, hmonth - 1, days + 1];
    }
}
}

if (window.Sys && Sys.loader) {
	Sys.loader.registerScript("UmAlQuraCalendar", null, execute);
}
else {
	execute();
}

})();
�// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.js" />

(function() {
var scriptName = "ExtendedTimer";

function execute() {

var version = Sys.version;
if (!version && !Sys._versionChecked) {
    Sys._versionChecked = true;
    throw new Error("AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts. Ensure the correct version of the scripts are referenced. If you are using an ASP.NET ScriptManager, switch to the ToolkitScriptManager in AjaxControlToolkit.dll.");
}

///////////////////////////////////////////////////////////////////////////////

Sys.Timer = function() {
    Sys.Timer.initializeBase(this);
    
    this._interval = 1000;
    this._enabled = false;
    this._timer = null;
}

Sys.Timer.prototype = {
    get_interval: function() {
        
        return this._interval;
    },
    set_interval: function(value) {
        
        if (this._interval !== value) {
            this._interval = value;
            this.raisePropertyChanged('interval');
            
            if (!this.get_isUpdating() && (this._timer !== null)) {
                this._stopTimer();
                this._startTimer();
            }
        }
    },
    
    get_enabled: function() {
        
        return this._enabled;
    },
    set_enabled: function(value) {
        
        if (value !== this.get_enabled()) {
            this._enabled = value;
            this.raisePropertyChanged('enabled');
            if (!this.get_isUpdating()) {
                if (value) {
                    this._startTimer();
                }
                else {
                    this._stopTimer();
                }
            }
        }
    },

    
    add_tick: function(handler) {
        
        
        this.get_events().addHandler("tick", handler);
    },

    remove_tick: function(handler) {
        
        
        this.get_events().removeHandler("tick", handler);
    },

    dispose: function() {
        this.set_enabled(false);
        this._stopTimer();
        
        Sys.Timer.callBaseMethod(this, 'dispose');
    },
    
    updated: function() {
        Sys.Timer.callBaseMethod(this, 'updated');

        if (this._enabled) {
            this._stopTimer();
            this._startTimer();
        }
    },

    _timerCallback: function() {
        var handler = this.get_events().getHandler("tick");
        if (handler) {
            handler(this, Sys.EventArgs.Empty);
        }
    },

    _startTimer: function() {
        this._timer = window.setInterval(Function.createDelegate(this, this._timerCallback), this._interval);
    },

    _stopTimer: function() {
        window.clearInterval(this._timer);
        this._timer = null;
    }
}

Sys.Timer.descriptor = {
    properties: [   {name: 'interval', type: Number},
                    {name: 'enabled', type: Boolean} ],
    events: [ {name: 'tick'} ]
}

Sys.Timer.registerClass('Sys.Timer', Sys.Component);

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ComponentModel"], execute);
}
else {
    execute();
}

})();
mw// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedCalendar";function a(){var p="ajax__calendar_hover",e="ajax__calendar_invalid",g="ajax__calendar_active",f="ajax__calendar_other",j="y",l="M",y="tbody",o="td",n="tr",x="auto",w="table",v="ajax__calendar_today",d="div",m="years",i="months",u="dateSelectionChanged",t="hidden",s="hiding",r="shown",q="showing",k="days",b=false,a=null,c=true,h="d";Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.CalendarBehavior=function(e){var d=this;Sys.Extended.UI.CalendarBehavior.initializeBase(d,[e]);d._textbox=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(e);d._format=h;d._todaysDateFormat="MMMM d, yyyy";d._daysModeTitleFormat="MMMM, yyyy";d._cssClass="ajax__calendar";d._enabled=c;d._animated=c;d._buttonID=a;d._layoutRequested=0;d._layoutSuspended=b;d._button=a;d._popupMouseDown=b;d._selectedDate=a;d._startDate=a;d._endDate=a;d._visibleDate=a;d._todaysDate=a;d._firstDayOfWeek=Sys.Extended.UI.FirstDayOfWeek.Default;d._firstPopUp=c;d._container=a;d._popupDiv=a;d._header=a;d._prevArrow=a;d._nextArrow=a;d._title=a;d._body=a;d._today=a;d._days=a;d._daysTable=a;d._daysTableHeader=a;d._daysTableHeaderRow=a;d._daysBody=a;d._months=a;d._monthsTable=a;d._monthsBody=a;d._years=a;d._yearsTable=a;d._yearsBody=a;d._popupPosition=Sys.Extended.UI.CalendarPosition.BottomLeft;d._defaultView=Sys.Extended.UI.CalendarDefaultView.Days;d._popupBehavior=a;d._modeChangeAnimation=a;d._modeChangeMoveTopOrLeftAnimation=a;d._modeChangeMoveBottomOrRightAnimation=a;d._mode=k;d._selectedDateChanging=b;d._isOpen=b;d._isAnimating=b;d._clearTime=b;d._width=170;d._height=139;d._modes={days:a,months:a,years:a};d._modeOrder={days:0,months:1,years:2};d._blur=new Sys.Extended.UI.DeferredOperation(1,d,d.blur);d._button$delegates={click:Function.createDelegate(d,d._button_onclick),keypress:Function.createDelegate(d,d._button_onkeypress),blur:Function.createDelegate(d,d._button_onblur)};d._element$delegates={change:Function.createDelegate(d,d._element_onchange),keypress:Function.createDelegate(d,d._element_onkeypress),click:Function.createDelegate(d,d._element_onclick),focus:Function.createDelegate(d,d._element_onfocus),blur:Function.createDelegate(d,d._element_onblur)};d._popup$delegates={mousedown:Function.createDelegate(d,d._popup_onmousedown),mouseup:Function.createDelegate(d,d._popup_onmouseup),drag:Function.createDelegate(d,d._popup_onevent),dragstart:Function.createDelegate(d,d._popup_onevent)};d._cell$delegates={mouseover:Function.createDelegate(d,d._cell_onmouseover),mouseout:Function.createDelegate(d,d._cell_onmouseout),click:Function.createDelegate(d,d._cell_onclick)}};Sys.Extended.UI.CalendarBehavior.prototype={get_clearTime:function(){return this._clearTime},set_clearTime:function(a){if(this._clearTime!=a){this._clearTime=a;this.raisePropertyChanged("_clearTime")}},get_animated:function(){return this._animated},set_animated:function(a){if(this._animated!=a){this._animated=a;this.raisePropertyChanged("animated")}},get_enabled:function(){return this._enabled},set_enabled:function(a){if(this._enabled!=a){this._enabled=a;this.raisePropertyChanged("enabled")}},get_button:function(){return this._button},set_button:function(b){var a=this;if(a._button!=b){a._button&&a.get_isInitialized()&&$common.removeHandlers(a._button,a._button$delegates);a._button=b;a._button&&a.get_isInitialized()&&$addHandlers(a._button,a._button$delegates);a.raisePropertyChanged("button")}},get_popupPosition:function(){return this._popupPosition},set_popupPosition:function(a){if(this._popupPosition!=a){this._popupPosition=a;this.raisePropertyChanged("popupPosition")}},set_startDate:function(a){if(this._startDate!=a){this._startDate=new Date(a);this.raisePropertyChanged("startDate")}},get_startDate:function(){return this._startDate},set_endDate:function(a){if(this._endDate!=a){this._endDate=new Date(a);this.raisePropertyChanged("_endDate")}},get_endDate:function(){return this._endDate},get_format:function(){return this._format},set_format:function(a){if(this._format!=a){this._format=a;this.raisePropertyChanged("format")}},get_todaysDateFormat:function(){return this._todaysDateFormat},set_todaysDateFormat:function(a){if(this._todaysDateFormat!=a){this._todaysDateFormat=a;this.raisePropertyChanged("todaysDateFormat")}},get_daysModeTitleFormat:function(){return this._daysModeTitleFormat},set_daysModeTitleFormat:function(a){if(this._daysModeTitleFormat!=a){this._daysModeTitleFormat=a;this.raisePropertyChanged("daysModeTitleFormat")}},get_selectedDate:function(){var b=this;if(b._selectedDate==a){var c=b._textbox.get_Value();if(c){c=b._parseTextValue(c);if(c)b._selectedDate=c}}return b._selectedDate},set_selectedDate:function(d){var a=this;if(d&&String.isInstanceOfType(d)&&d.length!=0)d=new Date(d);if(a._selectedDate!=d){a._selectedDate=d;a._selectedDateChanging=c;var f="";if(d){f=a._convertToLocal(d).localeFormat(a._format);if(!a._clearTime){var e=a._textbox.get_Value();if(e)e=a._parseTextValue(e);if(e)if(d!=e.getDateOnly()){d.setUTCHours(e.getUTCHours());d.setUTCMinutes(e.getUTCMinutes());d.setUTCMilliseconds(e.getUTCMilliseconds());f=a._convertToLocal(d).localeFormat(a._format)}}}if(f!=a._textbox.get_Value()){a._textbox.set_Value(f);a._fireChanged()}a._selectedDateChanging=b;a.invalidate();a.raisePropertyChanged("selectedDate")}},get_defaultView:function(){return this._defaultView},set_defaultView:function(a){if(this._defaultView!=a){this._defaultView=a;this.raisePropertyChanged("defaultView")}},get_visibleDate:function(){return this._visibleDate},set_visibleDate:function(a){var b=this;if(a&&String.isInstanceOfType(a)&&a.length!=0)a=new Date(a);if(b._visibleDate!=a){b._switchMonth(a,!b._isOpen);b.raisePropertyChanged("visibleDate")}},get_isOpen:function(){return this._isOpen},get_todaysDate:function(){return this._todaysDate!=a?this._todaysDate:new Date},set_todaysDate:function(b){var a=this;if(a._todaysDate!=b){a._todaysDate=b;a.invalidate();a.raisePropertyChanged("todaysDate")}},get_firstDayOfWeek:function(){return this._firstDayOfWeek},set_firstDayOfWeek:function(b){var a=this;if(a._firstDayOfWeek!=b){a._firstDayOfWeek=b;a.invalidate();a.raisePropertyChanged("firstDayOfWeek")}},get_cssClass:function(){return this._cssClass},set_cssClass:function(b){var a=this;if(a._cssClass!=b){a._cssClass&&a.get_isInitialized()&&Sys.UI.DomElement.removeCssClass(a._container,a._cssClass);a._cssClass=b;a._cssClass&&a.get_isInitialized()&&Sys.UI.DomElement.addCssClass(a._container,a._cssClass);a.raisePropertyChanged("cssClass")}},get_todayButton:function(){return this._today},get_dayCell:function(c,b){return this._daysBody?this._daysBody.rows[c].cells[b].firstChild:a},add_showing:function(a){this.get_events().addHandler(q,a)},remove_showing:function(a){this.get_events().removeHandler(q,a)},raiseShowing:function(b){var a=this.get_events().getHandler(q);a&&a(this,b)},add_shown:function(a){this.get_events().addHandler(r,a)},remove_shown:function(a){this.get_events().removeHandler(r,a)},raiseShown:function(){var a=this.get_events().getHandler(r);a&&a(this,Sys.EventArgs.Empty)},add_hiding:function(a){this.get_events().addHandler(s,a)},remove_hiding:function(a){this.get_events().removeHandler(s,a)},raiseHiding:function(b){var a=this.get_events().getHandler(s);a&&a(this,b)},add_hidden:function(a){this.get_events().addHandler(t,a)},remove_hidden:function(a){this.get_events().removeHandler(t,a)},raiseHidden:function(){var a=this.get_events().getHandler(t);a&&a(this,Sys.EventArgs.Empty)},add_dateSelectionChanged:function(a){this.get_events().addHandler(u,a)},remove_dateSelectionChanged:function(a){this.get_events().removeHandler(u,a)},raiseDateSelectionChanged:function(){var a=this.get_events().getHandler(u);a&&a(this,Sys.EventArgs.Empty)},initialize:function(){var b=this;Sys.Extended.UI.CalendarBehavior.callBaseMethod(b,"initialize");var d=b.get_element();$addHandlers(d,b._element$delegates);b._button&&$addHandlers(b._button,b._button$delegates);b._modeChangeMoveTopOrLeftAnimation=new Sys.Extended.UI.Animation.LengthAnimation(a,a,a,"style",a,0,0,"px");b._modeChangeMoveBottomOrRightAnimation=new Sys.Extended.UI.Animation.LengthAnimation(a,a,a,"style",a,0,0,"px");b._modeChangeAnimation=new Sys.Extended.UI.Animation.ParallelAnimation(a,.25,a,[b._modeChangeMoveTopOrLeftAnimation,b._modeChangeMoveBottomOrRightAnimation]);var c=b.get_selectedDate();c&&b.set_selectedDate(c)},dispose:function(){var b=this;if(b._popupBehavior){b._popupBehavior.dispose();b._popupBehavior=a}b._modes=a;b._modeOrder=a;if(b._modeChangeMoveTopOrLeftAnimation){b._modeChangeMoveTopOrLeftAnimation.dispose();b._modeChangeMoveTopOrLeftAnimation=a}if(b._modeChangeMoveBottomOrRightAnimation){b._modeChangeMoveBottomOrRightAnimation.dispose();b._modeChangeMoveBottomOrRightAnimation=a}if(b._modeChangeAnimation){b._modeChangeAnimation.dispose();b._modeChangeAnimation=a}if(b._container){b._container.parentNode&&b._container.parentNode.removeChild(b._container);b._container=a}if(b._popupDiv){$common.removeHandlers(b._popupDiv,b._popup$delegates);b._popupDiv=a}if(b._prevArrow){$common.removeHandlers(b._prevArrow,b._cell$delegates);b._prevArrow=a}if(b._nextArrow){$common.removeHandlers(b._nextArrow,b._cell$delegates);b._nextArrow=a}if(b._title){$common.removeHandlers(b._title,b._cell$delegates);b._title=a}if(b._today){$common.removeHandlers(b._today,b._cell$delegates);b._today=a}if(b._button){$common.removeHandlers(b._button,b._button$delegates);b._button=a}if(b._daysBody){for(var c=0;c<b._daysBody.rows.length;c++)for(var e=b._daysBody.rows[c],d=0;d<e.cells.length;d++)$common.removeHandlers(e.cells[d].firstChild,b._cell$delegates);b._daysBody=a}if(b._monthsBody){for(var c=0;c<b._monthsBody.rows.length;c++)for(var e=b._monthsBody.rows[c],d=0;d<e.cells.length;d++)$common.removeHandlers(e.cells[d].firstChild,b._cell$delegates);b._monthsBody=a}if(b._yearsBody){for(var c=0;c<b._yearsBody.rows.length;c++)for(var e=b._yearsBody.rows[c],d=0;d<e.cells.length;d++)$common.removeHandlers(e.cells[d].firstChild,b._cell$delegates);b._yearsBody=a}var f=b.get_element();$common.removeHandlers(f,b._element$delegates);Sys.Extended.UI.CalendarBehavior.callBaseMethod(b,"dispose")},show:function(){var d=this;d._ensureCalendar();if(!d._isOpen){var e=new Sys.CancelEventArgs;d.raiseShowing(e);if(e.get_cancel())return;d._isOpen=c;d._popupBehavior.show();if(d._firstPopUp){d._switchMonth(a,c);switch(d._defaultView){case Sys.Extended.UI.CalendarDefaultView.Months:d._switchMode(i,c);break;case Sys.Extended.UI.CalendarDefaultView.Years:d._switchMode(m,c)}d._firstPopUp=b}d.raiseShown()}},hide:function(){var a=this;if(a._isOpen){var c=new Sys.CancelEventArgs;a.raiseHiding(c);if(c.get_cancel())return;a._container&&a._popupBehavior.hide();a._isOpen=b;a.raiseHidden();a._popupMouseDown=b}},focus:function(){if(this._button)this._button.focus();else this.get_element().focus()},blur:function(d){var a=this;if(!d&&Sys.Browser.agent===Sys.Browser.Opera)a._blur.post(c);else{!a._popupMouseDown&&a.hide();a._popupMouseDown=b}},suspendLayout:function(){this._layoutSuspended++},resumeLayout:function(){var a=this;a._layoutSuspended--;if(a._layoutSuspended<=0){a._layoutSuspended=0;a._layoutRequested&&a._performLayout()}},invalidate:function(){if(this._layoutSuspended>0)this._layoutRequested=c;else this._performLayout()},_buildCalendar:function(){var a=this,e=a.get_element(),c=a.get_id();a._container=$common.createElementFromTemplate({nodeName:d,properties:{id:c+"_container"},cssClasses:[a._cssClass],visible:b},e.parentNode);a._popupDiv=$common.createElementFromTemplate({nodeName:d,events:a._popup$delegates,properties:{id:c+"_popupDiv"},cssClasses:["ajax__calendar_container"]},a._container)},_buildHeader:function(){var a=this,b=a.get_id();a._header=$common.createElementFromTemplate({nodeName:d,properties:{id:b+"_header"},cssClasses:["ajax__calendar_header"]},a._popupDiv);var e=$common.createElementFromTemplate({nodeName:d},a._header);a._prevArrow=$common.createElementFromTemplate({nodeName:d,properties:{id:b+"_prevArrow",mode:"prev"},events:a._cell$delegates,cssClasses:["ajax__calendar_prev"]},e);var c=$common.createElementFromTemplate({nodeName:d},a._header);a._nextArrow=$common.createElementFromTemplate({nodeName:d,properties:{id:b+"_nextArrow",mode:"next"},events:a._cell$delegates,cssClasses:["ajax__calendar_next"]},c);var f=$common.createElementFromTemplate({nodeName:d},a._header);a._title=$common.createElementFromTemplate({nodeName:d,properties:{id:b+"_title",mode:"title"},events:a._cell$delegates,cssClasses:["ajax__calendar_title"]},f)},_buildBody:function(){var a=this;a._body=$common.createElementFromTemplate({nodeName:d,properties:{id:a.get_id()+"_body"},cssClasses:["ajax__calendar_body"]},a._popupDiv);a._buildDays();a._buildMonths();a._buildYears()},_buildFooter:function(){var a=this,b=$common.createElementFromTemplate({nodeName:d},a._popupDiv);a._today=$common.createElementFromTemplate({nodeName:d,properties:{id:a.get_id()+"_today",mode:"today"},events:a._cell$delegates,cssClasses:["ajax__calendar_footer",v]},b)},_buildDays:function(){var a=this,i=Sys.CultureInfo.CurrentCulture.dateTimeFormat,b=a.get_id();a._days=$common.createElementFromTemplate({nodeName:d,properties:{id:b+"_days"},cssClasses:["ajax__calendar_days"]},a._body);a._modes.days=a._days;a._daysTable=$common.createElementFromTemplate({nodeName:w,properties:{id:b+"_daysTable",cellPadding:0,cellSpacing:0,border:0,style:{margin:x}}},a._days);a._daysTableHeader=$common.createElementFromTemplate({nodeName:"thead",properties:{id:b+"_daysTableHeader"}},a._daysTable);a._daysTableHeaderRow=$common.createElementFromTemplate({nodeName:n,properties:{id:b+"_daysTableHeaderRow"}},a._daysTableHeader);for(var c=0;c<7;c++)var f=$common.createElementFromTemplate({nodeName:o},a._daysTableHeaderRow),h=$common.createElementFromTemplate({nodeName:d,cssClasses:["ajax__calendar_dayname"]},f);a._daysBody=$common.createElementFromTemplate({nodeName:y,properties:{id:b+"_daysBody"}},a._daysTable);for(var c=0;c<6;c++)for(var g=$common.createElementFromTemplate({nodeName:n},a._daysBody),e=0;e<7;e++)var f=$common.createElementFromTemplate({nodeName:o},g),h=$common.createElementFromTemplate({nodeName:d,properties:{mode:"day",id:b+"_day_"+c+"_"+e,innerHTML:"&nbsp;"},events:a._cell$delegates,cssClasses:["ajax__calendar_day"]},f)},_buildMonths:function(){var a=this,i=Sys.CultureInfo.CurrentCulture.dateTimeFormat,f=a.get_id();a._months=$common.createElementFromTemplate({nodeName:d,properties:{id:f+"_months"},cssClasses:["ajax__calendar_months"],visible:b},a._body);a._modes.months=a._months;a._monthsTable=$common.createElementFromTemplate({nodeName:w,properties:{id:f+"_monthsTable",cellPadding:0,cellSpacing:0,border:0,style:{margin:x}}},a._months);a._monthsBody=$common.createElementFromTemplate({nodeName:y,properties:{id:f+"_monthsBody"}},a._monthsTable);for(var c=0;c<3;c++)for(var h=$common.createElementFromTemplate({nodeName:n},a._monthsBody),e=0;e<4;e++)var g=$common.createElementFromTemplate({nodeName:o},h),j=$common.createElementFromTemplate({nodeName:d,properties:{id:f+"_month_"+c+"_"+e,mode:"month",month:c*4+e,innerHTML:"<br />"+i.AbbreviatedMonthNames[c*4+e]},events:a._cell$delegates,cssClasses:["ajax__calendar_month"]},g)},_buildYears:function(){var a=this,c=a.get_id();a._years=$common.createElementFromTemplate({nodeName:d,properties:{id:c+"_years"},cssClasses:["ajax__calendar_years"],visible:b},a._body);a._modes.years=a._years;a._yearsTable=$common.createElementFromTemplate({nodeName:w,properties:{id:c+"_yearsTable",cellPadding:0,cellSpacing:0,border:0,style:{margin:x}}},a._years);a._yearsBody=$common.createElementFromTemplate({nodeName:y,properties:{id:c+"_yearsBody"}},a._yearsTable);for(var e=0;e<3;e++)for(var h=$common.createElementFromTemplate({nodeName:n},a._yearsBody),f=0;f<4;f++)var g=$common.createElementFromTemplate({nodeName:o},h),i=$common.createElementFromTemplate({nodeName:d,properties:{id:c+"_year_"+e+"_"+f,mode:"year",year:e*4+f-1},events:a._cell$delegates,cssClasses:["ajax__calendar_year"]},g)},_isInDateRange:function(d,e){var a=this;switch(e){case h:if(a._startDate&&a._getDateOnly(d)<a._getDateOnly(a._startDate))return b;if(a._endDate&&a._getDateOnly(d)>a._getDateOnly(a._endDate))return b;break;case l:if(a._startDate&&a._getMonthOnly(d)<a._getMonthOnly(a._startDate))return b;if(a._endDate&&a._getMonthOnly(d)>a._getMonthOnly(a._endDate))return b;break;case j:if(a._startDate&&d.getUTCFullYear()<a._startDate.getUTCFullYear())return b;if(a._endDate&&d.getUTCFullYear()>a._endDate.getUTCFullYear())return b}return c},_getDateOnly:function(a){return new Date(Date.UTC(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate()))},_getMonthOnly:function(a){return new Date(Date.UTC(a.getUTCFullYear(),a.getUTCMonth(),1))},_convertToUTC:function(a){if(a)a=new Date(Date.UTC(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours(),a.getMinutes(),a.getSeconds(),a.getMilliseconds()));return a},_convertToLocal:function(a){var b=new Date(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate(),a.getUTCHours(),a.getUTCMinutes(),a.getUTCSeconds(),a.getUTCMilliseconds());if(b.getDate()!=a.getUTCDate())b=new Date(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate(),a.getUTCHours()+1,a.getUTCMinutes(),a.getUTCSeconds(),a.getUTCMilliseconds());return b},_performLayout:function(){var a=this,B=a.get_element();if(!B)return;if(!a.get_isInitialized())return;if(!a._isOpen)return;var A=Sys.CultureInfo.CurrentCulture.dateTimeFormat,C=a.get_selectedDate(),d=a._getEffectiveVisibleDate(),t=a.get_todaysDate();switch(a._mode){case k:var y=a._getFirstDayOfWeek(),s=d.getUTCDay()-y;if(s<=0)s+=7;var w=new Date(d);w.setUTCDate(w.getUTCDate()-s);for(var o=new Date(w),n=0;n<7;n++){var c=a._daysTableHeaderRow.cells[n].firstChild;c.firstChild&&c.removeChild(c.firstChild);c.appendChild(document.createTextNode(A.ShortestDayNames[(n+y)%7]))}for(var x=0;x<6;x++)for(var z=a._daysBody.rows[x],u=0;u<7;u++){var c=z.cells[u].firstChild;c.firstChild&&c.removeChild(c.firstChild);c.appendChild(document.createTextNode(o.getUTCDate()));c.title=a._convertToLocal(o).localeFormat("D");c.date=o;$common.removeCssClasses(c.parentNode,[f,g,v]);if(!a._isInDateRange(o,h)){$common.removeCssClasses(c.parentNode,[f,g]);Sys.UI.DomElement.addCssClass(c.parentNode,e)}else{$common.removeCssClasses(c.parentNode,[e,f,g,""]);Sys.UI.DomElement.addCssClass(c.parentNode,a._getCssClass(c.date,h))}o=new Date(o);o.setUTCDate(o.getUTCDate()+1)}a._prevArrow.date=new Date(Date.UTC(d.getUTCFullYear(),d.getUTCMonth()-1,1));a._nextArrow.date=new Date(Date.UTC(d.getUTCFullYear(),d.getUTCMonth()+1,1));a._title.firstChild&&a._title.removeChild(a._title.firstChild);a._title.appendChild(document.createTextNode(a._convertToLocal(d).localeFormat(a.get_daysModeTitleFormat())));a._title.date=d;break;case i:for(var n=0;n<a._monthsBody.rows.length;n++)for(var r=a._monthsBody.rows[n],q=0;q<r.cells.length;q++){var b=r.cells[q].firstChild;b.date=new Date(Date.UTC(d.getUTCFullYear(),b.month,1));b.title=a._convertToLocal(b.date).localeFormat("Y");if(!a._isInDateRange(b.date,l)){$common.removeCssClasses(b.parentNode,[f,g]);Sys.UI.DomElement.addCssClass(b.parentNode,e)}else{$common.removeCssClasses(b.parentNode,[e,f,g]);Sys.UI.DomElement.addCssClass(b.parentNode,a._getCssClass(b.date,l))}}a._title.firstChild&&a._title.removeChild(a._title.firstChild);a._title.appendChild(document.createTextNode(a._convertToLocal(d).localeFormat("yyyy")));a._title.date=d;a._prevArrow.date=new Date(Date.UTC(d.getUTCFullYear()-1,0,1));a._nextArrow.date=new Date(Date.UTC(d.getUTCFullYear()+1,0,1));break;case m:for(var p=Math.floor(d.getUTCFullYear()/10)*10,n=0;n<a._yearsBody.rows.length;n++)for(var r=a._yearsBody.rows[n],q=0;q<r.cells.length;q++){var b=r.cells[q].firstChild;b.date=new Date(Date.UTC(p+b.year,0,1));if(b.firstChild)b.removeChild(b.lastChild);else b.appendChild(document.createElement("br"));b.appendChild(document.createTextNode(p+b.year));if(!a._isInDateRange(b.date,j)){$common.removeCssClasses(b.parentNode,[f,g]);Sys.UI.DomElement.addCssClass(b.parentNode,e)}else{$common.removeCssClasses(b.parentNode,[e,f,g]);Sys.UI.DomElement.addCssClass(b.parentNode,a._getCssClass(b.date,j))}}a._title.firstChild&&a._title.removeChild(a._title.firstChild);a._title.appendChild(document.createTextNode(p.toString()+"-"+(p+9).toString()));a._title.date=d;a._prevArrow.date=new Date(Date.UTC(p-10,0,1));a._nextArrow.date=new Date(Date.UTC(p+10,0,1))}a._today.firstChild&&a._today.removeChild(a._today.firstChild);$common.removeCssClasses(a._today.parentNode,[e]);a._today.appendChild(document.createTextNode(String.format(Sys.Extended.UI.Resources.Calendar_Today,t.localeFormat(a.get_todaysDateFormat()))));!a._isInDateRange(t,h)&&Sys.UI.DomElement.addCssClass(a._today.parentNode,e);a._today.date=a._convertToUTC(t)},_ensureCalendar:function(){var a=this;if(!a._container){var b=a.get_element();a._buildCalendar();a._buildHeader();a._buildBody();a._buildFooter();a._popupBehavior=new $create(Sys.Extended.UI.PopupBehavior,{parentElement:b},{},{},a._container);if(a._popupPosition==Sys.Extended.UI.CalendarPosition.TopLeft)a._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.TopLeft);else if(a._popupPosition==Sys.Extended.UI.CalendarPosition.TopRight)a._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.TopRight);else if(a._popupPosition==Sys.Extended.UI.CalendarPosition.BottomRight)a._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.BottomRight);else if(a._popupPosition==Sys.Extended.UI.CalendarPosition.Right)a._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.Right);else if(a._popupPosition==Sys.Extended.UI.CalendarPosition.Left)a._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.Left);else a._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.BottomLeft)}},_fireChanged:function(){var a=this.get_element();if(document.createEventObject)a.fireEvent("onchange");else if(document.createEvent){var b=document.createEvent("HTMLEvents");b.initEvent("change",c,c);a.dispatchEvent(b)}},_switchMonth:function(g,j){var e="left",d=this;if(d._isAnimating)return;if(g&&!d._canSwitchMonth(g))return;var i=d._getEffectiveVisibleDate();if(g&&g.getFullYear()==i.getFullYear()&&g.getMonth()==i.getMonth())j=c;if(d._animated&&!j){d._isAnimating=c;var h=d._modes[d._mode],f=h.cloneNode(c);d._body.appendChild(f);if(i>g){$common.setLocation(h,{x:-162,y:0});$common.setVisible(h,c);d._modeChangeMoveTopOrLeftAnimation.set_propertyKey(e);d._modeChangeMoveTopOrLeftAnimation.set_target(h);d._modeChangeMoveTopOrLeftAnimation.set_startValue(-d._width);d._modeChangeMoveTopOrLeftAnimation.set_endValue(0);$common.setLocation(f,{x:0,y:0});$common.setVisible(f,c);d._modeChangeMoveBottomOrRightAnimation.set_propertyKey(e);d._modeChangeMoveBottomOrRightAnimation.set_target(f);d._modeChangeMoveBottomOrRightAnimation.set_startValue(0);d._modeChangeMoveBottomOrRightAnimation.set_endValue(d._width)}else{$common.setLocation(f,{x:0,y:0});$common.setVisible(f,c);d._modeChangeMoveTopOrLeftAnimation.set_propertyKey(e);d._modeChangeMoveTopOrLeftAnimation.set_target(f);d._modeChangeMoveTopOrLeftAnimation.set_endValue(-d._width);d._modeChangeMoveTopOrLeftAnimation.set_startValue(0);$common.setLocation(h,{x:162,y:0});$common.setVisible(h,c);d._modeChangeMoveBottomOrRightAnimation.set_propertyKey(e);d._modeChangeMoveBottomOrRightAnimation.set_target(h);d._modeChangeMoveBottomOrRightAnimation.set_endValue(0);d._modeChangeMoveBottomOrRightAnimation.set_startValue(d._width)}d._visibleDate=g;d.invalidate();var k=Function.createDelegate(d,function(){this._body.removeChild(f);f=a;this._isAnimating=b;this._modeChangeAnimation.remove_ended(k)});d._modeChangeAnimation.add_ended(k);d._modeChangeAnimation.play()}else{d._visibleDate=g;d.invalidate()}},_canSwitchMonth:function(d){var a=this;switch(a._mode){case k:if(!a._isInDateRange(d,l))return b;break;case i:if(!a._isInDateRange(d,j))return b;break;case m:if(!a._isInDateRange(d,j))return b}return c},_switchMode:function(g,i){var d="top",a=this;if(a._isAnimating||a._mode==g)return;var j=a._modeOrder[a._mode]<a._modeOrder[g],f=a._modes[a._mode],e=a._modes[g];a._mode=g;if(a._animated&&!i){a._isAnimating=c;a.invalidate();if(j){$common.setLocation(e,{x:0,y:-a._height});$common.setVisible(e,c);a._modeChangeMoveTopOrLeftAnimation.set_propertyKey(d);a._modeChangeMoveTopOrLeftAnimation.set_target(e);a._modeChangeMoveTopOrLeftAnimation.set_startValue(-a._height);a._modeChangeMoveTopOrLeftAnimation.set_endValue(0);$common.setLocation(f,{x:0,y:0});$common.setVisible(f,c);a._modeChangeMoveBottomOrRightAnimation.set_propertyKey(d);a._modeChangeMoveBottomOrRightAnimation.set_target(f);a._modeChangeMoveBottomOrRightAnimation.set_startValue(0);a._modeChangeMoveBottomOrRightAnimation.set_endValue(a._height)}else{$common.setLocation(f,{x:0,y:0});$common.setVisible(f,c);a._modeChangeMoveTopOrLeftAnimation.set_propertyKey(d);a._modeChangeMoveTopOrLeftAnimation.set_target(f);a._modeChangeMoveTopOrLeftAnimation.set_endValue(-a._height);a._modeChangeMoveTopOrLeftAnimation.set_startValue(0);$common.setLocation(e,{x:0,y:139});$common.setVisible(e,c);a._modeChangeMoveBottomOrRightAnimation.set_propertyKey(d);a._modeChangeMoveBottomOrRightAnimation.set_target(e);a._modeChangeMoveBottomOrRightAnimation.set_endValue(0);a._modeChangeMoveBottomOrRightAnimation.set_startValue(a._height)}var h=Function.createDelegate(a,function(){this._isAnimating=b;this._modeChangeAnimation.remove_ended(h)});a._modeChangeAnimation.add_ended(h);a._modeChangeAnimation.play()}else{a._mode=g;$common.setVisible(f,b);a.invalidate();$common.setVisible(e,c);$common.setLocation(e,{x:0,y:0})}},_isSelected:function(d,e){var a=this.get_selectedDate();if(!a)return b;switch(e){case h:if(d.getUTCDate()!=a.getUTCDate())return b;case l:if(d.getUTCMonth()!=a.getUTCMonth())return b;case j:if(d.getUTCFullYear()!=a.getUTCFullYear())return b}return c},_isOther:function(a,e){var c=this._getEffectiveVisibleDate();switch(e){case h:return a.getUTCFullYear()!=c.getUTCFullYear()||a.getUTCMonth()!=c.getUTCMonth();case l:return b;case j:var d=Math.floor(c.getUTCFullYear()/10)*10;return a.getUTCFullYear()<d||d+10<=a.getUTCFullYear()}return b},_isTodaysDate:function(b){var a=this;return a._getDateOnly(a._convertToUTC(a.get_todaysDate())).valueOf()===a._getDateOnly(b).valueOf()},_getCssClass:function(a,b){return this._isSelected(a,b)?g:this._isOther(a,b)?f:this._isTodaysDate(a)?v:""},_getEffectiveVisibleDate:function(){var c=this,b=c.get_visibleDate();if(b==a)b=c.get_selectedDate();if(b==a)b=c.get_todaysDate();b=new Date(b);b.setUTCDate(1);return c._getDateOnly(b)},_getFirstDayOfWeek:function(){return this.get_firstDayOfWeek()!=Sys.Extended.UI.FirstDayOfWeek.Default?this.get_firstDayOfWeek():Sys.CultureInfo.CurrentCulture.dateTimeFormat.FirstDayOfWeek},_parseTextValue:function(c){var b=a;if(c)b=this._convertToUTC(Date.parseLocale(c,this.get_format()));if(isNaN(b))b=a;return b},_element_onfocus:function(){var a=this;if(!a._enabled)return;if(!a._button){a.show();a._popupMouseDown=b}},_element_onblur:function(){if(!this._enabled)return;!this._button&&this.blur()},_element_onchange:function(){var b=this;if(!b._selectedDateChanging){var c=b._parseTextValue(b._textbox.get_Value());b._selectedDate=c;b._isOpen&&b._switchMonth(b._selectedDate,b._selectedDate==a)}},_element_onkeypress:function(a){if(!this._enabled)return;if(!this._button&&a.charCode==Sys.UI.Key.esc){a.stopPropagation();a.preventDefault();this.hide()}},_element_onclick:function(){var a=this;if(!a._enabled)return;if(!a._button){a.show();a._popupMouseDown=b}},_popup_onevent:function(a){a.stopPropagation();a.preventDefault()},_popup_onmousedown:function(){this._popupMouseDown=c},_popup_onmouseup:function(){var a=this;Sys.Browser.agent===Sys.Browser.Opera&&a._blur.get_isPending()&&a._blur.cancel();a._popupMouseDown=b;a.focus()},_cell_onmouseover:function(d){d.stopPropagation();if(Sys.Browser.agent===Sys.Browser.Safari)for(var a=0;a<this._daysBody.rows.length;a++)for(var c=this._daysBody.rows[a],b=0;b<c.cells.length;b++)Sys.UI.DomElement.removeCssClass(c.cells[b].firstChild.parentNode,p);var e=d.target;Sys.UI.DomElement.addCssClass(e.parentNode,p)},_cell_onmouseout:function(a){a.stopPropagation();var b=a.target;Sys.UI.DomElement.removeCssClass(b.parentNode,p)},_cell_onclick:function(d){var a=this;d.stopPropagation();d.preventDefault();if(!a._enabled)return;var b=d.target;if(b.parentNode.className.indexOf(e)!=-1)return;var f=a._getEffectiveVisibleDate();Sys.UI.DomElement.removeCssClass(b.parentNode,p);switch(b.mode){case"prev":case"next":a._switchMonth(b.date);break;case"title":switch(a._mode){case k:a._switchMode(i);break;case i:a._switchMode(m)}break;case"month":if(b.month==f.getMonth())a._switchMode(k);else{a._visibleDate=b.date;a._switchMode(k)}break;case"year":if(b.date.getFullYear()==f.getFullYear())a._switchMode(i);else{a._visibleDate=b.date;a._switchMode(i)}break;case"day":a.set_selectedDate(b.date);a._switchMonth(b.date);a._blur.post(c);a.raiseDateSelectionChanged();break;case"today":a.set_selectedDate(b.date);a._switchMonth(b.date);a._blur.post(c);a.raiseDateSelectionChanged()}},_button_onclick:function(c){var a=this;c.preventDefault();c.stopPropagation();if(!a._enabled)return;if(c.clientX==0)return;if(!a._isOpen)a.show();else a.hide();a.focus();a._popupMouseDown=b;if(a._visibleDate!=a._selectedDate){a._visibleDate=a._selectedDate;a.invalidate()}},_button_onblur:function(){var a=this;if(!a._enabled)return;!a._popupMouseDown&&a.hide();a._popupMouseDown=b},_button_onkeypress:function(a){if(!this._enabled)return;if(a.charCode==Sys.UI.Key.esc){a.stopPropagation();a.preventDefault();this.hide()}this._popupMouseDown=b}};Sys.Extended.UI.CalendarBehavior.registerClass("Sys.Extended.UI.CalendarBehavior",Sys.Extended.UI.BehaviorBase);Sys.registerComponent(Sys.Extended.UI.CalendarBehavior,{name:"calendar"});Sys.Extended.UI.CalendarPosition=function(){throw Error.invalidOperation();};Sys.Extended.UI.CalendarPosition.prototype={BottomLeft:0,BottomRight:1,TopLeft:2,TopRight:3,Right:4,Left:5};Sys.Extended.UI.CalendarPosition.registerEnum("Sys.Extended.UI.CalendarPosition");Sys.Extended.UI.CalendarDefaultView=function(){throw Error.invalidOperation();};Sys.Extended.UI.CalendarDefaultView.prototype={Days:0,Months:1,Years:2};Sys.Extended.UI.CalendarDefaultView.registerEnum("Sys.Extended.UI.CalendarDefaultView")}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["Globalization","ExtendedBase","ExtendedDateTime","ExtendedThreading","ExtendedAnimationBehavior","ExtendedPopup"],a);else a()})();�y// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedAnimations";function a(){var k="unit",x="endValue",w="startValue",h="style",y="property",v="forceLayoutInIE",u="maximumOpacity",t="minimumOpacity",j="px",q="height",p="width",g="onEnd",d="onStart",i="animations",o="step",n="ended",m="started",s="percentComplete",r="isActive",f="isPlaying",e=100,b=false,c=true,l="dispose",a=null;Type.registerNamespace("Sys.Extended.UI.Animation");$AA=Sys.Extended.UI.Animation;$AA.registerAnimation=function(c,b){if(b&&(b===$AA.Animation||b.inheritsFrom&&b.inheritsFrom($AA.Animation))){if(!$AA.__animations)$AA.__animations={};$AA.__animations[c.toLowerCase()]=b;b.play=function(){var c=new b;b.apply(c,arguments);c.initialize();var d=Function.createDelegate(c,function(){c.remove_ended(d);d=a;c.dispose()});c.add_ended(d);c.play()}}else throw Error.argumentType("type",b,$AA.Animation,Sys.Extended.UI.Resources.Animation_InvalidBaseType);};$AA.buildAnimation=function(b,d){if(!b||b==="")return a;var c;b="("+b+")";if(!Sys.Debug.isDebug)try{c=Sys.Serialization.JavaScriptSerializer.deserialize(b)}catch(e){}else c=Sys.Serialization.JavaScriptSerializer.deserialize(b);return $AA.createAnimation(c,d)};$AA.createAnimation=function(d,l){var a="obj";if(!d||!d.AnimationName)throw Error.argument(a,Sys.Extended.UI.Resources.Animation_MissingAnimationName);var c=$AA.__animations[d.AnimationName.toLowerCase()];if(!c)throw Error.argument("type",String.format(Sys.Extended.UI.Resources.Animation_UknownAnimationName,d.AnimationName));var e=new c;l&&e.set_target(l);if(d.AnimationChildren&&d.AnimationChildren.length)if($AA.ParentAnimation.isInstanceOfType(e))for(var k=0;k<d.AnimationChildren.length;k++){var m=$AA.createAnimation(d.AnimationChildren[k]);m&&e.add(m)}else throw Error.argument(a,String.format(Sys.Extended.UI.Resources.Animation_ChildrenNotAllowed,c.getName()));var h=c.__animationProperties;if(!h){c.__animationProperties={};c.resolveInheritance();for(var j in c.prototype)if(j.startsWith("set_"))c.__animationProperties[j.substr(4).toLowerCase()]=j;delete c.__animationProperties.id;h=c.__animationProperties}for(var f in d){var g=f.toLowerCase();if(g=="animationname"||g=="animationchildren")continue;var i=d[f],b=h[g];if(b&&String.isInstanceOfType(b)&&e[b])if(!Sys.Debug.isDebug)try{e[b](i)}catch(n){}else e[b](i);else if(g.endsWith("script")){b=h[g.substr(0,f.length-6)];if(b&&String.isInstanceOfType(b)&&e[b])e.DynamicProperties[b]=i;else if(Sys.Debug.isDebug)throw Error.argument(a,String.format(Sys.Extended.UI.Resources.Animation_NoDynamicPropertyFound,f,f.substr(0,f.length-5)));}else if(Sys.Debug.isDebug)throw Error.argument(a,String.format(Sys.Extended.UI.Resources.Animation_NoPropertyFound,f));}return e};$AA.Animation=function(d,c,e){var b=this;$AA.Animation.initializeBase(b);b._duration=1;b._fps=25;b._target=a;b._tickHandler=a;b._timer=a;b._percentComplete=0;b._percentDelta=a;b._owner=a;b._parentAnimation=a;b.DynamicProperties={};d&&b.set_target(d);c&&b.set_duration(c);e&&b.set_fps(e)};$AA.Animation.prototype={dispose:function(){var b=this;if(b._timer){b._timer.dispose();b._timer=a}b._tickHandler=a;b._target=a;$AA.Animation.callBaseMethod(b,l)},play:function(){var a=this;if(!a._owner){var d=c;if(!a._timer){d=b;if(!a._tickHandler)a._tickHandler=Function.createDelegate(a,a._onTimerTick);a._timer=new Sys.Timer;a._timer.add_tick(a._tickHandler);a.onStart();a._timer.set_interval(1e3/a._fps);a._percentDelta=e/(a._duration*a._fps);a._updatePercentComplete(0,c)}a._timer.set_enabled(c);a.raisePropertyChanged(f);!d&&a.raisePropertyChanged(r)}},pause:function(){var a=this;if(!a._owner)if(a._timer){a._timer.set_enabled(b);a.raisePropertyChanged(f)}},stop:function(c){var b=this;if(!b._owner){var d=b._timer;b._timer=a;if(d){d.dispose();if(b._percentComplete!==e){b._percentComplete=e;b.raisePropertyChanged(s);if(c||c===undefined)b.onStep(e)}b.onEnd();b.raisePropertyChanged(f);b.raisePropertyChanged(r)}}},onStart:function(){var a=this;a.raiseStarted();for(var b in a.DynamicProperties)try{a[b](eval(a.DynamicProperties[b]))}catch(c){if(Sys.Debug.isDebug)throw c;}},onStep:function(a){this.setValue(this.getAnimatedValue(a));this.raiseStep()},onEnd:function(){this.raiseEnded()},getAnimatedValue:function(){throw Error.notImplemented();},setValue:function(){throw Error.notImplemented();},interpolate:function(a,c,b){return a+(c-a)*(b/e)},_onTimerTick:function(){this._updatePercentComplete(this._percentComplete+this._percentDelta,c)},_updatePercentComplete:function(a,d){var c=this;if(a>e)a=e;c._percentComplete=a;c.raisePropertyChanged(s);if(d)c.onStep(a);a===e&&c.stop(b)},setOwner:function(a){this._owner=a},raiseStarted:function(){var a=this.get_events().getHandler(m);a&&a(this,Sys.EventArgs.Empty)},add_started:function(a){this.get_events().addHandler(m,a)},remove_started:function(a){this.get_events().removeHandler(m,a)},raiseEnded:function(){var a=this.get_events().getHandler(n);a&&a(this,Sys.EventArgs.Empty)},add_ended:function(a){this.get_events().addHandler(n,a)},remove_ended:function(a){this.get_events().removeHandler(n,a)},raiseStep:function(){var a=this.get_events().getHandler(o);a&&a(this,Sys.EventArgs.Empty)},add_step:function(a){this.get_events().addHandler(o,a)},remove_step:function(a){this.get_events().removeHandler(o,a)},get_target:function(){var a=this;return!a._target&&a._parentAnimation?a._parentAnimation.get_target():a._target},set_target:function(a){if(this._target!=a){this._target=a;this.raisePropertyChanged("target")}},set_animationTarget:function(d){var c=a,b=$get(d);if(b)c=b;else{var e=$find(d);if(e){b=e.get_element();if(b)c=b}}if(c)this.set_target(c);else throw Error.argument("id",String.format(Sys.Extended.UI.Resources.Animation_TargetNotFound,d));},get_duration:function(){return this._duration},set_duration:function(b){var a=this;b=a._getFloat(b);if(a._duration!=b){a._duration=b;a.raisePropertyChanged("duration")}},get_fps:function(){return this._fps},set_fps:function(b){var a=this;b=a._getInteger(b);if(a.fps!=b){a._fps=b;a.raisePropertyChanged("fps")}},get_isActive:function(){return this._timer!==a},get_isPlaying:function(){return this._timer!==a&&this._timer.get_enabled()},get_percentComplete:function(){return this._percentComplete},_getBoolean:function(a){return String.isInstanceOfType(a)?Boolean.parse(a):a},_getInteger:function(a){return String.isInstanceOfType(a)?parseInt(a):a},_getFloat:function(a){return String.isInstanceOfType(a)?parseFloat(a):a},_getEnum:function(a,b){return String.isInstanceOfType(a)&&b&&b.parse?b.parse(a):a}};$AA.Animation.registerClass("Sys.Extended.UI.Animation.Animation",Sys.Component);$AA.registerAnimation("animation",$AA.Animation);$AA.ParentAnimation=function(d,c,e,a){$AA.ParentAnimation.initializeBase(this,[d,c,e]);this._animations=[];if(a&&a.length)for(var b=0;b<a.length;b++)this.add(a[b])};$AA.ParentAnimation.prototype={initialize:function(){var a=this;$AA.ParentAnimation.callBaseMethod(a,"initialize");if(a._animations)for(var c=0;c<a._animations.length;c++){var b=a._animations[c];b&&!b.get_isInitialized&&b.initialize()}},dispose:function(){this.clear();this._animations=a;$AA.ParentAnimation.callBaseMethod(this,l)},get_animations:function(){return this._animations},add:function(b){var a=this;if(a._animations){if(b)b._parentAnimation=a;Array.add(a._animations,b);a.raisePropertyChanged(i)}},remove:function(a){if(this._animations){a&&a.dispose();Array.remove(this._animations,a);this.raisePropertyChanged(i)}},removeAt:function(c){var a=this;if(a._animations){var b=a._animations[c];b&&b.dispose();Array.removeAt(a._animations,c);a.raisePropertyChanged(i)}},clear:function(){var b=this;if(b._animations){for(var c=b._animations.length-1;c>=0;c--){b._animations[c].dispose();b._animations[c]=a}Array.clear(b._animations);b._animations=[];b.raisePropertyChanged(i)}}};$AA.ParentAnimation.registerClass("Sys.Extended.UI.Animation.ParentAnimation",$AA.Animation);$AA.registerAnimation("parent",$AA.ParentAnimation);$AA.ParallelAnimation=function(c,b,d,a){$AA.ParallelAnimation.initializeBase(this,[c,b,d,a])};$AA.ParallelAnimation.prototype={add:function(a){$AA.ParallelAnimation.callBaseMethod(this,"add",[a]);a.setOwner(this)},onStart:function(){$AA.ParallelAnimation.callBaseMethod(this,d);for(var b=this.get_animations(),a=0;a<b.length;a++)b[a].onStart()},onStep:function(c){for(var b=this.get_animations(),a=0;a<b.length;a++)b[a].onStep(c)},onEnd:function(){for(var b=this.get_animations(),a=0;a<b.length;a++)b[a].onEnd();$AA.ParallelAnimation.callBaseMethod(this,g)}};$AA.ParallelAnimation.registerClass("Sys.Extended.UI.Animation.ParallelAnimation",$AA.ParentAnimation);$AA.registerAnimation("parallel",$AA.ParallelAnimation);$AA.SequenceAnimation=function(g,f,h,e,d){var c=this;$AA.SequenceAnimation.initializeBase(c,[g,f,h,e]);c._handler=a;c._paused=b;c._playing=b;c._index=0;c._remainingIterations=0;c._iterations=d!==undefined?d:1};$AA.SequenceAnimation.prototype={dispose:function(){this._handler=a;$AA.SequenceAnimation.callBaseMethod(this,l)},stop:function(){var a=this;if(a._playing){var c=a.get_animations();if(a._index<c.length){c[a._index].remove_ended(a._handler);for(var d=a._index;d<c.length;d++)c[d].stop()}a._playing=b;a._paused=b;a.raisePropertyChanged(f);a.onEnd()}},pause:function(){var b=this;if(b.get_isPlaying()){var d=b.get_animations()[b._index];d!=a&&d.pause();b._paused=c;b.raisePropertyChanged(f)}},play:function(){var d=this,g=d.get_animations();if(!d._playing){d._playing=c;if(d._paused){d._paused=b;var h=g[d._index];if(h!=a){h.play();d.raisePropertyChanged(f)}}else{d.onStart();d._index=0;var e=g[d._index];if(e){e.add_ended(d._handler);e.play();d.raisePropertyChanged(f)}else d.stop()}}},onStart:function(){var a=this;$AA.SequenceAnimation.callBaseMethod(a,d);a._remainingIterations=a._iterations-1;if(!a._handler)a._handler=Function.createDelegate(a,a._onEndAnimation)},_onEndAnimation:function(){var a=this,b=a.get_animations(),c=b[a._index++];c&&c.remove_ended(a._handler);if(a._index<b.length){var e=b[a._index];e.add_ended(a._handler);e.play()}else if(a._remainingIterations>=1||a._iterations<=0){a._remainingIterations--;a._index=0;var d=b[0];d.add_ended(a._handler);d.play()}else a.stop()},onStep:function(){throw Error.invalidOperation(Sys.Extended.UI.Resources.Animation_CannotNestSequence);},onEnd:function(){this._remainingIterations=0;$AA.SequenceAnimation.callBaseMethod(this,g)},get_isActive:function(){return c},get_isPlaying:function(){return this._playing&&!this._paused},get_iterations:function(){return this._iterations},set_iterations:function(b){var a=this;b=a._getInteger(b);if(a._iterations!=b){a._iterations=b;a.raisePropertyChanged("iterations")}},get_isInfinite:function(){return this._iterations<=0}};$AA.SequenceAnimation.registerClass("Sys.Extended.UI.Animation.SequenceAnimation",$AA.ParentAnimation);$AA.registerAnimation("sequence",$AA.SequenceAnimation);$AA.SelectionAnimation=function(d,c,e,b){$AA.SelectionAnimation.initializeBase(this,[d,c,e,b]);this._selectedIndex=-1;this._selected=a};$AA.SelectionAnimation.prototype={getSelectedIndex:function(){throw Error.notImplemented();},onStart:function(){var a=this;$AA.SelectionAnimation.callBaseMethod(a,d);var b=a.get_animations();a._selectedIndex=a.getSelectedIndex();if(a._selectedIndex>=0&&a._selectedIndex<b.length){a._selected=b[a._selectedIndex];if(a._selected){a._selected.setOwner(a);a._selected.onStart()}}},onStep:function(a){if(this._selected)this._selected.onStep(a)},onEnd:function(){var b=this;if(b._selected){b._selected.onEnd();b._selected.setOwner(a)}b._selected=a;b._selectedIndex=a;$AA.SelectionAnimation.callBaseMethod(b,g)}};$AA.SelectionAnimation.registerClass("Sys.Extended.UI.Animation.SelectionAnimation",$AA.ParentAnimation);$AA.registerAnimation("selection",$AA.SelectionAnimation);$AA.ConditionAnimation=function(d,c,e,b,a){$AA.ConditionAnimation.initializeBase(this,[d,c,e,b]);this._conditionScript=a};$AA.ConditionAnimation.prototype={getSelectedIndex:function(){var a=-1;if(this._conditionScript&&this._conditionScript.length>0)try{a=eval(this._conditionScript)?0:1}catch(b){}return a},get_conditionScript:function(){return this._conditionScript},set_conditionScript:function(a){if(this._conditionScript!=a){this._conditionScript=a;this.raisePropertyChanged("conditionScript")}}};$AA.ConditionAnimation.registerClass("Sys.Extended.UI.Animation.ConditionAnimation",$AA.SelectionAnimation);$AA.registerAnimation("condition",$AA.ConditionAnimation);$AA.CaseAnimation=function(d,c,e,b,a){$AA.CaseAnimation.initializeBase(this,[d,c,e,b]);this._selectScript=a};$AA.CaseAnimation.prototype={getSelectedIndex:function(){var a=-1;if(this._selectScript&&this._selectScript.length>0)try{var b=eval(this._selectScript);if(b!==undefined)a=b}catch(c){}return a},get_selectScript:function(){return this._selectScript},set_selectScript:function(a){if(this._selectScript!=a){this._selectScript=a;this.raisePropertyChanged("selectScript")}}};$AA.CaseAnimation.registerClass("Sys.Extended.UI.Animation.CaseAnimation",$AA.SelectionAnimation);$AA.registerAnimation("case",$AA.CaseAnimation);$AA.FadeEffect=function(){throw Error.invalidOperation();};$AA.FadeEffect.prototype={FadeIn:0,FadeOut:1};$AA.FadeEffect.registerEnum("Sys.Extended.UI.Animation.FadeEffect",b);$AA.FadeAnimation=function(j,i,k,h,g,f,e){var d=this;$AA.FadeAnimation.initializeBase(d,[j,i,k]);d._effect=h!==undefined?h:$AA.FadeEffect.FadeIn;d._max=f!==undefined?f:1;d._min=g!==undefined?g:0;d._start=d._min;d._end=d._max;d._layoutCreated=b;d._forceLayoutInIE=e===undefined||e===a?c:e;d._currentTarget=a;d._resetOpacities()};$AA.FadeAnimation.prototype={_resetOpacities:function(){var a=this;if(a._effect==$AA.FadeEffect.FadeIn){a._start=a._min;a._end=a._max}else{a._start=a._max;a._end=a._min}},_createLayout:function(){var a=this,b=a._currentTarget;if(b){a._originalWidth=$common.getCurrentStyle(b,p);var d=$common.getCurrentStyle(b,q);a._originalBackColor=$common.getCurrentStyle(b,"backgroundColor");if((!a._originalWidth||a._originalWidth==""||a._originalWidth=="auto")&&(!d||d==""||d=="auto"))b.style.width=b.offsetWidth+j;if(!a._originalBackColor||a._originalBackColor==""||a._originalBackColor=="transparent"||a._originalBackColor=="rgba(0, 0, 0, 0)")b.style.backgroundColor=$common.getInheritedBackgroundColor(b);a._layoutCreated=c}},onStart:function(){var a=this;$AA.FadeAnimation.callBaseMethod(a,d);a._currentTarget=a.get_target();a.setValue(a._start);a._forceLayoutInIE&&!a._layoutCreated&&Sys.Browser.agent==Sys.Browser.InternetExplorer&&a._createLayout()},getAnimatedValue:function(a){return this.interpolate(this._start,this._end,a)},setValue:function(a){this._currentTarget&&$common.setElementOpacity(this._currentTarget,a)},get_effect:function(){return this._effect},set_effect:function(b){var a=this;b=a._getEnum(b,$AA.FadeEffect);if(a._effect!=b){a._effect=b;a._resetOpacities();a.raisePropertyChanged("effect")}},get_minimumOpacity:function(){return this._min},set_minimumOpacity:function(b){var a=this;b=a._getFloat(b);if(a._min!=b){a._min=b;a._resetOpacities();a.raisePropertyChanged(t)}},get_maximumOpacity:function(){return this._max},set_maximumOpacity:function(b){var a=this;b=a._getFloat(b);if(a._max!=b){a._max=b;a._resetOpacities();a.raisePropertyChanged(u)}},get_forceLayoutInIE:function(){return this._forceLayoutInIE},set_forceLayoutInIE:function(b){var a=this;b=a._getBoolean(b);if(a._forceLayoutInIE!=b){a._forceLayoutInIE=b;a.raisePropertyChanged(v)}},set_startValue:function(a){a=this._getFloat(a);this._start=a}};$AA.FadeAnimation.registerClass("Sys.Extended.UI.Animation.FadeAnimation",$AA.Animation);$AA.registerAnimation("fade",$AA.FadeAnimation);$AA.FadeInAnimation=function(e,d,f,c,b,a){$AA.FadeInAnimation.initializeBase(this,[e,d,f,$AA.FadeEffect.FadeIn,c,b,a])};$AA.FadeInAnimation.prototype={onStart:function(){var a=this;$AA.FadeInAnimation.callBaseMethod(a,d);a._currentTarget&&a.set_startValue($common.getElementOpacity(a._currentTarget))}};$AA.FadeInAnimation.registerClass("Sys.Extended.UI.Animation.FadeInAnimation",$AA.FadeAnimation);$AA.registerAnimation("fadeIn",$AA.FadeInAnimation);$AA.FadeOutAnimation=function(e,d,f,c,b,a){$AA.FadeOutAnimation.initializeBase(this,[e,d,f,$AA.FadeEffect.FadeOut,c,b,a])};$AA.FadeOutAnimation.prototype={onStart:function(){var a=this;$AA.FadeOutAnimation.callBaseMethod(a,d);a._currentTarget&&a.set_startValue($common.getElementOpacity(a._currentTarget))}};$AA.FadeOutAnimation.registerClass("Sys.Extended.UI.Animation.FadeOutAnimation",$AA.FadeAnimation);$AA.registerAnimation("fadeOut",$AA.FadeOutAnimation);$AA.PulseAnimation=function(d,c,e,i,h,g,f){var b=this;$AA.PulseAnimation.initializeBase(b,[d,c,e,a,i!==undefined?i:3]);b._out=new $AA.FadeOutAnimation(d,c,e,h,g,f);b.add(b._out);b._in=new $AA.FadeInAnimation(d,c,e,h,g,f);b.add(b._in)};$AA.PulseAnimation.prototype={get_minimumOpacity:function(){return this._out.get_minimumOpacity()},set_minimumOpacity:function(b){var a=this;b=a._getFloat(b);a._out.set_minimumOpacity(b);a._in.set_minimumOpacity(b);a.raisePropertyChanged(t)},get_maximumOpacity:function(){return this._out.get_maximumOpacity()},set_maximumOpacity:function(b){var a=this;b=a._getFloat(b);a._out.set_maximumOpacity(b);a._in.set_maximumOpacity(b);a.raisePropertyChanged(u)},get_forceLayoutInIE:function(){return this._out.get_forceLayoutInIE()},set_forceLayoutInIE:function(b){var a=this;b=a._getBoolean(b);a._out.set_forceLayoutInIE(b);a._in.set_forceLayoutInIE(b);a.raisePropertyChanged(v)},set_duration:function(a){var b=this;a=b._getFloat(a);$AA.PulseAnimation.callBaseMethod(b,"set_duration",[a]);b._in.set_duration(a);b._out.set_duration(a)},set_fps:function(a){var b=this;a=b._getInteger(a);$AA.PulseAnimation.callBaseMethod(b,"set_fps",[a]);b._in.set_fps(a);b._out.set_fps(a)}};$AA.PulseAnimation.registerClass("Sys.Extended.UI.Animation.PulseAnimation",$AA.SequenceAnimation);$AA.registerAnimation("pulse",$AA.PulseAnimation);$AA.PropertyAnimation=function(f,d,g,e,c){var b=this;$AA.PropertyAnimation.initializeBase(b,[f,d,g]);b._property=e;b._propertyKey=c;b._currentTarget=a};$AA.PropertyAnimation.prototype={onStart:function(){$AA.PropertyAnimation.callBaseMethod(this,d);this._currentTarget=this.get_target()},setValue:function(c){var a=this,b=a._currentTarget;if(b&&a._property&&a._property.length>0)if(a._propertyKey&&a._propertyKey.length>0&&b[a._property])b[a._property][a._propertyKey]=c;else b[a._property]=c},getValue:function(){var b=this,d=b.get_target();if(d&&b._property&&b._property.length>0){var c=d[b._property];if(c)return b._propertyKey&&b._propertyKey.length>0?c[b._propertyKey]:c}return a},get_property:function(){return this._property},set_property:function(a){if(this._property!=a){this._property=a;this.raisePropertyChanged(y)}},get_propertyKey:function(){return this._propertyKey},set_propertyKey:function(a){if(this._propertyKey!=a){this._propertyKey=a;this.raisePropertyChanged("propertyKey")}}};$AA.PropertyAnimation.registerClass("Sys.Extended.UI.Animation.PropertyAnimation",$AA.Animation);$AA.registerAnimation(y,$AA.PropertyAnimation);$AA.DiscreteAnimation=function(e,c,f,d,b,a){$AA.DiscreteAnimation.initializeBase(this,[e,c,f,d,b]);this._values=a&&a.length?a:[]};$AA.DiscreteAnimation.prototype={getAnimatedValue:function(a){var b=Math.floor(this.interpolate(0,this._values.length-1,a));return this._values[b]},get_values:function(){return this._values},set_values:function(a){if(this._values!=a){this._values=a;this.raisePropertyChanged("values")}}};$AA.DiscreteAnimation.registerClass("Sys.Extended.UI.Animation.DiscreteAnimation",$AA.PropertyAnimation);$AA.registerAnimation("discrete",$AA.DiscreteAnimation);$AA.InterpolatedAnimation=function(f,d,g,a,b,c,e){$AA.InterpolatedAnimation.initializeBase(this,[f,d,g,a!==undefined?a:h,b]);this._startValue=c;this._endValue=e};$AA.InterpolatedAnimation.prototype={get_startValue:function(){return this._startValue},set_startValue:function(b){var a=this;b=a._getFloat(b);if(a._startValue!=b){a._startValue=b;a.raisePropertyChanged(w)}},get_endValue:function(){return this._endValue},set_endValue:function(b){var a=this;b=a._getFloat(b);if(a._endValue!=b){a._endValue=b;a.raisePropertyChanged(x)}}};$AA.InterpolatedAnimation.registerClass("Sys.Extended.UI.Animation.InterpolatedAnimation",$AA.PropertyAnimation);$AA.registerAnimation("interpolated",$AA.InterpolatedAnimation);$AA.ColorAnimation=function(i,f,j,h,d,e,g){var c=this;$AA.ColorAnimation.initializeBase(c,[i,f,j,h,d,e,g]);c._start=a;c._end=a;c._interpolateRed=b;c._interpolateGreen=b;c._interpolateBlue=b};$AA.ColorAnimation.prototype={onStart:function(){var a=this;$AA.ColorAnimation.callBaseMethod(a,d);a._start=$AA.ColorAnimation.getRGB(a.get_startValue());a._end=$AA.ColorAnimation.getRGB(a.get_endValue());a._interpolateRed=a._start.Red!=a._end.Red;a._interpolateGreen=a._start.Green!=a._end.Green;a._interpolateBlue=a._start.Blue!=a._end.Blue},getAnimatedValue:function(b){var a=this,e=a._start.Red,d=a._start.Green,c=a._start.Blue;if(a._interpolateRed)e=Math.round(a.interpolate(e,a._end.Red,b));if(a._interpolateGreen)d=Math.round(a.interpolate(d,a._end.Green,b));if(a._interpolateBlue)c=Math.round(a.interpolate(c,a._end.Blue,b));return $AA.ColorAnimation.toColor(e,d,c)},set_startValue:function(a){if(this._startValue!=a){this._startValue=a;this.raisePropertyChanged(w)}},set_endValue:function(a){if(this._endValue!=a){this._endValue=a;this.raisePropertyChanged(x)}}};$AA.ColorAnimation.getRGB=function(a){if(!a||a.length!=7)throw String.format(Sys.Extended.UI.Resources.Animation_InvalidColor,a);return{Red:parseInt(a.substr(1,2),16),Green:parseInt(a.substr(3,2),16),Blue:parseInt(a.substr(5,2),16)}};$AA.ColorAnimation.toColor=function(f,d,e){var c=f.toString(16),b=d.toString(16),a=e.toString(16);if(c.length==1)c="0"+c;if(b.length==1)b="0"+b;if(a.length==1)a="0"+a;return"#"+c+b+a};$AA.ColorAnimation.registerClass("Sys.Extended.UI.Animation.ColorAnimation",$AA.InterpolatedAnimation);$AA.registerAnimation("color",$AA.ColorAnimation);$AA.LengthAnimation=function(h,e,i,g,c,d,f,b){$AA.LengthAnimation.initializeBase(this,[h,e,i,g,c,d,f]);this._unit=b!=a?b:j};$AA.LengthAnimation.prototype={getAnimatedValue:function(b){var a=this,c=a.interpolate(a.get_startValue(),a.get_endValue(),b);return Math.round(c)+a._unit},get_unit:function(){return this._unit},set_unit:function(a){if(this._unit!=a){this._unit=a;this.raisePropertyChanged(k)}}};$AA.LengthAnimation.registerClass("Sys.Extended.UI.Animation.LengthAnimation",$AA.InterpolatedAnimation);$AA.registerAnimation("length",$AA.LengthAnimation);$AA.MoveAnimation=function(e,d,f,g,j,i,k){var b=this;$AA.MoveAnimation.initializeBase(b,[e,d,f,a]);b._horizontal=g?g:0;b._vertical=j?j:0;b._relative=i===undefined?c:i;b._horizontalAnimation=new $AA.LengthAnimation(e,d,f,h,"left",a,a,k);b._verticalAnimation=new $AA.LengthAnimation(e,d,f,h,"top",a,a,k);b.add(b._verticalAnimation);b.add(b._horizontalAnimation)};$AA.MoveAnimation.prototype={onStart:function(){var a=this;$AA.MoveAnimation.callBaseMethod(a,d);var b=a.get_target();a._horizontalAnimation.set_startValue(b.offsetLeft);a._horizontalAnimation.set_endValue(a._relative?b.offsetLeft+a._horizontal:a._horizontal);a._verticalAnimation.set_startValue(b.offsetTop);a._verticalAnimation.set_endValue(a._relative?b.offsetTop+a._vertical:a._vertical)},get_horizontal:function(){return this._horizontal},set_horizontal:function(b){var a=this;b=a._getFloat(b);if(a._horizontal!=b){a._horizontal=b;a.raisePropertyChanged("horizontal")}},get_vertical:function(){return this._vertical},set_vertical:function(b){var a=this;b=a._getFloat(b);if(a._vertical!=b){a._vertical=b;a.raisePropertyChanged("vertical")}},get_relative:function(){return this._relative},set_relative:function(b){var a=this;b=a._getBoolean(b);if(a._relative!=b){a._relative=b;a.raisePropertyChanged("relative")}},get_unit:function(){this._horizontalAnimation.get_unit()},set_unit:function(b){var a=this,c=a._horizontalAnimation.get_unit();if(c!=b){a._horizontalAnimation.set_unit(b);a._verticalAnimation.set_unit(b);a.raisePropertyChanged(k)}}};$AA.MoveAnimation.registerClass("Sys.Extended.UI.Animation.MoveAnimation",$AA.ParallelAnimation);$AA.registerAnimation("move",$AA.MoveAnimation);$AA.ResizeAnimation=function(d,c,e,i,g,f){var b=this;$AA.ResizeAnimation.initializeBase(b,[d,c,e,a]);b._width=i;b._height=g;b._horizontalAnimation=new $AA.LengthAnimation(d,c,e,h,p,a,a,f);b._verticalAnimation=new $AA.LengthAnimation(d,c,e,h,q,a,a,f);b.add(b._horizontalAnimation);b.add(b._verticalAnimation)};$AA.ResizeAnimation.prototype={onStart:function(){var b=this;$AA.ResizeAnimation.callBaseMethod(b,d);var c=b.get_target();b._horizontalAnimation.set_startValue(c.offsetWidth);b._verticalAnimation.set_startValue(c.offsetHeight);b._horizontalAnimation.set_endValue(b._width!==a&&b._width!==undefined?b._width:c.offsetWidth);b._verticalAnimation.set_endValue(b._height!==a&&b._height!==undefined?b._height:c.offsetHeight)},get_width:function(){return this._width},set_width:function(b){var a=this;b=a._getFloat(b);if(a._width!=b){a._width=b;a.raisePropertyChanged(p)}},get_height:function(){return this._height},set_height:function(b){var a=this;b=a._getFloat(b);if(a._height!=b){a._height=b;a.raisePropertyChanged(q)}},get_unit:function(){this._horizontalAnimation.get_unit()},set_unit:function(b){var a=this,c=a._horizontalAnimation.get_unit();if(c!=b){a._horizontalAnimation.set_unit(b);a._verticalAnimation.set_unit(b);a.raisePropertyChanged(k)}}};$AA.ResizeAnimation.registerClass("Sys.Extended.UI.Animation.ResizeAnimation",$AA.ParallelAnimation);$AA.registerAnimation("resize",$AA.ResizeAnimation);$AA.ScaleAnimation=function(i,g,k,c,e,h,f,d){var b=this;$AA.ScaleAnimation.initializeBase(b,[i,g,k]);b._scaleFactor=c!==undefined?c:1;b._unit=e!==undefined?e:j;b._center=h;b._scaleFont=f;b._fontUnit=d!==undefined?d:"pt";b._element=a;b._initialHeight=a;b._initialWidth=a;b._initialTop=a;b._initialLeft=a;b._initialFontSize=a};$AA.ScaleAnimation.prototype={getAnimatedValue:function(a){return this.interpolate(1,this._scaleFactor,a)},onStart:function(){var a=this;$AA.ScaleAnimation.callBaseMethod(a,d);a._element=a.get_target();if(a._element){a._initialHeight=a._element.offsetHeight;a._initialWidth=a._element.offsetWidth;if(a._center){a._initialTop=a._element.offsetTop;a._initialLeft=a._element.offsetLeft}if(a._scaleFont)a._initialFontSize=parseFloat($common.getCurrentStyle(a._element,"fontSize"))}},setValue:function(b){var a=this;if(a._element){var e=Math.round(a._initialWidth*b),d=Math.round(a._initialHeight*b);a._element.style.width=e+a._unit;a._element.style.height=d+a._unit;if(a._center){a._element.style.top=a._initialTop+Math.round((a._initialHeight-d)/2)+a._unit;a._element.style.left=a._initialLeft+Math.round((a._initialWidth-e)/2)+a._unit}if(a._scaleFont){var c=a._initialFontSize*b;if(a._fontUnit==j||a._fontUnit=="pt")c=Math.round(c);a._element.style.fontSize=c+a._fontUnit}}},onEnd:function(){var b=this;b._element=a;b._initialHeight=a;b._initialWidth=a;b._initialTop=a;b._initialLeft=a;b._initialFontSize=a;$AA.ScaleAnimation.callBaseMethod(b,g)},get_scaleFactor:function(){return this._scaleFactor},set_scaleFactor:function(b){var a=this;b=a._getFloat(b);if(a._scaleFactor!=b){a._scaleFactor=b;a.raisePropertyChanged("scaleFactor")}},get_unit:function(){return this._unit},set_unit:function(a){if(this._unit!=a){this._unit=a;this.raisePropertyChanged(k)}},get_center:function(){return this._center},set_center:function(b){var a=this;b=a._getBoolean(b);if(a._center!=b){a._center=b;a.raisePropertyChanged("center")}},get_scaleFont:function(){return this._scaleFont},set_scaleFont:function(b){var a=this;b=a._getBoolean(b);if(a._scaleFont!=b){a._scaleFont=b;a.raisePropertyChanged("scaleFont")}},get_fontUnit:function(){return this._fontUnit},set_fontUnit:function(a){if(this._fontUnit!=a){this._fontUnit=a;this.raisePropertyChanged("fontUnit")}}};$AA.ScaleAnimation.registerClass("Sys.Extended.UI.Animation.ScaleAnimation",$AA.Animation);$AA.registerAnimation("scale",$AA.ScaleAnimation);$AA.Action=function(b,a,c){$AA.Action.initializeBase(this,[b,a,c]);a===undefined&&this.set_duration(0)};$AA.Action.prototype={onEnd:function(){this.doAction();$AA.Action.callBaseMethod(this,g)},doAction:function(){throw Error.notImplemented();},getAnimatedValue:function(){},setValue:function(){}};$AA.Action.registerClass("Sys.Extended.UI.Animation.Action",$AA.Animation);$AA.registerAnimation("action",$AA.Action);$AA.EnableAction=function(d,b,e,a){$AA.EnableAction.initializeBase(this,[d,b,e]);this._enabled=a!==undefined?a:c};$AA.EnableAction.prototype={doAction:function(){var a=this.get_target();if(a)a.disabled=!this._enabled},get_enabled:function(){return this._enabled},set_enabled:function(b){var a=this;b=a._getBoolean(b);if(a._enabled!=b){a._enabled=b;a.raisePropertyChanged("enabled")}}};$AA.EnableAction.registerClass("Sys.Extended.UI.Animation.EnableAction",$AA.Action);$AA.registerAnimation("enableAction",$AA.EnableAction);$AA.HideAction=function(c,a,d,b){$AA.HideAction.initializeBase(this,[c,a,d]);this._visible=b};$AA.HideAction.prototype={doAction:function(){var a=this.get_target();a&&$common.setVisible(a,this._visible)},get_visible:function(){return this._visible},set_visible:function(a){if(this._visible!=a){this._visible=a;this.raisePropertyChanged("visible")}}};$AA.HideAction.registerClass("Sys.Extended.UI.Animation.HideAction",$AA.Action);$AA.registerAnimation("hideAction",$AA.HideAction);$AA.StyleAction=function(c,b,e,a,d){$AA.StyleAction.initializeBase(this,[c,b,e]);this._attribute=a;this._value=d};$AA.StyleAction.prototype={doAction:function(){var a=this.get_target();if(a)a.style[this._attribute]=this._value},get_attribute:function(){return this._attribute},set_attribute:function(a){if(this._attribute!=a){this._attribute=a;this.raisePropertyChanged("attribute")}},get_value:function(){return this._value},set_value:function(a){if(this._value!=a){this._value=a;this.raisePropertyChanged("value")}}};$AA.StyleAction.registerClass("Sys.Extended.UI.Animation.StyleAction",$AA.Action);$AA.registerAnimation("styleAction",$AA.StyleAction);$AA.OpacityAction=function(c,a,d,b){$AA.OpacityAction.initializeBase(this,[c,a,d]);this._opacity=b};$AA.OpacityAction.prototype={doAction:function(){var a=this.get_target();a&&$common.setElementOpacity(a,this._opacity)},get_opacity:function(){return this._opacity},set_opacity:function(b){var a=this;b=a._getFloat(b);if(a._opacity!=b){a._opacity=b;a.raisePropertyChanged("opacity")}}};$AA.OpacityAction.registerClass("Sys.Extended.UI.Animation.OpacityAction",$AA.Action);$AA.registerAnimation("opacityAction",$AA.OpacityAction);$AA.ScriptAction=function(c,a,d,b){$AA.ScriptAction.initializeBase(this,[c,a,d]);this._script=b};$AA.ScriptAction.prototype={doAction:function(){try{eval(this._script)}catch(a){}},get_script:function(){return this._script},set_script:function(a){if(this._script!=a){this._script=a;this.raisePropertyChanged("script")}}};$AA.ScriptAction.registerClass("Sys.Extended.UI.Animation.ScriptAction",$AA.Action);$AA.registerAnimation("scriptAction",$AA.ScriptAction)}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedCommon","ExtendedTimer"],a);else a()})();var $AA;6   �& h�( @ M*G7�XA?�7�rmLI�ѹ�����¯��y^[�'
�1u�mf������������������3�7E�]V�������
������	���s����������"`1*����^�������������T������sn�	� y՜�������������	������u�����O1-�C�F<����	������$n�:6�� }����������•��*�`G4�cI5�cI5�cI5�cI5�cI5�cI5�cI5�cI5�cI5�cI5�cI5�#eΔ��Q��������$r�:6����������B�����_@9�����ӫ��ҧ��Х��ϣ��Π��Ο��͞��͞��͞��͞��cI5�c*!����
�������������������������me������������������������Ͽ��μ��ȵ�͞��cI5�-�\R�y�����������,a�����������x��۠��I4.���{���v��o��yf��q_��jW�}cP�v^I��ȵ�͞��cI5�&oǍ��.����������7A�����������*����\:5�̷������������������ξ��̺��ʸ�͞��cI5�g'������������:6����������	��ɺ���KB������������������������ξ��ͻ�Ο��cI5��@4�����2�:�0��(|�:6����������������cW�]QH���|���u��~m��we��p^��iW�{cO��ο�Ϣ��cI5��REۚ��+���S���\���K�0�2Y�:6��'p�����������qd�zqm�������������������������Ф��cI5��[M���2���`���k���W���6�0z�:6����
������������}n�ypm�������������������������ҧ��cI5��bZ���,�E���W���O�)�8���������	������΁r�TIA�������{���s��}k��ue��n]��hU����ӫ��cI5�iE?տ����������V��/������a��⪣�3����'�����Ƣ��я���VL��������������������������ծ��cI5�8$<
	a_)$��rm�Ѳ��t���t������E���a���ۙ���wj��`Y�����Ʒ������������������������ײ��cI5�+/g<7�ə���������������������畍��c\��kb���������������������������z���r��{k��tc��n[����ٵ��cI5�-@r�mi��������㱭���|�}ea�����������������������������������������ٹ��cI5�/=pTQ��}{꩗��fQI����������������������������������������������۽��cI5�����������ʶ��dz��¯������������������������y���q��zj��sa����ݿ��cI5��������������������������������������������������������ó�cI5�������������������������������������������������������������Ŷ�cI5�������������˸��ɶ��ų����������������������������������ɴ����������cI5�������������������������������������������������������|�rXD�oUA�lQ=�cI5�������������������������������������������������������|�ͻ��������v�������������������������������������������������������|������v��������������������������������������������|���v������������������������������y���t��n��zi��ud��q`���~���������������������?��?����������������������������������?(  ,7F-*�0�/"!2-M���������a>8�1 0!
1��ۇ�$��Y�����\:5�.# 		jD?������6Q�6R�K�����G.)g*���� ���!��#��)����sMH�O73L" nn����(��+x���=�����bF7�lQ=�lQ=�lQ=�lQ=�}UR�<���>�,�0h�5J����������yn��������ĵ�lQ=�����:���B���7�3U�8<��	�������{TI���u��}k��ĵ�lQ=�����V���X���E�%��%���������zr��������Ƹ�lQ=�~YT�����n��F�����&��/�����tm��g[���~���t��Ⱥ�lQ=�6
v'"C�gg������������yu�ʝ�������������˽�lQ=��<9g41y����qkȑyo��������������ƽ�������lQ=�����������������������o�lQ=�lQ=�����������������������o�������������������x���o���o������?�?<�����������������������6   �& h�( @ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������{���v���r��~m��{i��ve��r`��n\��kY��gU�}dR�{bO�y`M�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������}���y���w���s���o��}l��zh��ve��sa��p^��m[��jX��hU�~fS�|cP�zaN�y`M�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������z���o��ve��mZ�}cQ�u\H�nT@�y`M��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������(  ����������������������������������������������������������������������������������������������������������������������������������������������~���t��yh��o]�fT�����������������������������������������������������������������������������������������������������������}���v��~n��ve��p^��jW�}dQ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������y��zh��kY�y`M������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������:GIF89a������������������������������������!�,8Р�A$@p�@;jGIF89a� ��������������ض������������������������������������������������!� ,GA(p��J8 D
@\��…�*D�Ą	!@���AD".XQ���D<p �	�P`@;$GIF89a��.�1��8��8��<ݡS����������Ǝ�����������������������������������!�	 ,AA(�
 p�����P�
&L8 A@�p�h��,@�@���;�GIF89a�����.a�9j�Ev�[��;t�F}�L��N�����������C~�K������N��s�ꃤ�r����������������������������������������R��������������������������������ޛ�������ѡ�����������������������������������������������������������������������������������������Q��w��w��u��{�鐼�������������������[��u�냱ㆮۚ������������ν������)^�a��b��V�����냪Ҟ���������cv�����������j�����������삼������������������������������������������ѵ��������!��,�q	H����9v��Ç
b�ŋ3^H$	' �<�@2�ɐ�4��a�8�!�!���8[
�`�@{:J�b��K
<lY�T��a@�T'� -�V��� ���_Z�R�O�Js2�3*�*Tk��;W�1'����>�>y´b��Ç�@��Dxq��H̓�h�,P��Q0!�)Q�*@`��k�Y��QJS�|f�j�
�of̐#��0h��T��!C�z�~nG
4˜��Ǥ@�L��2����y�!����q��2���}&�]bhJ�:q�L�'�!�t��RTac�W�@A�T�a���g��,!�LP����`�!�s^��-A_�!�W#����*��A�E#�f“P�VB�`d�;�GIF89a�����������������������������������������������������������������������������������������������������������������������������)^����!�=,�pH,��̆�l:�Ma'D*Y���U(:�X�x�V��z�n���lF���u!�`3����B0488<�����8B7
9������:��:�:B.��<�B���B
 !! Bí���BS؁<B%(�<%##B%-/��*)B$*/2
Шa�
5h̐A`@/��x!��
B�a0����a��(S‚��Б�0�;GGIF89a �?*����V����Ь������ _���4�����QPg	���|{x��p�


LMP��jװ��7�U,�#��rOc�������v{��`:���Qw�?�����E���t�'���¿�X�>V{����{�����ĝ������s�R�ъTWu����kܺ#���887����c�����_`T������!�?, ���p8,`0B�D*8��(��
X�1�$j%HJ&�Z��Z�hc0��"L&"#j�^�B�&&cu9!Z{(
~n�1"%d0���Z
����.�P<9i���,���

1�P,��,,)-L<2
�&
�BJ��-NMN<�5m#�
="C0x��L����75p#�'=�N{��$�$7<�7`L�0A�	�~H��Q�N
���@7n  �N��\��0����1���>r����Gy4��s��5�z���9|��a"��x�
��4l�-hպ���#n�XP��hw�ѣ�ѭzt�"�	��5�m$0 ��,v�J��b,	�}i���V+�4�Hlc1B?v8�Voq�pB�Ru,���ǂ�}����&��*=p ��
+ 0X��Ѥ5�c$��ͱ;KP.@�8�!�u�*+F���C�#�>T8[6^��|`�h��ƽ�Bq�-VA7D����s�gd�]��@wQ���*���vu�
.1pJ�|`��8~�vJ�@�����J8�(a���]�u� +A`�b+��܈369�+
EQ=@���Q� �P�(�XM;�GIF89a������������������������������������������������������������k���������������������������������������������������������������������������x�ŋ��������������q��u����䜷խ�ᡳȱ�Φ�����)^�[��_�����t������������������������ְ�����������!�d,��d������������"%&������#(,.������'-2������256������.9��==�ÿ�27	<��<P=<��҂;�?���=�
>CP�O�PQFJ�E>>�0	:A_P�`bP^PD]�dI�@��)\�P�A"P��(H�LI�	�-\�a� (�z�s"�ܑK�顡� 
<H!dL�X�X�!#X�02<pt!�	�`�(@��.X�8a�	A Lxc�Y7l�A��,=�T�E��n�ȱ#Gik 0CFA+b�ػ��v��ր�5r  ���g�;D�t ;�GIF89a����������p��s�����������������Kw�Ny�]��a��������:l�=n�������r��t��d��f��[��\��X�����������������������������������֭�����iiiAAA333���!�-,���pH,��r�l6��T
�Z�ի5�dy�^j+�\��@JEfr��hZw�����j�����i�� U%��%i��P�����P$��&`���P#��#"���P"�������P!�

��P  
	��P�����B����G��A;GIF89a�?��몴l�������Ԅn�Õ��f�����������ZHs����������i~�ȣú������쥯�������ӽ�}�����������������X������������������oYŏ����ꉃ��
���������)^������������!�?,���pH,�����l:�M����Y���UȈHv�xFv��z�n���Je���{}_� .92$w$5�8�8B:%�$	�	�	��B=8	#$�#��#���8#7�w�����68:�%�

����B1�

!4���1���&/�!&<�����>��!+&��BS>":� ��A�,�xaOȆ>"�(0����+���NJB �) b�->pp`0,X�B�%=�L�R�(	�.T8B��
. ���(
a%�fM��ё�`�;kGIF89a����yyy�������������iii���������ݭ��eeemmm������555}}}ZZ[������LLM������FFF����������������666��䮮������������압�~~��߃������������箮����������������ccc���fff������������333������!�,�@�oH,�£�\:�aG�̞�`��D0��7@�&#P�i�8D��3����oa�]tYQ+B.-�H9�9%�)2!>��>><�04)8�����<<	'�<>:��:7:"��>;���
/��A;IGIF89a�;;;:::&&&888111���!�,x
:s%�i�JuB;.ajax__validatorcallout div, .ajax__validatorcallout td {border:solid 1px Black;background-color:LemonChiffon;}
.ajax__validatorcallout_popup_table {border:none 0px;background-color:transparent;padding:0px;margin:0px;}
.ajax__validatorcallout_popup_table_row {vertical-align:top;height:100%;background-color:transparent;padding:0px;margin:0px;}
.ajax__validatorcallout_callout_cell {width:20px;height:100%;text-align:right;vertical-align:top;border:none !important;background-color:transparent !important;padding:0px;margin:0px;}
.ajax__validatorcallout_callout_table {height:100%;border:none;background-color:transparent;padding:0px;margin:0px;}
.ajax__validatorcallout_callout_table_row {background-color:transparent;padding:0px;margin:0px;}
.ajax__validatorcallout_callout_arrow_cell {padding:8px 0px 0px 0px;margin:0px;text-align:right;vertical-align:top;font-size:1px;border:none !important;background-color:transparent !important;}
.ajax__validatorcallout_callout_arrow_cell .ajax__validatorcallout_innerdiv {font-size:1px;position:relative;left:1px;border-bottom:none !important;border-right:none !important;border-left:none !important;width:15px;background-color:transparent !important;padding:0px;margin:0px;}
.ajax__validatorcallout_callout_arrow_cell .ajax__validatorcallout_innerdiv div {height:1px;overflow:hidden;border-top:none !important;border-bottom:none !important;border-right:none !important;padding:0px;margin:0px 0px 0px auto;}
.ajax__validatorcallout_callout_arrow_cell_leftpos {padding:8px 0px 0px 0px;margin:0px;text-align:left;vertical-align:top;font-size:1px;border:none !important;background-color:transparent !important;}
.ajax__validatorcallout_callout_arrow_cell_leftpos .ajax__validatorcallout_innerdiv {font-size:1px;position:relative;left:-1px;border-bottom:none !important;border-right:none !important;border-left:none !important;width:15px;background-color:transparent !important;padding:0px;margin:0px;}
.ajax__validatorcallout_callout_arrow_cell_leftpos .ajax__validatorcallout_innerdiv div {height:1px;overflow:hidden;border-top:none !important;border-bottom:none !important;border-left:none !important;padding:0px;margin:0px auto 0px 0px;}
.ajax__validatorcallout_callout_arrow_cell_bottomleftpos,.ajax__validatorcallout_callout_arrow_cell_topleftpos {padding:0px 0px 0px 8px;margin:0px;text-align:left;vertical-align:top;font-size:1px;border:none !important;background-color:transparent !important;}
.ajax__validatorcallout_callout_arrow_cell_bottomrightpos,.ajax__validatorcallout_callout_arrow_cell_toprightpos {padding:0px 8px 0px 0px;margin:0px;text-align:right;vertical-align:top;font-size:1px;border:none !important;background-color:transparent !important;}
.ajax__validatorcallout_callout_arrow_cell_bottomleftpos .ajax__validatorcallout_innerdiv {font-size:1px;position:relative;bottom:-1px;border:none !important;width:30px;background-color:transparent !important;padding:0px;margin:0px;}
.ajax__validatorcallout_callout_arrow_cell_bottomrightpos .ajax__validatorcallout_innerdiv {font-size:1px;position:relative;bottom:-1px;border:none !important;width:30px;background-color:transparent !important;padding:0px;margin:0px 0px 0px auto;}
.ajax__validatorcallout_callout_arrow_cell_topleftpos .ajax__validatorcallout_innerdiv {font-size:1px;position:relative;top:-1px;border:none !important;width:30px;background-color:transparent !important;padding:0px;margin:0px;}
.ajax__validatorcallout_callout_arrow_cell_toprightpos .ajax__validatorcallout_innerdiv {font-size:1px;position:relative;top:-1px;border:none !important;width:30px;background-color:transparent !important;padding:0px;margin:0px 0px 0px auto;}
.ajax__validatorcallout_callout_arrow_cell_bottomleftpos .ajax__validatorcallout_innerdiv div,.ajax__validatorcallout_callout_arrow_cell_bottomrightpos .ajax__validatorcallout_innerdiv div,.ajax__validatorcallout_callout_arrow_cell_topleftpos .ajax__validatorcallout_innerdiv div,.ajax__validatorcallout_callout_arrow_cell_toprightpos .ajax__validatorcallout_innerdiv div {height:1px;overflow:hidden;border-top:none !important;border-bottom:none !important;padding:0px;margin:0px auto 0px auto;}
.ajax__validatorcallout_callout_arrow_cell_bottomleftpos .ajax__validatorcallout_innerdiv .arrowpixel,.ajax__validatorcallout_callout_arrow_cell_bottomrightpos .ajax__validatorcallout_innerdiv .arrowpixel,.ajax__validatorcallout_callout_arrow_cell_topleftpos .ajax__validatorcallout_innerdiv .arrowpixel,.ajax__validatorcallout_callout_arrow_cell_toprightpos .ajax__validatorcallout_innerdiv .arrowpixel {height:0px;overflow:hidden;border-top:none !important;border-right:none !important;border-left:none !important;border-bottom-style:solid !important;border-bottom-width:1px !important;background-color:transparent !important;padding:0px;margin:0px auto 0px auto;}
.ajax__validatorcallout_error_message_cell {font-family:Verdana;font-size:10px;padding:5px;border-right:none !important;border-left:none !important;width:100%;}
.ajax__validatorcallout_icon_cell {width:20px;padding:5px;margin:0px;border-right:none !important;}
.ajax__validatorcallout_close_button_cell {vertical-align:top;padding:0px;margin:0px;text-align:right;border-left:none !important;}
.ajax__validatorcallout_close_button_cell .ajax__validatorcallout_innerdiv {border:none !important;text-align:center;width:10px;padding:2px;cursor:pointer;}4�PNG


IHDR#"Յ`�	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�F	_IDATxڬ�kl���޹w��]{�L�q�l��5P�T%����"U��
BE� j�A��TT���R�K+	h�B�JC�Ą��ر�c?v��ٙ��<k�k�V�#�����ߞs�=�Ik��r5��_�R��SJ��ǁ�?��"����tx݀�z]74�J)��`"���qM
@�g)�����u j�f#4@8p v�С�z��|ߧcǎ�O�<Y
|^h~h*�LjzzzZ7�З�L$
a�����{��Lfw�V�L_�ت×ud��&f?���ѣG��9q�D��U(zddd���c�!�>�~��G���ȃ��=�c�]����hR"nko+������>��~�g�y�����*j�!P@�9sF+��w��/`�9o1_���n�u����������y=_��Ф�&
1��HƘ��M%o�ar��w���+���ȑ#g�C(7
��[o���3��5b
�y���;wl�|���~����GZ�sˁ�+�[��Ŵ����"Z�C��3w�F��)^���6�x����w�쩧������C#���^�3�b---
������߼��=���?st����w
��P�m�7�A�A��~�׮�u=VQy��d��tc����/�ehh��B�%7Lp
@�z�u]D�#�w|�ڋ�G�l��H�w3�	C˘`v���^�q΂J�+W*���)���P��T]��������������T$���_�L�Vk\2⥗^�W���ܹ�=X*��P]��qK2&�)�[�b��O�~���#��gG��)�PBp͹A�q�1�l!��\j���<�	V��Yt`@&��.hr�֭��}2�ǝ�iF*-mIA$a0���q�ł�Җ�z�&c�dd��S��BЙ��y׮]�����J�yV0>��4=vKe&��k�J1S0.9����F�d��"aHH)!���H�̈�ap�LrF�1]tUr6�f�]�"0F#��&���￾87ѧ�J:B\r1��v��6�����a�Mq�
BB�����:gXP�]$]�zZ{�\
�)�m�����̅&#05��K)���L&*#�tڰa�%�Lۤ���R���6���+���A"�+E���l�Z�y�e�T��/״;W���vnꉙ��`� �0��M����n�dˋ�
˴�8���ާ�Ÿ*,�#�JAJ	"���“���yXZZb�r��$�=nA�/M�R�T:E��YAXM �e0T*�t�+J�49\C$=�
E�>=��|�R)��u����!�ȤO
�Ќ�rT���v.��v�L7�!�S̸7=ړ6��C[�HZqA���09�G2!��#�����e���T,3ٮ�[��T�s�P(x����l6;��W�;z�ͱ*�47������p�K yc��)L�T����ۄ��Y]�uu��P�WQ��`���cD�W<���r��b�h�6�Q�ϟ�ޱg|{&u����h�	@�P�_"hU��.��6�Guv��e�ҀR0lE����H��Or��lv!,�X�Y��C�O�:�����6���d�d$��D" ��Ȱ��x�T����n��Ȱ�d8�D@2�I&@-mq*vmοzjf�P(,DZ�F�&�.��/_>wzV����"N�I@�V̈)���-��*0�`��D��H���-��{�f"����Fa�xo���0��:��G;nֹ-���fh�&<�/�ͧ�`�������+oR>�
$�;q��L����.--�(�@��tm��ިg�jg��y�-7��N�`�`8��Q�v�*sP��W��`�{IJ �@�o ��#g�(
��C�F׷�U�p�7��:>>~i��ĉ���{m�{�j"���<��8h%T^	گ���y�� �܊l�MW�ٙ�>�Yu]�
�|S
=��M�F��Ƴ266�A�\��|������u�`�O�z.���<X�(�ځ4SЙ-��F�ş�⟧������X=m��U����Ν;�-��<���z{ߖ�מ|h�-��t�R�*�
@������8<��<�셏.�-�G �B�#	�o�{�n(�0::�(",h6�8�c,m�����w�mKw�
3�Ts��b%�TN)�yP��b$<n�Z����UA533ӬDd��j�ED�,�u�GtR%bՍ�JD��յFn��f9+�Ì���
�\�7	����Ѷ
�L&׉�Z����m����l��~��
�Jr#�50�e��Zӎ�@�������5!�p�W�����%���G�D��n�p�W}��P���5IEND�B`���PNG


IHDR#"Յ`�	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�F�IDATxڤ��oUǿ��Ǘ��s���&��&e+Z�eۮ����Rە��"ϼ����> !�O �V<�@i�*�QD�j�IK/��۱�s=�}`Ɲ�V�H?{||�g~��]�(��g.B齧~cQ��&�Rv�T*��8ڜ�$���y*�A)�U/@4J)���A��3��(�����+jccCEq�C�>Z(	�^x!}�ر!�)�\�t���7�X!��C��\NP>T�0�|&�0Μ9S|���������R��|@���7nݺ�x���ٯ�����I
�ZXX�MOO�����B�׊o����w��q�R�E)�!2���O���pΩm��~�a�ܹs�/_�\`p�!��fgg���?��#���c� �W_}�����d����|)e=a䤑&	!�qV���?��K��
�ʋ]�rE=z��A�.n����۳g�?(�E)����B�	B�e@���a��������_����{��N_w~��Q7x��4��@��?.OOO�4��9w���R��`*���L�R*��ҥ�T�RJ[[�=z����OȄs����K/��`b�I0v��u�0���ҕRJ��A�RJ��"cl�16���!!�@WJ%��bMMMmٻw�n�p�j?

�`\�E\+�~��[�� 8�\)�BR���ݻw�߻w�I���rۅ��m{��iÄ��T�MJɂ �L�t�{�'_}��gdC�&�]��4}bbb2��p�mBSJ%���-~��vM���;W�^5�ݻGo߾�}�Wr�Ri5��R��_H!ι=99Y(��O�sd?rd�{�ho��f)��NB�B)�4�T�RjB2�i�4M|���j�JMӄ�ytff&?777�����	!&��RJBH�0�����]�v��~��
�l��)���~*�Lf� ��D)�QJMJi�R�6M�T
�1b��$Lӄ�i�x�b�…%J��Db�1��!h���hjjjj<4SC��t@0]�G\�m���j�����$�45??�M&��4
�1DI[)M�����ҩS�`���K����RJ�0�-=L��&�r�3�s�h4�m?4M�N�T�~����7nCCC���`��^�հ���.^�X:s�����俛�fC�u�2$�H���߂!�e)��|�!D.//o.;vL?}��P�T*%<(VWW�͛7��~�\�Ϟ={gmm�i۶�)%:��d��Y��h8��jB�y�"�Ͷ8p�u�1C�M�����t:�-��������=ϓ��1˲�V��۷�4)�R�T�:!�$<σm۲�lz�v��<�ӻ��ҏ�(�b��j��V�廮BH���hX�Z�[����?������b`FJA=�S���u���M� p� �{�{��ض��8��0���׃J�R�O��f���?�X)�˿�޽{k"��;��(�`Y�'�h�P�V�|0@)�=�ܲ��m��}������Y��j�b�DT�l���������k�F:T��ب8�#��],�>��k�L&K��8��8.!����T�08�<�����j���R�P(�gffH�V[��6^\;Z3q�իW�c�w��9���;�J�]���/����d2���^H"��c�s�-˲�߿߱m[�������o���R�חX!PT��Me�'���0y��SSSO�ر��o������jՊ�!�RJI�S!�TB	����0&�}�]���6�y��5umN%�v�~�7>�Ν;�YZZ�r��9��^*�
�R��td��666�~bY@GGG�Al�wD�Z]�<�.�f��.D7�E�9r�����(ia�Ny6�N���ɓ����h6��z���t:缻��i4���|>���
�}�]�O>qm۾�9_P5�
KP/f&Յٻw/�����׿QE�e��_��Η_~�(��^�P�\�
���RJM��<x��u��_x�Z�B����4��X�y��r�)%�-J"Ԑ��YJi�4�g(�c�ccc4�ɐV��~��g)����
)�_��12���f۶m�D�����!DNm���$I�H*�D���IvL�~�J<rwaFFF6���f���M���=VXG���i�>QwS
���r�ǚr�u���X"�i��ڼ���N��&�d2�	$.=oh������.�c0��n�{�~��cٿ���A�������wC|`�U(�IEND�B`�e// (c) 2010 CodePlex Foundation
Type.registerNamespace("Sys.Extended.UI.Seadragon");Type.registerNamespace("Seadragon");Seadragon.Point=Sys.Extended.UI.Seadragon.Point=function(a,b){this.x=typeof a=="number"?a:0;this.y=typeof b=="number"?b:0};Sys.Extended.UI.Seadragon.Point.prototype={plus:function(a){return new Sys.Extended.UI.Seadragon.Point(this.x+a.x,this.y+a.y)},minus:function(a){return new Sys.Extended.UI.Seadragon.Point(this.x-a.x,this.y-a.y)},times:function(a){return new Sys.Extended.UI.Seadragon.Point(this.x*a,this.y*a)},divide:function(a){return new Sys.Extended.UI.Seadragon.Point(this.x/a,this.y/a)},negate:function(){return new Sys.Extended.UI.Seadragon.Point(-this.x,-this.y)},distanceTo:function(a){return Math.sqrt(Math.pow(this.x-a.x,2)+Math.pow(this.y-a.y,2))},apply:function(a){return new Sys.Extended.UI.Seadragon.Point(a(this.x),a(this.y))},equals:function(a){return a instanceof Sys.Extended.UI.Seadragon.Point&&this.x===a.x&&this.y===a.y},toString:function(){return"("+this.x+","+this.y+")"}};Sys.Extended.UI.Seadragon.Point.registerClass("Sys.Extended.UI.Seadragon.Point",null,Sys.IDisposable);Gr// (c) 2010 CodePlex Foundation
(function() {

function execute() {

Type._registerScript("MicrosoftAjaxWebForms.js", [
	"MicrosoftAjaxCore.js",
	"MicrosoftAjaxSerialization.js",
	"MicrosoftAjaxNetwork.js",
	"MicrosoftAjaxComponentModel.js"]);
var $type, $prototype;
Type.registerNamespace('Sys.WebForms');

$type = Sys.WebForms.BeginRequestEventArgs = function BeginRequestEventArgs(request, postBackElement, updatePanelsToUpdate) {
    /// <summary locid="M:J#Sys.WebForms.BeginRequestEventArgs.#ctor">The arguments for the PageRequestManager's beginRequest event. The beginRequest event is raised when a request is about to be made.</summary>
    /// <param name="request" type="Sys.Net.WebRequest">The web request for the EventArgs.</param>
    /// <param name="postBackElement" domElement="true" mayBeNull="true">The postback element that initiated the async postback.</param>
    /// <param name="updatePanelsToUpdate" type="Array" elementType="String" mayBeNull="true" optional="true">A list of UniqueIDs for UpdatePanel controls that are requested to update their rendering by the client. Server-side processing may update additional UpdatePanels.</param>
    var e = Function._validateParams(arguments, [
        {name: "request", type: Sys.Net.WebRequest},
        {name: "postBackElement", mayBeNull: true, domElement: true},
        {name: "updatePanelsToUpdate", type: Array, mayBeNull: true, optional: true, elementType: String}
    ]);
    if (e) throw e;
    Sys.WebForms.BeginRequestEventArgs.initializeBase(this);
    this._request = request;
    this._postBackElement = postBackElement;
    this._updatePanelsToUpdate = updatePanelsToUpdate;
}

$type.prototype = {
    get_postBackElement: function BeginRequestEventArgs$get_postBackElement() {
        /// <value domElement="true" mayBeNull="true" locid="P:J#Sys.WebForms.BeginRequestEventArgs.postBackElement"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._postBackElement;
    },
    get_request: function BeginRequestEventArgs$get_request() {
        /// <value type="Sys.Net.WebRequest" locid="P:J#Sys.WebForms.BeginRequestEventArgs.request"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._request;
    },
    get_updatePanelsToUpdate: function BeginRequestEventArgs$get_updatePanelsToUpdate() {
        /// <value type="Array" elementType="String" locid="P:J#Sys.WebForms.BeginRequestEventArgs.updatePanelsToUpdate"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._updatePanelsToUpdate ? Array.clone(this._updatePanelsToUpdate) : [];
    }
}

$type.registerClass('Sys.WebForms.BeginRequestEventArgs', Sys.EventArgs);
$type = Sys.WebForms.EndRequestEventArgs = function EndRequestEventArgs(error, dataItems, response) {
    /// <summary locid="M:J#Sys.WebForms.EndRequestEventArgs.#ctor">The arguments for the PageRequestManager's endRequest event. The endRequest event is raised when a response has finished processing.</summary>
    /// <param name="error" type="Error" mayBeNull="true"></param>
    /// <param name="dataItems" type="Object" mayBeNull="true"></param>
    /// <param name="response" type="Sys.Net.WebRequestExecutor"></param>
    var e = Function._validateParams(arguments, [
        {name: "error", type: Error, mayBeNull: true},
        {name: "dataItems", type: Object, mayBeNull: true},
        {name: "response", type: Sys.Net.WebRequestExecutor}
    ]);
    if (e) throw e;

    Sys.WebForms.EndRequestEventArgs.initializeBase(this);
    this._errorHandled = false;
    this._error = error;
    this._dataItems = dataItems || new Object();
    this._response = response;
}

$type.prototype = {
    get_dataItems: function EndRequestEventArgs$get_dataItems() {
        /// <value type="Object" locid="P:J#Sys.WebForms.EndRequestEventArgs.dataItems"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._dataItems;
    },

    get_error: function EndRequestEventArgs$get_error() {
        /// <value type="Error" locid="P:J#Sys.WebForms.EndRequestEventArgs.error"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._error;
    },

    get_errorHandled: function EndRequestEventArgs$get_errorHandled() {
        /// <value type="Boolean" locid="P:J#Sys.WebForms.EndRequestEventArgs.errorHandled"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._errorHandled;
    },
    set_errorHandled: function EndRequestEventArgs$set_errorHandled(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
        if (e) throw e;
        this._errorHandled = value;
    },

    get_response: function EndRequestEventArgs$get_response() {
        /// <value type="Sys.Net.WebRequestExecutor" locid="P:J#Sys.WebForms.EndRequestEventArgs.response"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._response;
    }
}

$type.registerClass('Sys.WebForms.EndRequestEventArgs', Sys.EventArgs);
$type = Sys.WebForms.InitializeRequestEventArgs = function InitializeRequestEventArgs(request, postBackElement, updatePanelsToUpdate) {
    /// <summary locid="M:J#Sys.WebForms.InitializeRequestEventArgs.#ctor">The arguments for the PageRequestManager's initializeRequest event. The initializeRequest event is raised when a request is being prepared and can be cancelled.</summary>
    /// <param name="request" type="Sys.Net.WebRequest">The web request to be packaged in this EventArgs.</param>
    /// <param name="postBackElement" domElement="true" mayBeNull="true">The postback element that initiated the async postback.</param>
    /// <param name="updatePanelsToUpdate" type="Array" elementType="String" mayBeNull="true" optional="true">A list of UniqueIDs for UpdatePanel controls that are requested to update their rendering by the client. Server-side processing may update additional UpdatePanels.</param>
    var e = Function._validateParams(arguments, [
        {name: "request", type: Sys.Net.WebRequest},
        {name: "postBackElement", mayBeNull: true, domElement: true},
        {name: "updatePanelsToUpdate", type: Array, mayBeNull: true, optional: true, elementType: String}
    ]);
    if (e) throw e;
    Sys.WebForms.InitializeRequestEventArgs.initializeBase(this);
    this._request = request;
    this._postBackElement = postBackElement;
    this._updatePanelsToUpdate = updatePanelsToUpdate;
}

$type.prototype = {
    get_postBackElement: function InitializeRequestEventArgs$get_postBackElement() {
        /// <value domElement="true" mayBeNull="true" locid="P:J#Sys.WebForms.InitializeRequestEventArgs.postBackElement"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._postBackElement;
    },
    get_request: function InitializeRequestEventArgs$get_request() {
        /// <value type="Sys.Net.WebRequest" locid="P:J#Sys.WebForms.InitializeRequestEventArgs.request"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._request;
    },
    get_updatePanelsToUpdate: function InitializeRequestEventArgs$get_updatePanelsToUpdate() {
        /// <value type="Array" elementType="String" locid="P:J#Sys.WebForms.InitializeRequestEventArgs.updatePanelsToUpdate"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._updatePanelsToUpdate ? Array.clone(this._updatePanelsToUpdate) : [];
    },
    set_updatePanelsToUpdate: function InitializeRequestEventArgs$set_updatePanelsToUpdate(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Array, elementType: String}]);
        if (e) throw e;
        this._updated = true;
        this._updatePanelsToUpdate = value;
    }
}

$type.registerClass('Sys.WebForms.InitializeRequestEventArgs', Sys.CancelEventArgs);
$type = Sys.WebForms.PageLoadedEventArgs = function PageLoadedEventArgs(panelsUpdated, panelsCreated, dataItems) {
    /// <summary locid="M:J#Sys.WebForms.PageLoadedEventArgs.#ctor">The arguments for the PageRequestManager's pageLoaded event. The pageLoaded event is raised after the DOM has been updated.</summary>
    /// <param name="panelsUpdated" type="Array">An array of UpdatePanels that were updated.</param>
    /// <param name="panelsCreated" type="Array">An array of UpdatePanels that were created.</param>
    /// <param name="dataItems" type="Object" mayBeNull="true"></param>
    var e = Function._validateParams(arguments, [
        {name: "panelsUpdated", type: Array},
        {name: "panelsCreated", type: Array},
        {name: "dataItems", type: Object, mayBeNull: true}
    ]);
    if (e) throw e;
    Sys.WebForms.PageLoadedEventArgs.initializeBase(this);

    this._panelsUpdated = panelsUpdated;
    this._panelsCreated = panelsCreated;
    this._dataItems = dataItems || new Object();
}

$type.prototype = {
    get_dataItems: function PageLoadedEventArgs$get_dataItems() {
        /// <value type="Object" locid="P:J#Sys.WebForms.PageLoadedEventArgs.dataItems"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._dataItems;
    },

    get_panelsCreated: function PageLoadedEventArgs$get_panelsCreated() {
        /// <value type="Array" locid="P:J#Sys.WebForms.PageLoadedEventArgs.panelsCreated"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._panelsCreated;
    },

    get_panelsUpdated: function PageLoadedEventArgs$get_panelsUpdated() {
        /// <value type="Array" locid="P:J#Sys.WebForms.PageLoadedEventArgs.panelsUpdated"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._panelsUpdated;
    }
}

$type.registerClass('Sys.WebForms.PageLoadedEventArgs', Sys.EventArgs);
$type = Sys.WebForms.PageLoadingEventArgs = function PageLoadingEventArgs(panelsUpdating, panelsDeleting, dataItems) {
    /// <summary locid="M:J#Sys.WebForms.PageLoadingEventArgs.#ctor">The arguments for the PageRequestManager's pageLoading event. The pageLoading event is raised before the DOM has been updated.</summary>
    /// <param name="panelsUpdating" type="Array">An array of UpdatePanels that are going to be updated.</param>
    /// <param name="panelsDeleting" type="Array">An array of UpdatePanels that are going to be deleted.</param>
    /// <param name="dataItems" type="Object" mayBeNull="true"></param>
    var e = Function._validateParams(arguments, [
        {name: "panelsUpdating", type: Array},
        {name: "panelsDeleting", type: Array},
        {name: "dataItems", type: Object, mayBeNull: true}
    ]);
    if (e) throw e;
    Sys.WebForms.PageLoadingEventArgs.initializeBase(this);

    this._panelsUpdating = panelsUpdating;
    this._panelsDeleting = panelsDeleting;
    this._dataItems = dataItems || new Object();
}

$type.prototype = {
    get_dataItems: function PageLoadingEventArgs$get_dataItems() {
        /// <value type="Object" locid="P:J#Sys.WebForms.PageLoadingEventArgs.dataItems"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._dataItems;
    },

    get_panelsDeleting: function PageLoadingEventArgs$get_panelsDeleting() {
        /// <value type="Array" locid="P:J#Sys.WebForms.PageLoadingEventArgs.panelsDeleting"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._panelsDeleting;
    },

    get_panelsUpdating: function PageLoadingEventArgs$get_panelsUpdating() {
        /// <value type="Array" locid="P:J#Sys.WebForms.PageLoadingEventArgs.panelsUpdating"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._panelsUpdating;
    }
}

$type.registerClass('Sys.WebForms.PageLoadingEventArgs', Sys.EventArgs);

$type = Sys._ScriptLoaderTask = function _ScriptLoaderTask(scriptElement, completedCallback) {
    /// <summary locid="M:J#Sys._ScriptLoaderTask.#ctor"></summary>
    /// <param name="scriptElement" domElement="true">The script element to add to the DOM.</param>
    /// <param name="completedCallback" type="Function">Callback to call when the script has loaded or failed to load.</param>
    var e = Function._validateParams(arguments, [
        { name: "scriptElement", domElement: true },
        { name: "completedCallback", type: Function }
    ]);
    if (e) throw e;
    this._scriptElement = scriptElement;
    this._completedCallback = completedCallback;
}
$type.prototype = {
    get_scriptElement: function _ScriptLoaderTask$get_scriptElement() {
        /// <value domElement="true" locid="P:J#Sys._ScriptLoaderTask.scriptElement">The script element.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._scriptElement;
    },

    dispose: function _ScriptLoaderTask$dispose() {
        if (this._disposed) {
            return;
        }
        this._disposed = true;
        this._removeScriptElementHandlers();
        Sys._ScriptLoaderTask._clearScript(this._scriptElement);
        this._scriptElement = null;
    },

    execute: function _ScriptLoaderTask$execute() {
        /// <summary locid="M:J#Sys._ScriptLoaderTask.execute">Begins loading the given script element.</summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        this._addScriptElementHandlers();
        var headElements = document.getElementsByTagName('head');
        if (headElements.length === 0) {
            throw new Error.invalidOperation(Sys.Res.scriptLoadFailedNoHead);
        }
        else {
            headElements[0].appendChild(this._scriptElement);
        }
    },

    _addScriptElementHandlers: function _ScriptLoaderTask$_addScriptElementHandlers() {
        this._scriptLoadDelegate = Function.createDelegate(this, this._scriptLoadHandler);

        if (document.addEventListener) {
            if (!this._scriptElement.readyState)
                this._scriptElement.readyState = 'loaded';
            $addHandler(this._scriptElement, 'load', this._scriptLoadDelegate);
        }
        else {
            $addHandler(this._scriptElement, 'readystatechange', this._scriptLoadDelegate);
        }
        if (this._scriptElement.addEventListener) {
            this._scriptErrorDelegate = Function.createDelegate(this, this._scriptErrorHandler);
            this._scriptElement.addEventListener('error', this._scriptErrorDelegate, false);
        }
    },

    _removeScriptElementHandlers: function _ScriptLoaderTask$_removeScriptElementHandlers() {
        if (this._scriptLoadDelegate) {
            var scriptElement = this.get_scriptElement();
            if (document.addEventListener) {
                $removeHandler(scriptElement, 'load', this._scriptLoadDelegate);
            }
            else {
                $removeHandler(scriptElement, 'readystatechange', this._scriptLoadDelegate);
            }
            if (this._scriptErrorDelegate) {
                this._scriptElement.removeEventListener('error', this._scriptErrorDelegate, false);
                this._scriptErrorDelegate = null;
            }
            this._scriptLoadDelegate = null;
        }
    },

    _scriptErrorHandler: function _ScriptLoaderTask$_scriptErrorHandler() {
        if (this._disposed) {
            return;
        }

        this._completedCallback(this.get_scriptElement(), false);
    },

    _scriptLoadHandler: function _ScriptLoaderTask$_scriptLoadHandler() {
        if (this._disposed) {
            return;
        }

        var scriptElement = this.get_scriptElement();
        if ((scriptElement.readyState !== 'loaded') &&
            (scriptElement.readyState !== 'complete')) {
            return;
        }

        this._completedCallback(scriptElement, true);
    }
}
$type.registerClass("Sys._ScriptLoaderTask", null, Sys.IDisposable);

$type._clearScript = function _ScriptLoaderTask$_clearScript(scriptElement) {
    if (!Sys.Debug.isDebug) {
        scriptElement.parentNode.removeChild(scriptElement);
    }
}

$type = Sys._ScriptLoader = function _ScriptLoader() {
    this._scriptsToLoad = null;
    this._sessions = [];
    this._scriptLoadedDelegate = Function.createDelegate(this, this._scriptLoadedHandler);
}
$type.prototype = {
    dispose: function _ScriptLoader$dispose() {
        this._stopSession();
        this._loading = false;
        if(this._events) {
            delete this._events;
        }
        this._sessions = null;
        this._currentSession = null;
        this._scriptLoadedDelegate = null;        
    },
    
    loadScripts: function _ScriptLoader$loadScripts(scriptTimeout, allScriptsLoadedCallback, scriptLoadFailedCallback, scriptLoadTimeoutCallback) {
        /// <summary locid="M:J#Sys._ScriptLoader.loadScripts">Begins loading scripts that have been queued.</summary>
        /// <param name="scriptTimeout" type="Number" integer="true">Timeout in seconds for loading all scripts.</param>
        /// <param name="allScriptsLoadedCallback" type="Function" mayBeNull="true">Callback for notification when all scripts have successfully loaded.</param>
        /// <param name="scriptLoadFailedCallback" type="Function" mayBeNull="true">Callback for notification when a script fails to load.</param>
        /// <param name="scriptLoadTimeoutCallback" type="Function" mayBeNull="true">Callback for notification when scripts have not finished loading within the given timeout.</param>
        var e = Function._validateParams(arguments, [
            {name: "scriptTimeout", type: Number, integer: true},
            {name: "allScriptsLoadedCallback", type: Function, mayBeNull: true},
            {name: "scriptLoadFailedCallback", type: Function, mayBeNull: true},
            {name: "scriptLoadTimeoutCallback", type: Function, mayBeNull: true}
        ]);
        if (e) throw e;
        var session = {
            allScriptsLoadedCallback: allScriptsLoadedCallback,
            scriptLoadFailedCallback: scriptLoadFailedCallback,
            scriptLoadTimeoutCallback: scriptLoadTimeoutCallback,
            scriptsToLoad: this._scriptsToLoad,
            scriptTimeout: scriptTimeout };
        this._scriptsToLoad = null;
        this._sessions.push(session);
        
        if (!this._loading) {
            this._nextSession();
        }
    },
    
    queueCustomScriptTag: function _ScriptLoader$queueCustomScriptTag(scriptAttributes) {
        /// <summary locid="M:J#Sys._ScriptLoader.queueCustomScriptTag">Queues a script reference with the given set of custom script element attributes.</summary>
        /// <param name="scriptAttributes" mayBeNull="false">A JSON object that describtes the attributes to apply to the script element.</param>
        var e = Function._validateParams(arguments, [
            {name: "scriptAttributes"}
        ]);
        if (e) throw e;
        if(!this._scriptsToLoad) {
            this._scriptsToLoad = [];
        }
        Array.add(this._scriptsToLoad, scriptAttributes);
    },

    queueScriptBlock: function _ScriptLoader$queueScriptBlock(scriptContent) {
        /// <summary locid="M:J#Sys._ScriptLoader.queueScriptBlock">Queues a script reference with literal script.</summary>
        /// <param name="scriptContent" type="String" mayBeNull="false">Literal script to execute.</param>
        var e = Function._validateParams(arguments, [
            {name: "scriptContent", type: String}
        ]);
        if (e) throw e;
        if(!this._scriptsToLoad) {
            this._scriptsToLoad = [];
        }
        Array.add(this._scriptsToLoad, {text: scriptContent});
    },

    queueScriptReference: function _ScriptLoader$queueScriptReference(scriptUrl) {
        /// <summary locid="M:J#Sys._ScriptLoader.queueScriptReference">Queues a script reference to the given script URL.</summary>
        /// <param name="scriptUrl" type="String" mayBeNull="false">URL to the script to reference.</param>
        var e = Function._validateParams(arguments, [
            {name: "scriptUrl", type: String}
        ]);
        if (e) throw e;
        if(!this._scriptsToLoad) {
            this._scriptsToLoad = [];
        }
        Array.add(this._scriptsToLoad, {src: scriptUrl});
    },
    
    _createScriptElement: function _ScriptLoader$_createScriptElement(queuedScript) {
        var scriptElement = document.createElement('script');

        scriptElement.type = 'text/javascript';

        for (var attr in queuedScript) {
            scriptElement[attr] = queuedScript[attr];
        }
        
        return scriptElement;
    },
    
    _loadScriptsInternal: function _ScriptLoader$_loadScriptsInternal() {
        var session = this._currentSession;
        if (session.scriptsToLoad && session.scriptsToLoad.length > 0) {
            var nextScript = Array.dequeue(session.scriptsToLoad);
            var scriptElement = this._createScriptElement(nextScript);
            
            if (scriptElement.text && Sys.Browser.agent === Sys.Browser.Safari) {
                scriptElement.innerHTML = scriptElement.text;
                delete scriptElement.text;
            }            

            if (typeof(nextScript.src) === "string") {
                this._currentTask = new Sys._ScriptLoaderTask(scriptElement, this._scriptLoadedDelegate);
                this._currentTask.execute();
            }
            else {
                var headElements = document.getElementsByTagName('head');
                if (headElements.length === 0) {
                     throw new Error.invalidOperation(Sys.Res.scriptLoadFailedNoHead);
                }
                else {
                     headElements[0].appendChild(scriptElement);
                }
                
                
                Sys._ScriptLoaderTask._clearScript(scriptElement);
                this._loadScriptsInternal();
            }
        }
        else {
            this._stopSession();
            var callback = session.allScriptsLoadedCallback;
            if(callback) {
                callback(this);
            }
            this._nextSession();
        }
    },

    _nextSession: function _ScriptLoader$_nextSession() {
        if (this._sessions.length === 0) {
            this._loading = false;
            this._currentSession = null;
            return;
        }
        this._loading = true;
        
        var session = Array.dequeue(this._sessions);
        this._currentSession = session;
        this._loadScriptsInternal();
    },

    _raiseError: function _ScriptLoader$_raiseError() {
        var callback = this._currentSession.scriptLoadFailedCallback;
        var scriptElement = this._currentTask.get_scriptElement();
        this._stopSession();
        
        if(callback) {
            callback(this, scriptElement);
            this._nextSession();
        }
        else {
            this._loading = false;
            throw Sys._ScriptLoader._errorScriptLoadFailed(scriptElement.src);
        }
    },
    
    _scriptLoadedHandler: function _ScriptLoader$_scriptLoadedHandler(scriptElement, loaded) {
        if (loaded) {
            Array.add(Sys._ScriptLoader._getLoadedScripts(), scriptElement.src);
            this._currentTask.dispose();
            this._currentTask = null;
            this._loadScriptsInternal();
        }
        else {
            this._raiseError();
        }
    },
    _stopSession: function _ScriptLoader$_stopSession() {
        if(this._currentTask) {
            this._currentTask.dispose();
            this._currentTask = null;
        }
    }    
}
$type.registerClass('Sys._ScriptLoader', null, Sys.IDisposable);

$type.getInstance = function _ScriptLoader$getInstance() {
    var sl = Sys._ScriptLoader._activeInstance;
    if(!sl) {
        sl = Sys._ScriptLoader._activeInstance = new Sys._ScriptLoader();
    }
    return sl;
}

$type.isScriptLoaded = function _ScriptLoader$isScriptLoaded(scriptSrc) {
    var dummyScript = document.createElement('script');
    dummyScript.src = scriptSrc;
    return Array.contains(Sys._ScriptLoader._getLoadedScripts(), dummyScript.src);
}

$type.readLoadedScripts = function _ScriptLoader$readLoadedScripts() {
    if(!Sys._ScriptLoader._referencedScripts) {
        var referencedScripts = Sys._ScriptLoader._referencedScripts = [];

        var existingScripts = document.getElementsByTagName('script');
        for (var i = existingScripts.length - 1; i >= 0; i--) {
            var scriptNode = existingScripts[i];
            var scriptSrc = scriptNode.src;
            if (scriptSrc.length) {
                if (!Array.contains(referencedScripts, scriptSrc)) {
                    Array.add(referencedScripts, scriptSrc);
                }
            }
        }
    }
}

$type._errorScriptLoadFailed = function _ScriptLoader$_errorScriptLoadFailed(scriptUrl) {
    var errorMessage;
    errorMessage = Sys.Res.scriptLoadFailedDebug;

    var displayMessage = "Sys.ScriptLoadFailedException: " + String.format(errorMessage, scriptUrl);
    var e = Error.create(displayMessage, {name: 'Sys.ScriptLoadFailedException', 'scriptUrl': scriptUrl });
    e.popStackFrame();
    return e;
}

$type._getLoadedScripts = function _ScriptLoader$_getLoadedScripts() {
    if(!Sys._ScriptLoader._referencedScripts) {
        Sys._ScriptLoader._referencedScripts = [];
        Sys._ScriptLoader.readLoadedScripts();
    }
    return Sys._ScriptLoader._referencedScripts;
}
$type = Sys.WebForms.PageRequestManager = function PageRequestManager() {
    this._form = null;
    this._activeDefaultButton = null;
    this._activeDefaultButtonClicked = false;
    this._updatePanelIDs = null;
    this._updatePanelClientIDs = null;
    this._updatePanelHasChildrenAsTriggers = null;
    this._asyncPostBackControlIDs = null;
    this._asyncPostBackControlClientIDs = null;
    this._postBackControlIDs = null;
    this._postBackControlClientIDs = null;
    this._scriptManagerID = null;
    this._pageLoadedHandler = null;

    this._additionalInput = null;
    this._onsubmit = null;
    this._onSubmitStatements = [];
    this._originalDoPostBack = null;
    this._originalDoPostBackWithOptions = null;
    this._originalFireDefaultButton = null;
    this._originalDoCallback = null;
    this._isCrossPost = false;
    this._postBackSettings = null;
    this._request = null;
    this._onFormSubmitHandler = null;
    this._onFormElementClickHandler = null;
    this._onWindowUnloadHandler = null;
    this._asyncPostBackTimeout = null;

    this._controlIDToFocus = null;
    this._scrollPosition = null;
    this._processingRequest = false;
    this._scriptDisposes = {};
    
    this._transientFields = ["__VIEWSTATEENCRYPTED", "__VIEWSTATEFIELDCOUNT"];
}

$type.prototype = {
    get_isInAsyncPostBack: function PageRequestManager$get_isInAsyncPostBack() {
        /// <value type="Boolean" locid="P:J#Sys.WebForms.PageRequestManager.isInAsyncPostBack"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._request !== null;
    },

    add_beginRequest: function PageRequestManager$add_beginRequest(handler) {
        /// <summary locid="E:J#Sys.WebForms.PageRequestManager.beginRequest">Adds a beginRequest event handler.</summary>
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        Sys.Observer.addEventHandler(this, "beginRequest", handler);
    },
    remove_beginRequest: function PageRequestManager$remove_beginRequest(handler) {
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        Sys.Observer.removeEventHandler(this, "beginRequest", handler);
    },

    add_endRequest: function PageRequestManager$add_endRequest(handler) {
        /// <summary locid="E:J#Sys.WebForms.PageRequestManager.endRequest">Adds a endRequest event handler.</summary>
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        Sys.Observer.addEventHandler(this, "endRequest", handler);
    },
    remove_endRequest: function PageRequestManager$remove_endRequest(handler) {
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        Sys.Observer.removeEventHandler(this, "endRequest", handler);
    },

    add_initializeRequest: function PageRequestManager$add_initializeRequest(handler) {
        /// <summary locid="E:J#Sys.WebForms.PageRequestManager.initializeRequest">Adds a initializeRequest event handler.</summary>
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        Sys.Observer.addEventHandler(this, "initializeRequest", handler);
    },
    remove_initializeRequest: function PageRequestManager$remove_initializeRequest(handler) {
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        Sys.Observer.removeEventHandler(this, "initializeRequest", handler);
    },

    add_pageLoaded: function PageRequestManager$add_pageLoaded(handler) {
        /// <summary locid="E:J#Sys.WebForms.PageRequestManager.pageLoaded">Adds a pageLoaded event handler.</summary>
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        Sys.Observer.addEventHandler(this, "pageLoaded", handler);
    },
    remove_pageLoaded: function PageRequestManager$remove_pageLoaded(handler) {
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        Sys.Observer.removeEventHandler(this, "pageLoaded", handler);
    },

    add_pageLoading: function PageRequestManager$add_pageLoading(handler) {
        /// <summary locid="E:J#Sys.WebForms.PageRequestManager.pageLoading">Adds a pageLoading event handler.</summary>
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        Sys.Observer.addEventHandler(this, "pageLoading", handler);
    },
    remove_pageLoading: function PageRequestManager$remove_pageLoading(handler) {
        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
        if (e) throw e;
        Sys.Observer.removeEventHandler(this, "pageLoading", handler);
    },

    abortPostBack: function PageRequestManager$abortPostBack() {
        if (!this._processingRequest && this._request) {
            this._request.get_executor().abort();
            this._request = null;
        }
    },

    beginAsyncPostBack: function PageRequestManager$beginAsyncPostBack(updatePanelsToUpdate, eventTarget, eventArgument, causesValidation, validationGroup) {
        /// <summary locid="M:J#Sys.WebForms.PageRequestManager.beginAsyncPostBack">Begins an asynchronous postback.</summary>
        /// <param name="updatePanelsToUpdate" type="Array" elementType="String" mayBeNull="true" optional="true">A list of UniqueIDs or ClientIDs of UpdatePanel controls that should have their rendering updated.</param>
        /// <param name="eventTarget" type="String" mayBeNull="true" optional="true"></param>
        /// <param name="eventArgument" type="String" mayBeNull="true" optional="true"></param>
        /// <param name="causesValidation" type="Boolean" mayBeNull="true" optional="true"></param>
        /// <param name="validationGroup" type="String" mayBeNull="true" optional="true"></param>
        var e = Function._validateParams(arguments, [
            {name: "updatePanelsToUpdate", type: Array, mayBeNull: true, optional: true, elementType: String},
            {name: "eventTarget", type: String, mayBeNull: true, optional: true},
            {name: "eventArgument", type: String, mayBeNull: true, optional: true},
            {name: "causesValidation", type: Boolean, mayBeNull: true, optional: true},
            {name: "validationGroup", type: String, mayBeNull: true, optional: true}
        ]);
        if (e) throw e;
        if (causesValidation && (typeof(Page_ClientValidate) === 'function') && !Page_ClientValidate(validationGroup || null)) {
            return;
        }
        this._postBackSettings = this._createPostBackSettings(true, updatePanelsToUpdate, eventTarget);
        var form = this._form;
        form.__EVENTTARGET.value = (eventTarget || "");
        form.__EVENTARGUMENT.value = (eventArgument || "");
        this._isCrossPost = false;
        this._additionalInput = null;
        this._onFormSubmit();
    },
    
    _cancelPendingCallbacks: function PageRequestManager$_cancelPendingCallbacks() {
        for (var i = 0, l = window.__pendingCallbacks.length; i < l; i++) {
            var callback = window.__pendingCallbacks[i];
            if (callback) {
                if (!callback.async) {
                    window.__synchronousCallBackIndex = -1;
                }
                window.__pendingCallbacks[i] = null;
                var callbackFrameID = "__CALLBACKFRAME" + i;
                var xmlRequestFrame = document.getElementById(callbackFrameID);
                if (xmlRequestFrame) {
                    xmlRequestFrame.parentNode.removeChild(xmlRequestFrame);
                }
            }
        }
    },
    
    _commitControls: function PageRequestManager$_commitControls(updatePanelData, asyncPostBackTimeout) {
        if (updatePanelData) {
            this._updatePanelIDs = updatePanelData.updatePanelIDs;
            this._updatePanelClientIDs = updatePanelData.updatePanelClientIDs;
            this._updatePanelHasChildrenAsTriggers = updatePanelData.updatePanelHasChildrenAsTriggers;
            this._asyncPostBackControlIDs = updatePanelData.asyncPostBackControlIDs;
            this._asyncPostBackControlClientIDs = updatePanelData.asyncPostBackControlClientIDs;
            this._postBackControlIDs = updatePanelData.postBackControlIDs;
            this._postBackControlClientIDs = updatePanelData.postBackControlClientIDs;
        }
        if (typeof(asyncPostBackTimeout) !== 'undefined' && asyncPostBackTimeout !== null) {
            this._asyncPostBackTimeout = asyncPostBackTimeout * 1000;
        }
    },
    
    _createHiddenField: function PageRequestManager$_createHiddenField(id, value) {
        var container, field = document.getElementById(id);

        if (field) {
            if (!field._isContained) {
                field.parentNode.removeChild(field);
            }
            else {
                container = field.parentNode;
            }
        }
        if (!container) {
            container = document.createElement('span');
            container.style.cssText = "display:none !important";
            this._form.appendChild(container);
        }
        container.innerHTML = "<input type='hidden' />";
        field = container.childNodes[0];
        field._isContained = true;
        field.id = field.name = id;
        field.value = value;
    },

    _createPageRequestManagerTimeoutError: function PageRequestManager$_createPageRequestManagerTimeoutError() {
        var displayMessage = "Sys.WebForms.PageRequestManagerTimeoutException: " + Sys.WebForms.Res.PRM_TimeoutError;
        var e = Error.create(displayMessage, {name: 'Sys.WebForms.PageRequestManagerTimeoutException'});
        e.popStackFrame();
        return e;
    },

    _createPageRequestManagerServerError: function PageRequestManager$_createPageRequestManagerServerError(httpStatusCode, message) {
        var displayMessage = "Sys.WebForms.PageRequestManagerServerErrorException: " +
            (message || String.format(Sys.WebForms.Res.PRM_ServerError, httpStatusCode));
        var e = Error.create(displayMessage, {
            name: 'Sys.WebForms.PageRequestManagerServerErrorException',
            httpStatusCode: httpStatusCode
        });
        e.popStackFrame();
        return e;
    },

    _createPageRequestManagerParserError: function PageRequestManager$_createPageRequestManagerParserError(parserErrorMessage) {
        var displayMessage = "Sys.WebForms.PageRequestManagerParserErrorException: " + String.format(Sys.WebForms.Res.PRM_ParserError, parserErrorMessage);
        var e = Error.create(displayMessage, {name: 'Sys.WebForms.PageRequestManagerParserErrorException'});
        e.popStackFrame();
        return e;
    },

    _createPanelID: function PageRequestManager$_createPanelID(panelsToUpdate, postBackSettings) {
        var asyncTarget = postBackSettings.asyncTarget,
            toUpdate = this._ensureUniqueIds(panelsToUpdate || postBackSettings.panelsToUpdate),
            panelArg = (toUpdate instanceof Array)
                ? toUpdate.join(',')
                : (toUpdate || this._scriptManagerID);
        if (asyncTarget) {
            panelArg += "|" + asyncTarget;
        }
        return encodeURIComponent(this._scriptManagerID) + '=' + encodeURIComponent(panelArg) + '&';
    },

    _createPostBackSettings: function PageRequestManager$_createPostBackSettings(async, panelsToUpdate, asyncTarget, sourceElement) {
        return { async:async, asyncTarget: asyncTarget, panelsToUpdate: panelsToUpdate, sourceElement: sourceElement };
    },

    _convertToClientIDs: function PageRequestManager$_convertToClientIDs(source, destinationIDs, destinationClientIDs, version4) {
        if (source) {
            for (var i = 0, l = source.length; i < l; i += (version4 ? 2 : 1)) {
                var uniqueID = source[i],
                    clientID = (version4 ? source[i+1] : "") || this._uniqueIDToClientID(uniqueID);
                Array.add(destinationIDs, uniqueID);
                Array.add(destinationClientIDs, clientID);
            }
        }
    },

    dispose: function PageRequestManager$dispose() {
        Sys.Observer.clearEventHandlers(this);
        if (this._form) {
            Sys.UI.DomEvent.removeHandler(this._form, 'submit', this._onFormSubmitHandler);
            Sys.UI.DomEvent.removeHandler(this._form, 'click', this._onFormElementClickHandler);
            Sys.UI.DomEvent.removeHandler(window, 'unload', this._onWindowUnloadHandler);
            Sys.UI.DomEvent.removeHandler(window, 'load', this._pageLoadedHandler);
        }

        if (this._originalDoPostBack) {
            window.__doPostBack = this._originalDoPostBack;
            this._originalDoPostBack = null;
        }
        if (this._originalDoPostBackWithOptions) {
            window.WebForm_DoPostBackWithOptions = this._originalDoPostBackWithOptions;
            this._originalDoPostBackWithOptions = null;
        }
        if (this._originalFireDefaultButton) {
            window.WebForm_FireDefaultButton = this._originalFireDefaultButton;
            this._originalFireDefaultButton = null;
        }
        if (this._originalDoCallback) {
            window.WebForm_DoCallback = this._originalDoCallback;
            this._originalDoCallback = null;
        }

        this._form = null;
        this._updatePanelIDs = null;
        this._updatePanelClientIDs = null;
        this._asyncPostBackControlIDs = null;
        this._asyncPostBackControlClientIDs = null;
        this._postBackControlIDs = null;
        this._postBackControlClientIDs = null;
        this._asyncPostBackTimeout = null;
        this._scrollPosition = null;
    },
    
    _doCallback: function PageRequestManager$_doCallback(eventTarget, eventArgument, eventCallback, context, errorCallback, useAsync) {
        if (!this.get_isInAsyncPostBack()) {
            this._originalDoCallback(eventTarget, eventArgument, eventCallback, context, errorCallback, useAsync);
        }
    },

    _doPostBack: function PageRequestManager$_doPostBack(eventTarget, eventArgument) {
        this._additionalInput = null;

        var form = this._form;
        if ((eventTarget === null) || (typeof(eventTarget) === "undefined") || (this._isCrossPost)) {
            this._postBackSettings = this._createPostBackSettings(false);
            this._isCrossPost = false;
        }
        else {
            var mpUniqueID = this._masterPageUniqueID;
            var clientID = this._uniqueIDToClientID(eventTarget);
            var postBackElement = document.getElementById(clientID);
            if (!postBackElement && mpUniqueID) {
                if (clientID.indexOf(mpUniqueID + "$") === 0) {
                    postBackElement = document.getElementById(clientID.substr(mpUniqueID.length + 1));
                }
            }
            if (!postBackElement) {
                if (Array.contains(this._asyncPostBackControlIDs, eventTarget)) {
                    this._postBackSettings = this._createPostBackSettings(true, null, eventTarget);
                }
                else {
                    if (Array.contains(this._postBackControlIDs, eventTarget)) {
                        this._postBackSettings = this._createPostBackSettings(false);
                    }
                    else {
                        var nearestUniqueIDMatch = this._findNearestElement(eventTarget);
                        if (nearestUniqueIDMatch) {
                            this._postBackSettings = this._getPostBackSettings(nearestUniqueIDMatch, eventTarget);
                        }
                        else {
                            if (mpUniqueID) {
                                mpUniqueID += "$";
                                if (eventTarget.indexOf(mpUniqueID) === 0) {
                                    nearestUniqueIDMatch = this._findNearestElement(eventTarget.substr(mpUniqueID.length));
                                }
                            }
                            if (nearestUniqueIDMatch) {
                                this._postBackSettings = this._getPostBackSettings(nearestUniqueIDMatch, eventTarget);
                            }
                            else {
                                this._postBackSettings = this._createPostBackSettings(false);
                            }
                        }
                    }
                }
            }
            else {
                this._postBackSettings = this._getPostBackSettings(postBackElement, eventTarget);
            }
        }

        if (!this._postBackSettings.async) {
            form.onsubmit = this._onsubmit;
            this._originalDoPostBack(eventTarget, eventArgument);
            form.onsubmit = null;
            return;
        }

        form.__EVENTTARGET.value = eventTarget;
        form.__EVENTARGUMENT.value = eventArgument;
        this._onFormSubmit();
    },

    _doPostBackWithOptions: function PageRequestManager$_doPostBackWithOptions(options) {
        this._isCrossPost = options && options.actionUrl;
        this._originalDoPostBackWithOptions(options);
    },

    _elementContains: function PageRequestManager$_elementContains(container, element) {
        while (element) {
            if (element === container) {
                return true;
            }
            element = element.parentNode;
        }
        return false;
    },

    _endPostBack: function PageRequestManager$_endPostBack(error, executor, data) {
        if (this._request === executor.get_webRequest()) {
            this._processingRequest = false;
            this._additionalInput = null;
            this._request = null;
        }

        var eventArgs = new Sys.WebForms.EndRequestEventArgs(error, data ? data.dataItems : {}, executor);
        Sys.Observer.raiseEvent(this, "endRequest", eventArgs);
        if (error && !eventArgs.get_errorHandled()) {
            throw error;
        }
    },

    _ensureUniqueIds: function PageRequestManager$_ensureUniqueIds(ids) {
        if (!ids) return ids;
        ids = ids instanceof Array ? ids : [ids];
        var uniqueIds = [];
        for (var i = 0, l = ids.length; i < l; i++) {
            var id = ids[i], index = Array.indexOf(this._updatePanelClientIDs, id);
            uniqueIds.push(index > -1 ? this._updatePanelIDs[index] : id);
        }
        return uniqueIds;
    },

    _findNearestElement: function PageRequestManager$_findNearestElement(uniqueID) {
        while (uniqueID.length > 0) {
            var clientID = this._uniqueIDToClientID(uniqueID);
            var element = document.getElementById(clientID);
            if (element) {
                return element;
            }
            var indexOfLastDollar = uniqueID.lastIndexOf('$');
            if (indexOfLastDollar === -1) {
                return null;
            }
            uniqueID = uniqueID.substring(0, indexOfLastDollar);
        }
        return null;
    },

    _findText: function PageRequestManager$_findText(text, location) {
        var startIndex = Math.max(0, location - 20);
        var endIndex = Math.min(text.length, location + 20);
        return text.substring(startIndex, endIndex);
    },
    
    _fireDefaultButton: function PageRequestManager$_fireDefaultButton(event, target) {
        if (event.keyCode === 13) {
            var src = event.srcElement || event.target;
            if (!src || (src.tagName.toLowerCase() !== "textarea")) {
                var defaultButton = document.getElementById(target);

                if (defaultButton && (typeof(defaultButton.click) !== "undefined")) {
                    
                    
                    this._activeDefaultButton = defaultButton;
                    this._activeDefaultButtonClicked = false;
                    try {
                        defaultButton.click();
                    }
                    finally {
                        this._activeDefaultButton = null;
                    }
                    
                    
                    event.cancelBubble = true;
                    if (typeof(event.stopPropagation) === "function") {
                        event.stopPropagation();
                    }
                    return false;
                }
            }
        }
        return true;
    },

    _getPageLoadedEventArgs: function PageRequestManager$_getPageLoadedEventArgs(initialLoad, data) {

        var updated = [];
        var created = [];
        var version4 = data ? data.version4 : false;
        var upData = data ? data.updatePanelData : null;

        var newIDs, newClientIDs, childIDs, refreshedIDs;

        if (!upData) {
            newIDs = this._updatePanelIDs;
            newClientIDs = this._updatePanelClientIDs;
            childIDs = null;
            refreshedIDs = null;
        }
        else {
            newIDs = upData.updatePanelIDs;
            newClientIDs = upData.updatePanelClientIDs;
            childIDs = upData.childUpdatePanelIDs;
            refreshedIDs = upData.panelsToRefreshIDs;
        }

        var i, l, uniqueID, clientID;
        if (refreshedIDs) {
            for (i = 0, l = refreshedIDs.length; i < l; i += (version4 ? 2 : 1)) {
                uniqueID = refreshedIDs[i];
                clientID = (version4 ? refreshedIDs[i+1] : "") || this._uniqueIDToClientID(uniqueID);
                Array.add(updated, document.getElementById(clientID));
            }
        }

        for (i = 0, l = newIDs.length; i < l; i++) {
            if (initialLoad || Array.indexOf(childIDs, newIDs[i]) !== -1) {
                Array.add(created, document.getElementById(newClientIDs[i]));
            }
        }

        return new Sys.WebForms.PageLoadedEventArgs(updated, created, data ? data.dataItems : {});
    },

    _getPageLoadingEventArgs: function PageRequestManager$_getPageLoadingEventArgs(data) {

        var updated = [],
            deleted = [],
            upData = data.updatePanelData,
            oldIDs = upData.oldUpdatePanelIDs,
            oldClientIDs = upData.oldUpdatePanelClientIDs,
            newIDs = upData.updatePanelIDs,
            childIDs = upData.childUpdatePanelIDs,
            refreshedIDs = upData.panelsToRefreshIDs,
            i, l, uniqueID, clientID,
            version4 = data.version4;
        for (i = 0, l = refreshedIDs.length; i < l; i += (version4 ? 2 : 1)) {
            uniqueID = refreshedIDs[i];
            clientID = (version4 ? refreshedIDs[i+1] : "") || this._uniqueIDToClientID(uniqueID);
            Array.add(updated, document.getElementById(clientID));
        }

        for (i = 0, l = oldIDs.length; i < l; i++) {
            uniqueID = oldIDs[i];
            if (Array.indexOf(refreshedIDs, uniqueID) === -1 &&
                (Array.indexOf(newIDs, uniqueID) === -1 || Array.indexOf(childIDs, uniqueID) > -1)) {
                Array.add(deleted, document.getElementById(oldClientIDs[i]));
            }
        }

        return new Sys.WebForms.PageLoadingEventArgs(updated, deleted, data.dataItems);
    },

    _getPostBackSettings: function PageRequestManager$_getPostBackSettings(element, elementUniqueID) {

        var originalElement = element;

        var proposedSettings = null;

        while (element) {
            if (element.id) {
                if (!proposedSettings && Array.contains(this._asyncPostBackControlClientIDs, element.id)) {
                    proposedSettings = this._createPostBackSettings(true, null, elementUniqueID, originalElement);
                }
                else {
                    if (!proposedSettings && Array.contains(this._postBackControlClientIDs, element.id)) {
                        return this._createPostBackSettings(false);
                    }
                    else {
                        var indexOfPanel = Array.indexOf(this._updatePanelClientIDs, element.id);
                        if (indexOfPanel !== -1) {
                            if (this._updatePanelHasChildrenAsTriggers[indexOfPanel]) {

                                return this._createPostBackSettings(true, [this._updatePanelIDs[indexOfPanel]], elementUniqueID, originalElement);
                            }
                            else {
                                return this._createPostBackSettings(true, null, elementUniqueID, originalElement);
                            }
                        }
                    }
                }

                if (!proposedSettings && this._matchesParentIDInList(element.id, this._asyncPostBackControlClientIDs)) {
                    proposedSettings = this._createPostBackSettings(true, null, elementUniqueID, originalElement);
                }
                else {
                    if (!proposedSettings && this._matchesParentIDInList(element.id, this._postBackControlClientIDs)) {
                        return this._createPostBackSettings(false);
                    }
                }
            }

            element = element.parentNode;
        }

        if (!proposedSettings) {
            return this._createPostBackSettings(false);
        }
        else {
            return proposedSettings;
        }
    },

    _getScrollPosition: function PageRequestManager$_getScrollPosition() {
        var d = document.documentElement;
        if (d && (this._validPosition(d.scrollLeft) || this._validPosition(d.scrollTop))) {
            return {
                x: d.scrollLeft,
                y: d.scrollTop
            };
        }
        else {
            d = document.body;
            if (d && (this._validPosition(d.scrollLeft) || this._validPosition(d.scrollTop))) {
                return {
                    x: d.scrollLeft,
                    y: d.scrollTop
                };
            }
            else {
                if (this._validPosition(window.pageXOffset) || this._validPosition(window.pageYOffset)) {
                    return {
                        x: window.pageXOffset,
                        y: window.pageYOffset
                    };
                }
                else {
                    return {
                        x: 0,
                        y: 0
                    };
                }
            }
        }
    },

    _initializeInternal: function PageRequestManager$_initializeInternal(scriptManagerID, formElement, updatePanelIDs, asyncPostBackControlIDs, postBackControlIDs, asyncPostBackTimeout, masterPageUniqueID) {
        if (this._prmInitialized) {
            throw Error.invalidOperation(Sys.WebForms.Res.PRM_CannotRegisterTwice);
        }
        this._prmInitialized = true;
        this._masterPageUniqueID = masterPageUniqueID;
        this._scriptManagerID = scriptManagerID;
        this._form = Sys.UI.DomElement.resolveElement(formElement);
        this._onsubmit = this._form.onsubmit;
        this._form.onsubmit = null;
        this._onFormSubmitHandler = Function.createDelegate(this, this._onFormSubmit);
        this._onFormElementClickHandler = Function.createDelegate(this, this._onFormElementClick);
        this._onWindowUnloadHandler = Function.createDelegate(this, this._onWindowUnload);
        Sys.UI.DomEvent.addHandler(this._form, 'submit', this._onFormSubmitHandler);
        Sys.UI.DomEvent.addHandler(this._form, 'click', this._onFormElementClickHandler);
        Sys.UI.DomEvent.addHandler(window, 'unload', this._onWindowUnloadHandler);

        this._originalDoPostBack = window.__doPostBack;
        if (this._originalDoPostBack) {
            window.__doPostBack = Function.createDelegate(this, this._doPostBack);
        }
        this._originalDoPostBackWithOptions = window.WebForm_DoPostBackWithOptions;
        if (this._originalDoPostBackWithOptions) {
            window.WebForm_DoPostBackWithOptions = Function.createDelegate(this, this._doPostBackWithOptions);
        }
        this._originalFireDefaultButton = window.WebForm_FireDefaultButton;
        if (this._originalFireDefaultButton) {
            window.WebForm_FireDefaultButton = Function.createDelegate(this, this._fireDefaultButton);
        }
        this._originalDoCallback = window.WebForm_DoCallback;
        if (this._originalDoCallback) {
            window.WebForm_DoCallback = Function.createDelegate(this, this._doCallback);
        }

        this._pageLoadedHandler = Function.createDelegate(this, this._pageLoadedInitialLoad);
        Sys.UI.DomEvent.addHandler(window, 'load', this._pageLoadedHandler);
        if (updatePanelIDs) {
            this._updateControls(updatePanelIDs, asyncPostBackControlIDs, postBackControlIDs, asyncPostBackTimeout, true);
        }
    },

    _matchesParentIDInList: function PageRequestManager$_matchesParentIDInList(clientID, parentIDList) {
        for (var i = 0, l = parentIDList.length; i < l; i++) {
            if (clientID.startsWith(parentIDList[i] + "_")) {
                return true;
            }
        }
        return false;
    },
    
    _onFormElementActive: function PageRequestManager$_onFormElementActive(element, offsetX, offsetY) {
        if (element.disabled) {
            return;
        }

        this._postBackSettings = this._getPostBackSettings(element, element.name);

        if (element.name) {
            var tagName = element.tagName.toUpperCase();
            if (tagName === 'INPUT') {
                var type = element.type;
                if (type === 'submit') {
                    this._additionalInput = encodeURIComponent(element.name) + '=' + encodeURIComponent(element.value);
                }
                else if (type === 'image') {
                    this._additionalInput = encodeURIComponent(element.name) + '.x=' + offsetX + '&' + encodeURIComponent(element.name) + '.y=' + offsetY;
                }
            }
            else if ((tagName === 'BUTTON') && (element.name.length !== 0) && (element.type === 'submit')) {
                this._additionalInput = encodeURIComponent(element.name) + '=' + encodeURIComponent(element.value);
            }
        }
    },

    _onFormElementClick: function PageRequestManager$_onFormElementClick(evt) {
        this._activeDefaultButtonClicked = (evt.target === this._activeDefaultButton);
        this._onFormElementActive(evt.target, evt.offsetX, evt.offsetY);
    },

    _onFormSubmit: function PageRequestManager$_onFormSubmit(evt) {
        var i, l, continueSubmit = true,
            isCrossPost = this._isCrossPost;
        this._isCrossPost = false;

        if (this._onsubmit) {
            continueSubmit = this._onsubmit();
        }

        if (continueSubmit) {
            for (i = 0, l = this._onSubmitStatements.length; i < l; i++) {
                if (!this._onSubmitStatements[i]()) {
                    continueSubmit = false;
                    break;
                }
            }
        }

        if (!continueSubmit) {
            if (evt) {
                evt.preventDefault();
            }
            return;
        }

        var form = this._form;
        if (isCrossPost) {
            return;
        }

        if (this._activeDefaultButton && !this._activeDefaultButtonClicked) {
            this._onFormElementActive(this._activeDefaultButton, 0, 0);
        }

        if (!this._postBackSettings || !this._postBackSettings.async) {
            return;
        }

        var formBody = new Sys.StringBuilder(),
            count = form.elements.length,
            panelID = this._createPanelID(null, this._postBackSettings);
        formBody.append(panelID);

        for (i = 0; i < count; i++) {
            var element = form.elements[i];
            var name = element.name;
            if (typeof(name) === "undefined" || (name === null) || (name.length === 0) || (name === this._scriptManagerID)) {
                continue;
            }

            var tagName = element.tagName.toUpperCase();

            if (tagName === 'INPUT') {
                var type = element.type;
                if ((type === 'text') ||
                    (type === 'password') ||
                    (type === 'hidden') ||
                    (((type === 'checkbox') || (type === 'radio')) && element.checked)) {
                    formBody.append(encodeURIComponent(name));
                    formBody.append('=');
                    formBody.append(encodeURIComponent(element.value));
                    formBody.append('&');
                }
            }
            else if (tagName === 'SELECT') {
                var optionCount = element.options.length;
                for (var j = 0; j < optionCount; j++) {
                    var option = element.options[j];
                    if (option.selected) {
                        formBody.append(encodeURIComponent(name));
                        formBody.append('=');
                        formBody.append(encodeURIComponent(option.value));
                        formBody.append('&');
                    }
                }
            }
            else if (tagName === 'TEXTAREA') {
                formBody.append(encodeURIComponent(name));
                formBody.append('=');
                formBody.append(encodeURIComponent(element.value));
                formBody.append('&');
            }
        }

        formBody.append("__ASYNCPOST=true&");

        if (this._additionalInput) {
            formBody.append(this._additionalInput);
            this._additionalInput = null;
        }
        
        var request = new Sys.Net.WebRequest();
        var action = form.action;
        if (Sys.Browser.agent === Sys.Browser.InternetExplorer) {
            var fragmentIndex = action.indexOf('#');
            if (fragmentIndex !== -1) {
                action = action.substr(0, fragmentIndex);
            }
            var queryIndex = action.indexOf('?');
            if (queryIndex !== -1) {
                var path = action.substr(0, queryIndex);
                if (path.indexOf("%") === -1) {
                    action = encodeURI(path) + action.substr(queryIndex);
                }
            }
            else if (action.indexOf("%") === -1) {
                action = encodeURI(action);
            }
        }
        request.set_url(action);
        request.get_headers()['X-MicrosoftAjax'] = 'Delta=true';
        request.get_headers()['Cache-Control'] = 'no-cache';
        request.set_timeout(this._asyncPostBackTimeout);
        request.add_completed(Function.createDelegate(this, this._onFormSubmitCompleted));
        request.set_body(formBody.toString());
        var panelsToUpdate, eventArgs;
        panelsToUpdate = this._postBackSettings.panelsToUpdate;
        eventArgs = new Sys.WebForms.InitializeRequestEventArgs(request, this._postBackSettings.sourceElement, panelsToUpdate);
        Sys.Observer.raiseEvent(this, "initializeRequest", eventArgs);
        continueSubmit = !eventArgs.get_cancel();

        if (!continueSubmit) {
            if (evt) {
                evt.preventDefault();
            }
            return;
        }
        
        if (eventArgs && eventArgs._updated) {
            panelsToUpdate = eventArgs.get_updatePanelsToUpdate();
            request.set_body(request.get_body().replace(panelID, this._createPanelID(panelsToUpdate, this._postBackSettings)));
        }

        this._scrollPosition = this._getScrollPosition();


        this.abortPostBack();

        eventArgs = new Sys.WebForms.BeginRequestEventArgs(request, this._postBackSettings.sourceElement,
            panelsToUpdate || this._postBackSettings.panelsToUpdate);
        Sys.Observer.raiseEvent(this, "beginRequest", eventArgs);
        
        if (this._originalDoCallback) {
            this._cancelPendingCallbacks();
        }

        this._request = request;
        this._processingRequest = false;
        request.invoke();

        if (evt) {
            evt.preventDefault();
        }
    },

    _onFormSubmitCompleted: function PageRequestManager$_onFormSubmitCompleted(sender, eventArgs) {
        this._processingRequest = true;


        if (sender.get_timedOut()) {
            this._endPostBack(this._createPageRequestManagerTimeoutError(), sender, null);
            return;
        }

        if (sender.get_aborted()) {
            this._endPostBack(null, sender, null);
            return;
        }

        if (!this._request || (sender.get_webRequest() !== this._request)) {
            return;
        }

        if (sender.get_statusCode() !== 200) {
            this._endPostBack(this._createPageRequestManagerServerError(sender.get_statusCode()), sender, null);
            return;
        }

        var data = this._parseDelta(sender);
        if (!data) return;
        
        var i, l;

        if (data.asyncPostBackControlIDsNode && data.postBackControlIDsNode &&
            data.updatePanelIDsNode && data.panelsToRefreshNode && data.childUpdatePanelIDsNode) {
            
            var oldUpdatePanelIDs = this._updatePanelIDs,
                oldUpdatePanelClientIDs = this._updatePanelClientIDs;
            var childUpdatePanelIDsString = data.childUpdatePanelIDsNode.content;
            var childUpdatePanelIDs = childUpdatePanelIDsString.length ? childUpdatePanelIDsString.split(',') : [];

            var asyncPostBackControlIDsArray = this._splitNodeIntoArray(data.asyncPostBackControlIDsNode);
            var postBackControlIDsArray = this._splitNodeIntoArray(data.postBackControlIDsNode);
            var updatePanelIDsArray = this._splitNodeIntoArray(data.updatePanelIDsNode);
            var panelsToRefreshIDs = this._splitNodeIntoArray(data.panelsToRefreshNode);

            var v4 = data.version4;
            for (i = 0, l = panelsToRefreshIDs.length; i < l; i+= (v4 ? 2 : 1)) {
                var panelClientID = (v4 ? panelsToRefreshIDs[i+1] : "") || this._uniqueIDToClientID(panelsToRefreshIDs[i]);
                if (!document.getElementById(panelClientID)) {
                    this._endPostBack(Error.invalidOperation(String.format(Sys.WebForms.Res.PRM_MissingPanel, panelClientID)), sender, data);
                    return;
                }
            }
            
            var updatePanelData = this._processUpdatePanelArrays(
                updatePanelIDsArray,
                asyncPostBackControlIDsArray,
                postBackControlIDsArray, v4);
            updatePanelData.oldUpdatePanelIDs = oldUpdatePanelIDs;
            updatePanelData.oldUpdatePanelClientIDs = oldUpdatePanelClientIDs;
            updatePanelData.childUpdatePanelIDs = childUpdatePanelIDs;
            updatePanelData.panelsToRefreshIDs = panelsToRefreshIDs;
            data.updatePanelData = updatePanelData;
        }

        data.dataItems = {};
        var node;
        for (i = 0, l = data.dataItemNodes.length; i < l; i++) {
            node = data.dataItemNodes[i];
            data.dataItems[node.id] = node.content;
        }
        for (i = 0, l = data.dataItemJsonNodes.length; i < l; i++) {
            node = data.dataItemJsonNodes[i];
            data.dataItems[node.id] = Sys.Serialization.JavaScriptSerializer.deserialize(node.content);
        }

        var handler = Sys.Observer._getContext(this, true).events.getHandler("pageLoading");
        if (handler) {
            handler(this, this._getPageLoadingEventArgs(data));
        }


        
        Sys._ScriptLoader.readLoadedScripts();

        Sys.Application.beginCreateComponents();

        var scriptLoader = Sys._ScriptLoader.getInstance();
        this._queueScripts(scriptLoader, data.scriptBlockNodes, true, false);
        
        this._processingRequest = true;

        scriptLoader.loadScripts(0,
            Function.createDelegate(this, Function.createCallback(this._scriptIncludesLoadComplete, data)),
            Function.createDelegate(this, Function.createCallback(this._scriptIncludesLoadFailed, data)),
            null);        
    },
    
    _onWindowUnload: function PageRequestManager$_onWindowUnload(evt) {
        this.dispose();
    },

    _pageLoaded: function PageRequestManager$_pageLoaded(initialLoad, data) {
        Sys.Observer.raiseEvent(this, "pageLoaded", this._getPageLoadedEventArgs(initialLoad, data));
        if (!initialLoad) {
            Sys.Application.raiseLoad();
        }
    },

    _pageLoadedInitialLoad: function PageRequestManager$_pageLoadedInitialLoad(evt) {
        this._pageLoaded(true, null);
    },
    
    _parseDelta: function PageRequestManager$_parseDelta(executor) {
        var reply = executor.get_responseData();
        var delimiterIndex, len, type, id, content;
        var replyIndex = 0;
        var parserErrorDetails = null;
        var delta = [];

        while (replyIndex < reply.length) {
            delimiterIndex = reply.indexOf('|', replyIndex);
            if (delimiterIndex === -1) {
                parserErrorDetails = this._findText(reply, replyIndex);
                break;
            }
            len = parseInt(reply.substring(replyIndex, delimiterIndex), 10);
            if ((len % 1) !== 0) {
                parserErrorDetails = this._findText(reply, replyIndex);
                break;
            }
            replyIndex = delimiterIndex + 1;

            delimiterIndex = reply.indexOf('|', replyIndex);
            if (delimiterIndex === -1) {
                parserErrorDetails = this._findText(reply, replyIndex);
                break;
            }
            type = reply.substring(replyIndex, delimiterIndex);
            replyIndex = delimiterIndex + 1;

            delimiterIndex = reply.indexOf('|', replyIndex);
            if (delimiterIndex === -1) {
                parserErrorDetails = this._findText(reply, replyIndex);
                break;
            }
            id = reply.substring(replyIndex, delimiterIndex);
            replyIndex = delimiterIndex + 1;

            if ((replyIndex + len) >= reply.length) {
                parserErrorDetails = this._findText(reply, reply.length);
                break;
            }
            content = reply.substr(replyIndex, len);
            replyIndex += len;

            if (reply.charAt(replyIndex) !== '|') {
                parserErrorDetails = this._findText(reply, replyIndex);
                break;
            }

            replyIndex++;

            Array.add(delta, {type: type, id: id, content: content});
        }

        if (parserErrorDetails) {
            this._endPostBack(this._createPageRequestManagerParserError(String.format(Sys.WebForms.Res.PRM_ParserErrorDetails, parserErrorDetails)), executor, null);
            return null;
        }

        var updatePanelNodes = [];
        var hiddenFieldNodes = [];
        var arrayDeclarationNodes = [];
        var scriptBlockNodes = [];
        var scriptStartupNodes = [];
        var expandoNodes = [];
        var onSubmitNodes = [];
        var dataItemNodes = [];
        var dataItemJsonNodes = [];
        var scriptDisposeNodes = [];
        var asyncPostBackControlIDsNode, postBackControlIDsNode,
            updatePanelIDsNode, asyncPostBackTimeoutNode,
            childUpdatePanelIDsNode, panelsToRefreshNode, formActionNode,
            versionNode;

        for (var i = 0, l = delta.length; i < l; i++) {
            var deltaNode = delta[i];
            switch (deltaNode.type) {
                case "#":
                    versionNode = deltaNode;
                    break;
                case "updatePanel":
                    Array.add(updatePanelNodes, deltaNode);
                    break;
                case "hiddenField":
                    Array.add(hiddenFieldNodes, deltaNode);
                    break;
                case "arrayDeclaration":
                    Array.add(arrayDeclarationNodes, deltaNode);
                    break;
                case "scriptBlock":
                    Array.add(scriptBlockNodes, deltaNode);
                    break;
                case "scriptStartupBlock":
                    Array.add(scriptStartupNodes, deltaNode);
                    break;
                case "expando":
                    Array.add(expandoNodes, deltaNode);
                    break;
                case "onSubmit":
                    Array.add(onSubmitNodes, deltaNode);
                    break;
                case "asyncPostBackControlIDs":
                    asyncPostBackControlIDsNode = deltaNode;
                    break;
                case "postBackControlIDs":
                    postBackControlIDsNode = deltaNode;
                    break;
                case "updatePanelIDs":
                    updatePanelIDsNode = deltaNode;
                    break;
                case "asyncPostBackTimeout":
                    asyncPostBackTimeoutNode = deltaNode;
                    break;
                case "childUpdatePanelIDs":
                    childUpdatePanelIDsNode = deltaNode;
                    break;
                case "panelsToRefreshIDs":
                    panelsToRefreshNode = deltaNode;
                    break;
                case "formAction":
                    formActionNode = deltaNode;
                    break;
                case "dataItem":
                    Array.add(dataItemNodes, deltaNode);
                    break;
                case "dataItemJson":
                    Array.add(dataItemJsonNodes, deltaNode);
                    break;
                case "scriptDispose":
                    Array.add(scriptDisposeNodes, deltaNode);
                    break;
                case "pageRedirect":
                    if (versionNode && parseFloat(versionNode.content) >= 4) {
                        deltaNode.content = unescape(deltaNode.content);
                    }
                    if (Sys.Browser.agent === Sys.Browser.InternetExplorer) {
                        var anchor = document.createElement("a");
                        anchor.style.display = 'none';
                        anchor.attachEvent("onclick", cancelBubble);
                        anchor.href = deltaNode.content;
                        this._form.parentNode.insertBefore(anchor, this._form);
                        anchor.click();
                        anchor.detachEvent("onclick", cancelBubble);
                        this._form.parentNode.removeChild(anchor);
                        
                        function cancelBubble(e) {
                            e.cancelBubble = true;
                        }
                    }
                    else {
                        window.location.href = deltaNode.content;
                    }
                    return null;
                case "error":
                    this._endPostBack(this._createPageRequestManagerServerError(Number.parseInvariant(deltaNode.id), deltaNode.content), executor, null);
                    return null;
                case "pageTitle":
                    document.title = deltaNode.content;
                    break;
                case "focus":
                    this._controlIDToFocus = deltaNode.content;
                    break;
                default:
                    this._endPostBack(this._createPageRequestManagerParserError(String.format(Sys.WebForms.Res.PRM_UnknownToken, deltaNode.type)), executor, null);
                    return null;
            } // switch
        } // for (var i = 0, l = delta.length; i < l; i++)
        return {
            version4: versionNode ? (parseFloat(versionNode.content) >= 4) : false,
            executor: executor,
            updatePanelNodes: updatePanelNodes,
            hiddenFieldNodes: hiddenFieldNodes,
            arrayDeclarationNodes: arrayDeclarationNodes,
            scriptBlockNodes: scriptBlockNodes,
            scriptStartupNodes: scriptStartupNodes,
            expandoNodes: expandoNodes,
            onSubmitNodes: onSubmitNodes,
            dataItemNodes: dataItemNodes,
            dataItemJsonNodes: dataItemJsonNodes,
            scriptDisposeNodes: scriptDisposeNodes,
            asyncPostBackControlIDsNode: asyncPostBackControlIDsNode,
            postBackControlIDsNode: postBackControlIDsNode,
            updatePanelIDsNode: updatePanelIDsNode,
            asyncPostBackTimeoutNode: asyncPostBackTimeoutNode,
            childUpdatePanelIDsNode: childUpdatePanelIDsNode,
            panelsToRefreshNode: panelsToRefreshNode,
            formActionNode: formActionNode };
    },
    
    _processUpdatePanelArrays: function PageRequestManager$_processUpdatePanelArrays(updatePanelIDs, asyncPostBackControlIDs, postBackControlIDs, version4) {
        var newUpdatePanelIDs, newUpdatePanelClientIDs, newUpdatePanelHasChildrenAsTriggers;
        
        if (updatePanelIDs) {
            var l = updatePanelIDs.length,
                m = version4 ? 2 : 1;
            newUpdatePanelIDs = new Array(l/m);
            newUpdatePanelClientIDs = new Array(l/m);
            newUpdatePanelHasChildrenAsTriggers = new Array(l/m);
            
            for (var i = 0, j = 0; i < l; i += m, j++) {
                var ct,
                    uniqueID = updatePanelIDs[i],
                    clientID = version4 ? updatePanelIDs[i+1] : "";
                ct = (uniqueID.charAt(0) === 't');
                uniqueID = uniqueID.substr(1);
                if (!clientID) {
                    clientID = this._uniqueIDToClientID(uniqueID);
                }
                newUpdatePanelHasChildrenAsTriggers[j] = ct;
                newUpdatePanelIDs[j] = uniqueID;
                newUpdatePanelClientIDs[j] = clientID;
            }
        }
        else {
            newUpdatePanelIDs = [];
            newUpdatePanelClientIDs = [];
            newUpdatePanelHasChildrenAsTriggers = [];
        }

        var newAsyncPostBackControlIDs = [];
        var newAsyncPostBackControlClientIDs = [];
        this._convertToClientIDs(asyncPostBackControlIDs, newAsyncPostBackControlIDs, newAsyncPostBackControlClientIDs, version4);

        var newPostBackControlIDs = [];
        var newPostBackControlClientIDs = [];
        this._convertToClientIDs(postBackControlIDs, newPostBackControlIDs, newPostBackControlClientIDs, version4);
        
        return {
            updatePanelIDs: newUpdatePanelIDs,
            updatePanelClientIDs: newUpdatePanelClientIDs,
            updatePanelHasChildrenAsTriggers: newUpdatePanelHasChildrenAsTriggers,
            asyncPostBackControlIDs: newAsyncPostBackControlIDs,
            asyncPostBackControlClientIDs: newAsyncPostBackControlClientIDs,
            postBackControlIDs: newPostBackControlIDs,
            postBackControlClientIDs: newPostBackControlClientIDs
        };
    },
    
    _queueScripts: function PageRequestManager$_queueScripts(scriptLoader, scriptBlockNodes, queueIncludes, queueBlocks) {
        for (var i = 0, l = scriptBlockNodes.length; i < l; i++) {
            var scriptBlockType = scriptBlockNodes[i].id;
            switch (scriptBlockType) {
                case "ScriptContentNoTags":
                    if (!queueBlocks) {
                        continue;
                    }
                    scriptLoader.queueScriptBlock(scriptBlockNodes[i].content);
                    break;
                case "ScriptContentWithTags":
                    var scriptTagAttributes = window.eval("(" + scriptBlockNodes[i].content + ")");

                    if (scriptTagAttributes.src) {
                        if (!queueIncludes || Sys._ScriptLoader.isScriptLoaded(scriptTagAttributes.src)) {
                            continue;
                        }
                    }
                    else if (!queueBlocks) {
                        continue;
                    }

                    scriptLoader.queueCustomScriptTag(scriptTagAttributes);
                    break;
                case "ScriptPath":
                    if (!queueIncludes || Sys._ScriptLoader.isScriptLoaded(scriptBlockNodes[i].content)) {
                        continue;
                    }

                    scriptLoader.queueScriptReference(scriptBlockNodes[i].content);
                    break;
            }
        }        
    },

    _registerDisposeScript: function PageRequestManager$_registerDisposeScript(panelID, disposeScript) {
        if (!this._scriptDisposes[panelID]) {
            this._scriptDisposes[panelID] = [disposeScript];
        }
        else {
            Array.add(this._scriptDisposes[panelID], disposeScript);
        }
    },
    
    _scriptIncludesLoadComplete: function PageRequestManager$_scriptIncludesLoadComplete(scriptLoader, data) {
        if (data.executor.get_webRequest() !== this._request) {
            return;
        }
        
        this._commitControls(data.updatePanelData,
            data.asyncPostBackTimeoutNode ? data.asyncPostBackTimeoutNode.content : null);

        if (data.formActionNode) {
            this._form.action = data.formActionNode.content;
        }
        
        var i, l, node;

        for (i = 0, l = data.updatePanelNodes.length; i < l; i++) {
            node = data.updatePanelNodes[i];
            var updatePanelElement = document.getElementById(node.id);

            if (!updatePanelElement) {
                this._endPostBack(Error.invalidOperation(String.format(Sys.WebForms.Res.PRM_MissingPanel, node.id)), data.executor, data);
                return;
            }

            this._updatePanel(updatePanelElement, node.content);
        }

        for (i = 0, l = data.scriptDisposeNodes.length; i < l; i++) {
            node = data.scriptDisposeNodes[i];
            this._registerDisposeScript(node.id, node.content);
        }

        for (i = 0, l = this._transientFields.length; i < l; i++) {
            var field = document.getElementById(this._transientFields[i]);
            if (field) {
                var toRemove = field._isContained ? field.parentNode : field;
                toRemove.parentNode.removeChild(toRemove);
            }
        }
        for (i = 0, l = data.hiddenFieldNodes.length; i < l; i++) {
            node = data.hiddenFieldNodes[i];
            this._createHiddenField(node.id, node.content);
        }
        
        if (data.scriptsFailed) {
            throw Sys._ScriptLoader._errorScriptLoadFailed(data.scriptsFailed.src, data.scriptsFailed.multipleCallbacks);
        }
        

        this._queueScripts(scriptLoader, data.scriptBlockNodes, false, true);

        var arrayScript = '';
        for (i = 0, l = data.arrayDeclarationNodes.length; i < l; i++) {
            node = data.arrayDeclarationNodes[i];
            arrayScript += "Sys.WebForms.PageRequestManager._addArrayElement('" + node.id + "', " + node.content + ");\r\n";
        }

        var expandoScript = '';
        for (i = 0, l = data.expandoNodes.length; i < l; i++) {
            node = data.expandoNodes[i];
            expandoScript += node.id + " = " + node.content + "\r\n";
        }

        if (arrayScript.length) {
            scriptLoader.queueScriptBlock(arrayScript);
        }
        if (expandoScript.length) {
            scriptLoader.queueScriptBlock(expandoScript);
        }
        
        this._queueScripts(scriptLoader, data.scriptStartupNodes, true, true);

        var onSubmitStatementScript = '';
        for (i = 0, l = data.onSubmitNodes.length; i < l; i++) {
            if (i === 0) {
                onSubmitStatementScript = 'Array.add(Sys.WebForms.PageRequestManager.getInstance()._onSubmitStatements, function() {\r\n';
            }
            onSubmitStatementScript += data.onSubmitNodes[i].content + "\r\n";
        }
        if (onSubmitStatementScript.length) {
            onSubmitStatementScript += "\r\nreturn true;\r\n});\r\n";
            scriptLoader.queueScriptBlock(onSubmitStatementScript);
        }

        scriptLoader.loadScripts(0,
            Function.createDelegate(this, Function.createCallback(this._scriptsLoadComplete, data)), null, null);

    },
    
    _scriptIncludesLoadFailed: function PageRequestManager$_scriptIncludesLoadFailed(scriptLoader, scriptElement, multipleCallbacks, data) {
        data.scriptsFailed = { src: scriptElement.src, multipleCallbacks: multipleCallbacks };
        this._scriptIncludesLoadComplete(scriptLoader, data);
    },

    _scriptsLoadComplete: function PageRequestManager$_scriptsLoadComplete(scriptLoader, data) {
        var response = data.executor;

        if (window.__theFormPostData) {
            window.__theFormPostData = "";
        }
        if (window.__theFormPostCollection) {
            window.__theFormPostCollection = [];
        }
        if (window.WebForm_InitCallback) {
            window.WebForm_InitCallback();
        }

        if (this._scrollPosition) {
            if (window.scrollTo) {
                window.scrollTo(this._scrollPosition.x, this._scrollPosition.y);
            }
            this._scrollPosition = null;
        }

        Sys.Application.endCreateComponents();

        this._pageLoaded(false, data);

        this._endPostBack(null, response, data);

        if (this._controlIDToFocus) {
            var focusTarget;
            var oldContentEditableSetting;
            if (Sys.Browser.agent === Sys.Browser.InternetExplorer) {
                var targetControl = $get(this._controlIDToFocus);

                focusTarget = targetControl;
                if (targetControl && (!WebForm_CanFocus(targetControl))) {
                    focusTarget = WebForm_FindFirstFocusableChild(targetControl);
                }
                if (focusTarget && (typeof(focusTarget.contentEditable) !== "undefined")) {
                    oldContentEditableSetting = focusTarget.contentEditable;
                    focusTarget.contentEditable = false;
                }
                else {
                    focusTarget = null;
                }
            }
            WebForm_AutoFocus(this._controlIDToFocus);
            if (focusTarget) {
                focusTarget.contentEditable = oldContentEditableSetting;
            }
            this._controlIDToFocus = null;
        }
    },

    _splitNodeIntoArray: function PageRequestManager$_splitNodeIntoArray(node) {
        var str = node.content;
        var arr = str.length ? str.split(',') : [];
        return arr;
    },

    _uniqueIDToClientID: function PageRequestManager$_uniqueIDToClientID(uniqueID) {
        return uniqueID.replace(/\$/g, '_');
    },
    
    _updateControls: function PageRequestManager$_updateControls(updatePanelIDs, asyncPostBackControlIDs, postBackControlIDs, asyncPostBackTimeout, version4) {
        this._commitControls(
            this._processUpdatePanelArrays(updatePanelIDs, asyncPostBackControlIDs, postBackControlIDs, version4),
            asyncPostBackTimeout);
    },
    
    _updatePanel: function PageRequestManager$_updatePanel(updatePanelElement, rendering) {
        for (var updatePanelID in this._scriptDisposes) {
            if (this._elementContains(updatePanelElement, document.getElementById(updatePanelID))) {
                var disposeScripts = this._scriptDisposes[updatePanelID];
                for (var i = 0, l = disposeScripts.length; i < l; i++) {
                    window.eval(disposeScripts[i]);
                }

                delete this._scriptDisposes[updatePanelID];
            }
        }

        Sys.Application.disposeElement(updatePanelElement, true);

        updatePanelElement.innerHTML = rendering;
    },

    _validPosition: function PageRequestManager$_validPosition(position) {
        return (typeof(position) !== "undefined") && (position !== null) && (position !== 0);
    }
}

$type.getInstance = function PageRequestManager$getInstance() {
    /// <summary locid="M:J#Sys.WebForms.PageRequestManager.getInstance">Gets the current instance of the PageRequestManager.</summary>
    /// <returns type="Sys.WebForms.PageRequestManager"></returns>
    if (arguments.length !== 0) throw Error.parameterCount();
    var prm = Sys.WebForms.PageRequestManager._instance;
    if (!prm) {
        prm = Sys.WebForms.PageRequestManager._instance = new Sys.WebForms.PageRequestManager();
    }
    return prm;
}

$type._addArrayElement = function PageRequestManager$_addArrayElement(arrayName) {
    if (!window[arrayName]) {
        window[arrayName] = new Array();
    }

    for (var i = 1, l = arguments.length; i < l; i++) {
        Array.add(window[arrayName], arguments[i]);
    }
}

$type._initialize = function PageRequestManager$_initialize() {
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm._initializeInternal.apply(prm, arguments);
}

$type.registerClass('Sys.WebForms.PageRequestManager');
$type = Sys.UI._UpdateProgress = function _UpdateProgress(element) {
    Sys.UI._UpdateProgress.initializeBase(this,[element]);
    this._displayAfter = 500;
    this._dynamicLayout = true;
    this._associatedUpdatePanelId = null;
    this._beginRequestHandlerDelegate = null;
    this._startDelegate = null;
    this._endRequestHandlerDelegate = null;
    this._pageRequestManager = null;
    this._timerCookie = null;
}
$type.prototype = {
    get_displayAfter: function _UpdateProgress$get_displayAfter() {
        /// <value type="Number" locid="P:J#Sys.UI._UpdateProgress.displayAfter"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._displayAfter;
    },
    set_displayAfter: function _UpdateProgress$set_displayAfter(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
        if (e) throw e;
        this._displayAfter = value;
    },
    get_dynamicLayout: function _UpdateProgress$get_dynamicLayout() {
        /// <value type="Boolean" locid="P:J#Sys.UI._UpdateProgress.dynamicLayout"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._dynamicLayout;
    },
    set_dynamicLayout: function _UpdateProgress$set_dynamicLayout(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
        if (e) throw e;
        this._dynamicLayout = value;
    },
    get_associatedUpdatePanelId: function _UpdateProgress$get_associatedUpdatePanelId() {
        /// <value type="String" mayBeNull="true" locid="P:J#Sys.UI._UpdateProgress.associatedUpdatePanelId"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._associatedUpdatePanelId;
    },
    set_associatedUpdatePanelId: function _UpdateProgress$set_associatedUpdatePanelId(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: String, mayBeNull: true}]);
        if (e) throw e;
        this._associatedUpdatePanelId = value;
    },
    get_role: function _UpdateProgress$get_role() {
        /// <value type="String" locid="P:J#Sys.UI._UpdateProgress.role"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return "status";
    },
    _clearTimeout: function _UpdateProgress$_clearTimeout() {
        if (this._timerCookie) {
            window.clearTimeout(this._timerCookie);
            this._timerCookie = null;
        }
    },
    _getUniqueID: function _UpdateProgress$_getUniqueID(clientID) {
        var i = Array.indexOf(this._pageRequestManager._updatePanelClientIDs, clientID);
        return i === -1 ? null : this._pageRequestManager._updatePanelIDs[i];
    },
    _handleBeginRequest: function _UpdateProgress$_handleBeginRequest(sender, arg) {
        var curElem = arg.get_postBackElement(),
            showProgress = true,
            upID = this._associatedUpdatePanelId;
        if (this._associatedUpdatePanelId) {
            var updating = arg.get_updatePanelsToUpdate();
            if (updating && updating.length) {
                showProgress = (Array.contains(updating, upID) || Array.contains(updating, this._getUniqueID(upID)))
            }
            else {
                showProgress = false;
            }
        }
        while (!showProgress && curElem) {
            if (curElem.id && this._associatedUpdatePanelId === curElem.id) {
                showProgress = true; 
            }
            curElem = curElem.parentNode; 
        } 
        if (showProgress) {
            this._timerCookie = window.setTimeout(this._startDelegate, this._displayAfter);
        }
    },
    _startRequest: function _UpdateProgress$_startRequest() {
        if (this._pageRequestManager.get_isInAsyncPostBack()) {
            var element = this.get_element();
            if (this._dynamicLayout) {
                element.style.display = 'block';
            }
            else {
                element.style.visibility = 'visible';
            }
            if (this.get_role() === "status") {
                element.setAttribute("aria-hidden", "false");
            }
        }
        this._timerCookie = null;
    },
    _handleEndRequest: function _UpdateProgress$_handleEndRequest(sender, arg) {
        var element = this.get_element();
        if (this._dynamicLayout) {
            element.style.display = 'none';
        }
        else {
            element.style.visibility = 'hidden';
        }
        if (this.get_role() === "status") {
            element.setAttribute("aria-hidden", "true");
        }
        this._clearTimeout();
    },
    dispose: function _UpdateProgress$dispose() {
        if (this._beginRequestHandlerDelegate !== null) {
            this._pageRequestManager.remove_beginRequest(this._beginRequestHandlerDelegate);
            this._pageRequestManager.remove_endRequest(this._endRequestHandlerDelegate);
            this._beginRequestHandlerDelegate = null;
            this._endRequestHandlerDelegate = null;
        }
        this._clearTimeout();
        Sys.UI._UpdateProgress.callBaseMethod(this,"dispose");
    },
    initialize: function _UpdateProgress$initialize() {
        Sys.UI._UpdateProgress.callBaseMethod(this, 'initialize');
        if (this.get_role() === "status") {
            this.get_element().setAttribute("aria-hidden", "true");
        }
    	this._beginRequestHandlerDelegate = Function.createDelegate(this, this._handleBeginRequest);
    	this._endRequestHandlerDelegate = Function.createDelegate(this, this._handleEndRequest);
    	this._startDelegate = Function.createDelegate(this, this._startRequest);
    	if (Sys.WebForms && Sys.WebForms.PageRequestManager) {
           this._pageRequestManager = Sys.WebForms.PageRequestManager.getInstance();
    	}
    	if (this._pageRequestManager !== null ) {
    	    this._pageRequestManager.add_beginRequest(this._beginRequestHandlerDelegate);
    	    this._pageRequestManager.add_endRequest(this._endRequestHandlerDelegate);
    	}
    }
}
$type.registerClass('Sys.UI._UpdateProgress', Sys.UI.Control);

}

if (window.Sys && Sys.loader) {
	Sys.loader.registerScript("WebForms", ["ComponentModel", "Serialization", "Network"], execute);
}
else {
	execute();
}

})();
L// (c) 2010 CodePlex Foundation

//!/ <reference name="MicrosoftAjaxDataContext.js" />
(function() {

function execute() {
Type._registerScript("MicrosoftAjaxOpenData.js", ["MicrosoftAjaxDataContext.js"]);

var $type, $prototype;
var merge = Sys._merge;
var forIn = Sys._forIn;

Type.registerNamespace("Sys.Data");

if (!Sys.Data.IDataProvider) {
$type = Sys.Data.IDataProvider = function Data$IDataProvider() {
}
$type.prototype = {
    fetchData: function IDataProvider$fetchData(operation, parameters, mergeOption, httpVerb, succeededCallback, failedCallback, timeout, userContext) {
        /// <summary locid="M:J#Sys.Data.IDataProvider.fetchData">Fetches data from the service.</summary>
        /// <param name="operation">The operation to fetch data with.</param>
        /// <param name="parameters" type="Object" mayBeNull="true" optional="true"></param>
        /// <param name="mergeOption" type="Sys.Data.MergeOption" mayBeNull="true" optional="true">Determines how the returned data is tracked if the DataProvider supports it.</param>
        /// <param name="httpVerb" type="String" mayBeNull="true" optional="true"></param>
        /// <param name="succeededCallback" type="Function" mayBeNull="true" optional="true"></param>
        /// <param name="failedCallback" type="Function" mayBeNull="true" optional="true"></param>
        /// <param name="timeout" type="Number" integer="true" mayBeNull="true" optional="true"></param>
        /// <param name="userContext" mayBeNull="true" optional="true"></param>
        /// <returns type="Sys.Net.WebRequest"></returns>
        throw Error.notImplemented();
    }
}
$type.registerInterface("Sys.Data.IDataProvider");
}
if (!Sys.Data.MergeOption) {
$type = Sys.Data.MergeOption = function Data$MergeOption() {
    /// <summary locid="M:J#Sys.Data.MergeOption.#ctor">Describes how an item has changed.</summary>
    /// <field name="appendOnly" type="Number" integer="true" static="true" locid="F:J#Sys.Data.MergeOption.appendOnly"></field>
    /// <field name="overwriteChanges" type="Number" integer="true" static="true" locid="F:J#Sys.Data.MergeOption.overwriteChanges"></field>
    throw Error.notImplemented();
}
$type.prototype = {
    appendOnly: 0,
    overwriteChanges: 1
}
$type.registerEnum("Sys.Data.MergeOption");

}
$type = Sys.Data.OpenDataQueryBuilder = function Data$OpenDataQueryBuilder(uri) {
    /// <summary locid="M:J#Sys.Data.OpenDataQueryBuilder.#ctor">Allows construction of ADO.NET Data Service queries.</summary>
    /// <param name="uri" type="String">The URI (absolute or relative) to parse.</param>
    this._queryParameters = {};
    this._uri = uri;
    var idxQuery = uri.indexOf('?');
    if (idxQuery >= 0) {
        this._uri = uri.substr(0, idxQuery);
        var params = uri.substr(idxQuery + 1).split('&');
        for (var i in params) {
            var param = params[i];
            var idxValue = param.indexOf('=');
            if (idxValue >= 0) {
                this._queryParameters[decodeURIComponent(param.substr(0, idxValue))] = decodeURIComponent(param.substr(idxValue + 1));
            }
            else {
                this._queryParameters[decodeURIComponent(param)] = "";
            }
        }
    }
}
$type.prototype = {
    _queryParameters: null,
    _uri: null,
    get_skip: function OpenDataQueryBuilder$get_skip() {
        /// <value type="Number" integer="true" mayBeNull="true" locid="P:J#Sys.Data.OpenDataQueryBuilder.skip">The number of elements to skip when returning results, or null if no skip value is specified.</value>
        return this._getIntParam("$skip");
    },
    set_skip: function OpenDataQueryBuilder$set_skip(value) {
        this._setParam("$skip", value);
    },
    get_top: function OpenDataQueryBuilder$get_top() {
        /// <value type="Number" integer="true" mayBeNull="true" locid="P:J#Sys.Data.OpenDataQueryBuilder.top">The maximum number of elements to return, or null if no maximum is specified.</value>
        return this._getIntParam("$top");
    },
    set_top: function OpenDataQueryBuilder$set_top(value) {
        this._setParam("$top", value);
    },
    get_orderby: function OpenDataQueryBuilder$get_orderby() {
        /// <value type="String" mayBeNull="true" locid="P:J#Sys.Data.OpenDataQueryBuilder.orderby">The ordering applied to the result set, or null if no ordering is specified.</value>
        return this._getStringParam("$orderby");
    },
    set_orderby: function OpenDataQueryBuilder$set_orderby(value) {
        this._setParam("$orderby", value);
    },
    get_filter: function OpenDataQueryBuilder$get_filter() {
        /// <value type="String" mayBeNull="true" locid="P:J#Sys.Data.OpenDataQueryBuilder.filter">The filter applied to the result set, or null if no filter is specified.</value>
        return this._getStringParam("$filter");
    },
    set_filter: function OpenDataQueryBuilder$set_filter(value) {
        this._setParam("$filter", value);
    },
    get_select: function OpenDataQueryBuilder$get_select() {
        /// <value type="String" mayBeNull="true" locid="P:J#Sys.Data.OpenDataQueryBuilder.select">A comma-delimited list of columns to retrieve.</value>
        return this._getStringParam("$select");
    },
    set_select: function OpenDataQueryBuilder$set_select(value) {
        this._setParam("$select", value);
    },
    get_expand: function OpenDataQueryBuilder$get_expand() {
        /// <value type="String" mayBeNull="true" locid="P:J#Sys.Data.OpenDataQueryBuilder.expand">The property expansion applied to the result set, or null if no property expansion is specified.</value>
        return this._getStringParam("$expand");
    },
    set_expand: function OpenDataQueryBuilder$set_expand(value) {
        this._setParam("$expand", value);
    },
    get_inlineCount: function OpenDataQueryBuilder$get_inlineCount() {
        /// <value type="String" mayBeNull="true" locid="P:J#Sys.Data.OpenDataQueryBuilder.inlineCount">.</value>
        return this._getStringParam("$inlinecount");
    },
    set_inlineCount: function OpenDataQueryBuilder$set_inlineCount(value) {
        this._setParam("$inlinecount", value);
    },
    get_resourcePath: function OpenDataQueryBuilder$get_resourcePath() {
        /// <value type="string" locid="P:J#Sys.Data.OpenDataQueryBuilder.resourcePath">The resource path of this QueryBuilder object.</value>
        return this._uri;
    },
    /* setter temporarily removed until we can figure out how to spec it
    set_resourcePath: function(value) {
    var idxQuery = value.indexOf('?');
    this._uri = (idxQuery >= 0) ? value.substr(0, idxQuery) : value;
    }, */
    get_queryParameters: function OpenDataQueryBuilder$get_queryParameters() {
        /// <value type="Object" locid="P:J#Sys.Data.OpenDataQueryBuilder.queryParameters">A dictionary of query parameters. This object will be non-null but may contain no fields if no query parameters have been set.</value>
        return this._queryParameters;
    },
    set_queryParameters: function OpenDataQueryBuilder$set_queryParameters(value) {
        this._queryParameters = value;
    },
    toString: function OpenDataQueryBuilder$toString() {
        /// <summary locid="M:J#Sys.Data.OpenDataQueryBuilder.toString">Generates a complete query string based on this object's resource path and parameter dictionary.</summary>
        /// <returns type="string">The complete query string.</returns>
        var key, i, value, params = new Array(), qParams = this._queryParameters, options = Sys.Data.OpenDataQueryBuilder._queryOptions;
        for (key in qParams) {
            if (qParams.hasOwnProperty(key) && !Array.contains(options, key)) {
                value = qParams[key];
                if (value != null) {
                    params.push({ key: key, value: value });
                }
            }
        }
        for (i in options) {
            key = options[i];
            value = qParams[key];
            if (value != null) {
                params.push({ key: key, value: value });
            }
        }

        var sb = new Sys.StringBuilder(this._uri);
        var firstElement = true;
        for (i in params) {
            if (params.hasOwnProperty(i)) {
                sb.append((firstElement) ? '?' : '&');
                sb.append(encodeURIComponent(params[i].key));
                sb.append('=');
                sb.append(encodeURIComponent(params[i].value));
                firstElement = false;
            }
        }
        return sb.toString();
    },
    _getIntParam: function OpenDataQueryBuilder$_getIntParam(name) {
        var value = parseInt(this._queryParameters[name]);
        return (isNaN(value)) ? null : value;
    },
    _getStringParam: function OpenDataQueryBuilder$_getStringParam(name) {
        var value = this._queryParameters[name];
        return value || null;
    },
    _setParam: function OpenDataQueryBuilder$_setParam(name, value) {
        if (typeof(value) === "undefined" || (value === null)) {
            delete this._queryParameters[name];
        }
        else {
            this._queryParameters[name] = value;
        }
    }
}

$type._queryOptions = ["$filter", "$orderby", "$skip", "$top"];
$type.registerClass("Sys.Data.OpenDataQueryBuilder");
$type = Sys.Data._OpenDataUtil = function Data$_OpenDataUtil() {
    throw Error.invalidOperation();
}

$type.concatUris = function _OpenDataUtil$concatUris(serviceUri, resourceUri) {
    if (resourceUri.indexOf("//") >= 0) {
        return resourceUri;
    }
    
    if (serviceUri.endsWith('/')) {
        serviceUri = serviceUri.substr(0, serviceUri.length - 1);
    }
    if (resourceUri.startsWith('/')) {
        resourceUri = resourceUri.substr(1);
    }
    return serviceUri + '/' + resourceUri;
}

$type.extractETag = function _OpenDataUtil$extractETag(item) {
    return (item.__metadata) ? (item.__metadata.etag || null) : null;
}

$type.extractUri = function _OpenDataUtil$extractUri(item) {
    return (item.__metadata) ? (item.__metadata.uri || null) : null;
}

$type.registerClass("Sys.Data._OpenDataUtil");    
$type = Sys.Data.OpenDataActionResult = function Data$OpenDataActionResult(result, httpHeaders, actionContext, operation) {
    /// <summary locid="M:J#Sys.Data.OpenDataActionResult.#ctor"></summary>
    /// <param name="result" mayBeNull="true">The result of the operation, or null if there was no result.</param>
    /// <param name="httpHeaders" mayBeNull="true">HTTP Headers.</param>
    /// <param name="actionContext" mayBeNull="true">A context associated with this operation.</param>
    /// <param name="operation" type="String">The operation that was performed.</param>
    this._result = result;
    this._headers = httpHeaders || {};
    this._actionContext = actionContext;
    this._operation = operation;
}
$type.prototype = {
    _actionContext: null,
    _operation: null,
    _result: null,
    _headers: null,
    get_httpHeaders: function OpenDataActionResult$get_httpHeaders() {
        /// <value type="Object" locid="P:J#Sys.Data.OpenDataActionResult.httpHeaders">A dictionary of HTTP headers associated with the entry for this action in a batch response.</value>
        return this._headers;
    },
    get_actionContext: function OpenDataActionResult$get_actionContext() {
        /// <value mayBeNull="true" locid="P:J#Sys.Data.OpenDataActionResult.actionContext">A context associated with this operation.</value>
        return this._actionContext;
    },
    get_operation: function OpenDataActionResult$get_operation() {
        /// <value type="String" locid="P:J#Sys.Data.OpenDataActionResult.operation">The operation that was performed.</value>
        return this._operation;
    },
    get_result: function OpenDataActionResult$get_result() {
        /// <value type="Object" mayBeNull="true" locid="P:J#Sys.Data.OpenDataActionResult.result">The result of the operation, or null if there was no result.</value>
        return this._result;
    }
}
$type.registerClass("Sys.Data.OpenDataActionResult");
$type = Sys.Data.OpenDataActionSequence = function Data$OpenDataActionSequence(dataService) {
    /// <summary locid="M:J#Sys.Data.OpenDataActionSequence.#ctor">Exposes methods for performing batch operations against a web-based data service.</summary>
    /// <param name="dataService" type="Sys.Data.OpenDataServiceProxy">The OpenDataServiceProxy object against which to perform operations.</param>
    this._actionQueue = [];
    this._dataService = dataService;
}
$type.prototype = {
    get_serviceProxy: function OpenDataActionSequence$get_serviceProxy() {
        /// <value type="Sys.Data.OpenDataServiceProxy" locid="P:J#Sys.Data.OpenDataActionSequence.serviceProxy">The DataService.</value>
        return this._dataService;
    },
    addInsertAction: function OpenDataActionSequence$addInsertAction(item, resourceSetUri, actionContext) {
        /// <summary locid="M:J#Sys.Data.OpenDataActionSequence.addInsertAction">Adds an insertion to the execution queue.</summary>
        /// <param name="item" type="Object">Item to insert.</param>
        /// <param name="resourceSetUri" type="String" mayBeNull="true">Resource set into which the item should be inserted.</param>
        /// <param name="actionContext" mayBeNull="true" optional="true">A context object associated with this operation.</param>
        this._actionQueue.push([0, resourceSetUri, item, actionContext]);
    },
    addUpdateAction: function OpenDataActionSequence$addUpdateAction(item, updateItemUri, actionContext) {
        /// <summary locid="M:J#Sys.Data.OpenDataActionSequence.addUpdateAction">Adds an update to the execution queue.</summary>
        /// <param name="item" type="Object">Item to serve as the body of the update.</param>
        /// <param name="updateItemUri" type="String" optional="true" mayBeNull="true">The uri of the item being updated, if different than the item.</param>
        /// <param name="actionContext" mayBeNull="true" optional="true">A context object associated with this operation.</param>
        var queue = this._actionQueue;
        this._actionQueue.push([1, updateItemUri || null, item, actionContext]);
    },
    addRemoveAction: function OpenDataActionSequence$addRemoveAction(item, actionContext) {
        /// <summary locid="M:J#Sys.Data.OpenDataActionSequence.addRemoveAction">Adds a removal to the execution queue.</summary>
        /// <param name="item" type="Object" mayBeNull="true">Item to remove.</param>
        /// <param name="actionContext" mayBeNull="true" optional="true">A context object associated with this operation.</param>
        this._actionQueue.push([2, null, item, actionContext]);
    },
    clearActions: function OpenDataActionSequence$clearActions() {
        /// <summary locid="M:J#Sys.Data.OpenDataActionSequence.clearActions">Clears the action queue.</summary>
        this._actionQueue = [];
    },
    execute: function OpenDataActionSequence$execute(succeededCallback, failedCallback, userContext) {
        /// <summary locid="M:J#Sys.Data.OpenDataActionSequence.execute">Executes operations in the action queue.</summary>
        /// <param name="succeededCallback" type="Function" mayBeNull="true" optional="true">Callback to execute upon completion of all operations.</param>
        /// <param name="failedCallback" type="Function" mayBeNull="true" optional="true">Callback to execute if the batch request fails.</param>
        /// <param name="userContext" mayBeNull="true" optional="true">A context object associated with this batch.</param>
        /// <returns type="Sys.Net.WebRequest"></returns>
        var queue = this._actionQueue,
            bw = new Sys.Data._OpenDataBatchWriter(window.location.host),
            ds = this._dataService;
        this._actionQueue = [];
        
        bw.startChangeSet();
        for (var i = 0, l = queue.length; i < l; i++) {
            var action = queue[i],
                uri = action[1],
                item = action[2],
                eTag = Sys.Data._OpenDataUtil.extractETag(item);
            switch (action[0]) {
                case 0:
                    action[0] = "insert";
                    bw.addChange(uri, eTag, "POST", Sys.Serialization.JavaScriptSerializer.serialize(item), i);
                    break;
                case 1:
                    action[0] = "edit";
                    if (!uri) {
                        uri = Sys.Data._OpenDataUtil.extractUri(item);
                    }
                    bw.addChange(uri, eTag, ds.get_replaceOnUpdate() ? "PUT" : "MERGE", Sys.Serialization.JavaScriptSerializer.serialize(item));
                    break;
                case 2:
                    action[0] = "remove";
                    uri = Sys.Data._OpenDataUtil.extractUri(item);
                    bw.addChange(uri, eTag, "DELETE", null);
                    break;
            }
        }
        bw.endChangeSet();

        var r = new Sys.Net.WebRequest();
        r.set_url(Sys.Data._OpenDataUtil.concatUris(ds.get_serviceUri(), "$batch"));
        r.get_headers()["Content-Type"] = "multipart/mixed; boundary=" + bw.get_topBoundary();
        r.set_httpVerb("POST");
        r.set_timeout(ds.get_timeout());
        r.set_body(bw.get_requestBody());
        r.set_userContext({ q: queue, bw: bw, c: userContext, s: succeededCallback, f: failedCallback });
        r.add_completed(Function.createDelegate(this, this._batchCompleted));
        r.invoke();
        return r;
    },
    _batchCompleted: function OpenDataActionSequence$_batchCompleted(executor) {
        var data, responses, response,
            ctx = executor.get_webRequest().get_userContext(),
            queue = ctx.q,
            onFailed = ctx.f,
            onSuccess = ctx.s,
            userContext = ctx.c,
            bw = ctx.bw,
            dsError = this._dataService._checkForError(executor, "actionSequence", false);
            
        function checkPartForError() {
            var status = response.status ? parseFloat(response.status.code) : -1;
            if (status < 200 || status > 300) {
                var message;
                if (response.headers["Content-Type"] === "application/json") {
                    var errorObj = Sys.Serialization.JavaScriptSerializer.deserialize(response.body);
                    dsError = Sys.Data.OpenDataActionSequence._getError(false, status, null, errorObj, "actionSequence");
                }
                else {
                    dsError = Sys.Data.OpenDataActionSequence._getError(false, status, String.format(Sys.Data.OpenDataRes.operationFailed, "actionSequence"));
                }
            }
        }
        function doError() {
            if (onFailed) {
                onFailed(dsError, userContext, "actionSequence");
            }
            else {
                throw Sys.Data.OpenDataServiceProxy._createFailedError("actionSequence", dsError.get_message());
            }
        }
        
        if (dsError) {
            doError();
            return;
        }
        
        responses = Sys.Data._OpenDataBatchReader._parseResponse(executor);
        if (responses.length !== 1) {
            dsError = Sys.Data.OpenDataActionSequence._getError(false, -1,
                String.format(Sys.Data.OpenDataRes.invalidBatchResponse, executor.get_webRequest().get_url()));
            doError();
            return;
        }
        responses = responses[0];
        if (responses.length === 1) {
            response = responses[0];
            checkPartForError();
            if (dsError) {
                doError();
                return;
            }
        }
        if (responses.length !== queue.length) {
            dsError = Sys.Data.OpenDataActionSequence._getError(false, -1, 
                String.format(Sys.Data.OpenDataRes.invalidBatchResponse, executor.get_webRequest().get_url()));
            doError();
            return;
        }
        
        
        if (onSuccess) {
            var l = responses.length,
                results = new Array(l),
                body;
            for (var i = 0; i < l; i++) {
                response = responses[i];
                body = response.body;
                data = null;
                if (body) {
                    data = Sys.Serialization.JavaScriptSerializer.deserialize(body);
                    if (data && data.d) {
                        data = data.d;
                    }
                }
                var queueEntry = queue[i],
                    actionContext = queueEntry[3],
                    operation = queueEntry[0];
                if (typeof(actionContext) === "undefined") {
                    actionContext = null;
                }
                results[i] = new Sys.Data.OpenDataActionResult(data, response.headers, actionContext, operation);
            }
            onSuccess(results, userContext, "actionSequence");
        }
    }
}
$type.registerClass("Sys.Data.OpenDataActionSequence");
$type._getError = function OpenDataActionSequence$_getError(timedOut, statusCode, message, errorObject, operation) {
    var dserror, e = errorObject ? errorObject.error : null;
    if (!e) {
        dserror = new Sys.Net.WebServiceError(timedOut,
            String.format(message || Sys.Data.OpenDataRes.operationFailed, operation));
    }
    else {
        var m = e.message, innererror = e.innererror, stack, type;
        m = (m && m.value) ? m.value : null;
        if (innererror) {
            type = innererror.type;
            stack = innererror.stacktrace;
        }
        dserror = new Sys.Net.WebServiceError(timedOut,
            String.format(message || m || Sys.Data.OpenDataRes.operationFailed, operation),
            stack || null,
            type || null,
            errorObject);
    }
    dserror._statusCode = statusCode;
    return dserror;
}
/*
var x = {
    "error": {
        "code": "",
        "message": { "lang": "en-US", "value": "An error occurred while processing this request." },
        "innererror": {
            "message": "An error occurred while updating the entries. See the InnerException for details.",
            "type": "System.Data.UpdateException",
            "stacktrace": "   at System.Data.Mapping.Update.Internal.UpdateTranslator...cut...",
            "internalexception": {
                "message": "Cannot insert the value NULL into column \'CustomerID\', table \'NORTHWIND.MDF.dbo.Customers\'; column does not allow nulls. INSERT fails.\r\nThe statement has been terminated.",
                "type": "System.Data.SqlClient.SqlException",
                "stacktrace": "   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)\r\n   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)\r\n   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)\r\n   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)\r\n   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)\r\n   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)\r\n   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()\r\n   at System.Data.Mapping.Update.Internal.DynamicUpdateCommand.Execute(UpdateTranslator translator, EntityConnection connection, Dictionary`2 identifierValues, List`1 generatedValues)\r\n   at System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter)"
                                 }
                      }
             }
        }
*/

$type = Sys.Data.OpenDataInvokeParametersBuilder = function Data$OpenDataInvokeParametersBuilder() {
    /// <summary locid="M:J#Sys.Data.OpenDataInvokeParametersBuilder.#ctor">Creates an empty OpenDataInvokeParametersBuilder object.</summary>
    
    this._queryBuilder = new Sys.Data.OpenDataQueryBuilder("");
    this._parameters = this._queryBuilder.get_queryParameters();
}

$type.prototype = {


    _parameters: null,
    _queryBuilder: null,


    get_parameters: function OpenDataInvokeParametersBuilder$get_parameters() {
        /// <value locid="P:J#Sys.Data.OpenDataInvokeParametersBuilder.parameters">A dictionary of parameters. This object will be non-null but may contain no fields if no parameters have been set.</value>
        return this._parameters;
    },


    addBoolean: function OpenDataInvokeParametersBuilder$addBoolean(name, value) {
        /// <summary locid="M:J#Sys.Data.OpenDataInvokeParametersBuilder.addBoolean">Adds a Boolean parameter to the builder.</summary>
        /// <param name="name" type="String">The name of the parameter to be added.</param>
        /// <param name="value" type="Boolean">The value of the parameter to be added.</param>

        this._parameters[name] = value.toString();
    },

    addDate: function OpenDataInvokeParametersBuilder$addDate(name, value, includeTimeZone) {
        /// <summary locid="M:J#Sys.Data.OpenDataInvokeParametersBuilder.addDate">Adds a Date parameter to the builder.</summary>
        /// <param name="name" type="String">The name of the parameter to be added.</param>
        /// <param name="value" type="Date">The value of the parameter to be added.</param>
        /// <param name="includeTimeZone" type="Boolean" optional="true" mayBeNull="true">True to include time zone information with this Date object, false to exclude the time zone.</param>

        var converted = (includeTimeZone)
            ? value.format("yyyy-MM-ddTHH:mm:ss.fffffffzzz")
            : value.format("yyyy-MM-ddTHH:mm:ss.fffffff");
            
        this._parameters[name] = "datetime'" + converted + "'";
    },

    addDecimal: function OpenDataInvokeParametersBuilder$addDecimal(name, value) {
        /// <summary locid="M:J#Sys.Data.OpenDataInvokeParametersBuilder.addDecimal">Adds a Decimal parameter to the builder.</summary>
        /// <param name="name" type="String">The name of the parameter to be added.</param>
        /// <param name="value" type="Number">The value of the parameter to be added.</param>

        this._parameters[name] = value.toString() + "M";
    },

    addDouble: function OpenDataInvokeParametersBuilder$addDouble(name, value) {
        /// <summary locid="M:J#Sys.Data.OpenDataInvokeParametersBuilder.addDouble">Adds a floating point parameter to the builder.</summary>
        /// <param name="name" type="String">The name of the parameter to be added.</param>
        /// <param name="value" type="Number">The value of the parameter to be added.</param>

        this._parameters[name] = value.toString();
    },

    addGuid: function OpenDataInvokeParametersBuilder$addGuid(name, value) {
        /// <summary locid="M:J#Sys.Data.OpenDataInvokeParametersBuilder.addGuid">Adds a GUID parameter to the builder.</summary>
        /// <param name="name" type="String">The name of the parameter to be added.</param>
        /// <param name="value" type="String">The value of the parameter to be added. The parameter must be a string of the form "dddddddd-dddd-dddd-dddd-dddddddddddd".</param>

        var matchFound = value.match(Sys.Data.OpenDataInvokeParametersBuilder._guidRegex);
        if (!matchFound) {
            var er = Error.create(Sys.Data.OpenDataRes.invalidGuid, { name: "Sys.Data.OpenDataException" });
            throw er;
        }
        
        this._parameters[name] = "guid'" + value + "'";
    },

    addInteger: function OpenDataInvokeParametersBuilder$addInteger(name, value) {
        /// <summary locid="M:J#Sys.Data.OpenDataInvokeParametersBuilder.addInteger">Adds an integer parameter to the builder.</summary>
        /// <param name="name" type="String">The name of the parameter to be added.</param>
        /// <param name="value" type="Number" integer="true">The value of the parameter to be added.</param>

        this._parameters[name] = value.toString();
    },

    addString: function OpenDataInvokeParametersBuilder$addString(name, value) {
        /// <summary locid="M:J#Sys.Data.OpenDataInvokeParametersBuilder.addString">Adds a string parameter to the builder.</summary>
        /// <param name="name" type="String">The name of the parameter to be added.</param>
        /// <param name="value" type="String">The value of the parameter to be added.</param>

        this._parameters[name] = "'" + value.replace(new RegExp("'", "g"), "''") + "'";
    },

    toString: function OpenDataInvokeParametersBuilder$toString() {
        /// <summary locid="M:J#Sys.Data.OpenDataInvokeParametersBuilder.toString">Generates a complete query string based on this object's parameter dictionary.</summary>
        /// <returns type="String">The complete query string.</returns>

        return this._queryBuilder.toString();
    }

}


$type._guidRegex = /^[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$/;

$type.registerClass("Sys.Data.OpenDataInvokeParametersBuilder");
$type = Sys.Data.OpenDataServiceProxy = function Data$OpenDataServiceProxy(serviceUri) {
    /// <summary locid="M:J#Sys.Data.OpenDataServiceProxy.#ctor"></summary>
    /// <param name="serviceUri" type="String" mayBeNull="true" optional="true">Path to the OData Service.</param>
    Sys.Data.OpenDataServiceProxy.initializeBase(this);
    if (serviceUri) {
        this.set_path(serviceUri);
    }
}
$type.prototype = {
    _replaceOnUpdate: false,
    _usePostTunneling: true,
    get_replaceOnUpdate: function OpenDataServiceProxy$get_replaceOnUpdate() {
        /// <value type="Boolean" mayBeNull="false" locid="P:J#Sys.Data.OpenDataServiceProxy.replaceOnUpdate">True if the update() method should replace a server item entirely; false if the method should merge new values into the old item.</value>
        return this._replaceOnUpdate;
    },
    set_replaceOnUpdate: function OpenDataServiceProxy$set_replaceOnUpdate(value) {
        this._replaceOnUpdate = value;
    },
    get_serviceUri: function OpenDataServiceProxy$get_serviceUri() {
        /// <value type="String" mayBeNull="false" locid="P:J#Sys.Data.OpenDataServiceProxy.serviceUri">The path to the ADO.NET Data Service.</value>
        return this.get_path() || "";
    },
    set_serviceUri: function OpenDataServiceProxy$set_serviceUri(value) {
        this.set_path(value || "");
    },
    createActionSequence: function OpenDataServiceProxy$createActionSequence() {
        /// <summary locid="M:J#Sys.Data.OpenDataServiceProxy.createActionSequence">Creates a new action sequence for execution against this data service.</summary>
        /// <returns type="Sys.Data.OpenDataActionSequence">An action sequence object.</returns>
        return new Sys.Data.OpenDataActionSequence(this);
    },
    insert: function OpenDataServiceProxy$insert(item, resourceSetUri, succeededCallback, failedCallback, userContext, webRequest) {
        /// <summary locid="M:J#Sys.Data.OpenDataServiceProxy.insert">Performs an insertion against the data service.</summary>
        /// <param name="item" type="Object">Item to insert.</param>
        /// <param name="resourceSetUri" type="String">Resource set into which the item should be inserted.</param>
        /// <param name="succeededCallback" type="Function" mayBeNull="true" optional="true">Callback to execute upon successful completion of the operation.</param>
        /// <param name="failedCallback" type="Function" mayBeNull="true" optional="true">Callback to execute upon unsuccessful completion of the operation.</param>
        /// <param name="userContext" mayBeNull="true" optional="true">A context object associated with this operation.</param>
        /// <param name="webRequest" type="Sys.Net.WebRequest" mayBeNull="true" optional="true">A WebRequest object to use for this operation.</param>
        /// <returns type="Sys.Net.WebRequest">The WebRequest object used for this operation.</returns>

        var wRequest = this._prepareWebRequest(item, resourceSetUri, "POST", succeededCallback, failedCallback, userContext, "insert", webRequest);
        wRequest.invoke();
        return wRequest;
    },
    invoke: function OpenDataServiceProxy$invoke(operationUri, httpVerb, parameters, succeededCallback, failedCallback, userContext, webRequest) {
        /// <summary locid="M:J#Sys.Data.OpenDataServiceProxy.invoke">Invokes a method exposed by the data service.</summary>
        /// <param name="operationUri" type="String">Path to the service operation to invoke.</param>
        /// <param name="httpVerb" type="String" mayBeNull="true" optional="true">HTTP verb to be used for this service call.</param>
        /// <param name="parameters" type="Object" mayBeNull="true" optional="true">Dictionary of parameters to be passed to the service method.</param>
        /// <param name="succeededCallback" type="Function" mayBeNull="true" optional="true">Callback to execute upon successful completion of the operation.</param>
        /// <param name="failedCallback" type="Function" mayBeNull="true" optional="true">Callback to execute upon unsuccessful completion of the operation.</param>
        /// <param name="userContext" mayBeNull="true" optional="true">A context object associated with this operation.</param>
        /// <param name="webRequest" type="Sys.Net.WebRequest" mayBeNull="true" optional="true">A WebRequest object to use for this operation.</param>
        /// <returns type="Sys.Net.WebRequest">The WebRequest object used for this operation.</returns>
        
        var qb = new Sys.Data.OpenDataQueryBuilder(operationUri);
        qb._queryParameters = merge(null, qb._queryParameters, parameters);
        httpVerb = httpVerb || "GET";
        var wRequest = this._prepareWebRequest(null, qb.toString(), httpVerb, succeededCallback, failedCallback, userContext, operationUri, webRequest);
        wRequest.invoke();
        return wRequest;       
    },
    fetchData: function OpenDataServiceProxy$fetchData(operation, parameters, mergeOption, httpVerb, succeededCallback, failedCallback, timeout, userContext) {
        /// <summary locid="M:J#Sys.Data.OpenDataServiceProxy.fetchData">Fetches data from the provided service URI.</summary>
        /// <param name="operation">The operation to fetch data with.</param>
        /// <param name="parameters" type="Object" mayBeNull="true" optional="true"></param>
        /// <param name="mergeOption" type="Sys.Data.MergeOption" mayBeNull="true" optional="true"></param>
        /// <param name="httpVerb" type="String" mayBeNull="true" optional="true"></param>
        /// <param name="succeededCallback" type="Function" mayBeNull="true" optional="true"></param>
        /// <param name="failedCallback" type="Function" mayBeNull="true" optional="true"></param>
        /// <param name="timeout" type="Number" integer="true" mayBeNull="true" optional="true"></param>
        /// <param name="userContext" mayBeNull="true" optional="true"></param>
        /// <returns type="Sys.Net.WebRequest"></returns>
        if (!this.get_serviceUri()) {
            throw Error.invalidOperation(Sys.Data.OpenDataRes.requiredUri);
        }
        if (!operation) {
            throw Error.argumentNull("operation");
        }
        var request, oldTimeout = null;
        if (typeof(timeout) !== "undefined") {
            oldTimeout = this.get_timeout();
            this.set_timeout(timeout);
        }
        if (parameters) {
            for (var name in parameters) {
                if (parameters.hasOwnProperty(name)) {
                    operation += ((operation.indexOf('?') < 0) ? "?" : "&") +
                        encodeURIComponent(name) + "=" + encodeURIComponent(parameters[name]);
                }
            }
        }
        request = this.query(operation, succeededCallback, failedCallback, userContext);
        if (oldTimeout !== null) {
            this.set_timeout(oldTimeout);
        }
        return request;
    },
    fetchDeferredProperty: function OpenDataServiceProxy$fetchDeferredProperty(item, property, succeededCallback, failedCallback, userContext, webRequest) {
        /// <summary locid="M:J#Sys.Data.OpenDataServiceProxy.fetchDeferredProperty">Fetches the property of a given item.</summary>
        /// <param name="item" type="Object">Item containing the property to be fetched.</param>
        /// <param name="property" type="String">Name of the property which should be fetched.</param>
        /// <param name="succeededCallback" type="Function" mayBeNull="true" optional="true">Callback to execute upon successful completion of the operation.</param>
        /// <param name="failedCallback" type="Function" mayBeNull="true" optional="true">Callback to execute upon unsuccessful completion of the operation.</param>
        /// <param name="userContext" mayBeNull="true" optional="true">A context object associated with this operation.</param>
        /// <param name="webRequest" type="Sys.Net.WebRequest" mayBeNull="true" optional="true">A WebRequest object to use for this operation.</param>
        /// <returns type="Sys.Net.WebRequest">The WebRequest object used for this operation.</returns>
        
        var succeededHelper = Function.createDelegate(this, function(result, context, operation) {
            item[property] = result;
            var callback = succeededCallback || this.get_defaultSucceededCallback();
            if (callback) {
                callback(item, context, operation);
            }
        });
        
        var uri;
        if (item[property] && item[property].__deferred && item[property].__deferred.uri) {
            uri = item[property].__deferred.uri;
        }
        else if (item.__metadata && item.__metadata.uri) {
            uri = item.__metadata.uri + '/' + property;
        }
        else {
            var message = String.format(Sys.Data.OpenDataRes.propertyNotFound, property);
            throw Sys.Data.OpenDataServiceProxy._createFailedError(property, message);
        }
        
        var wRequest = this._prepareWebRequest(null, uri, "GET", succeededHelper, failedCallback, userContext, property, webRequest);
        wRequest.invoke();
        return wRequest;
    },
    query: function OpenDataServiceProxy$query(query, succeededCallback, failedCallback, userContext, webRequest) {
        /// <summary locid="M:J#Sys.Data.OpenDataServiceProxy.query">Performs a query (read) against the data service.</summary>
        /// <param name="query" type="String" mayBeNull="true" optional="true">Path to query.</param>
        /// <param name="succeededCallback" type="Function" mayBeNull="true" optional="true">Callback to execute upon successful completion of the operation.</param>
        /// <param name="failedCallback" type="Function" mayBeNull="true" optional="true">Callback to execute upon unsuccessful completion of the operation.</param>
        /// <param name="userContext" mayBeNull="true" optional="true">A context object associated with this operation.</param>
        /// <param name="webRequest" type="Sys.Net.WebRequest" mayBeNull="true" optional="true">A WebRequest object to use for this operation.</param>
        /// <returns type="Sys.Net.WebRequest">The WebRequest object used for this operation.</returns>
        var wRequest = this._prepareWebRequest(null, query, "GET", succeededCallback, failedCallback, userContext, query, webRequest);
        wRequest.invoke();
        return wRequest;
    },
    update: function OpenDataServiceProxy$update(item, succeededCallback, failedCallback, userContext, webRequest) {
        /// <summary locid="M:J#Sys.Data.OpenDataServiceProxy.update">Performs an update against the data service.</summary>
        /// <param name="item" type="Object">Item to update.</param>
        /// <param name="succeededCallback" type="Function" mayBeNull="true" optional="true">Callback to execute upon successful completion of the operation.</param>
        /// <param name="failedCallback" type="Function" mayBeNull="true" optional="true">Callback to execute upon unsuccessful completion of the operation.</param>
        /// <param name="userContext" mayBeNull="true" optional="true">A context object associated with this operation.</param>
        /// <param name="webRequest" type="Sys.Net.WebRequest" mayBeNull="true" optional="true">A WebRequest object to use for this operation.</param>
        /// <returns type="Sys.Net.WebRequest">The WebRequest object used for this operation.</returns>

        var verb = (this._replaceOnUpdate) ? "PUT" : "MERGE";
        var wRequest = this._prepareWebRequest(item, null, verb, succeededCallback, failedCallback, userContext, "update", webRequest);
        wRequest.invoke();
        return wRequest;
    },
    remove: function OpenDataServiceProxy$remove(item, succeededCallback, failedCallback, userContext, webRequest) {
        /// <summary locid="M:J#Sys.Data.OpenDataServiceProxy.remove">Performs a removal against the data service.</summary>
        /// <param name="item" type="Object">Item to remove.</param>
        /// <param name="succeededCallback" type="Function" mayBeNull="true" optional="true">Callback to execute upon successful completion of the operation.</param>
        /// <param name="failedCallback" type="Function" mayBeNull="true" optional="true">Callback to execute upon unsuccessful completion of the operation.</param>
        /// <param name="userContext" mayBeNull="true" optional="true">A context object associated with this operation.</param>
        /// <param name="webRequest" type="Sys.Net.WebRequest" mayBeNull="true" optional="true">A WebRequest object to use for this operation.</param>
        /// <returns type="Sys.Net.WebRequest">The WebRequest object used for this operation.</returns>
        var wRequest = this._prepareWebRequest(item, null, "DELETE", succeededCallback, failedCallback, userContext, "remove", webRequest);
        wRequest.set_body(null);
        delete wRequest.get_headers()["Content-Type"];
        wRequest.invoke();
        return wRequest;
    },
    _checkForError: function OpenDataServiceProxy$_checkForError(executor, operation, checkVersion) {
        var message, errorObj = null, timedOut = false,
            statusCode = 0;
        if (!executor.get_responseAvailable()) {
            timedOut = executor.get_timedOut();
            message = (timedOut ? Sys.Data.OpenDataRes.operationTimedOut : String.format(Sys.Data.OpenDataRes.operationFailed, operation));
        }
        else {
            statusCode = executor.get_statusCode();        
            if ((statusCode === 1223) || (statusCode === 0)) {
                statusCode = 204;
            }
            if (checkVersion) {
                var version = parseFloat(executor.getResponseHeader('DataServiceVersion'));
                if ((isNaN(version) || (version > 2)) && statusCode !== 204) {
                    message = isNaN(version)
                        ? String.format(Sys.Data.OpenDataRes.uriNotOpenDataService, this.get_serviceUri())
                        : String.format(Sys.Data.OpenDataRes.serviceVersionTooHigh, this.get_serviceUri());
                }
            }
            if (!message && (statusCode < 200 || statusCode >= 300)) {
                var contentType = executor.getResponseHeader("Content-Type");
                if (contentType.startsWith("application/json")) {
                    errorObj = executor.get_object();
                }
                else if (contentType.startsWith("application/xml") || contentType.startsWith("text/xml")) {
                    var xml = executor.get_xml(), elements = xml.documentElement.getElementsByTagName("message");
                    if (elements && elements.length) {
                        var element = elements[0];
                        if (element.childNodes.length) {
                            message = element.childNodes[0].nodeValue;
                        }
                    }
                    if (!message) {
                        message = String.format(Sys.Data.OpenDataRes.uriNotOpenDataService, this.get_serviceUri());
                    }
                }
                else {
                    message = String.format(Sys.Data.OpenDataRes.uriNotOpenDataService, this.get_serviceUri());
                }
            }
        }
        if (message || errorObj) {
            return Sys.Data.OpenDataActionSequence._getError(timedOut, statusCode, message, errorObj, operation);
        }
        return null;
    },
    _onResponseComplete: function OpenDataServiceProxy$_onResponseComplete(executor, onSuccess, onFailure, userContext, operation) {
        var dsError = this._checkForError(executor, operation, true);
        if (dsError) {
            if (onFailure) {
                onFailure(dsError, userContext, operation);
            }
            else {
                throw Sys.Data.OpenDataServiceProxy._createFailedError(operation, dsError.get_message());
            }
        }
        else if (onSuccess) {
            var version = parseFloat(executor.getResponseHeader("DataServiceVersion")) || 1.0,
                contentType = executor.getResponseHeader("Content-Type"),
                obj = null;
            if (contentType.startsWith("application/json")) {
                obj = executor.get_object();
                obj = obj.d || obj;
            }
            var results = obj,
                metadata = null;
            if (version >= 2) {
                results = obj.results;
                delete obj.results;
                metadata = {};
                forIn(obj, function(val, name) {
                    metadata[name.replace(/^\_+/, '')] = val;
                });
            }
            onSuccess(results, userContext, operation, metadata);
        }
    },
    _prepareWebRequest: function OpenDataServiceProxy$_prepareWebRequest(item, relativeUri, verb, onSuccess, onFailure, context, operation, webRequest) {
        webRequest = webRequest || new Sys.Net.WebRequest();
        webRequest.set_url(Sys.Data._OpenDataUtil.concatUris(this.get_serviceUri(), relativeUri || ""));
        webRequest.set_timeout(this.get_timeout());

        var headers = webRequest.get_headers();
        headers["Accept"] = "application/json";
        headers["MaxDataServiceVersion"] = "2.0;OpenDataAjax";

        webRequest.set_httpVerb(verb);
        if (this._usePostTunneling) {
            var verbUpper = verb.toUpperCase();
            if ((verbUpper === "PUT") || (verbUpper === "DELETE") || (verbUpper === "MERGE")) {
                webRequest.set_httpVerb("POST");
                headers["X-HTTP-Method"] = verbUpper;
            }
        }

        if (item) {
            webRequest.set_body(Sys.Serialization.JavaScriptSerializer.serialize(item));
            headers["Content-Type"] = "application/json";

            var eTag = Sys.Data._OpenDataUtil.extractETag(item);
            if (eTag) {
                headers["If-Match"] = eTag;
            }

            var uri = Sys.Data._OpenDataUtil.extractUri(item);
            if (uri) {
                webRequest.set_url(uri);
            }
        }

        onSuccess = onSuccess || this.get_defaultSucceededCallback();
        onFailure = onFailure || this.get_defaultFailedCallback();
        if ((typeof(context) === "undefined") || (context === null)) {
            context = this.get_defaultUserContext();
        }

        webRequest.add_completed(Function.createDelegate(this, function(executor) {
            this._onResponseComplete(executor, onSuccess, onFailure, context, operation);
        }));
        return webRequest;
    }
}
$type._createFailedError = function OpenDataServiceProxy$_createFailedError(operation, errorMessage) {
    var displayMessage = "Sys.Data.OpenDataException: " + errorMessage;
    var e = Error.create(displayMessage, { name: "Sys.Data.OpenDataException", operation: operation });
    e.popStackFrame();
    return e;
}
$type.registerClass("Sys.Data.OpenDataServiceProxy", Sys.Net.WebServiceProxy, Sys.Data.IDataProvider);
Sys.registerComponent($type, {
    parameters: [{name: "serviceUri", type: "String"}]
});
$type = Sys.Data._OpenDataBatchReader = function Data$_OpenDataBatchReader(responseBody, boundary) {
    this._responseBody = responseBody;
    this._boundary = [boundary];
    this._position = 0;
    this._responses = [];
    this._parseParts(this._responses);
}
$type.prototype = {
    get_responses: function _OpenDataBatchReader$get_responses() {
        return this._responses;
    },
    _parseParts: function _OpenDataBatchReader$_parseParts(responses) {
        if (this._readToMark("--" + this._currentBoundary(), true) === null) return;
        this._readLine();
        var endmark = null;
        while ((endmark !== "--") && !this._eof()) {
            var partHeaders = [];
            this._parseHeaders(partHeaders);
            var partType = partHeaders["Content-Type"];
            if (partType.indexOf("multipart/mixed") === 0) {
                var nested = [];
                this._boundary.push(Sys.Data._OpenDataBatchReader._boundaryFromTypeHeader(partType));
                this._parseParts(nested);
                this._boundary.pop();
                responses.push(nested);
                var check = this._readToMark("--" + this._currentBoundary(), true);
            }
            else if (partType.indexOf("application/http") === 0) {
                responses.push(this._parseHttpResponse());
            }
            endmark = this._peek(2);
            this._readLine();
        }
    },
    _parseHttpResponse: function _OpenDataBatchReader$_parseHttpResponse() {
        var line = this._readLine(),
            status = this._parseStatus(line);
        var headers = [];
        this._parseHeaders(headers);
        var body = this._readToMark("--" + this._currentBoundary(), true);
        if (body === "\r\n") body = "";
        return { status: status, headers: headers, body: body };
    },
    _parseHeaders: function _OpenDataBatchReader$_parseHeaders(target) {
        for (var line = this._readLine(); line; line = this._readLine()) {
            var h = this._parseHeader(line);
            target[h.name] = h.value;
        }
    },
    _parseHeader: function _OpenDataBatchReader$_parseHeader(s) {
        if (s === null) return null;
        var index = s.indexOf(":");
        return (index === -1) ? null :
            { name: s.substring(0, index).trim(), value: s.substring(index + 1).trim() };
    },
    _parseStatus: function _OpenDataBatchReader$_parseStatus(s) {
        var match = Sys.Data._OpenDataBatchReader._statusRegExp.exec(s);
        return match ? ({ code: match[1], text: match[2] }) : null;
    },
    _currentBoundary: function _OpenDataBatchReader$_currentBoundary() {
        return this._boundary[this._boundary.length - 1];
    },
    _eof: function _OpenDataBatchReader$_eof() {
        return this._position === -1;
    },
    _readLine: function _OpenDataBatchReader$_readLine() {
        return this._readToMark("\r\n", false);
    },
    _readToMark: function _OpenDataBatchReader$_readToMark(mark, nullIfMissing) {
        if (this._eof()) return null;
        var r, index = this._responseBody.indexOf(mark, this._position);
        if (index < 0) {
            if (nullIfMissing) {
                r = null;
            }
            else {
                r = this._responseBody.substring(this._position);
                this._position = -1;
            }
        }
        else {
            r = this._responseBody.substring(this._position, index);
            this._position = index + mark.length;
        }
        return r;
    },
    _peek: function _OpenDataBatchReader$_peek(len) {
        if (this._eof()) return "";
        return this._responseBody.substring(this._position, this._position + len);
    }
}
$type._boundaryFromTypeHeader = function _OpenDataBatchReader$_boundaryFromTypeHeader(header) {
    var re = /;\s*boundary=(.*)$/i,
        match = re.exec(header);
    return match ? match[1] : null;
};
$type._parseResponse = function _OpenDataBatchReader$_parseResponse(executor) {
    var r = new Sys.Data._OpenDataBatchReader(executor.get_responseData(), Sys.Data._OpenDataBatchReader._boundaryFromTypeHeader(executor.getResponseHeader("Content-Type")));
    return r.get_responses();
};
$type._statusRegExp = new RegExp("^HTTP\\/1\\.[01] (\\d{3}) (.*)$", "i");
$type.registerClass("Sys.Data._OpenDataBatchReader");
$type = Sys.Data._OpenDataBatchWriter = function Data$_OpenDataBatchWriter(host) {
    this._host = host;
    this._content = "";
    this._boundary = null;
    this._changesetBoundary = null;
    this._changesetEntries = null;
    this._contentType = "application/json";
}
$type.prototype = {
    get_contentType: function _OpenDataBatchWriter$get_contentType() {
        return this._contentType;
    },
    set_contentType: function _OpenDataBatchWriter$set_contentType(type) {
        this._contentType = type;
    },
    get_requestBody: function _OpenDataBatchWriter$get_requestBody() {
        return this._content + "--" + this.get_topBoundary() + "--";
    },
    get_topBoundary: function _OpenDataBatchWriter$get_topBoundary() {
        if (!this._boundary) {
            this._boundary = "batch_" + this._createBoundary();
        }
        return this._boundary;
    },
    addChange: function _OpenDataBatchWriter$addChange(targetUri, eTag, method, body, contentId) {
        this._changesetEntries.push({ uri: targetUri, eTag: eTag, method: method, body: body, contentId: contentId });
    },
    addQuery: function _OpenDataBatchWriter$addQuery(queryUri) {
        this._content += this._startPart(this.get_topBoundary(), "GET", queryUri, null) + "\r\n";
    },
    endChangeSet: function _OpenDataBatchWriter$endChangeSet() {
        var changeset = "";
        for (var key in this._changesetEntries) {
            var entry = this._changesetEntries[key];
            changeset += this._startPart(this._changesetBoundary, entry.method, entry.uri, entry.eTag, entry.contentId);
            if (entry.body) {
                changeset += "Content-Type: " + this._contentType + ";charset=utf-8\r\n";
            }
            changeset += "\r\n";
            if (entry.body) {
                changeset += entry.body;
            }
        }
        if (changeset) {
            changeset += "\r\n--" + this._changesetBoundary + "--\r\n";
        }
        this._content += "\r\n--" + this.get_topBoundary() + "\r\nContent-Type: multipart/mixed;boundary=" +
                         this._changesetBoundary + "\r\n\r\n" + changeset;
        this._changesetBoundary = null;
        this._changesetEntries = null;
    },
    startChangeSet: function _OpenDataBatchWriter$startChangeSet() {
        this._changesetBoundary = "changeset_" + this._createBoundary();
        this._changesetEntries = [];
    },
    _createBoundary: function _OpenDataBatchWriter$_createBoundary() {
        function hex16() {
            return Math.floor((1 + Math.random()) * 0x10000).toString(16).substr(1);
        }
        return hex16() + "-" + hex16() + "-" + hex16();
    },
    _startPart: function _OpenDataBatchWriter$_startPart(boundary, method, uri, eTag, contentId) {
        var start = "\r\n--" + boundary + "\r\nContent-Type: application/http\r\nContent-Transfer-Encoding: binary\r\n\r\n" + method + " " + uri + " HTTP/1.1\r\n";
        if (typeof(contentId) === "number") {
            start += "Content-ID: " + contentId + "\r\n";
        }
        if (eTag) {
            start += "If-Match: " + eTag + "\r\n";
        }
        start += "Host: " + this._host + "\r\nAccept: " + this.get_contentType() + "\r\nAccept-Charset: utf-8\r\n";
        return start;
    }
}
$type.registerClass("Sys.Data._OpenDataBatchWriter");
$type = Sys.Data.OpenDataContext = function Data$OpenDataContext() {
    Sys.Data.OpenDataContext.initializeBase(this);
    this.set_getIdentityMethod(this._getIdentity);
    this.set_getNewIdentityMethod(this._getNewIdentity);
    this.set_fetchDataMethod(this._fetchOpenData);
    this.set_saveChangesMethod(this._saveOpenData);
    this.set_createEntityMethod(this._createEntity);
    this.set_handleSaveChangesResultsMethod(this._processResultsOpenData);
    this.set_getDeferredPropertyFetchOperationMethod(this._getDeferredQuery);
    this.set_isDeferredPropertyMethod(this._isDeferred);
    this._proxy = new Sys.Data.OpenDataServiceProxy();
}
$type.prototype = {
    _entityCounter: 0,
    _saveCounter: 1,
    get_lastMetadata: function() {
        return this._metadata || null;
    },
    get_serviceUri: function() {
        return this._proxy.get_serviceUri();
    },
    set_serviceUri: function(value) {
        this._proxy.set_serviceUri(value);
    },
    _createEntity: function OpenDataContext$_createEntity(dataContext, entitySetName) {
        var obj = {};
        dataContext._createMetaData(obj, entitySetName);
        return obj;
    },
    _fetchOpenData: function OpenDataContext$_fetchOpenData(dataContext, uri, operation, parameters, httpVerb, succeededCallback, failedCallback, timeout, context) {
        if (operation) {
            if (typeof(operation) !== "string") {
                operation = operation.toString();
            }
            var i = operation.indexOf(":");
            if ((i !== -1) && (i < operation.indexOf("/"))) {
                uri = operation;
            }
        }
        function onSuccess(data, userContext, operation, metadata) {
            dataContext._metadata = metadata;
            if (succeededCallback) {
                succeededCallback.apply(null, arguments);
            }
        }
        return dataContext._proxy.fetchData(operation, parameters || null, null, httpVerb || null, onSuccess, failedCallback || null, timeout || 0, context || null);
    },
    _getDeferredQuery: function OpenDataContext$_getDeferredQuery(dataContext, entity, propertyName, parameters, userContext) {
        var uri = null, value = entity[propertyName];
        if ((value === null) || (typeof(value) === "undefined") || (value instanceof Array)) {
            uri = dataContext.getIdentity(entity);
            uri += (uri.endsWith("/") ? propertyName : ("/" + propertyName));
        }
        else if (typeof(value) === "object") {
            uri = dataContext.getIdentity(value);
            if (!uri) {
                uri = value.__deferred ? value.__deferred.uri : null;
            }
        }
        if (!uri) {
            throw Error.invalidOperation(String.format(Sys.Data.OpenDataRes.propertyNotFound, propertyName));
        }
        return new Sys.Net.WebServiceOperation(uri, parameters);
    },
    _isDeferred: function OpenDataContext$_isDeferred(dataContext, entity, propertyName) {
        var value = entity[propertyName];
        return !!(value && (typeof(value) === "object") && value.__deferred);
    },
    _processResultsOpenData: function OpenDataContext$_processResultsOpenData(dataContext, changes, results) {
        if (results && (results.length === changes.length)) {
            for (var i = 0, l = results.length; i < l; i++) {
                var change = changes[i], item = change.item,
                    result = results[i], data = result.get_result(),
                    headers = result.get_httpHeaders();
                if (item) {
                    if (data) {
                        dataContext._fixAfterSave(change, item, data);
                    }
                    if (headers.ETag && item.__metadata) {
                        item.__metadata.etag = headers.ETag;
                    }
                }
            }
        }
    },
    _getBatchReference: function OpenDataContext$_getBatchReference(item, batchField, batchRefPrefix, stripUri) {
        var batchnum = item.__metadata[batchField];
        if (typeof(batchnum) === "number") {
            return batchRefPrefix + "$" + batchnum;
        }
        else {
            var uri = this.getIdentity(item);
            if (!uri) {
                throw Error.invalidOperation(Sys.Data.OpenDataRes.batchLinkBeforeInsert);
            }
            if (stripUri) {
                uri = uri.substr(uri.lastIndexOf("/"));
            }
            return uri;
        }
    },
    _saveOpenData: function OpenDataContext$_saveOpenData(dataContext, changes, succeededCallback, failedCallback, context) {
        var uri = dataContext.get_serviceUri(),
            request = null;
        if (!uri) {
            failedCallback(new Sys.Net.WebServiceError(false, String.format(Sys.Res.webServiceFailedNoMsg, "saveChanges")), context, "saveChanges");
        }
        else {
            var i, l, proxy = dataContext._proxy,
                sequence = proxy.createActionSequence(),
                batchField = ("__batchNumber" + dataContext._saveCounter++);
            proxy.set_timeout(dataContext.get_saveChangesTimeout());
            for (i = 0, l = changes.length; i < l; i++) {
                var change = changes[i],
                    item = change.item;
                switch(change.action) {
                    case Sys.Data.ChangeOperationType.insert:
                        if (item) {
                            var originalItem = dataContext.get_items()[dataContext.getIdentity(item)];
                            delete item.__metadata;
                            originalItem.__metadata[batchField] = i;
                            sequence.addInsertAction(item, originalItem.__metadata.entitySet);
                        }
                        else {
                            sequence.addInsertAction({ uri: dataContext._getBatchReference(change.linkTarget, batchField, "") },
                                dataContext._getBatchReference(change.linkSource, batchField, "/") + "/$links/" + change.linkSourceField);
                        }
                        break;
                    case Sys.Data.ChangeOperationType.update:
                        if (item) {
                            sequence.addUpdateAction(item);
                        }
                        else {
                            if (change.linkTarget) {
                                sequence.addUpdateAction({ uri: dataContext._getBatchReference(change.linkTarget, batchField, "") },
                                    dataContext._getBatchReference(change.linkSource, batchField, "/") + "/$links/" + change.linkSourceField);
                            }
                            else {
                                sequence.addRemoveAction(
                                    {__metadata: { uri:
                                        dataContext._getBatchReference(change.linkSource, batchField, "/") + "/$links/" + change.linkSourceField }});
                            }
                        }
                        break;
                    case Sys.Data.ChangeOperationType.remove:                
                        if (item) {
                            sequence.addRemoveAction(item);
                        }
                        else {
                            sequence.addRemoveAction(
                                {__metadata: { uri: dataContext._getBatchReference(change.linkSource, batchField, "/") + "/$links" +
                                dataContext._getBatchReference(change.linkTarget, batchField, "/", true) }});
                        }
                        break;
                }
            }
            request = sequence.execute(succeededCallback, failedCallback, context);
        }
        return request;
    },
    _createMetaData: function OpenDataContext$_createMetaData(entity, entitySetName) {
        entity.__metadata = { entitySet: entitySetName, uri: entitySetName + "(__new" + this._entityCounter++ + ")" };
    },
    _getNewIdentity: function OpenDataContext$_getNewIdentity(dataContext, entity, entitySetName) {
        if (!entitySetName) {
            throw Error.invalidOperation(Sys.Data.OpenDataRes.entityWithNoResourceSet);
        }
        dataContext._createMetaData(entity, entitySetName);
        return entity.__metadata.uri;
    },
    _getIdentity: function OpenDataContext$_getIdentity(dataContext, entity) {
        var metadata = entity.__metadata;
        if (metadata) {
            return metadata.uri || null;
        }
        return null;
    }
}
$type.registerClass("Sys.Data.OpenDataContext", Sys.Data.DataContext);
Sys.registerComponent($type);
}

if (window.Sys && Sys.loader) {
	Sys.loader.registerScript("OpenData", null, execute);
}
else {
	execute();
}

})();
DType.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.StrikeThrough=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.StrikeThrough.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.StrikeThrough.prototype={callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.StrikeThrough.callBaseMethod(this,"callMethod"))return false;this._designPanel._execCommand("strikeThrough",false,null)},checkState:function(){return!Sys.Extended.UI.HTMLEditor.ToolbarButton.StrikeThrough.callBaseMethod(this,"checkState")?false:this._designPanel._queryCommandState("strikeThrough")}};Sys.Extended.UI.HTMLEditor.ToolbarButton.StrikeThrough.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.StrikeThrough",Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton);hGType.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveStyles = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveStyles.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveStyles.prototype = {
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveStyles.callBaseMethod(this, "callMethod")) return false;
        var editor = this._designPanel;
        
        setTimeout(function() {
            var selectedHTML = (!Sys.Extended.UI.HTMLEditor.isIE)?Sys.Extended.UI.HTMLEditor.Trim(editor.getSelectedHTML()):"";
            var sel   = editor._getSelection();
            var range = editor._createRange(sel);
            var rng = null;
            var expanded = false;

            if(!editor.isControl() && ((Sys.Extended.UI.HTMLEditor.isIE && range.text.length>0) || (!Sys.Extended.UI.HTMLEditor.isIE && selectedHTML.length > 0))) {
                rng=editor._getTextNodeCollection();
            } else {
                rng = editor._tryExpand();
                expanded = true;
            }

            if(rng != null && rng.length > 0) {
                var changed=false;  // document tree changing indicator
                var _found =true;   // style tag deleting indicator
                var _text=null;

                editor._saveContent(); // for undo

                var span1 = editor._doc.createElement("span");
                span1.id  = "_left_";
                var span2 = editor._doc.createElement("span");
                span2.id  = "_right_";

                var par1  = rng[0].parentNode;
                var par2  = rng[rng.length-1].parentNode;

                par1.insertBefore(span1,rng[0]);

                if(rng[rng.length-1].nextSibling)
                    par2.insertBefore(span2,rng[rng.length-1].nextSibling);
                else
                    par2.appendChild(span2);

                while(_found) { // while there were tags' deletings
                    _found =false; // reset the indicator
                    for(var i=0; i< rng.length; i++) { // inspect all TextNodes
                        var par    = rng[i].parentNode;

                        if(par) {
                            if(rng[i].previousSibling == null && rng[i].nextSibling == null) {
                                var tag    = par.tagName.toUpperCase();

                                if( Sys.Extended.UI.HTMLEditor.isStyleTag(tag) && (tag != "A") && (par.className != Sys.Extended.UI.HTMLEditor.smartClassName || tag.substr(0,1) == "H") ) {
                                    var _attrs = Sys.Extended.UI.HTMLEditor.differAttr(par,["class","color","face","size"]);

                                    changed=true;

                                    if(_attrs.length==0) {
                                        var parent=par.parentNode;
                                        var el = (par.firstChild)?par.firstChild:null;
                                        var P  = null;

                                        if(tag.toUpperCase().substr(0,1) == "H" && (Sys.Extended.UI.HTMLEditor.isIE)) {
                                            P = editor._doc.createElement("p");
                                            P.className = Sys.Extended.UI.HTMLEditor.smartClassName;

                                            parent.insertBefore(P,par);

                                            while(par.firstChild) { // chieldren moving
                                                P.appendChild(par.firstChild);
                                            }
                                        } else {
                                            while(par.firstChild){ // chieldren moving
                                                parent.insertBefore(par.firstChild,par);
                                            }

                                            if(tag.toUpperCase().substr(0,1) == "H") {
                                                var br = editor._doc.createElement("br");
                                                parent.insertBefore(br,par);
                                            }
                                        }

                                        parent.removeChild(par);
                                        _found=true; // set indicator
                                    } else { // we can't remove the tag - cleaning only
                                        var parent=par.parentNode;

                                        var nel   =editor._doc.createElement(tag);
                                        for(var j=0; j<_attrs.length; j++) {
                                            nel.setAttribute(_attrs[j][0], _attrs[j][1]);
                                        }


                                        parent.insertBefore(nel,par);
                                        while(par.firstChild) {
                                            nel.appendChild(par.firstChild);
                                        }
                                        parent.removeChild(par);
                                    }
                                }
                            }
                        }
                    }
                }

                for(var i=0; i< rng.length; i++) { // inspect all TextNodes
                    var el   = rng[i];
                    var _prn = (rng[i].parentNode != null && typeof rng[i].parentNode != "undefined")?rng[i].parentNode:null;

                    if(_prn) {

                        var _fnd = null;

                        while (_prn && _prn.tagName && _prn.tagName.toUpperCase() != "BODY" && Sys.Extended.UI.HTMLEditor.isStyleTag(_prn.tagName) && (_prn.tagName.toUpperCase() != "A")
                               && Sys.Extended.UI.HTMLEditor.differAttr(_prn,["class","color","face","size"]).length == 0
                        ) {
                            _fnd = _prn;
                            _prn = _prn.parentNode;
                        }


                        if(_fnd) {
                            changed=true;

                            function diver(add,el, rpr, before) {
                                var par=rpr.cloneNode(false);

                                if(add) {
                                    if(add.push && typeof add.push == "function") {
                                        for(var iii=0; iii < add.length; iii++) {
                                            par.appendChild(add[iii]);
                                        }
                                    } else
                                        par.appendChild(add);
                                }

                                while(el) {
                                    var elSibling=before?el.previousSibling:el.nextSibling;
                                    if(el.nodeType==1 || (el.nodeType==3 && Sys.Extended.UI.HTMLEditor.Trim(""+el.data+"").length>0)) {
                                        if(el.nodeType==1) {
                                            if(Sys.Extended.UI.HTMLEditor.isStyleTag(el.tagName) && (el.tagName.toUpperCase() != "A") && (!el.id || (el.id != "_left_" && el.id != "_right_"))) {
                                                Sys.Extended.UI.HTMLEditor.spanJoiner(el);
                                            }

                                            if(Sys.Extended.UI.HTMLEditor.isStyleTag(el.tagName) && el.childNodes.length==0 && (!el.id || (el.id != "_left_" && el.id != "_right_"))) {
                                                el=null;
                                            }
                                        }
                                        if(el) {
                                            if(par.childNodes.length == 0 || !before)
                                                par.appendChild(el);
                                            else
                                                par.insertBefore(el,par.firstChild);
                                        }
                                    }
                                    el=elSibling;
                                }

                                if(par.childNodes.length==0) {
                                    delete par;
                                    par=null;
                                } else if(par.childNodes.length==1 && par.firstChild.nodeType==3 && (""+par.firstChild.data+"").length==0) {
                                    delete par;
                                    par=null;
                                } else {
                                    if(Sys.Extended.UI.HTMLEditor.isStyleTag(par.tagName)) {
                                        var elNumber = par.childNodes.length;
                                        for(var cnt=0; cnt< par.childNodes.length; cnt++) {
                                            var inn = par.childNodes.item(cnt);
                                            if(inn.nodeType==1 && !Sys.Extended.UI.HTMLEditor.isStyleTag(inn.tagName)) elNumber--;
                                        }

                                        if(elNumber == 0) {
                                            var parr = [];
                                            while(par.firstChild) {
                                                var inn = par.removeChild(par.firstChild);
                                                parr.push(inn);
                                            }
                                            par = parr;
                                        }
                                    }
                                }

                                if(rpr==_fnd) 
                                    return par;
                                else
                                    return diver(par,before?rpr.previousSibling:rpr.nextSibling,rpr.parentNode,before);
                            };

                            _prn = el.parentNode;

                            if ( el.previousSibling == null && el.nextSibling == null &&
                                _prn && _prn.tagName && _prn.tagName.toUpperCase() != "BODY" && Sys.Extended.UI.HTMLEditor.isStyleTag(_prn.tagName) &&
                                Sys.Extended.UI.HTMLEditor.differAttr(_prn,["class","color","face","size"]).length > 0
                            )
                                el = _prn;


                            var p1 = diver(null,el.previousSibling,el.parentNode,true );
                            var p2 = diver(null,el.nextSibling    ,el.parentNode,false);

                            var par    = _fnd.parentNode;
                            if(p1) {
                                if(p1.push && typeof p1.push == "function") {
                                    for(var iii=0; iii < p1.length; iii++) {
                                        par.insertBefore(p1[iii],_fnd);
                                    }
                                } else {
                                    par.insertBefore(p1,_fnd);
                                }

                                if(Sys.Extended.UI.HTMLEditor.isIE) {
                                    span1  = editor._doc.getElementById("_left_");
                                    span2 = editor._doc.getElementById("_right_");
                                }
                            }
                            par.insertBefore(el,_fnd);
                            if(p2) {
                                if(p2.push && typeof p2.push == "function") {
                                    for(var iii=0; iii < p2.length; iii++) {
                                        par.insertBefore(p2[iii],_fnd);
                                    }
                                } else {
                                    par.insertBefore(p2,_fnd);
                                }

                                if(Sys.Extended.UI.HTMLEditor.isIE) {
                                    span1  = editor._doc.getElementById("_left_");
                                    span2 = editor._doc.getElementById("_right_");
                                }
                            }
                            par.removeChild (_fnd);
                        }
                    }
                }

                if(expanded) {
                    if(Sys.Extended.UI.HTMLEditor.isIE && editor.__saveBM__ != null) {
                        try {
                            var ppp = span1.parentNode;
                            ppp.removeChild(span1);
                            while(ppp && ppp.childNodes.length==0) {
                                ppp.parentNode.removeChild(ppp);
                                ppp = ppp.parentNode;
                            }

                            ppp = span2.parentNode;
                            ppp.removeChild(span2);
                            while(ppp && ppp.childNodes.length==0) {
                                ppp.parentNode.removeChild(ppp);
                                ppp = ppp.parentNode;
                            }
                            span1 = null;
                            span2 = null;
                        } catch(e){}

                        var sel   = editor._getSelection();
                        var range = editor._createRange(sel);
                        range.moveToBookmark(editor.__saveBM__);
                        range.select();
                        editor.__saveBM__ = null;
                    } else if(editor.__saveBM__ != null) {
                        if(editor.__saveBM__[0].nodeType==3) {
                            var sel   = editor._getSelection();
                            var range  = editor._doc.createRange();
                            range.setStart(editor.__saveBM__[0],editor.__saveBM__[1]);
                            range.setEnd  (editor.__saveBM__[0],editor.__saveBM__[1]);
                            editor._removeAllRanges(sel);
                            editor._selectRange(sel,range);
                        } else {
                            editor._trySelect(editor.__saveBM__[0],editor.__saveBM__[0]);
                            editor.__saveBM__[0].parentNode.removeChild(editor.__saveBM__[0]);
                        }
                        editor.__saveBM__ = null;
                    }
                } else if(!Sys.Extended.UI.HTMLEditor.isIE) {
                    rng = [];
                    var _found = false;

                    function _diver(_point,prize) {
                        while(_point) {
                            if(_point == span2) {
                                _found=true;
                                return;
                            }

                            if(_point.nodeType==3) {
                                while(_point.nextSibling && _point.nextSibling.nodeType==3) {
                                    _point.data= ""+_point.data+""+_point.nextSibling.data+"";
                                    _point.parentNode.removeChild(_point.nextSibling);
                                }
                                if(Sys.Extended.UI.HTMLEditor.Trim(""+_point.data+"").length>0) rng.push(_point);
                            } else
                                _diver(_point.firstChild,false);

                            if(_found) return;

                            var _save= _point.parentNode;

                            if(prize) {
                                while(_point && _point.nextSibling==null) {
                                    _point=_point.parentNode;
                                }
                            }

                            _point = _point.nextSibling;
                        }
                    }

                    _diver(span1,true);

                    range  = editor._doc.createRange();
                    range.setStart(rng[0],0);
                    range.setEnd  (rng[rng.length-1],(""+rng[rng.length-1].data+"").length);

                    editor._removeAllRanges(sel);
                    editor._selectRange(sel,range);
                } else {
                    try {
                        sel   = editor._getSelection();
                        var range1= editor._createRange(sel);
                        var range2= editor._createRange(sel);

                        range1.moveToElementText(span1);
                        range2.moveToElementText(span2);

                        range1.setEndPoint("EndToEnd", range2);
                        range1.select();
                    } catch(e){}
                }

                try {
                    var ppp;
                    if(span1 != null) {
                        ppp = span1.parentNode;
                        ppp.removeChild(span1);
                        while(ppp && ppp.childNodes.length==0) {
                            ppp.parentNode.removeChild(ppp);
                            ppp = ppp.parentNode;
                        }
                    }
                    if(span2 != null) {
                        ppp = span2.parentNode;
                        ppp.removeChild(span2);
                        while(ppp && ppp.childNodes.length==0) {
                            ppp.parentNode.removeChild(ppp);
                            ppp = ppp.parentNode;
                        }
                    }
                }
                catch(e){}
                editor.onContentChanged();
                editor._editPanel.updateToolbar();
            }
        },0);
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveStyles.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveStyles", Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);
�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.PreviewMode = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.PreviewMode.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.PreviewMode.prototype = {
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.PreviewMode.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.PreviewMode", Sys.Extended.UI.HTMLEditor.ToolbarButton.ModeButton);

�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyCenter = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyCenter.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyCenter.prototype = {
    checkState : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyCenter.callBaseMethod(this, "checkState")) return false;
        return this._designPanel._textAlignState("center");
    },
    
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyCenter.callBaseMethod(this, "callMethod")) return false;
        this._designPanel._execCommand("JustifyCenter");
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyCenter.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyCenter", Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton);

S!Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.CommonButton = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.CommonButton.initializeBase(this, [element]);

    this._loaded = false;
    this._preservePlace = false;
    this._editPanel = null;
    this._activeModes = null;
    this._app_onload$delegate = Function.createDelegate(this, this._app_onload);
    this._cssClass = "";

    this._onmouseover$delegate = Function.createDelegate(this, this._onmouseover);
    this._onmouseout$delegate = Function.createDelegate(this, this._onmouseout);
    this._onmousedown$delegate = Function.createDelegate(this, this._onmousedown);
    this._onmouseup$delegate = Function.createDelegate(this, this._onmouseup);
    this._onclick$delegate = Function.createDelegate(this, this._onclick);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.CommonButton.prototype = {

    get_preservePlace: function() {
        return this._preservePlace;
    },
    set_preservePlace: function(value) {
        this._preservePlace = value;
    },

    set_activeEditPanel: function(value) {
        this._editPanel = value;
        if (this._editPanel == null) {
            this.hideButton();
        } else {
            if (this.isAllowedActiveMode(this._editPanel.get_activeMode()) && this.canBeShown()) {
                this.showButton();
                this.onEditPanelActivity();
            } else {
                this.hideButton();
            }
        }
    },

    isImage: function() {
        return true;
    },

    checkRangeInDesign: function() {
        if (typeof this._designPanel == "undefined") return false;
        if (this._designPanel == null) return false;
        if (this._designPanel.isPopup()) return false;

        var parent = Sys.Extended.UI.HTMLEditor.getSelParent(this._designPanel);
        if (parent.nodeType == 3) parent = parent.parentNode;
        return (parent.ownerDocument == this._designPanel._doc);
    },

    get_buttonName: function() {
        var name = Object.getType(this).getName();
        name = name.substring(name.lastIndexOf(".") + 1);
        return name;
    },

    get_message: function(messageName) {
        var expression = "Sys.Extended.UI.Resources.HTMLEditor_toolbar_button_" + this.get_buttonName() + "_message_" + messageName;
        return eval(expression);
    },

    isDisplayed: function() {
        var element = this.get_element();
        if (element) {
            var style = element.style;
            return (style.display != "none" && style.visibility != "hidden");
        } else {
            return false;
        }
    },

    hideButton: function() {
        var element = this.get_element();
        if (element) {
            if (!this._preservePlace) {
                element.style.display = "none";
            } else {
                element.style.visibility = "hidden";
            }
        }
    },

    showButton: function() {
        var element = this.get_element();
        if (element) {
            if (element.style.display == "none") {
                element.style.display = "";
            }
            if (this._preservePlace) {
                element.style.visibility = "visible";
            }
        }
    },

    canBeShown: function() {
        return true;
    },

    onEditPanelActivity: function() {
    },

    get_activeModes: function() {
        if (this._activeModes == null) {
            this._activeModes = [];
        }
        return this._activeModes;
    },
    set_activeModes: function(value) {
        this.get_activeModes().push(value);
    },

    get_activeModesIds: function() {
    },
    set_activeModesIds: function(value) {
        var arr = value.split(";");
        for (var i = 0; i < arr.length; i++) {
            this.set_activeModes(parseInt(arr[i]));
        }
    },

    set_toolTip: function(value) {
        this.get_element().title = value;
    },
    get_toolTip: function() {
        return this.get_element().title;
    },

    isAllowedActiveMode: function(value) {
        for (var i = 0; i < this.get_activeModes().length; i++) {
            if (this.get_activeModes()[i] == value) {
                return true;
            }
        }
        return false;
    },

    initialize: function() {
        Sys.Extended.UI.HTMLEditor.ToolbarButton.CommonButton.callBaseMethod(this, "initialize");

        Sys.Application.add_load(this._app_onload$delegate);
        var element = this.get_element();

        if (this._preservePlace && !this.canBeShown()) {
            element.style.display = "none";
        }

        this._cssClass = element.className;

        if (this.isImage()) {
            $addHandlers(element, {
                mouseover: this._onmouseover$delegate,
                mouseout: this._onmouseout$delegate,
                mousedown: this._onmousedown$delegate,
                mouseup: this._onmouseup$delegate,
                click: this._onclick$delegate
            });
        }

        if (Sys.Extended.UI.HTMLEditor.isIE) {
            function diveSelectable(el) {
                if (el.nodeType == 1 && el.tagName) {
                    var tag = el.tagName.toUpperCase();
                    if (tag != "INPUT" && tag != "TEXTAREA" && tag != "IFRAME") {
                        el.unselectable = "on";
                    }
                    for (var k = 0; k < el.childNodes.length; k++) {
                        diveSelectable(el.childNodes.item(k));
                    }
                }
            }

            diveSelectable(element);
        } else {
            try {
                element.style.MozUserSelect = "none";
                element.parentNode.style.MozUserSelect = "none";
            } catch (ex) { }
        }
    },

    dispose: function() {
        if (this.isImage()) {
            $common.removeHandlers(this.get_element(), {
                mouseover: this._onmouseover$delegate,
                mouseout: this._onmouseout$delegate,
                mousedown: this._onmousedown$delegate,
                mouseup: this._onmouseup$delegate,
                click: this._onclick$delegate
            });
        }

        this._loaded = false;
        Sys.Application.remove_load(this._app_onload$delegate);
        Sys.Extended.UI.HTMLEditor.ToolbarButton.CommonButton.callBaseMethod(this, "dispose");
    },

    _app_onload: function(sender, e) {
        this.onButtonLoaded();
        this._loaded = true;
    },

    onButtonLoaded: function() {
    },

    _onmouseover: function(e) {
        if (!this.isEnable()) {
            return false;
        }
        Sys.UI.DomElement.addCssClass(this.get_element(), this._cssClass + "_hover");
        return true;
    },

    _onmouseout: function(e) {
        if (!this.isEnable()) {
            return false;
        }
        Sys.UI.DomElement.removeCssClass(this.get_element(), this._cssClass + "_hover");
        Sys.UI.DomElement.removeCssClass(this.get_element(), this._cssClass + "_mousedown");
        return true;
    },

    _onmousedown: function(e) {
        if (!this.isEnable()) {
            return null;
        }
        Sys.UI.DomElement.addCssClass(this.get_element(), this._cssClass + "_mousedown");
        return false;
    },

    _onmouseup: function(e) {
        if (!this.isEnable()) {
            return false;
        }
        Sys.UI.DomElement.removeCssClass(this.get_element(), this._cssClass + "_mousedown");
        return true;
    },

    _onclick: function(e) {
        if (!this.isEnable()) {
            return false;
        }
        return true;
    },

    isEnable: function() {
        if (!this._loaded) {
            return false;
        }
        if (this._editPanel == null) {
            return false;
        }
        return true;
    },

    setActivity: function(value) {
        if (value) {
            Sys.UI.DomElement.addCssClass(this.get_element(), this._cssClass + "_active");
        } else {
            Sys.UI.DomElement.removeCssClass(this.get_element(), this._cssClass + "_active");
        }
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.CommonButton.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.CommonButton", Sys.UI.Control);

'Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.BoxButton=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.BoxButton.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.BoxButton.prototype={initialize:function(){Sys.Extended.UI.HTMLEditor.ToolbarButton.BoxButton.callBaseMethod(this,"initialize")}};Sys.Extended.UI.HTMLEditor.ToolbarButton.BoxButton.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.BoxButton",Sys.Extended.UI.HTMLEditor.ToolbarButton.CommonButton);nType.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.BoxButton = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.BoxButton.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.BoxButton.prototype = {
    initialize : function() {
        Sys.Extended.UI.HTMLEditor.ToolbarButton.BoxButton.callBaseMethod(this, "initialize");
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.BoxButton.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.BoxButton", Sys.Extended.UI.HTMLEditor.ToolbarButton.CommonButton);

Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.BackColorSelector=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.BackColorSelector.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.BackColorSelector.prototype={callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.BackColorSelector.callBaseMethod(this,"callMethod"))return false},setColor:function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.BackColorSelector.callBaseMethod(this,"setColor",[a]);this._designPanel._execCommand("backcolor",false,a)}};Sys.Extended.UI.HTMLEditor.ToolbarButton.BackColorSelector.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.BackColorSelector",Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorSelector);CType.registerNamespace("Sys.Extended.UI.HTMLEditor.Popups");Sys.Extended.UI.HTMLEditor.Popups.AttachedPopup=function(a){Sys.Extended.UI.HTMLEditor.Popups.AttachedPopup.initializeBase(this,[a]);this._relatedElement=null};Sys.Extended.UI.HTMLEditor.Popups.AttachedPopup.prototype={get_relatedElement:function(){return this._relatedElement},set_relatedElement:function(a){this._relatedElement=a},open:function(j){var a=this;if(a._relatedElement!=null){var n=a;if(!a.checkCorrectLoaded(function(){n.open(j)}))return;var k=$common.getLocation(a._relatedElement),d=k.x,e=k.y+a._relatedElement.offsetHeight,b=a.get_element().parentNode;while(b&&b.tagName&&b.tagName.toUpperCase()!="BODY"){var f=Sys.Extended.UI.HTMLEditor.getStyle(b,"position");if(f=="absolute"||f=="fixed"){var m=parseInt(Sys.Extended.UI.HTMLEditor.getStyle(b,"top")),l=parseInt(Sys.Extended.UI.HTMLEditor.getStyle(b,"left"));if(!isNaN(m)&&!isNaN(l)){d-=l;e-=m}break}else if(f=="relative"){var g=$common.getLocation(b);d-=g.x;e-=g.y}b=b.parentNode}var c=Sys.Extended.UI.HTMLEditor.getClientViewportElement(a._iframe),i=c.clientWidth+c.scrollLeft,h=c.clientHeight+c.scrollTop;if(e<c.scrollTop)e=c.scrollTop;if(d<c.scrollLeft)d=c.scrollLeft;if(e+a._iframe.offsetHeight>h)e-=e+a._iframe.offsetHeight-h;if(d+a._iframe.offsetWidth>i)d-=d+a._iframe.offsetWidth-i;Sys.Extended.UI.HTMLEditor.Popups.AttachedPopup.callBaseMethod(a,"open",[j,e,d])}},close:function(a){Sys.Extended.UI.HTMLEditor.Popups.AttachedPopup.callBaseMethod(this,"close",[a])},initialize:function(){Sys.Extended.UI.HTMLEditor.Popups.AttachedPopup.callBaseMethod(this,"initialize")},dispose:function(){Sys.Extended.UI.HTMLEditor.Popups.AttachedPopup.callBaseMethod(this,"dispose")}};Sys.Extended.UI.HTMLEditor.Popups.AttachedPopup.registerClass("Sys.Extended.UI.HTMLEditor.Popups.AttachedPopup",Sys.Extended.UI.HTMLEditor.Popups.Popup);�8Sys.Extended.UI.HTMLEditor.MSIE_list = function(listTg) {
    var paragraphs          = this.get_paragraphs();
    var pars                = this.getSelectionAfterOperation(paragraphs);
    var currentParent       = null;
    var collectedParagraphs = [];
    var editor              = this;
    var commonList          = null;
    var commonListItems     = [];
    var listTag             = listTg.toUpperCase();
    var needJoiner          = false;

    function operateList() {
        if(commonList != null) {
            var newList;

            newList = commonList.cloneNode(false);
            commonList.parentNode.insertBefore(newList,commonList);
            while(commonList.firstChild != commonListItems[0]) newList.appendChild(commonList.firstChild);

            if(newList.firstChild==null) newList.parentNode.removeChild(newList);

            if(commonList.tagName.toUpperCase() == listTag) {
                for(var i=0; i < commonListItems.length; i++) {
                    var element = commonListItems[i];
                    if(element.nodeType==1 && element.tagName && element.tagName.toUpperCase()=="LI") {
                        var good = false;
                        commonList.parentNode.insertBefore(element,commonList);

                        if(element.style.textAlign=="") element.style.textAlign = commonList.style.textAlign;

                        if(commonList.childNodes.length==0 && i == commonListItems.length-1) {
                            commonList.parentNode.removeChild(commonList);
                            commonList = null;
                        }

                        if(element.style.textAlign=="" || (element.style.textAlign.toLowerCase()=="left" && !editor.rtlState()) || (element.style.textAlign.toLowerCase()=="right" && editor.rtlState())) {
                            good = editor.tryUnWrap(element,pars);
                            if(good) needJoiner=true;
                        }

                        if(!good) {
                            var newP  = editor._doc.createElement(editor.dfltBlockElement);
                            var attrs = element.attributes;

                            for (var ik = 0; ik < attrs.length; ++ik) {
                                var a = attrs.item(ik);
                                if (!a.specified) continue;
                                if (a.name.toLowerCase()=="style") continue;
                                newP.setAttribute(a.name,a.value);
                            }

                            newP.style.cssText = element.style.cssText;
                            if(newP.tagName.toUpperCase()=="P") newP.style.margin  = "0px";

                            while(element.firstChild) newP.appendChild(element.firstChild);

                            element.parentNode.insertBefore(newP,element);
                            element.parentNode.removeChild(element);
                        }
                    }
                    else
                        commonList.parentNode.insertBefore(element,commonList);
                }
            } else {
                var newList = editor._doc.createElement(listTag);
                var attrs   = commonList.attributes;

                for (var ik = 0; ik < attrs.length; ++ik) {
                    var a = attrs.item(ik);
                    if (!a.specified) continue;
                    if (a.name.toLowerCase()=="style") continue;
                    newList.setAttribute(a.name,a.value);
                }
                newList.style.cssText = commonList.style.cssText;

                commonList.parentNode.insertBefore(newList,commonList);

                for(var i=0; i < commonListItems.length; i++) {
                    var element = commonListItems[i];
                    newList.appendChild(element);
                }
            }

            if(commonList != null) {
                newList = commonList.cloneNode(false);
                commonList.parentNode.insertBefore(newList,commonList);
                while(commonList.firstChild) newList.appendChild(commonList.firstChild);

                if(newList.firstChild==null) newList.parentNode.removeChild(newList);

                commonList.parentNode.removeChild(commonList);
            }
        }
        commonList          = null;
        commonListItems     = [];
    }

    function operateCollectedParagraphs() {
        var firstChild = currentParent.firstChild;
        var lastChild  = currentParent.lastChild;
        var parTagName = currentParent.tagName.toUpperCase();

        if( // if all paragraps(only) are in one parent already
            !Sys.Extended.UI.HTMLEditor.isInlineElement(currentParent) &&
            collectedParagraphs[0][0] == firstChild &&
            collectedParagraphs[collectedParagraphs.length-1][collectedParagraphs[collectedParagraphs.length-1].length-1] == lastChild &&
            (parTagName=="OL" || parTagName=="UL" || parTagName=="DL" || parTagName=="LI" || 
            ((parTagName=="P" || parTagName=="DIV"  || Sys.Extended.UI.HTMLEditor.isHeader(currentParent)) && parTagName=="LI")
            )
        ) {
            operateList();
            commonListItems = [];

            if (parTagName == "LI") {
                commonList = currentParent.parentNode;
                commonListItems.push(currentParent);
            }
            else if(parTagName=="P" || parTagName=="DIV" || Sys.Extended.UI.HTMLEditor.isHeader(currentParent)) {
                commonList = currentParent.parentNode.parentNode;
                commonListItems.push(currentParent.parentNode);
            } else {
                commonList = currentParent;

                for(var i=0; i < collectedParagraphs.length; i++) {
                    var paragraph = collectedParagraphs[i];

                    for(var j=0; j < paragraph.length; j++) {
                        commonListItems.push(paragraph[j]);
                    }
                }
            }
            operateList();
        } else {
            if(parTagName=="LI" && (collectedParagraphs.length < paragraphs.length)) {
                if(commonList != currentParent.parentNode) {
                    operateList();
                    commonList      = currentParent.parentNode;
                    commonListItems = [];
                }
                commonListItems.push(currentParent);
            } else if(parTagName=="OL" || parTagName=="UL" || parTagName=="DL") {
                operateList();
                commonList      = currentParent;
                commonListItems = [];

                for(var i=0; i < collectedParagraphs.length; i++) {
                    var paragraph = collectedParagraphs[i];

                    for(var j=0; j < paragraph.length; j++) {
                        commonListItems.push(paragraph[j]);
                    }
                }
                operateList();
            } else {
                var li   = null;
                var list = null;

                function completeLi() {
                    if(li != null)
                    if(li.childNodes==1 && (li.firstChild==pars[0] || li.firstChild==pars[1])) {
                        li.parentNode.insertBefore(li.firstChild, li);
                        li.parentNode.removeChild(li);
                    }
                    li = null;
                }

                if(commonList != null) {
                    operateList();
                }
                
                var colTagName = "";
                if (collectedParagraphs.length==1 && collectedParagraphs[0].length==1 && collectedParagraphs[0][0].nodeType==1 && collectedParagraphs[0][0].tagName) {
                    colTagName = collectedParagraphs[0][0].tagName.toUpperCase();
                }

                if (colTagName=="OL" || colTagName=="UL" || colTagName=="DL") {
                    var element = collectedParagraphs[0][0];
                    commonList      = element;
                    commonListItems = [];
                    for(var i=0; i < element.childNodes.length; i++) {
                        var el = element.childNodes.item(i);
                        commonListItems.push(el);
                    }
                    operateList();
                } else {
                    for(var i=0; i < collectedParagraphs.length; i++) {
                        var paragraph = collectedParagraphs[i];

                        for(var j=0; j < paragraph.length; j++) {
                            var element = paragraph[j];
                            var elTagName = (element.tagName)?element.tagName.toUpperCase():"";
                            if(list == null) {
                                list = editor._doc.createElement(listTag);
                                element.parentNode.insertBefore(list,element);
                            }

                            if(!Sys.Extended.UI.HTMLEditor.isInlineElement(element) && elTagName != "BR") {
                                if(li && li.firstChild) completeLi();

                                if(li == null) {
                                    li = editor._doc.createElement("LI");
                                    list.appendChild(li);
                                }

                                li.appendChild(element);
                                completeLi();
                            } else {
                                if (li == null) {
                                    li = editor._doc.createElement("LI");
                                    list.appendChild(li);
                                }

                                var actualLength = (paragraph[paragraph.length-1]==pars[1])?paragraph.length-1:paragraph.length;
                                var actualStart  = (paragraph[0]==pars[0])?1:0;

                                if(elTagName == "BR" && j == actualLength-1 && j==actualStart) {
                                    if(Sys.Extended.UI.HTMLEditor.isIE) {
                                        li.appendChild(editor._doc.createTextNode(String.fromCharCode(160)));
                                        element.parentNode.removeChild(element);
                                    }
                                    else
                                        li.appendChild(element);
                                } else
                                    if(elTagName == "BR" && j == actualLength-1 && j>actualStart)
                                        element.parentNode.removeChild(element);
                                    else
                                        li.appendChild(element);

                                if(elTagName == "BR" && j == paragraph.length-1) {
                                    completeLi();
                                    li = null;
                                }

                                if(element == pars[1] && j == paragraph.length-1) {
                                    completeLi();
                                    li = null;
                                }
                            }
                        }
                        if(li && li.firstChild) completeLi();
                    }
                }

                if(list != null) {
                    var aligns = [];
                    for(var j=0; j < list.childNodes.length; j++) aligns.push(list.childNodes.item(j).style.textAlign);

                    var jj=1;
                    for(; jj < aligns.length; jj++)
                        if(aligns[jj-1] != aligns[jj]) break;

                    if(jj==aligns.length) {
                        var align = ((aligns[0]=="left" && !editor.rtlState()) || (aligns[0]=="right" && editor.rtlState()))?"":aligns[0];
                        for(var j=0; j < list.childNodes.length; j++) list.childNodes.item(j).style.textAlign = "";

                        list.style.textAlign = align;
                    }
                }

                if(list != null)
                if(list.parentNode.tagName.toUpperCase() == "P" && list.parentNode.childNodes.length == 1) {
                    var pp = list.parentNode;
                    var clone = pp.cloneNode(false);
                    pp.parentNode.insertBefore(list,pp);
                    pp.parentNode.removeChild(pp);

                    if(list.childNodes.length==1) {
                        var item = list.firstChild;

                        while(item.firstChild) clone.appendChild(item.firstChild);
                        item.appendChild(clone);
                    } else
                        delete clone;
                }
            }
        }
    }

    for(var i=0; i < paragraphs.length; i++) {
        var paragraph = paragraphs[i];

        if(paragraph.length > 0) {
            if(paragraph[0].parentNode != currentParent) { // start new collection of paragraps
                if(collectedParagraphs.length > 0)
                    operateCollectedParagraphs();

                collectedParagraphs = [];
                currentParent = paragraph[0].parentNode;
            }

            collectedParagraphs.push(paragraph);
        }
    }

    if(collectedParagraphs.length > 0)
        operateCollectedParagraphs();

    if(commonList != null) {
        operateList();
    }

    this.setSelectionAfterOperation(pars, needJoiner);
};

Sys.Extended.UI.HTMLEditor.MSIE_justify = function(textAlign, addParameter, addParameter1) {
    var paragraphs          = this.get_paragraphs();
    var pars                = this.getSelectionAfterOperation(paragraphs);
    var currentParent       = null;
    var collectedParagraphs = [];
    var editor              = this;
    var force               = (typeof addParameter  != "undefined" && addParameter )?true:false;
    var remainP             = (typeof addParameter1 == "string")?true:false;
    var pTag                = (typeof addParameter1 == "string")?addParameter1:"";
    var needJoiner          = false;

    function completeDiv(div){
        if(div != null)
        if(div.childNodes==1 && (div.firstChild==pars[0] || div.firstChild==pars[1])) {
            div.parentNode.insertBefore(div.firstChild, div);
            div.parentNode.removeChild(div);
        }
    }

    function operateCollectedParagraphs()
    {
        var firstChild = currentParent.firstChild;
        var lastChild  = currentParent.lastChild;
        var single = false;
        var curTagName;
        if( currentParent.tagName && !Sys.Extended.UI.HTMLEditor.isInlineElement(currentParent) &&
            collectedParagraphs[0][0] == firstChild &&
            collectedParagraphs[collectedParagraphs.length-1][collectedParagraphs[collectedParagraphs.length-1].length-1] == lastChild
        ) {
            curTagName = currentParent.tagName.toUpperCase();
            if (curTagName != "TD" && curTagName != "TH" && curTagName != "FIELDSET" && curTagName != "LEGEND") {
                single = true;
            }
        }
        
        if(single) { // if all paragraps(them only) are in one parent already
            var align = "";

            if(currentParent.getAttribute("align") && currentParent.getAttribute("align").length > 0)
                align = currentParent.getAttribute("align");

            if(currentParent.align && currentParent.align.length > 0)
                align = currentParent.align;

            if(currentParent.style.textAlign && currentParent.style.textAlign.length > 0)
                align = currentParent.style.textAlign;

            currentParent.align = "";
            currentParent.setAttribute("align", "");
            currentParent.removeAttribute("align");

            if((curTagName == "DIV" || curTagName == "P" || Sys.Extended.UI.HTMLEditor.isHeader(currentParent)) && textAlign == "left" && force ) {
                if(editor.tryUnWrap(currentParent,pars,force)) needJoiner=true;
            } else {
                if(textAlign != "remain") {
                    if(!(textAlign == "left" && force) || (curTagName=="LI" && currentParent.parentNode.style.textAlign.length>0 ))
                        currentParent.style.textAlign = textAlign;
                    else
                        currentParent.style.textAlign = "";
                }

                if(force) currentParent.style.margin = (curTagName=="P")?"0px":"";

                if(curTagName=="LI") {
                    var list = currentParent.parentNode;
                    var aligns = [];
                    for(var jn=0; jn < list.childNodes.length; jn++)
                        if(list.childNodes.item(jn).nodeType==1)
                            aligns.push(list.childNodes.item(jn).style.textAlign);

                    var jj=1;
                    for(; jj < aligns.length; jj++)
                        if(aligns[jj-1] != aligns[jj]) break;

                    if(jj==aligns.length) {
                        var align = (aligns[0]=="left" && force)?"":aligns[0];
                        for(var j=0; j < list.childNodes.length; j++)
                            if(list.childNodes.item(j).nodeType==1) {
                                list.childNodes.item(j).style.textAlign = "";
                                if(force) list.childNodes.item(j).style.margin = (list.childNodes.item(j).tagName.toUpperCase()=="P")?"0px":"";
                            }

                        list.style.textAlign = align;
                    }
                }

                if((curTagName == "DIV" || curTagName == "P" || Sys.Extended.UI.HTMLEditor.isHeader(currentParent))
                    && remainP && pTag.toUpperCase() != curTagName) {
                    var nEl = editor._doc.createElement(pTag);

                    var attrs = currentParent.attributes;

                    for (var k = 0; k < attrs.length; ++k) {
                        var a = attrs.item(k);
                        if (!a.specified) continue;
                        if (a.name.toLowerCase()=="style") continue;
                        nEl.setAttribute(a.name,a.value);
                    }

                    nEl.style.cssText = currentParent.style.cssText;

                    while(currentParent.firstChild) nEl.appendChild(currentParent.firstChild);
                    currentParent.parentNode.insertBefore(nEl,currentParent);
                    currentParent.parentNode.removeChild(currentParent);
                }
            }
        } else {
            var div = null;
            for(var i=0; i < collectedParagraphs.length ; i++) {
                if(!remainP) div = null;
                var paragraph = collectedParagraphs[i];
                for(var j=0; j < paragraph.length; j++) {
                    var element = paragraph[j];
                    var elementTagName = (element.nodeType == 1 && element.tagName)?element.tagName.toUpperCase():null;

                    if( elementTagName != null &&
                       (elementTagName == "UL" || elementTagName == "OL"  ||
                        elementTagName == "DL" || elementTagName == "DIV" || Sys.Extended.UI.HTMLEditor.isHeader(element) ||
                        elementTagName == "P"  || elementTagName == "LI"  || elementTagName == "TABLE"
                       )
                    ) {
                        completeDiv(div);
                        div = null;
                        if(textAlign != "remain")
                        if(elementTagName!="TABLE" && !force)
                            element.style.textAlign = textAlign;

                        if(force) element.style.margin = (elementTagName=="P")?"0px":"";

                        if (elementTagName == "UL" || elementTagName == "OL" || elementTagName == "DL") {
                            for(var jk=0; jk < element.childNodes.length; jk++) {
                                var li = element.childNodes.item(jk);
                                if(li.nodeType==1) {
                                    li.style.textAlign = "";
                                    if(force) li.style.margin = (li.tagName.toUpperCase()=="P")?"0px":"";

                                    for(var kk=0; kk < li.childNodes.length; kk++) {
                                        var child = li.childNodes.item(kk);
                                        if(child.nodeType==1 && child.tagName) {
                                            var childTagName = child.tagName.toUpperCase();
                                            if(force) child.style.margin = (childTagName=="P")?"0px":"";

                                            if(childTagName == "DIV" || childTagName == "P" || Sys.Extended.UI.HTMLEditor.isHeader(child))  {
                                                if(editor.tryUnWrap(child,pars,force)) needJoiner=true;
                                            }
                                        }
                                    }
                                }
                            }

                            if(textAlign == "left" && force) element.style.textAlign = "";

                            continue;
                        } else if(elementTagName=="LI") {
                            if(textAlign != "remain") {
                                if(!(textAlign == "left" && force) || element.parentNode.style.textAlign.length>0 )
                                    element.style.textAlign = textAlign;
                                else
                                    element.style.textAlign = "";
                            }

                            if(force) element.style.margin = (elementTagName=="P")?"0px":"";
                            var list = element.parentNode;
                            var aligns = [];
                            for(var jn=0; jn < list.childNodes.length; jn++)
                                if(list.childNodes.item(jn).nodeType==1)
                                    aligns.push(list.childNodes.item(jn).style.textAlign);

                            var jj=1;
                            for(; jj < aligns.length; jj++)
                                if(aligns[jj-1] != aligns[jj]) break;

                            if(jj==aligns.length) {
                                var align = (aligns[0]=="left" && force)?"":aligns[0];
                                for(var j=0; j < list.childNodes.length; j++)
                                    if(list.childNodes.item(j).nodeType==1) {
                                        list.childNodes.item(j).style.textAlign = "";
                                        if(force) list.childNodes.item(j).style.margin = (list.childNodes.item(j).tagName.toUpperCase()=="P")?"0px":"";
                                    }

                                list.style.textAlign = align;
                            }

                            continue;
                        } else if(elementTagName=="TABLE") {
                            if(textAlign != "remain") {
                                if(!(textAlign == "left" && force) )
                                    element.align = textAlign;
                                else {
                                    element.align = "";
                                    element.removeAttribute("align");
                                }
                            }
                        }

                        if((elementTagName == "DIV" || elementTagName == "P" || Sys.Extended.UI.HTMLEditor.isHeader(element)) && textAlign == "left" && force) {
                            if(editor.tryUnWrap(element,pars,force)) needJoiner=true;
                        }

                        if((elementTagName == "DIV" || elementTagName == "P" || Sys.Extended.UI.HTMLEditor.isHeader(element))
                            && remainP && pTag.toUpperCase() != elementTagName) {
                            var nEl = editor._doc.createElement(pTag);

                            var attrs = element.attributes;

                            for (var k = 0; k < attrs.length; ++k) {
                                var a = attrs.item(k);
                                if (!a.specified) continue;
                                if (a.name.toLowerCase()=="style") continue;
                                nEl.setAttribute(a.name,a.value);
                            }

                            nEl.style.cssText = element.style.cssText;

                            while(element.firstChild) nEl.appendChild(element.firstChild);
                            element.parentNode.insertBefore(nEl,element);
                            element.parentNode.removeChild(element);
                        }
                    } else {
                        if(!(textAlign == "left" && force) || remainP) {
                            if(div == null) {
                                div = editor._doc.createElement(remainP?pTag:editor.dfltBlockElement);
                                if(editor.dfltBlockElement.toUpperCase()=="P" && !remainP) div.style.margin  = "0px";
                                if(!remainP)div.style.textAlign = textAlign;
                                element.parentNode.insertBefore(div,element);
                            }

                            var actualLength = (paragraph[paragraph.length-1]==pars[1])?paragraph.length-1:paragraph.length;
                            var actualStart  = (paragraph[0]==pars[0])?1:0;

                            if(elementTagName == "BR" && j == actualLength-1 && j==actualStart) {
                                if(Sys.Extended.UI.HTMLEditor.isIE) {
                                    div.appendChild(editor._doc.createTextNode(String.fromCharCode(160)));
                                    element.parentNode.removeChild(element);
                                } else
                                    div.appendChild(element);
                            } else
                                if(elementTagName == "BR" && j == actualLength-1 && j>actualStart && (!remainP || (element.nextSibling != null && element.nextSibling==pars[1])))
                                    element.parentNode.removeChild(element);
                                else
                                    div.appendChild(element);

                            if(elementTagName == "BR" && j == paragraph.length-1 && !remainP) {
                                completeDiv(div);
                                div = null;
                            }

                            if(element == pars[1] && j == paragraph.length-1) {
                                completeDiv(div);
                                div = null;
                            }
                        }
                    }
                }
            }
        }
    }

    for(var i=0; i < paragraphs.length; i++) {
        var paragraph = paragraphs[i];

        if(paragraph.length > 0)  {
            if(paragraph[0].parentNode != currentParent) { // start new collection of paragraps
                if(collectedParagraphs.length > 0)
                    operateCollectedParagraphs();

                collectedParagraphs = [];
                currentParent = paragraph[0].parentNode;
            }

            collectedParagraphs.push(paragraph);
        }
    }

    if(collectedParagraphs.length > 0)
        operateCollectedParagraphs();

    this.setSelectionAfterOperation(pars, needJoiner);
}

Sys.Extended.UI.HTMLEditor.MSIE_indent = function(increase) {
    var paragraphs          = this.get_paragraphs();
    var pars                = this.getSelectionAfterOperation(paragraphs);
    var currentParent       = null;
    var collectedParagraphs = [];
    var editor              = this;
    var needJoiner          = false;

    function getMargin(el) {
        if(el.nodeType==1) {
            var cssEl = (!editor.rtlState())?el.style.marginLeft:el.style.marginRight;
            if(cssEl.length > 0) return parseInt(cssEl);
        }
        return 0;
    }

    function setMargin(el,value) {
        if(el.nodeType==1) {
            if(el.tagName.toUpperCase()=="P" && value=="") value="0px";
            if(!editor.rtlState())
                el.style.marginLeft = value;
            else
                el.style.marginRight= value;
        }
    }

    function changeMargin(el) {
        if(increase)
            setMargin(el,(getMargin(el)+40)+"px");
        else {
            if(el.tagName.toUpperCase()=="P") {
                if(getMargin(el) >= 40)
                    setMargin(el,(getMargin(el)-40)+"px");
                else
                    setMargin(el,"0px");
            }
            else {
                if(getMargin(el) > 40)
                    setMargin(el,(getMargin(el)-40)+"px");
                else
                    setMargin(el,"");
            }
        }
    }

    function completeDiv(div) {
        if(div != null)
        if(div.childNodes==1 && (div.firstChild==pars[0] || div.firstChild==pars[1])) {
            div.parentNode.insertBefore(div.firstChild, div);
            div.parentNode.removeChild(div);
        }
    }

    function operateCollectedParagraphs() {
        var firstChild = currentParent.firstChild;
        var lastChild  = currentParent.lastChild;
        if( // if all paragraps(them only) are in one parent already
            currentParent.tagName && !Sys.Extended.UI.HTMLEditor.isInlineElement(currentParent) &&
            collectedParagraphs[0][0] == firstChild &&
            collectedParagraphs[collectedParagraphs.length-1][collectedParagraphs[collectedParagraphs.length-1].length-1] == lastChild
        ) {
            var textAlign = "";

            if(currentParent.getAttribute("align") && currentParent.getAttribute("align").length > 0)
                textAlign = currentParent.getAttribute("align");

            if(currentParent.align && currentParent.align.length > 0)
                textAlign = currentParent.align;

            if(currentParent.style.textAlign && currentParent.style.textAlign.length > 0)
                textAlign = currentParent.style.textAlign;

            if((textAlign.toLowerCase()=="left" && !editor.rtlState()) || (textAlign.toLowerCase()=="right" && editor.rtlState())) textAlign = "";

            currentParent.align = "";
            currentParent.setAttribute("align", "");
            currentParent.removeAttribute("align");

            changeMargin(currentParent);
            
            var curTagName = currentParent.tagName.toUpperCase();

            if((curTagName == "DIV" || curTagName == "P" || Sys.Extended.UI.HTMLEditor.isHeader(currentParent)) && textAlign == "") {
                if(editor.tryUnWrap(currentParent,pars)) needJoiner=true;
            } else {
                if(textAlign != "" || (curTagName=="LI" && currentParent.parentNode.style.textAlign.length>0 ))
                    currentParent.style.textAlign = textAlign;
                else
                    currentParent.style.textAlign = "";

                if(curTagName=="LI") {
                    var list    = currentParent.parentNode;
                    var margins = [];
                    for(var jn=0; jn < list.childNodes.length; jn++)
                        margins.push(getMargin(list.childNodes.item(jn)));

                    var jj=1;
                    for(; jj < margins.length; jj++)
                        if(margins[jj-1] != margins[jj]) break;

                    if(jj==margins.length) {
                        var margin = (margins[0]==0)?"":(margins[0]+"px");
                        for(var j=0; j < list.childNodes.length; j++)
                            setMargin(list.childNodes.item(j),"");

                        setMargin(list, margin);
                    }
                }
            }
        } else {
            for(var i=0; i < collectedParagraphs.length ; i++) {
                var div = null;
                var paragraph = collectedParagraphs[i];
                for(var j=0; j < paragraph.length; j++) {
                    var element = paragraph[j];
                    var elementTagName = (element.nodeType == 1 && element.tagName)?element.tagName.toUpperCase():null;

                    if (elementTagName != null &&
                       (elementTagName == "UL" || elementTagName == "OL"  ||
                        elementTagName == "DL" || elementTagName == "DIV" || Sys.Extended.UI.HTMLEditor.isHeader(element) ||
                        elementTagName == "P"  || elementTagName == "LI"
                       )
                    ) {
                        completeDiv(div);
                        div = null;

                        changeMargin(element)

                        if(elementTagName == "UL" || elementTagName == "OL" || elementTagName == "DL") {
                            for(var jk=0; jk < element.childNodes.length; jk++) {
                                var li = element.childNodes.item(jk);

                                if(li.nodeType==1) {
                                    setMargin(li, "");

                                    for(var kk=0; kk < li.childNodes.length; kk++) {
                                        var child = li.childNodes.item(kk);

                                        var textAlign = (child.nodeType==1)?element.style.textAlign:"";
                                        if((textAlign.toLowerCase()=="left" && !editor.rtlState()) || (textAlign.toLowerCase()=="right" && editor.rtlState())) textAlign = "";

                                        if(child.nodeType==1) {
                                            setMargin(child, "");
                                            if(textAlign == "" && child.tagName) {
                                                var childTagName = child.tagName.toUpperCase();
                                                if (childTagName == "DIV" || childTagName == "P") {
                                                    if(editor.tryUnWrap(child,pars)) needJoiner=true;
                                                }
                                            }
                                        }
                                    }
                                }
                            }

                            continue;
                        } else if(elementTagName=="LI") {
                            var list    = element.parentNode;
                            var margins = [];
                            for(var jn=0; jn < list.childNodes.length; jn++)
                                margins.push(getMargin(list.childNodes.item(jn)));

                            var jj=1;
                            for(; jj < margins.length; jj++)
                                if(margins[jj-1] != margins[jj]) break;

                            if(jj==margins.length) {
                                var margin = (margins[0]==0)?"":(margins[0]+"px");
                                for(var j=0; j < list.childNodes.length; j++)
                                    setMargin(list.childNodes.item(j),"");

                                setMargin(list, margin);
                            }

                            continue;
                        }

                        var textAlign = element.style.textAlign;
                        if((textAlign.toLowerCase()=="left" && !editor.rtlState()) || (textAlign.toLowerCase()=="right" && editor.rtlState())) textAlign = "";

                        if((elementTagName == "DIV" || elementTagName == "P" || Sys.Extended.UI.HTMLEditor.isHeader(element)) && textAlign == "") {
                            if(editor.tryUnWrap(element,pars)) needJoiner=true;
                        }
                    } else {
                        if(increase) {
                            if(div == null) {
                                div = editor._doc.createElement(editor.dfltBlockElement);
                                if(editor.dfltBlockElement.toUpperCase()=="P") div.style.margin  = "0px";
                                changeMargin(div);
                                element.parentNode.insertBefore(div,element);
                            }

                            var actualLength = (paragraph[paragraph.length-1]==pars[1])?paragraph.length-1:paragraph.length;
                            var actualStart  = (paragraph[0]==pars[0])?1:0;

                            if(elementTagName == "BR" && j == actualLength-1 && j==actualStart) {
                                if(Sys.Extended.UI.HTMLEditor.isIE) {
                                    div.appendChild(editor._doc.createTextNode(String.fromCharCode(160)));
                                    element.parentNode.removeChild(element);
                                } else
                                    div.appendChild(element);
                            } else if(elementTagName == "BR" && j == actualLength-1 && j>actualStart)
                                        element.parentNode.removeChild(element);
                                    else
                                        div.appendChild(element);

                            if(elementTagName == "BR" && j == paragraph.length-1) {
                                completeDiv(div);
                                div = null;
                            }

                            if(element == pars[1] && j == paragraph.length-1) {
                                completeDiv(div);
                                div = null;
                            }
                        }
                    }
                }
            }
        }
    }

    for(var i=0; i < paragraphs.length; i++) {
        var paragraph = paragraphs[i];

        if(paragraph.length > 0) {
            if(paragraph[0].parentNode != currentParent) {
                if(collectedParagraphs.length > 0)
                    operateCollectedParagraphs();

                collectedParagraphs = [];
                currentParent = paragraph[0].parentNode;
            }

            collectedParagraphs.push(paragraph);
        }
    }

    if(collectedParagraphs.length > 0)
        operateCollectedParagraphs();

    this.setSelectionAfterOperation(pars,needJoiner);
};

Sys.Extended.UI.HTMLEditor.getSelectionAfterOperation = function(paragraphs) {
    if(paragraphs.length==0) return[];

    var lPoint    = this._doc.createElement("SPAN");
    var rPoint    = this._doc.createElement("SPAN");
    var initFirst = paragraphs[0][0];
    var initLast  = paragraphs[paragraphs.length-1][paragraphs[paragraphs.length-1].length-1];

    if(initFirst==initLast && initLast.nodeType==1 && initLast.childNodes.length==0 && Sys.Extended.UI.HTMLEditor.canHaveChildren(initLast)) {
        initLast.appendChild(lPoint);
        initLast.appendChild(rPoint);
    } else {
        var firstest = Sys.Extended.UI.HTMLEditor._getReallyFirst(initFirst);

        firstest.parentNode.insertBefore(lPoint,firstest);

        if(firstest == initFirst) {
            var sv = [];
            sv.push(lPoint);
            for(var i=0; i<paragraphs[0].length; i++)
                sv.push(paragraphs[0][i]);

            paragraphs[0] = sv;
        }

        var lastest = Sys.Extended.UI.HTMLEditor._getReallyLast(initLast);

        if(lastest.nextSibling)
            lastest.parentNode.insertBefore(rPoint,lastest.nextSibling);
        else
            lastest.parentNode.appendChild(rPoint);

        if(lastest == initLast) {
            paragraphs[paragraphs.length-1].push(rPoint)
        }
    }
    return [lPoint,rPoint];
};

Sys.Extended.UI.HTMLEditor.setSelectionAfterOperation = function(pars, needJoiner) {
    if(pars.length==0) return;

    var lPoint = pars[0];
    var rPoint = pars[1];

    var sel   = this._getSelection();
    var text1 = null;
    var text2 = null;

    if(Sys.Extended.UI.HTMLEditor.isIE) {
        sel.empty();
        sel   = this._getSelection();  
        var range1= this._createRange(sel);
        var range2= this._createRange(sel);

        try {
            if(lPoint != null && rPoint != null && lPoint.nextSibling == rPoint) {
                text1 = this._doc.createTextNode(" ");
                rPoint.parentNode.insertBefore(text1,rPoint);
            }

            this._TcurrentFormat = null;

            if(lPoint != null) {
                range1.moveToElementText(lPoint);
            }

            if(rPoint != null) {
                range2.moveToElementText(rPoint);
            }

            if(lPoint != null && rPoint != null) {
                range1.setEndPoint("EndToStart", range2);
                range1.select();
                if(text1 != null) {
                    range1.collapse(false);
                    range1.select();
                    text1.parentNode.removeChild(text1);
                }
            } else
                if(lPoint != null) range1.select();
                else
                    if(rPoint != null) range2.select();
        } catch(ex) {}
    } else {
        try {
            var range;
            var next = lPoint.nextSibling;
            var prev = rPoint.previousSibling

            this._TcurrentFormat = null;

            if(next == prev && next.nodeType == 1 && next.tagName.toUpperCase()=="BR") {
                var ind = Sys.Extended.UI.HTMLEditor.__getIndex(next);
                range  = this._doc.createRange();
                range.setStart(next.parentNode,ind);
                range.setEnd  (next.parentNode,ind);
            } else {
                text1 = this._doc.createTextNode("");
                text2 = this._doc.createTextNode("");

                lPoint.parentNode.insertBefore(text1,lPoint);
                rPoint.parentNode.insertBefore(text2,rPoint);

                range  = this._doc.createRange();
                range.setStart(text1,0);
                range.setEnd  (text2,0);
            }

            this._removeAllRanges(sel);
            this._selectRange(sel,range);
        } catch(ex){}
    }

    var fnd = Sys.Extended.UI.HTMLEditor._commonTotalParent((lPoint==null)?rPoint:lPoint,(rPoint==null)?lPoint:rPoint);
    var parent = null;

    if(fnd != null) {
        parent = fnd.parent;
    }

    if(lPoint != null) lPoint.parentNode.removeChild(lPoint);
    if(rPoint != null) rPoint.parentNode.removeChild(rPoint);

    if(needJoiner && parent != null) {
        Sys.Extended.UI.HTMLEditor.spanJoiner(parent,this._doc);

        if(!Sys.Extended.UI.HTMLEditor.isIE && text1 != null && text2 !=null) {
            var range  = this._doc.createRange();
            range.setStart(text1,0);
            range.setEnd  (text2,0);

            this._removeAllRanges(sel);
            this._selectRange(sel,range);
        }
    }
};

Sys.Extended.UI.HTMLEditor.get_paragraphs = function() {
    this._TcurrentFormat = null;
    var paragraphs = this.getPseudoP();

    if(paragraphs.length == 0) {
        try {
            var str = "<span id='"+Sys.Extended.UI.HTMLEditor.smartClassName+"_ll'></span><span id='"+Sys.Extended.UI.HTMLEditor.smartClassName+"_rr'></span><br>";
            this.insertHTML(str);
            var lPoint = this._doc.getElementById(Sys.Extended.UI.HTMLEditor.smartClassName+"_ll");
            var rPoint = this._doc.getElementById(Sys.Extended.UI.HTMLEditor.smartClassName+"_rr");

            var sv = this._TcurrentFormat;
            this._TcurrentFormat = null;
            this.setSelectionAfterOperation([lPoint,rPoint], false);
            this._TcurrentFormat = sv;
            paragraphs = this.getPseudoP();
        } catch(ex) {}
    }

    return paragraphs;
};

Sys.Extended.UI.HTMLEditor.getPseudoP = function() {
    var result = [];
    try {
        var sel   = this._getSelection();
        var range = this._createRange(sel);

        var rn=Sys.Extended.UI.HTMLEditor.smartClassName+"_right";
        var ln=Sys.Extended.UI.HTMLEditor.smartClassName+"_left";

        var r_left = null;
        var r_right= null;

        if(Sys.Extended.UI.HTMLEditor.isIE) {
            if(sel.type.toLowerCase() != "control") {
                r_left =range.duplicate();
                r_right=range.duplicate();
                r_left .setEndPoint("EndToStart",range);
                r_right.setEndPoint("StartToEnd",range);
            }
        } else {
            r_left =range.cloneRange();
            r_right=range.cloneRange();
            r_left .setEnd  (r_left .startContainer,r_left .startOffset);
            r_right.setStart(r_right.endContainer  ,r_right.endOffset  );
        }

        var lPoint = null;
        var rPoint = null;

        if(Sys.Extended.UI.HTMLEditor.isIE && sel.type.toLowerCase() == "control") {
            var control =range.item(0);
            var cspan;

            cspan = this._doc.createElement("SPAN");
            cspan.id = ln;
            control.parentNode.insertBefore(cspan,control);

            cspan = this._doc.createElement("SPAN");
            cspan.id = rn;
            if(control.nextSibling == null)
                control.parentNode.appendChild(cspan);
            else
                control.parentNode.insertBefore(cspan,control.nextSibling);
        } else {
            if(!this.insertHTML("<span id='"+rn+"'/>",r_right)) return [];
            if(!this.insertHTML("<span id='"+ln+"'/>",r_left )) {
                var rP = this._doc.getElementById(rn);
                if(rP!=null) {
                    temp=rP.parentNode;
                    temp.removeChild(rP);
                }
                return [];
            }
        }

        lPoint = this._doc.getElementById(ln);
        rPoint = this._doc.getElementById(rn);

        if(lPoint != null && rPoint != null) {
            while(lPoint.nextSibling == null) {
                if(lPoint.parentNode.nextSibling)
                    lPoint.parentNode.parentNode.insertBefore(lPoint,lPoint.parentNode.nextSibling);
                else
                    lPoint.parentNode.parentNode.appendChild(lPoint);
            }
        }

        if(lPoint != null && rPoint != null) {
            while(rPoint.previousSibling == null)
                rPoint.parentNode.parentNode.insertBefore(rPoint,rPoint.parentNode);

            if(rPoint.previousSibling.nodeType==1) {
                var tagName = rPoint.previousSibling.tagName.toUpperCase();
                if(tagName!="BR" && tagName!="IMG") {
                    var last = Sys.Extended.UI.HTMLEditor._getReallyLast(rPoint.previousSibling);
                    if(last.nodeType==1 && Sys.Extended.UI.HTMLEditor.canHaveChildren(last))
                        last.appendChild(rPoint);
                    else
                        last.parentNode.appendChild(rPoint);
                }
            }

            if(rPoint.previousSibling && rPoint.previousSibling.nodeType==1 && rPoint.previousSibling.tagName.toUpperCase()=="BR")
                rPoint.parentNode.insertBefore(rPoint,rPoint.previousSibling);
        }

        if(lPoint == null) {
            var span = this._doc.createElement("SPAN");
            span.id  = ln;
            rPoint.parentNode.insertBefore(span,rPoint);
            lPoint = span;
        }
        if(rPoint == null) {
            var span = this._doc.createElement("SPAN");
            span.id  = rn;

            if(lPoint.nextSibling)
                lPoint.parentNode.insertBefore(span,lPoint.nextSibling);
            else
                lPoint.parentNode.appendChild (span);

            rPoint = span;
        }

        if(lPoint != null && rPoint != null) {
            if(lPoint.parentNode == rPoint) {
                rPoint.parentNode.insertBefore(lPoint,rPoint);
            }
            else if(rPoint.parentNode == lPoint) {
                if(lPoint.nextSibling != null)
                    lPoint.parentNode.insertBefore(rPoint,lPoint.nextSibling);
                else
                    lPoint.parentNode.appendChild(rPoint);
            }
        }

        while(lPoint.nextSibling != null && lPoint.nextSibling.nodeType==3 && (""+lPoint.nextSibling.data+"").length==0)
            lPoint.parentNode.removeChild(lPoint.nextSibling);


        if(this._TcurrentFormat == null && lPoint != null && rPoint != null && lPoint.nextSibling == rPoint) {
            var par    = rPoint.parentNode;

            this._TcurrentFormat = null;

            while (par && par.tagName.toUpperCase() != "BODY" && Sys.Extended.UI.HTMLEditor.isStyleTag(par.tagName)) {
                if(par.tagName.toUpperCase() != "A") {
                    var temp = par.cloneNode(false);
                    if(this._TcurrentFormat == null) {
                        this._TcurrentFormat = temp;
                    } else {
                        temp.appendChild(this._TcurrentFormat);
                        this._TcurrentFormat = temp;
                    }
                }

                par = par.parentNode;
            }

            if(this._TcurrentFormat) {
                var sspan = this._doc.createElement("span");
                sspan.appendChild(this._TcurrentFormat);
                this._TcurrentFormat = sspan.innerHTML;
            }
        }


        var telem = lPoint;
        while(telem && telem.tagName && Sys.Extended.UI.HTMLEditor.isStyleTag(telem.tagName) && (telem.tagName.toUpperCase() != "A")) {
            telem = telem.parentNode;
        }

        if(telem != null && telem.tagName.toUpperCase()=="P") {
            if(telem.firstChild != null)
                telem.insertBefore(lPoint,telem.firstChild);
            else
                telem.appendChild(lPoint);
        } else
            Sys.Extended.UI.HTMLEditor.positionInParagraph(lPoint,lPoint.previousSibling,true ,lPoint.parentNode);

        telem = rPoint;
        while(telem && telem.tagName && Sys.Extended.UI.HTMLEditor.isStyleTag(telem.tagName) && (telem.tagName.toUpperCase() != "A")) {
            telem = telem.parentNode;
        }

        if(telem != null && telem.tagName.toUpperCase()=="P") {
            telem.appendChild(rPoint);
        } else
            Sys.Extended.UI.HTMLEditor.positionInParagraph(rPoint,rPoint.nextSibling    ,false,rPoint.parentNode);

        result = this.getPseudoP_Recur(lPoint, rPoint, 0);

        var lpTagName = lPoint.parentNode.tagName.toUpperCase();
        if (result.length==0 && lPoint.previousSibling==null && rPoint.nextSibling==null && 
            lPoint.nextSibling==rPoint && (lpTagName=="P" || llpTagName=="DIV" || lpTagName=="LI")
        )
            result = [[lPoint.parentNode]];

        if(Sys.Extended.UI.HTMLEditor.isIE) {
            sel.empty();

            sel   = this._getSelection();  
            var range1= this._createRange(sel);
            var range2= this._createRange(sel);

            try {
                if(lPoint != null) range1.moveToElementText(lPoint);
                if(rPoint != null) range2.moveToElementText(rPoint);

                if(lPoint != null && rPoint != null) {
                    range1.setEndPoint("EndToEnd", range2);
                    range1.select();
                } else if(lPoint != null) range1.select();
                        else
                            if(rPoint != null) range2.select();
            } catch(e) {}
        }

        if(lPoint != null) lPoint.parentNode.removeChild(lPoint);
        if(rPoint != null) rPoint.parentNode.removeChild(rPoint);
    } catch(e) {
        var spans = this._doc.getElementsByTagName("SPAN");
        var del   = [];

        for(var i=0; i < spans.length; i++) {
            var span = spans[i];
            if(span.id && span.id.length > 0) {
                var reg = new RegExp(Sys.Extended.UI.HTMLEditor.smartClassName,"ig");
                if(reg.test(span.id))
                    del.push(span);
            }
        }

        for(var i=0; i < del.length; i++)
            del[i].parentNode.removeChild(del[i]);
    }

    return result;
};

Sys.Extended.UI.HTMLEditor.getPseudoP_Recur = function(lPoint,rPoint,r_level) {
    var result = [];

    var lBound = lPoint;
    var rBound = (rPoint.nextSibling != null && rPoint.nextSibling.tagName && rPoint.nextSibling.tagName.toUpperCase()=="BR")?rPoint.nextSibling:rPoint;

    var fnd = null;

    if(lBound==null || rBound==null) {
        if(lBound!=null) {
            fnd = Sys.Extended.UI.HTMLEditor._commonTotalParent(lBound,lBound);
        }

        if(rBound!=null) {
            fnd = Sys.Extended.UI.HTMLEditor._commonTotalParent(rBound,rBound);
        }
    } else
        fnd = Sys.Extended.UI.HTMLEditor._commonTotalParent(lBound,rBound);

    if(fnd != null) { // common parent found
        lBound = Sys.Extended.UI.HTMLEditor.getContainer(fnd.parent.childNodes.item(fnd.indexFirst),lBound);
        rBound = Sys.Extended.UI.HTMLEditor.getContainer(fnd.parent.childNodes.item(fnd.indexLast ),rBound);

        Sys.Extended.UI.HTMLEditor.unStyle(lBound);
        Sys.Extended.UI.HTMLEditor.unStyle(rBound);

        while(lBound.parentNode != fnd.parent) lBound = lBound.parentNode;
        while(rBound.parentNode != fnd.parent) rBound = rBound.parentNode;

        Sys.Extended.UI.HTMLEditor._moveTagsUp(lBound.nextSibling,rBound);

        fnd = null;

        if(lPoint==null || rPoint==null) {
            if(lPoint!=null) {
                fnd = Sys.Extended.UI.HTMLEditor._commonTotalParent(lPoint,lPoint);
            }

            if(rPoint!=null) {
                fnd = Sys.Extended.UI.HTMLEditor._commonTotalParent(rPoint,rPoint);
            }
        } else
            fnd = Sys.Extended.UI.HTMLEditor._commonTotalParent(lPoint,rPoint);

        if(fnd != null) {
            Sys.Extended.UI.HTMLEditor.spanJoiner(fnd.parent,this._doc,fnd.indexFirst,fnd.indexLast+1, true);
        }

        function _dive1(next) {
            if(!Sys.Extended.UI.HTMLEditor.isInlineElement(next)) {
                return true;
            }
            else if(next.tagName && Sys.Extended.UI.HTMLEditor.isStyleTag(next.tagName) && (next.tagName.toUpperCase() != "A") && !Sys.Extended.UI.HTMLEditor.isTempElement(next)) {
                var nnn = next.firstChild;
                while(nnn != null) {
                    nnnNext = nnn.nextSibling;
                    var temp = _dive1(nnn);
                    if(temp) return true;
                    nnn = nnnNext;
                }
            }
            return false;
        }

        var arrIndex = 0;
        var subArr   = [];
        var subIndex = 0;

        if(lBound.tagName && rBound.tagName) {
            var lBoundTagName = lBound.tagName.toUpperCase();
            var rBoundTagName = rBound.tagName.toUpperCase();
            if((lBoundTagName == "TD" || lBoundTagName == "TR") &&
               (rBoundTagName == "TD" || rBoundTagName == "TR")
            ) {
                while(lBound.tagName.toUpperCase() != "TABLE") lBound = lBound.parentNode;
                rBound = lBound;
            } else {
                if((lBoundTagName == "DD" || lBoundTagName == "DT") &&
                   (rBoundTagName == "DD" || rBoundTagName == "DT")
                ) {
                    while(lBound.tagName && lBound.tagName.toUpperCase() != "DL") lBound = lBound.parentNode;
                    rBound = lBound;
                } else {
                    if((lBoundTagName == "LI") && (rBoundTagName == "LI")) {
                        while(lBoundTagName != "UL" && lBoundTagName != "OL") {
                            lBound = lBound.parentNode;
                            lBoundTagName = (lBound.tagName)?lBound.tagName.toUpperCase():null;
                        }
                        rBound = lBound;
                    }
                }
            }
        }

        var fromPoint = lPoint?lPoint:rPoint;
        var toPoint   = rPoint?rPoint:lPoint;
        var next      = lBound;

        while(true) {
            if(!Sys.Extended.UI.HTMLEditor.isTempElement(next)) {
                var isBlock = _dive1(next);

                if(!isBlock) {
                    if(next.nodeType && next.nodeType==3) {
                        var str = ""+next.data+"";

                        if(str.length==0 || /^[\n\r]+$/.test(str)) {
                            var tempNext = next.nextSibling;

                            next.parentNode.removeChild(next);
                            if(next==rBound) break;
                            next = tempNext;
                            continue;
                        }
                    }
                    subArr[subIndex] = next;
                    subIndex++;
                } else {
                    if(next.tagName && next.tagName.toUpperCase()=="BR") {
                        subArr[subIndex] = next;
                        result[arrIndex] = subArr;
                        arrIndex++;
                        subArr   = [];
                        subIndex = 0;
                    }
                    else
                    if( (next==rBound || next==lBound) &&
                      !((next==rBound && next==lBound)?(Sys.Extended.UI.HTMLEditor._reallyFirst(next,fromPoint) && Sys.Extended.UI.HTMLEditor._reallyLast(next,toPoint))
                       :(Sys.Extended.UI.HTMLEditor._reallyFirst(next,fromPoint) || Sys.Extended.UI.HTMLEditor._reallyLast(next,toPoint))
                      )
                    ) {
                        var nextTagName = (next.tagName)?(next.tagName.toUpperCase()):null;
                        if(nextTagName== "TABLE" || nextTagName== "TBODY") {
                            var table = next;

                            while(table.tagName.toUpperCase() != "TABLE") table = table.parentNode;

                            var fromCellIndex = 0;
                            var fromRowIndex  = 0;
                            var toCellIndex   = table.rows.item(table.rows.length-1).cells.length-1;
                            var toRowIndex    = table.rows.length-1;

                            for(var i=0; i<table.rows.length; i++) {
                                var row = table.rows.item(i);
                                var j=0;
                                for(; j<row.cells.length; j++) {
                                    var cell = row.cells.item(j);
                                    if(Sys.Extended.UI.HTMLEditor._lookChild(cell,fromPoint) >= 0) {
                                        fromCellIndex = j;
                                        fromRowIndex  = i;
                                    }
                                    if(Sys.Extended.UI.HTMLEditor._lookChild(cell,toPoint) >= 0) {
                                        toCellIndex = j;
                                        toRowIndex  = i;
                                    }
                                }
                            }

                            for(var i=fromRowIndex; i<=toRowIndex; i++)
                            for(var j=((i==fromRowIndex)?fromCellIndex:0); j<=((i==toRowIndex)?toCellIndex:(table.rows.item(i).cells.length-1)); j++) {
                                var cell = table.rows.item(i).cells.item(j);

                                if(subIndex > 0) {
                                    result[arrIndex] = subArr;
                                    arrIndex++;
                                    subArr   = [];
                                    subIndex = 0;
                                }

                                var is_lPoint = (Sys.Extended.UI.HTMLEditor._lookChild(cell,fromPoint) >=0);
                                var is_rPoint = (Sys.Extended.UI.HTMLEditor._lookChild(cell,toPoint  ) >=0);

                                if(is_lPoint || is_rPoint) { // need recursion
                                    var r_lPoint = fromPoint;
                                    var r_rPoint = toPoint;
                                    var rn=Sys.Extended.UI.HTMLEditor.smartClassName+"_right_"+r_level;
                                    var ln=Sys.Extended.UI.HTMLEditor.smartClassName+"_left_" +r_level;

                                    if(is_lPoint) {
                                        r_rPoint    = this._doc.createElement("span");
                                        r_rPoint.id = rn;
                                        cell.appendChild(r_rPoint);
                                    }
                                    if(is_rPoint) {
                                        r_lPoint    = this._doc.createElement("span");
                                        r_lPoint.id = ln;
                                        if(cell.firstChild)
                                            cell.insertBefore(r_lPoint,cell.firstChild);
                                        else
                                            cell.appendChild (r_lPoint);
                                    }

                                    var r_result = this.getPseudoP_Recur(r_lPoint, r_rPoint, r_level+1);

                                    for(var cnt=0; cnt < r_result.length; cnt++) {
                                        result[arrIndex] = r_result[cnt];
                                        arrIndex++;
                                    }

                                    if(r_lPoint != fromPoint) r_lPoint.parentNode.removeChild(r_lPoint);
                                    if(r_rPoint != toPoint  ) r_rPoint.parentNode.removeChild(r_rPoint);
                                } else {
                                    var fromEl = 0;
                                    var toEl   = cell.childNodes.length;

                                    for(var k=fromEl; k<toEl; k++) {
                                        var el = cell.childNodes.item(k);
                                        if(!Sys.Extended.UI.HTMLEditor.isTempElement(el)) {
                                            subArr[subIndex] = el;
                                            subIndex++;
                                        }
                                    }

                                    if(subArr.length > 0) {
                                        result[arrIndex] = subArr;
                                        arrIndex++;
                                        subArr   = [];
                                        subIndex = 0;
                                    }
                                }
                            }
                        }
                        else if(nextTagName== "UL" || nextTagName== "OL" || nextTagName== "DL") {
                            var list      = next;
                            var fromIndex = 0;
                            var toIndex   = list.childNodes.length-1;

                            for(var i=0; i<list.childNodes.length; i++) {
                                var point = list.childNodes.item(i);

                                if(point.nodeType==1) {
                                    if(point==fromPoint || Sys.Extended.UI.HTMLEditor._lookChild(point,fromPoint) >= 0) {
                                        fromIndex  = i;
                                    }
                                    if(point==toPoint || Sys.Extended.UI.HTMLEditor._lookChild(point,toPoint) >= 0) {
                                        toIndex  = i;
                                    }
                                }
                            }

                            for(var i=fromIndex; i<=toIndex; i++) {
                                var point = list.childNodes.item(i);

                                if(subIndex > 0) {
                                    result[arrIndex] = subArr;
                                    arrIndex++;
                                    subArr   = [];
                                    subIndex = 0;
                                }

                                var is_lPoint = (Sys.Extended.UI.HTMLEditor._lookChild(point,fromPoint) >=0);
                                var is_rPoint = (Sys.Extended.UI.HTMLEditor._lookChild(point,toPoint  ) >=0);

                                if(is_lPoint || is_rPoint) { // need recursion
                                    var r_lPoint = fromPoint;
                                    var r_rPoint = toPoint;
                                    var rn=Sys.Extended.UI.HTMLEditor.smartClassName+"_right_"+r_level;
                                    var ln=Sys.Extended.UI.HTMLEditor.smartClassName+"_left_" +r_level;

                                    if(is_lPoint) {
                                        r_rPoint    = this._doc.createElement("span");
                                        r_rPoint.id = rn;
                                        point.appendChild(r_rPoint);
                                    }
                                    if(is_rPoint) {
                                        r_lPoint    = this._doc.createElement("span");
                                        r_lPoint.id = ln;
                                        if(point.firstChild)
                                            point.insertBefore(r_lPoint,point.firstChild);
                                        else
                                            point.appendChild (r_lPoint);
                                    }

                                    var r_result = this.getPseudoP_Recur(r_lPoint, r_rPoint, r_level+1);

                                    for(var cnt=0; cnt < r_result.length; cnt++) {
                                        result[arrIndex] = r_result[cnt];
                                        arrIndex++;
                                    }

                                    if(r_lPoint != fromPoint) r_lPoint.parentNode.removeChild(r_lPoint);
                                    if(r_rPoint != toPoint  ) r_rPoint.parentNode.removeChild(r_rPoint);
                                } else {
                                    var fromEl = 0;
                                    var toEl   = point.childNodes.length;

                                    for(var k=fromEl; k<toEl; k++) {
                                        var el = point.childNodes.item(k);
                                        if(!Sys.Extended.UI.HTMLEditor.isTempElement(el)) {
                                            subArr[subIndex] = el;
                                            subIndex++;
                                        }
                                    }

                                    if(subArr.length > 0) {
                                        result[arrIndex] = subArr;
                                        arrIndex++;
                                        subArr   = [];
                                        subIndex = 0;
                                    }
                                }
                            }
                        } else {
                            var is_lPoint = (Sys.Extended.UI.HTMLEditor._lookChild(next,fromPoint) >=0);
                            var is_rPoint = (Sys.Extended.UI.HTMLEditor._lookChild(next,toPoint  ) >=0);

                            if(subIndex > 0) {
                                result[arrIndex] = subArr;
                                arrIndex++;
                                subArr   = [];
                                subIndex = 0;
                            }

                            if(is_lPoint || is_rPoint) { // need recursion
                                var r_lPoint = fromPoint;
                                var r_rPoint = toPoint;
                                var rn=Sys.Extended.UI.HTMLEditor.smartClassName+"_right_"+r_level;
                                var ln=Sys.Extended.UI.HTMLEditor.smartClassName+"_left_" +r_level;

                                if(is_lPoint) {
                                    r_rPoint    = this._doc.createElement("span");
                                    r_rPoint.id = rn;
                                    next.appendChild(r_rPoint);
                                }
                                if(is_rPoint) {
                                    r_lPoint    = this._doc.createElement("span");
                                    r_lPoint.id = ln;
                                    if(next.firstChild)
                                        next.insertBefore(r_lPoint,next.firstChild);
                                    else
                                        next.appendChild (r_lPoint);
                                }

                                var r_result = this.getPseudoP_Recur(r_lPoint, r_rPoint, r_level+1);

                                for(var cnt=0; cnt < r_result.length; cnt++) {
                                    result[arrIndex] = r_result[cnt];
                                    arrIndex++;
                                }

                                if(r_lPoint != fromPoint) r_lPoint.parentNode.removeChild(r_lPoint);
                                if(r_rPoint != toPoint  ) r_rPoint.parentNode.removeChild(r_rPoint);
                            } else {
                                var fromEl = 0;
                                var toEl   = next.childNodes.length;

                                for(var k=fromEl; k<toEl; k++) {
                                    var el = next.childNodes.item(k);
                                    if(!Sys.Extended.UI.HTMLEditor.isTempElement(el)) {
                                        subArr[subIndex] = el;
                                        subIndex++;
                                    }
                                }

                                if(subArr.length > 0) {
                                    result[arrIndex] = subArr;
                                    arrIndex++;
                                    subArr   = [];
                                    subIndex = 0;
                                }
                            }
                        }
                    } else {
                        if(subIndex > 0) {
                            result[arrIndex] = subArr;
                            arrIndex++;
                            subArr   = [];
                            subIndex = 0;
                        }
                        subArr[subIndex] = next;
                        result[arrIndex] = subArr;
                        arrIndex++;
                        subArr   = [];
                        subIndex = 0;
                    }
                }
            }

            if(next==rBound) break;
            next = next.nextSibling;
        }

        if(subIndex > 0) {
            result[arrIndex] = subArr;
        }
    }
    return result;
};

Sys.Extended.UI.HTMLEditor.unWrap = function(element,pars) {
    var editor = this;
    if(element.firstChild) {
        while(element.firstChild && element.firstChild.nodeType==3 && (""+element.firstChild.data+"")=="")
            element.removeChild(element.firstChild);

        var inner = [];
        while(element.firstChild) {
            if(element.firstChild != pars[0] && element.firstChild != pars[1]) inner.push(element.firstChild);
            element.parentNode.insertBefore(element.firstChild,element);
        }

        if(inner.length==0) {
            var br = editor._doc.createElement("BR");
            element.parentNode.insertBefore(br,element);
        }

        if(Sys.Extended.UI.HTMLEditor.isIE && inner.length==1 && inner[0].nodeType==3) {
            var str = ""+inner[0].data+"";
            if(str.length== 1 && str.charCodeAt(0)==160) {
                var br = editor._doc.createElement("BR");
                inner[0].parentNode.insertBefore(br,inner[0]);
                inner[0].parentNode.removeChild(inner[0]);
            }
        }

        while(element.nextSibling && element.nextSibling.nodeType==3 && (""+element.nextSibling.data+"")=="")
            element.parentNode.removeChild(element.nextSibling);

        var previousSibling = (element.previousSibling && pars[1] == element.previousSibling)?pars[1].previousSibling:element.previousSibling;

        if(previousSibling && Sys.Extended.UI.HTMLEditor.isInlineElement(previousSibling))
        if(previousSibling.nodeType==1 && previousSibling.childNodes.length > 0)
            previousSibling = Sys.Extended.UI.HTMLEditor._getReallyLast(previousSibling);

        if(Sys.Extended.UI.HTMLEditor.isInlineElement(previousSibling) && element.nextSibling != null) {
            var br = editor._doc.createElement("BR");
            element.parentNode.insertBefore(br,element);
        }
    } else {
        var br = editor._doc.createElement("BR");
        element.parentNode.insertBefore(br,element);
    }
    element.parentNode.removeChild(element);
};

Sys.Extended.UI.HTMLEditor.tryUnWrap = function(element,pars,force) {
    var editor = this;

    element.style.textAlign = "";
    var attrsNumber = 0;
    var attrs       = element.attributes;

    for (var k = 0; k < attrs.length; ++k) {
        var a = attrs.item(k);
        if (!a.specified) continue;
        if (a.name.toLowerCase()=="style") continue;
        attrsNumber++;
    }

    var save_css = element.style.cssText;
    var margin = 0;
    var mar;
    var elementTagName = element.tagName.toUpperCase();

    if(!(typeof force != "undefined" && force))
    if(elementTagName != "LI")
        try {
            mar = parseInt(Sys.Extended.UI.HTMLEditor.getStyle(element,"margin-top"));
            if(isNaN(mar)) mar=elementTagName=="P"?1:0;
            margin+=mar;

            mar = parseInt(Sys.Extended.UI.HTMLEditor.getStyle(element,"margin-bottom"));
            if(isNaN(mar)) mar=elementTagName=="P"?1:0;
            margin+=mar;

            mar = parseInt(Sys.Extended.UI.HTMLEditor.getStyle(element,"margin-right"));
            if(isNaN(mar)) mar=elementTagName=="P"?1:0;
            margin+=mar;

            mar = parseInt(Sys.Extended.UI.HTMLEditor.getStyle(element,"margin-left"));
            if(isNaN(mar)) mar=elementTagName=="P"?1:0;
            margin+=mar;
        } catch(e) {margin=1;}

    element.style.margin  = "";

    if((attrsNumber == 0  && element.style.cssText.length == 0 && margin==0) || (typeof force != "undefined" && force && elementTagName != "LI")) {
        editor.unWrap(element,pars);
        return true;
    } else {
        element.style.cssText   = save_css;
        return false;
    }
};

Sys.Extended.UI.HTMLEditor._queryCommandValue = function(cmdID, _id) {
    var obj = this._rangeStartEnd();
    if(obj == null) return "";

    try {
        if(cmdID.toLowerCase()=="backcolor") {
            var el = obj.start;
            while(el) {
                var bckg = Sys.Extended.UI.HTMLEditor.getStyle(el,"background-color").toLowerCase();
                if(bckg.length > 0 && bckg != "transparent") return bckg;
                el = el.parentNode;
            }
            return "#FFFFFF";
        }

        var cssStyle = "none";
        switch (cmdID.toLowerCase()) {
            case "forecolor":
                cssStyle = "color";
                break;
            case "fontname":
                cssStyle = "font-family";
                break;
            case "fontsize":
                cssStyle = "font-size";
                break;
        }

        var ret;

        if((cssStyle == "font-size" || cssStyle == "font-family") && this._FontNotSet) {
            ret = "";
            var par = obj.start;
            while (par != null) {
                if(cssStyle == "font-size") {
                    if(par.style && par.style.fontSize && par.style.fontSize.length > 0) {
                        ret = par.style.fontSize;
                        break;
                    } else if(par.tagName && par.tagName.toUpperCase()=="FONT" && par.size && par.size.length > 0) {
                        ret = Sys.Extended.UI.HTMLEditor.fontSizeSeek(par.size);
                        break;
                    }
                } else {
                    if(par.style && par.style.fontFamily && par.style.fontFamily.length > 0) {
                        ret = par.style.fontFamily;
                        break;
                    } else if(par.tagName && par.tagName.toUpperCase()=="FONT" && par.face && par.face.length > 0) {
                        ret = par.face;
                        break;
                    }
                }

                if(par.className && par.className.length > 0) {
                    ret = Sys.Extended.UI.HTMLEditor.getStyle(par,cssStyle).toLowerCase();
                    if(cssStyle == "font-size") {
                        if(!Sys.Extended.UI.HTMLEditor.isIE) {
                            ret = Sys.Extended.UI.HTMLEditor._TryTransformFromPxToPt(ret,this,_id);
                        }
                    }
                    break;
                }
                var parTagName = par.tagName.toUpperCase();
                if(parTagName == "BODY" || parTagName == "TD") break;

                par = par.parentNode;
            }
        } else {
            ret = Sys.Extended.UI.HTMLEditor.getStyle(obj.start,cssStyle).toLowerCase();

            if(cssStyle == "font-size") {
                if(!Sys.Extended.UI.HTMLEditor.isIE) {
                    ret = Sys.Extended.UI.HTMLEditor._TryTransformFromPxToPt(ret,this,_id);

                    var par = obj.start;
                    while (par != null) {
                        if(par.style && par.style.fontSize && par.style.fontSize.length > 0) {
                            ret = par.style.fontSize;
                            break;
                        }

                        if(par.className && par.className.length > 0) break;
                        var parTagName = par.tagName.toUpperCase();
                        if(parTagName == "BODY" || parTagName == "TD") break;

                        par = par.parentNode;
                    }
                }
            }
        }

        if(this._StyleForTyping != null && this._StyleForTyping.length > 0) {
            for(var i=0; i < this._StyleForTyping.length; i++) {
                var curCss = this._StyleForTyping[i];

                if(curCss.name == cssStyle) {
                    ret = curCss.value;
                    break;
                }
            }
        }

        return ret;
    } catch(ex) {return "";}
};
�Type.registerNamespace("Sys.Extended.UI.HTMLEditor");

Sys.Extended.UI.HTMLEditor.ActiveModeType = function() { }
Sys.Extended.UI.HTMLEditor.ActiveModeType.prototype = {
    Design : 0x00,
    Html : 0x01,
    Preview: 0x02
}
Sys.Extended.UI.HTMLEditor.ActiveModeType_checkValue = function(value) {
    if(value >= 0 && value <= 2) return true;
    return false;
}

Sys.Extended.UI.HTMLEditor.ActiveModeType.registerEnum("Sys.Extended.UI.HTMLEditor.ActiveModeType", true);


�// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedFilteredTextBox";function a(){var c="filtered",b="processKey",d="keypress",a=null;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.FilteredTextBoxBehavior=function(c){var b=this;Sys.Extended.UI.FilteredTextBoxBehavior.initializeBase(b,[c]);b._keypressHandler=a;b._changeHandler=a;b._intervalID=a;b._filterType=Sys.Extended.UI.FilterTypes.Custom;b._filterMode=Sys.Extended.UI.FilterModes.ValidChars;b._validChars=a;b._invalidChars=a;b._filterInterval=250;b.charTypes={};b.charTypes.LowercaseLetters="abcdefghijklmnopqrstuvwxyz";b.charTypes.UppercaseLetters="ABCDEFGHIJKLMNOPQRSTUVWXYZ";b.charTypes.Numbers="0123456789"};Sys.Extended.UI.FilteredTextBoxBehavior.prototype={initialize:function(){var a=this;Sys.Extended.UI.FilteredTextBoxBehavior.callBaseMethod(a,"initialize");var b=a.get_element();a._keypressHandler=Function.createDelegate(a,a._onkeypress);$addHandler(b,d,a._keypressHandler);a._changeHandler=Function.createDelegate(a,a._onchange);$addHandler(b,"change",a._changeHandler);var c=Function.createDelegate(a,a._intervalCallback);a._intervalID=window.setInterval(c,a._filterInterval)},dispose:function(){var b=this,c=b.get_element();$removeHandler(c,d,b._keypressHandler);b._keypressHandler=a;$removeHandler(c,"change",b._changeHandler);b._changeHandler=a;window.clearInterval(b._intervalID);Sys.Extended.UI.FilteredTextBoxBehavior.callBaseMethod(b,"dispose")},_getValidChars:function(){var a=this;if(a._validChars)return a._validChars;a._validChars="";for(type in a.charTypes){var b=Sys.Extended.UI.FilterTypes.toString(a._filterType);if(b.indexOf(type)!=-1)a._validChars+=a.charTypes[type]}return a._validChars},_getInvalidChars:function(){var a=this;if(!a._invalidChars)a._invalidChars=a.charTypes.Custom;return a._invalidChars},_onkeypress:function(a){var b;if((a.rawEvent.charCode==0||a.rawEvent.keyCode==a.rawEvent.which&&a.rawEvent.charCode==undefined)&&(a.rawEvent.keyCode==Sys.UI.Key.pageUp||a.rawEvent.keyCode==Sys.UI.Key.pageDown||a.rawEvent.keyCode==Sys.UI.Key.up||a.rawEvent.keyCode==Sys.UI.Key.down||a.rawEvent.keyCode==Sys.UI.Key.left||a.rawEvent.keyCode==Sys.UI.Key.right||a.rawEvent.keyCode==Sys.UI.Key.home||a.rawEvent.keyCode==Sys.UI.Key.end||a.rawEvent.keyCode==46)||a.ctrlKey)return;if(a.rawEvent.keyIdentifier){if(a.rawEvent.ctrlKey||a.rawEvent.altKey||a.rawEvent.metaKey)return;if(a.rawEvent.keyIdentifier.substring(0,2)!="U+")return;b=a.rawEvent.charCode;if(b==63272)return}else b=a.charCode;if(b&&b>=32){var c=String.fromCharCode(b);!this._processKey(c)&&a.preventDefault()}},_processKey:function(c){var b=this,a="",d=false;if(b._filterMode==Sys.Extended.UI.FilterModes.ValidChars){a=b._getValidChars();d=a&&a.length>0&&a.indexOf(c)==-1}else{a=b._getInvalidChars();d=a&&a.length>0&&a.indexOf(c)>-1}var e=new Sys.Extended.UI.FilteredTextBoxProcessKeyEventArgs(c,Sys.Extended.UI.TextBoxWrapper.get_Wrapper(b.get_element()).get_Value(),d);b.raiseProcessKey(e);if(e.get_allowKey())return true;b.raiseFiltered(new Sys.Extended.UI.FilteredTextBoxEventArgs(c));return false},_onchange:function(){for(var b=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element()),d=b.get_Value()||"",c=new Sys.StringBuilder,a=0;a<d.length;a++){var e=d.substring(a,a+1);this._processKey(e)&&c.append(e)}b.get_Value()!=c.toString()&&b.set_Value(c.toString())},_intervalCallback:function(){this._changeHandler()},get_ValidChars:function(){return this.charTypes.Custom},set_ValidChars:function(c){var b=this;if(b._validChars!=a||b.charTypes.Custom!=c){b.charTypes.Custom=c;b._validChars=a;b.raisePropertyChanged("ValidChars")}},get_InvalidChars:function(){return this.charTypes.Custom},set_InvalidChars:function(c){var b=this;if(b._invalidChars!=a||b.charTypes.Custom!=c){b.charTypes.Custom=c;b._invalidChars=a;b.raisePropertyChanged("InvalidChars")}},get_FilterType:function(){return this._filterType},set_FilterType:function(c){var b=this;if(b._validChars!=a||b._filterType!=c){b._filterType=c;b._validChars=a;b.raisePropertyChanged("FilterType")}},get_FilterMode:function(){return this._filterMode},set_FilterMode:function(c){var b=this;if(b._validChars!=a||b._invalidChars!=a||b._filterMode!=c){b._filterMode=c;b._validChars=a;b._invalidChars=a;b.raisePropertyChanged("FilterMode")}},get_FilterInterval:function(){return this._filterInterval},set_FilterInterval:function(a){if(this._filterInterval!=a){this._filterInterval=a;this.raisePropertyChanged("FilterInterval")}},add_processKey:function(a){this.get_events().addHandler(b,a)},remove_processKey:function(a){this.get_events().removeHandler(b,a)},raiseProcessKey:function(c){var a=this.get_events().getHandler(b);a&&a(this,c)},add_filtered:function(a){this.get_events().addHandler(c,a)},remove_filtered:function(a){this.get_events().removeHandler(c,a)},raiseFiltered:function(b){var a=this.get_events().getHandler(c);a&&a(this,b)}};Sys.Extended.UI.FilteredTextBoxBehavior.registerClass("Sys.Extended.UI.FilteredTextBoxBehavior",Sys.Extended.UI.BehaviorBase);Sys.registerComponent(Sys.Extended.UI.FilteredTextBoxBehavior,{name:"filteredTextBox"});Sys.Extended.UI.FilterTypes=function(){throw Error.invalidOperation();};Sys.Extended.UI.FilterTypes.prototype={Custom:1,Numbers:2,UppercaseLetters:4,LowercaseLetters:8};Sys.Extended.UI.FilterTypes.registerEnum("Sys.Extended.UI.FilterTypes",true);Sys.Extended.UI.FilterModes=function(){throw Error.invalidOperation();};Sys.Extended.UI.FilterModes.prototype={ValidChars:1,InvalidChars:2};Sys.Extended.UI.FilterModes.registerEnum("Sys.Extended.UI.FilterModes",true);Sys.Extended.UI.FilteredTextBoxProcessKeyEventArgs=function(d,c,b){var a=this;Sys.Extended.UI.FilteredTextBoxProcessKeyEventArgs.initializeBase(a);a._key=d;a._text=c;a._shouldFilter=b;a._allowKey=!b};Sys.Extended.UI.FilteredTextBoxProcessKeyEventArgs.prototype={get_key:function(){return this._key},get_text:function(){return this._text},get_shouldFilter:function(){return this._shouldFilter},get_allowKey:function(){return this._allowKey},set_allowKey:function(a){this._allowKey=a}};Sys.Extended.UI.FilteredTextBoxProcessKeyEventArgs.registerClass("Sys.Extended.UI.FilteredTextBoxProcessKeyEventArgs",Sys.EventArgs);Sys.Extended.UI.FilteredTextBoxEventArgs=function(a){Sys.Extended.UI.FilteredTextBoxEventArgs.initializeBase(this);this._key=a};Sys.Extended.UI.FilteredTextBoxEventArgs.prototype={get_key:function(){return this._key}};Sys.Extended.UI.FilteredTextBoxEventArgs.registerClass("Sys.Extended.UI.FilteredTextBoxEventArgs",Sys.EventArgs)}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedBase","ExtendedCommon"],a);else a()})();9
// (c) 2010 CodePlex Foundation
(function() {

function execute() {
Type._registerScript("Date.HijriCalendar.js", ["MicrosoftAjaxGlobalization.js"]);
__cultureInfo.dateTimeFormat.Calendar.convert = {
    ticks1970: 62135596800000,
    monthDays: [0, 30, 59, 89, 118, 148, 177, 207, 236, 266, 295, 325, 355],
    minDate: -42521673600000,
    maxDate: 253402300799999,
    adjustment: __cultureInfo.dateTimeFormat.Calendar._adjustment || 0,
    toGregorian: function(hyear, hmonth, hday) {
        var daysSinceJan0101 = this.daysToYear(hyear) + this.monthDays[hmonth] + hday - 1 - this.adjustment;
        var gdate = new Date(daysSinceJan0101 * 86400000 - this.ticks1970);
        gdate.setMinutes(gdate.getMinutes() + gdate.getTimezoneOffset());
        return gdate;
    },
    fromGregorian: function(gdate) {
        if ((gdate < this.minDate) || (gdate > this.maxDate)) return null;
        var ticks = this.ticks1970 + (gdate-0) - gdate.getTimezoneOffset() * 60000,
            daysSinceJan0101 = Math.floor(ticks / 86400000) + 1 + this.adjustment;
        var hday, hmonth, hyear = Math.floor(((daysSinceJan0101 - 227013) * 30) / 10631) + 1,
            absDays = this.daysToYear(hyear),
            daysInYear = this.isLeapYear(hyear) ? 355 : 354;
        if (daysSinceJan0101 < absDays) {
            hyear--;
            absDays -= daysInYear;
        }
        else if (daysSinceJan0101 === absDays) {
            hyear--;
            absDays = this.daysToYear(hyear);
        }
        else {
            if (daysSinceJan0101 > (absDays + daysInYear)) {
                absDays += daysInYear;
                hyear++;
            }
        }
        hmonth = 0;
        var daysIntoYear = daysSinceJan0101 - absDays;
        while (hmonth <= 11 && daysIntoYear > this.monthDays[hmonth]) {
            hmonth++;
        }
        hmonth--;
        hday = daysIntoYear - this.monthDays[hmonth];
        return [hyear, hmonth, hday];
    },
    daysToYear: function(year) {
        var yearsToYear30 = Math.floor((year - 1) / 30) * 30,
            yearsInto30 = year - yearsToYear30 - 1,
            days = Math.floor((yearsToYear30 * 10631) / 30) + 227013;
        while (yearsInto30 > 0) {
            days += (this.isLeapYear(yearsInto30) ? 355 : 354);
            yearsInto30--;
        }
        return days;
    },
    isLeapYear: function(year) {
        return ((((year * 11) + 14) % 30) < 11);
    }
}
}

if (window.Sys && Sys.loader) {
	Sys.loader.registerScript("HijriCalendar", null, execute);
}
else {
	execute();
}

})();
a�/// <reference name="MicrosoftAjax.js"/>


Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.ComboBoxAutoCompleteMode = function() { };
Sys.Extended.UI.ComboBoxAutoCompleteMode.prototype =
{
    None: 0,
    Append: 1,
    Suggest: 2,
    SuggestAppend: 3
}

Sys.Extended.UI.ComboBoxAutoCompleteMode.registerEnum(
    'Sys.Extended.UI.ComboBoxAutoCompleteMode', false);

Sys.Extended.UI.ComboBoxStyle = function() { };
Sys.Extended.UI.ComboBoxStyle.prototype =
{
    DropDownList: 0,
    DropDown: 1,
    Simple: 2
}

Sys.Extended.UI.ComboBoxStyle.registerEnum(
    'Sys.Extended.UI.ComboBoxStyle', false);

Sys.Extended.UI.ComboBoxTextSelectionStrategy = function() { };
Sys.Extended.UI.ComboBoxTextSelectionStrategy.prototype =
{
    Unknown: 0,
    Microsoft: 1,
    W3C: 2
}

Sys.Extended.UI.ComboBoxTextSelectionStrategy.registerEnum(
    "Sys.Extended.UI.ComboBoxTextSelectionStrategy", false);


Sys.Extended.UI.ComboBox = function(element) {

    Sys.Extended.UI.ComboBox.initializeBase(this, [element]);

    this._comboTableControl = null;
    this._textBoxControl = null;
    this._optionListControl = null;
    this._buttonControl = null;
    this._hiddenFieldControl = null;
    this._autoPostBack = false;
    this._autoCompleteMode = null;
    this._dropDownStyle = null;
    this._caseSensitive = false;
    this._originalSelectedIndex = null;
    this._listItemHoverCssClass = null;

    this._popupBehavior = null;
    this._supressFocusHide = true;
    this._doingPostBack = false;
    this._textSelectionStrategy = null;
    this._highlightSuggestedItem = false;
    this._highlightedIndex = null;

    this._optionListItems = null;
    this._optionListItemHeight = null;
    this._optionListHeight = null;
    this._optionListWidth = null;

    this.clearDelegates();

}

Sys.Extended.UI.ComboBox.prototype = {

    initialize: function() {

        Sys.Extended.UI.ComboBox.callBaseMethod(this, 'initialize');
        this.createDelegates();
        this.initializeTextBox();
        this.initializeButton();
        this.initializeOptionList();
        this.addHandlers();

    },
    dispose: function() {

        if (this._popupBehavior) {
            this._popupBehavior.remove_showing(this._popupShowingHandler);
            this._popupBehavior.remove_shown(this._popupShownHandler);
            this._popupBehavior.remove_hiding(this._popupHidingHandler);
            this._popupBehavior.dispose();
            this._popupBehavior = null;
        }

        this.clearHandlers();
        this.clearDelegates();

        Sys.Extended.UI.ComboBox.callBaseMethod(this, 'dispose');

    },
    createDelegates: function() {

        this._listMouseOverHandler = Function.createDelegate(this, this._onListMouseOver);
        this._listMouseOutHandler = Function.createDelegate(this, this._onListMouseOut);
        this._listMouseDownHandler = Function.createDelegate(this, this._onListMouseDown);
        this._listClickHandler = Function.createDelegate(this, this._onListClick);
        this._listDragHandler = Function.createDelegate(this, this._onListDrag);
        this._listSelectStartHandler = Function.createDelegate(this, this._onListSelectStart);
        this._listMouseWheelHandler = Function.createDelegate(this, this._onListMouseWheel);
        this._textBoxClickHandler = Function.createDelegate(this, this._onTextBoxClick);
        this._textBoxFocusHandler = Function.createDelegate(this, this._onTextBoxFocus);
        this._textBoxBlurHandler = Function.createDelegate(this, this._onTextBoxBlur);
        this._textBoxKeyPressHandler = Function.createDelegate(this, this._onTextBoxKeyPress);
        this._textBoxKeyDownHandler = Function.createDelegate(this, this._onTextBoxKeyDown);
        this._buttonClickHandler = Function.createDelegate(this, this._onButtonClick);
        this._buttonBlurHandler = Function.createDelegate(this, this._onButtonBlur);
        this._buttonKeyDownHandler = Function.createDelegate(this, this._onButtonKeyDown);
        this._buttonKeyPressHandler = Function.createDelegate(this, this._onButtonKeyPress);
        this._documentClickHandler = Function.createDelegate(this, this._onDocumentClick);
        this._documentMouseWheelHandler = Function.createDelegate(this, this._onDocumentMouseWheel);
        this._popupShowingHandler = Function.createDelegate(this, this._popupShowing);
        this._popupShownHandler = Function.createDelegate(this, this._popupShown);
        this._popupHidingHandler = Function.createDelegate(this, this._popupHiding);

    },
    clearDelegates: function() {

        this._listMouseOverHandler = null;
        this._listMouseOutHandler = null;
        this._listMouseDownHandler = null;
        this._listClickHandler = null;
        this._listDragHandler = null;
        this._listSelectStartHandler = null;
        this._listMouseWheelHandler = null;
        this._textBoxClickHandler = null;
        this._textBoxFocusHandler = null;
        this._textBoxBlurHandler = null;
        this._textBoxKeyPressHandler = null;
        this._textBoxKeyDownHandler = null;
        this._buttonClickHandler = null;
        this._buttonBlurHandler = null;
        this._buttonKeyDownHandler = null;
        this._buttonKeyPressHandler = null;
        this._documentClickHandler = null;
        this._documentMouseWheelHandler = null;
        this._popupShowingHandler = null;
        this._popupShownHandler = null;
        this._popupHidingHandler = null;

    },
    addHandlers: function() {
        
        var optionListControl = this.get_optionListControl();

        $addHandlers(optionListControl,
		{
		    'mouseover': this._listMouseOverHandler,
		    'mouseout': this._listMouseOutHandler,
		    'mousedown': this._listMouseDownHandler,
		    'click': this._listClickHandler,
		    'drag': this._listDragHandler,
		    'selectstart': this._listSelectStartHandler
		}, this);

        $addHandlers(this.get_textBoxControl(),
        {
            "click": this._textBoxClickHandler,
            "focus": this._textBoxFocusHandler,
            "blur": this._textBoxBlurHandler,
            "keypress": this._textBoxKeyPressHandler
        }, this);
        
        if (Sys.Browser.agent == Sys.Browser.InternetExplorer || Sys.Browser.agent === Sys.Browser.Safari
            || Sys.Browser.agent === Sys.Browser.WebKit) {
            $addHandler(this.get_textBoxControl(), "keydown", this._textBoxKeyDownHandler);
        }

        $addHandlers(this.get_buttonControl(),
		{
		    'click': this._buttonClickHandler,
		    'blur': this._buttonBlurHandler,
		    'keydown': this._buttonKeyDownHandler,
		    'keypress': this._buttonKeyPressHandler
		}, this);

        $addHandler(document, 'click', this._documentClickHandler);
        
        if (typeof (optionListControl.onmousewheel) === 'undefined') {
            $addHandler(optionListControl, 'DOMMouseScroll', this._listMouseWheelHandler);
            $addHandler(document, 'DOMMouseScroll', this._documentMouseWheelHandler);
        }
        else {
            $addHandler(optionListControl, 'mousewheel', this._listMouseWheelHandler);
            $addHandler(document, 'mousewheel', this._documentMouseWheelHandler);
        }
    },
    clearHandlers: function() {

        $clearHandlers(this.get_optionListControl());
        $clearHandlers(this.get_textBoxControl());
        $clearHandlers(this.get_buttonControl());
        $clearHandlers(document);
    },
    initializeTextBox: function() {

        var style = this.get_textBoxControl().style;

        if (style.margin == '')
            style.margin = '0px';

    },
    initializeButton: function() {

        var style = this.get_buttonControl().style;

        if (style.height == '' && this.get_textBoxControl().offsetHeight >= 0)
            style.height = this.get_textBoxControl().offsetHeight + 'px';
        if (style.width == '')
            style.width = style.height;

        if (style.margin == '')
            style.margin = '0px';
        if (style.padding == '')
            style.padding = '0px';

        this._buttonControl.style.visibility = 'visible';

    },
    initializeOptionList: function() {

        if (this.get_optionListControl() == null) {
            var optionList = document.createElement('ul');
            this.get_element().appendChild(optionList);
            this.set_optionListControl(optionList);
        }
        var optionListControl = this.get_optionListControl();

        if (Sys.Browser.agent === Sys.Browser.Safari || Sys.Browser.agent === Sys.Browser.WebKit) {
            this.get_element().removeChild(optionListControl);
            var parent = this.get_element().parentNode;
            while (typeof (parent) != typeof (document.forms[0])) {
                parent = parent.parentNode
            }
            var safariListContainer = document.createElement('div');
            safariListContainer.className = this.get_element().className;
            safariListContainer.appendChild(optionListControl);
            parent.appendChild(safariListContainer);
        }

        var style = optionListControl.style;

        style.display = 'block';
        style.zIndex = '10000';

        this._optionListItems = new Array();
        var children = optionListControl.childNodes;
        for (var i = 0; i < children.length; i++) {

            var child = children[i];

            if (child.tagName == undefined || child.tagName.toUpperCase() != 'LI') {
                optionListControl.removeChild(child);
                i--;
                continue;
            }

            var item = new Object();
            var text = child.innerHTML.trim();

            var indexOfCarriageReturn = text.indexOf('\r');
            while (indexOfCarriageReturn >= 0) {
                text = text.substring(0, indexOfCarriageReturn).trim()
                    + ' ' + text.substring(indexOfCarriageReturn + 1, text.length).trim();
                indexOfCarriageReturn = text.indexOf('\r');
            }

            var indexOfNewline = text.indexOf('\n');
            while (indexOfNewline >= 0) {
                text = text.substring(0, indexOfNewline).trim()
                    + ' ' + text.substring(indexOfNewline + 1, text.length).trim();
                indexOfNewline = text.indexOf('\n');
            }

            text = text.replace(/\&amp;/g, '&')
                .replace(/\&quot;/g, '"')
                .replace(/\&gt;/g, '>')
                .replace(/\&lt;/g, '<');

            item.text = text.trim();
            Array.add(this._optionListItems, item);

            this.initializeOptionListItem(child);
        }

        style.width = this._getOptionListBounds().width + 'px';
        style.width = '0px';

        this._popupBehavior = $create(Sys.Extended.UI.PopupBehavior,
		{
		    'id': this.get_id() + '_PopupBehavior'
			, 'parentElement': this.get_textBoxControl()
			, "positioningMode": Sys.Extended.UI.PositioningMode.BottomLeft
		}, null, null, optionListControl);
        this._popupBehavior.add_showing(this._popupShowingHandler);
        this._popupBehavior.add_shown(this._popupShownHandler);
        this._popupBehavior.add_hiding(this._popupHidingHandler);

        if (this.get_selectedIndex() >= 0) {
            this._highlightListItem(this.get_selectedIndex());
            this.get_textBoxControl().value = this._optionListItems[this.get_selectedIndex()].text;
        }
        else {
            this.get_textBoxControl().text = '';
        }

        this._popupShowing();
        optionListControl.style.display = "none";

    },
    initializeOptionListItem: function(liElement) {

        liElement._textIsEmpty = false;
        if (liElement.innerHTML.length < 1) {
            liElement.innerHTML = '&nbsp;';
            liElement._textIsEmpty = true;
        }

    },
    _popupShowing: function() {

        var windowBounds = this._getWindowBounds();
        var tableBounds = Sys.UI.DomElement.getBounds(this.get_comboTableControl());
        var optionListBounds = this._getOptionListBounds();
        var safetyDimension = 30;

        var yThreshold = windowBounds.y + (windowBounds.height / 2);
        var yFlopPoint = tableBounds.y + tableBounds.height;
        var xThreshold = windowBounds.x + (windowBounds.width / 2);
        var xFlopPoint = tableBounds.x + (tableBounds.width / 2);

        var maxHeight = tableBounds.y - windowBounds.y;
        var yAlign = 'Top';
        if (yFlopPoint <= yThreshold) {
            yAlign = 'Bottom';
            maxHeight = windowBounds.height - tableBounds.height - maxHeight;
        }

        var itemHeight = this._getOptionListItemHeight();
        if (maxHeight >= optionListBounds.height) {
            maxHeight = optionListBounds.height;
        }
        else {
            maxHeight = itemHeight * ((Math.floor(maxHeight / itemHeight)) - 2);
        }
        var visibleItems = maxHeight / itemHeight;
        var yScrollbar = (visibleItems < this._optionListItems.length);
        var scrollbarWidth = 20;

        if (yAlign == "Top" && maxHeight < (windowBounds.height - tableBounds.y)) {
            yAlign = "Bottom";
        }

        var maxWidth = tableBounds.x - windowBounds.x;
        var xAlign = 'Left';
        if (xFlopPoint <= xThreshold) {
            maxWidth = windowBounds.width - maxWidth;
        }
        else {
            xAlign = 'Right';
            maxWidth = tableBounds.width + maxWidth;
        }

        maxWidth -= safetyDimension;

        var bestWidth = optionListBounds.width;
        if (yScrollbar) {
            bestWidth += scrollbarWidth;
            if (maxWidth >= bestWidth) {
                maxWidth = bestWidth;
            }
        }
        else if (maxWidth >= bestWidth) {
            maxWidth = bestWidth;
        }

        if (xAlign == "Right" && maxWidth < (windowBounds.width - tableBounds.x)) {
            xAlign = "Left";
        }

        if (maxHeight < 0) {
            maxHeight = 0;
        }
        if (maxWidth < 0) {
            maxWidth = 0;
        }

        var style = this.get_optionListControl().style;
        style.height = maxHeight + 'px';
        style.width = maxWidth + 'px';

        if (yScrollbar) {
            style.overflow = 'auto';
            style.overflowX = 'hidden';
        }
        else {
            style.overflow = 'hidden';
        }

        var compositeAlign = yAlign + xAlign;
        if (compositeAlign == 'BottomLeft')
            this._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.BottomLeft);
        else if (compositeAlign == 'BottomRight')
            this._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.BottomRight);
        else if (compositeAlign == 'TopLeft')
            this._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.TopLeft);
        else if (compositeAlign == 'TopRight')
            this._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.TopRight);
        
        style.visibility = 'hidden';

    },
    _popupShown: function() {

        var optionListControl = this.get_optionListControl();
        optionListControl.style.display = 'block';

        var tableBounds = Sys.UI.DomElement.getBounds(this.get_comboTableControl());
        var listBounds = Sys.UI.DomElement.getBounds(optionListControl);
        var textBoxBounds = Sys.UI.DomElement.getBounds(this.get_textBoxControl());
        var y = listBounds.y;
        var x;

        if (this._popupBehavior.get_positioningMode() === Sys.Extended.UI.PositioningMode.BottomLeft
            || this._popupBehavior.get_positioningMode() === Sys.Extended.UI.PositioningMode.TopLeft) {
            x = textBoxBounds.x;
        }
        else if (this._popupBehavior.get_positioningMode() === Sys.Extended.UI.PositioningMode.BottomRight
            || this._popupBehavior.get_positioningMode() === Sys.Extended.UI.PositioningMode.TopRight) {
            x = textBoxBounds.x - (listBounds.width - textBoxBounds.width);
        }

        Sys.UI.DomElement.setLocation(optionListControl, x, y);

        this._ensureHighlightedIndex();
        this._ensureScrollTop();

        optionListControl.style.visibility = 'visible';

    },
    _popupHiding: function() {

        this._highlightSuggestedItem = false;
        
        var style = this.get_optionListControl().style;
        style.display = 'none';
        style.visibility = 'hidden';

    },
    _onButtonClick: function(e) {

        if (this.get_dropDownStyle() == Sys.Extended.UI.ComboBoxStyle.Simple) {
            this._popupBehavior.show();
        }

        else if (this._popupBehavior._visible) {
            this._popupBehavior.hide();
        }
        else {
            this._popupBehavior.show();
        }

        e.preventDefault();
        e.stopPropagation();
        return false;

    },
    _onButtonBlur: function(e) {

        if (this.get_autoPostBack() == true && !this._doingPostBack && this._originalSelectedIndex != this.get_selectedIndex()) {
            this._doingPostBack = true;
            __doPostBack(this.get_element().id, '');
        }

    },
    _onButtonKeyDown: function(e) {

        if (e.keyCode == Sys.UI.Key.tab || e.keyCode == 16) { // 16==SHIFT key
            return true;
        }

        if (!this._popupBehavior._visible && (e.keyCode == Sys.UI.Key.enter || e.keyCode == Sys.UI.Key.down)) {
            this._popupBehavior.show();
        }
        else if (this._popupBehavior._visible && (e.keyCode == Sys.UI.Key.enter || e.keyCode == Sys.UI.Key.up)) {
            this._popupBehavior.hide();
        }

        e.stopPropagation();
        e.preventDefault();

        var textBoxID = this.get_textBoxControl().id;
        setTimeout(function() { document.getElementById(textBoxID).focus(); }, 0);
        return false;

    },
    _onButtonKeyPress: function(e) {

        if (e.charCode == Sys.UI.Key.tab || e.charCode == 16) { // 16==SHIFT key
            return true;
        }
        e.stopPropagation();
        e.preventDefault();
        return false;

    },
    _onListMouseWheel: function(e) {

        var direction;
        
        if (typeof (e.rawEvent.wheelDelta) === 'undefined') {
            direction = (e.rawEvent.detail >= 1) ? 1 : -1;
        }
        else {
            direction = (e.rawEvent.wheelDelta > 1) ? -1 : 1;
        }

        this.get_optionListControl().scrollTop += this._getOptionListItemHeight() * direction;
        
        e.stopPropagation();
        e.preventDefault();
        return false;

    },
    _onListMouseOver: function(e) {
        var optionListControl = this.get_optionListControl();
        if (e.target !== optionListControl) {
            var target = e.target;
            var children = optionListControl.childNodes;

            for (var i = 0; i < children.length; ++i) {
                if (target === children[i]) {
                    this._highlightListItem(i, true);
                    break;
                }
            }
        }

    },
    _onListMouseOut: function(e) {

        if (this._popupBehavior._visible
            && this.get_autoCompleteMode() == Sys.Extended.UI.ComboBoxAutoCompleteMode.SuggestAppend) {
            this._highlightListItem(this._highlightedIndex, false);
        }

    },
    _onListMouseDown: function(e) {
        var optionListControl = this.get_optionListControl();

        if (e.target == optionListControl || e.target.tagName == 'scrollbar') {
            return true;
        }

        if (e.target !== optionListControl) {
            var highlightedItem = optionListControl.childNodes[this._highlightedIndex],
                text = this._optionListItems[this._highlightedIndex].text;
            this.get_textBoxControl().value = text;
            this.set_selectedIndex(this._highlightedIndex);

            this._supressFocusHide = false;
            this._handleTextBoxFocus(null);

        }
        else {
            return true;
        }
        e.preventDefault();
        e.stopPropagation();
        return false;

    },
    _onListClick: function(e) {

        if (e.target == this.get_optionListControl()) {
            return true;
        }

        e.preventDefault();
        e.stopPropagation();
        return false;

    },
    _onListDrag: function(e) {

        e.preventDefault();
        e.stopPropagation();
        return false;

    },
    _onListSelectStart: function(e) {

        e.preventDefault();
        e.stopPropagation();
        return false;

    },
    _onTextBoxClick: function(e) {

        if (this.get_dropDownStyle() == Sys.Extended.UI.ComboBoxStyle.Simple) {
            this._popupBehavior.show();
        }

        e.preventDefault();
        e.stopPropagation();
        return false;

    },
    _onTextBoxFocus: function(e) {

        this._handleTextBoxFocus(e);

    },
    _onTextBoxBlur: function(e) {

        var textBoxValue = this.get_textBoxControl().value.trim();
        var matchedIndex = -3;

        for (var i = 0; i < this._optionListItems.length; i++) {
            var item = this._optionListItems[i];
            if (this._isExactMatch(item.text, textBoxValue)) {
                matchedIndex = i;
                break;
            }
        }

        if (this._highlightSuggestedItem == true && this._highlightedIndex != null && this._highlightedIndex >= 0) {
            this.set_selectedIndex(this._highlightedIndex);
            this.get_textBoxControl().value = this._optionListItems[this.get_selectedIndex()].text;
        }

        else if (matchedIndex == -3 && textBoxValue.length > 0
            && this.get_dropDownStyle() != Sys.Extended.UI.ComboBoxStyle.DropDownList) {
            this.set_selectedIndex(-2);
        }

        else if (this._optionListItems.length < 1 && (textBoxValue == ''
            || this.get_dropDownStyle() == Sys.Extended.UI.ComboBoxStyle.DropDownList)) {
            this.set_selectedIndex(-1);
            this.get_textBoxControl().value = '';
        }

        else if (this._optionListItems.length >= 0 && matchedIndex == -3
            && this.get_dropDownStyle() == Sys.Extended.UI.ComboBoxStyle.DropDownList) {
            this.set_selectedIndex(0);
            this.get_textBoxControl().value = this._optionListItems[0].text;
        }

        else if (matchedIndex >= 0) {
            this.set_selectedIndex(matchedIndex);
            this.get_textBoxControl().value = this._optionListItems[matchedIndex].text;
        }

        this._popupBehavior.hide();
        if (this.get_autoPostBack() == true && !this._doingPostBack && this._originalSelectedIndex != this.get_selectedIndex()) {
            this._doingPostBack = true;
            __doPostBack(this.get_element().id, '');
        }

    },
    _onTextBoxKeyDown: function(e) {


        var enterResult = this._handleEnterKey(e);
        if (enterResult != null) {
            return enterResult;
        }

        this._handleArrowKey(e);

        var erasureKeyResult = this._handleErasureKeys(e);
        if (erasureKeyResult != null) {
            return erasureKeyResult;
        }

        return true;

    },
    _onTextBoxKeyPress: function(e) {

        var enterResult = this._handleEnterKey(e);
        if (enterResult != null) {
            return enterResult;
        }

        var arrowResult = this._handleArrowKey(e);
        if (arrowResult != null) {
            return arrowResult;
        }

        var nonCharacterKeyResult = this._handleNonCharacterKey(e);
        if (nonCharacterKeyResult != null) {
            return nonCharacterKeyResult;
        }

        if (this.get_dropDownStyle() == Sys.Extended.UI.ComboBoxStyle.Simple && !this._popupBehavior._visible) {
            this._popupBehavior.show();
        }

        if (this.get_selectedIndex() == -1 && this.get_dropDownStyle() == Sys.Extended.UI.ComboBoxStyle.DropDownList) {
            this.get_textBoxControl().value = '';
            e.preventDefault();
            e.stopPropagation();
            return false;
        }

        var info = this._getTextSelectionInfo(this.get_textBoxControl(), e);
        var newSelectionStart = info.selectionStart;
        var newSelectionEnd = info.selectionEnd;
        var allText = info.selectionPrefix + info.typedCharacter
            + info.selectionText.substring(1) + info.selectionSuffix;
        var userText = info.selectionPrefix + info.typedCharacter;
        var suggestedIndex = this._suggestIndex(allText, userText);

        if (this.get_autoCompleteMode() == Sys.Extended.UI.ComboBoxAutoCompleteMode.Suggest
                || this.get_autoCompleteMode() == Sys.Extended.UI.ComboBoxAutoCompleteMode.SuggestAppend) {
            this._highlightSuggestedItem = true;
            if (!this._popupBehavior._visible) {
                this._popupBehavior.show();
            }
        }

        if (suggestedIndex >= 0) {

            if (this.get_autoCompleteMode() == Sys.Extended.UI.ComboBoxAutoCompleteMode.Append
                    || this.get_autoCompleteMode() == Sys.Extended.UI.ComboBoxAutoCompleteMode.SuggestAppend) {
                this.get_textBoxControl().value = this._optionListItems[suggestedIndex].text;
                newSelectionStart = info.selectionStart + 1;
                newSelectionEnd = this.get_textBoxControl().value.length;
            }
            else {
                this.get_textBoxControl().value = this._optionListItems[suggestedIndex].text.substring(0, userText.length);
                newSelectionStart = this.get_textBoxControl().value.length;
                newSelectionEnd = this.get_textBoxControl().value.length;
            }
        }

        else if (this.get_dropDownStyle() == Sys.Extended.UI.ComboBoxStyle.Simple
                || this.get_dropDownStyle() == Sys.Extended.UI.ComboBoxStyle.DropDown) {
            this.get_textBoxControl().value = userText;
            newSelectionStart = userText.length;
            newSelectionEnd = userText.length;
        }

        var erasureKeyResult = this._handleErasureKeys(e);
        if (erasureKeyResult != null) {
            return erasureKeyResult;
        }

        this._ensureHighlightedIndex();
        this._ensureScrollTop();
        this._setTextSelectionRange(this.get_textBoxControl(), newSelectionStart, newSelectionEnd);

        e.preventDefault();
        e.stopPropagation();
        return false;

    },
    _onDocumentClick: function(e) {

        if (this._popupBehavior._visible) {
            this._popupBehavior.hide();
        }

    },
    _onDocumentMouseWheel: function(e) {
        
        if (this._popupBehavior) {
            this._popupBehavior.hide();
        }
        return true;

    },
    _handleTextBoxFocus: function(e) {

        if (!this._supressFocusHide && this._popupBehavior._visible) {
            this._popupBehavior.hide();
            this._supressFocusHide = true;
            if (this.get_autoPostBack() && !this._doingPostBack && this._originalSelectedIndex != this.get_selectedIndex()) {
                this._doingPostBack = true;
                __doPostBack(this.get_element().id, '');
            }
        }

        if (this.get_dropDownStyle() == Sys.Extended.UI.ComboBoxStyle.Simple) {
            this._popupBehavior.show();
        }

        this._setTextSelectionRange(
            this.get_textBoxControl(),
            0,
            this.get_textBoxControl().value.length);

        if (e != null) {
            e.preventDefault();
            e.stopPropagation();
        }

    },
    _highlightListItem: function(index, isHighlighted) {

        if (index == undefined || index < 0) {
            if (this._highlightedIndex != undefined && this._highlightedIndex >= 0) {
                this._highlightListItem(this._highlightedIndex, false);
            }
            return;
        }

        var children = this.get_optionListControl().childNodes;
        var liElement = children[index];

        if (isHighlighted == true) {

            if (this._highlightedIndex == index)
                return;

            if (index >= 0) {
                if (this.get_listItemHoverCssClass() == undefined || this.get_listItemHoverCssClass() == '') {
                    liElement.style.backgroundColor = 'Highlight';
                    liElement.style.color = 'HighlightText'
                }
                else {
                    liElement.className = this.get_listItemHoverCssClass;
                }
            }

            if (this._highlightedIndex != null && this._highlightedIndex != index && this._highlightedIndex >= 0) {
                this._highlightListItem(this._highlightedIndex, false);
            }

            this._highlightedIndex = index;
        }

        else {
            if (this.get_listItemHoverCssClass() == undefined || this.get_listItemHoverCssClass() == '') {
                liElement.style.backgroundColor = '';
                liElement.style.color = ''
            }
            else {
                liElement.className = '';
            }

            if (index == this._highlightedIndex) {
                this._highlightedIndex = -1;
            }
        }

    },
    _suggestIndex: function(allText, userText) {

        var suggestedIndex = -1;
        var firstMatch = false;
        var exactMatch = false;

        for (var i = 0; i < this._optionListItems.length; i++) {
            itemText = this._optionListItems[i].text;

            if (itemText.length < 1)
                continue;

            if (itemText.substring(0, 1).toLowerCase() != userText.substring(0, 1).toLowerCase())
                continue;

            var allCandidate = itemText.substring(0, allText.length);
            exactMatch = (allCandidate == allText);
            if (!exactMatch && !this.get_caseSensitive()) {
                exactMatch = (allCandidate.toLowerCase() == allText.toLowerCase());
            }

            if (exactMatch) {
                suggestedIndex = i;
                break;
            }

            else if (!firstMatch) {
                var userCandidate = itemText.substring(0, userText.length);
                firstMatch = (userCandidate == userText);
                if (!firstMatch && !this.get_caseSensitive())
                    firstMatch = (userCandidate.toLowerCase() == userText.toLowerCase());
                if (firstMatch)
                    suggestedIndex = i;
            }
        }
        return suggestedIndex;

    },
    _getKeyboardCode: function(e) {

        if (e.type == 'keypress') {
            return e.charCode;
        } else if (e.type == 'keydown') {
            return e.keyCode;
        }
        return undefined;

    },
    _handleArrowKey: function(e) {

        if (e.shiftKey == true) {
            return null;
        }

        var code = this._getKeyboardCode(e);

        if (code == Sys.UI.Key.up || code == Sys.UI.Key.down) {
            if (this._popupBehavior._visible) {
                var vector = code - 39;
                if ((vector == -1 && this._highlightedIndex > 0) || (vector == 1 && this._highlightedIndex < this._optionListItems.length - 1)) {
                    var newIndex = (this._highlightedIndex + vector);
                    this.get_textBoxControl().value = this._optionListItems[newIndex].text;
                    this._highlightListItem(newIndex, true);
                    this.set_selectedIndex(newIndex);
                    this._ensureScrollTop();
                }
            }
            else {
                this._popupBehavior.show();
            }

            if (e.type == 'keypress') {
                e.preventDefault();
                e.stopPropagation();
                return false;
            }
            return true;
        }
        return null;

    },
    _handleEnterKey: function(e) {

        var code = this._getKeyboardCode(e);

        if (code == Sys.UI.Key.enter) {
            if (this._popupBehavior._visible) {
                if (this._highlightedIndex >= 0) {
                    this.get_textBoxControl().value = this._optionListItems[this._highlightedIndex].text
                    this.set_selectedIndex(this._highlightedIndex);
                }
                this._popupBehavior.hide();
                e.preventDefault();
                e.stopPropagation();
                return false;
            }

            else if (this.get_dropDownStyle() == Sys.Extended.UI.ComboBoxStyle.Simple
                || this.get_dropDownStyle() == Sys.Extended.UI.ComboBoxStyle.DropDown) {
                return true;
            }

            else if (this._highlightedIndex == this.get_selectedIndex()) {
                return true;
            }

            e.preventDefault();
            e.stopPropagation();
            return false;
        }
        return null;

    },
    _handleErasureKeys: function(e) {

        var code = this._getKeyboardCode(e);

        var isBackspaceKey = (code == Sys.UI.Key.backspace);
        var isDeleteKey = (code == Sys.UI.Key.del);
        if (typeof (window.event) === 'undefined' && e.type == 'keypress') {
            isDeleteKey = (e.rawEvent.keyCode == 46);
        }

        if (isBackspaceKey || isDeleteKey) {

            var info = this._getTextSelectionInfo(this.get_textBoxControl(), e);
            var newSelectionStart, newSelectionEnd;

            if (info.selectionStart < info.selectionEnd) {
                this.get_textBoxControl().value = info.selectionPrefix + info.selectionSuffix;
                newSelectionStart = info.selectionStart;
                newSelectionEnd = info.selectionStart;
            }

            else if (info.selectionStart == info.selectionEnd) {
                var newValue;
                if (isBackspaceKey && info.selectionStart > 0) {
                    var trimSize = 1;
                    if (info.selectionPrefix.charCodeAt(info.selectionPrefix.length - 1) == 8) {
                        trimSize = 2;
                    }
                    newValue = info.selectionPrefix.substr(0, info.selectionPrefix.length - trimSize);
                    newValue += info.selectionSuffix;
                    this.get_textBoxControl().value = newValue;
                    newSelectionStart = info.selectionStart - 1;
                    newSelectionEnd = info.selectionStart - 1;
                }
                else if (isDeleteKey && info.selectionStart < info.textBoxValue.length) {
                    newValue = info.selectionSuffix;
                    newValue = info.selectionPrefix + newValue.substr(1, info.selectionSuffix.length - 1);
                    this.get_textBoxControl().value = newValue;
                    newSelectionStart = info.selectionStart;
                    newSelectionEnd = info.selectionStart;
                    this._setTextSelectionRange(this.get_textBoxControl(), info.selectionStart, info.selectionStart);
                }
            }

            this._ensureHighlightedIndex();
            this._ensureScrollTop();
            this._setTextSelectionRange(this.get_textBoxControl(), newSelectionStart, newSelectionEnd);

            if ((this.get_dropDownStyle() == Sys.Extended.UI.ComboBoxStyle.Simple
                || this.get_dropDownStyle() == Sys.Extended.UI.ComboBoxStyle.DropDown)
                && (this.get_autoCompleteMode() == Sys.Extended.UI.ComboBoxAutoCompleteMode.Suggest
                || this.get_autoCompleteMode() == Sys.Extended.UI.ComboBoxAutoCompleteMode.SuggestAppend)
                && this._highlightedIndex >= 0) {
                var _isExactMatch = this._isExactMatch(this._optionListItems[this._highlightedIndex].text, this.get_textBoxControl().value);
                if (!_isExactMatch) {
                    this._highlightListItem(this._highlightedIndex, false);
                }
            }

            e.preventDefault();
            e.stopPropagation();
            return false;
        }
        return null;

    },
    _handleNonCharacterKey: function(e) {

        var code = this._getKeyboardCode(e);

        var isBackspaceKey = (code == Sys.UI.Key.backspace);
        var isDeleteKey = (code == Sys.UI.Key.del);
        if (e.type == 'keypress') {
            isDeleteKey = (code == 46);
        }

        if (isBackspaceKey || isDeleteKey) {

            return null;
        }

        if (this._isNonCharacterKey(e)) {
            if (code == Sys.UI.Key.esc) {
                this._popupBehavior.hide();
                this.get_textBoxControl().blur();
                e.preventDefault();
                e.stopPropagation();
                return false;
            }
            return true;
        }
        return null;
    },
    _isNonCharacterKey: function(e) {

        var code = this._getKeyboardCode(e);

        if (code == Sys.UI.Key.enter || code == Sys.UI.Key.esc) { // allow RETURN/ENTER and ESC keys for all browsers

            return true;
        }
        else if (Sys.Browser.agent == Sys.Browser.Safari && Sys.Browser.version < 500) {

            if (code == 8           // BACKSPACE in Safari 2
                || code == 9        // TAB in Safari 2
                || code == 63272    // DELETE in Safari 2
                || code == 63276    // PAGEUP in Safari 2
                || code == 63277    // PAGEDOWN in Safari 2
                || code == 63275    // END in Safari 2
                || code == 63273    // HOME in Safari 2
                || code == 63234    // ARROWLEFT in Safari 2
                || code == 63235    // ARROWRIGHT in Safari 2
                || (code >= 63236 && code <= 63243) // FUNCTION keys in Safari 2
                || code == 63248       // F13 key in Safari 2
            ) {
                return true;
            }
        }
        else if (Sys.Browser.agent == Sys.Browser.WebKit) {

            if (code == 8            // BACKSPACE in Safari 3
                || code == 9         // TAB in Safari 3
                || code == 19        // PAUSE BREAK Safari 3
                || code == 33        // PAGEUP in Safari 3
                || code == 34        // PAGEDOWN in Safari 3
                || code == 35        // END in Safari 3
                || code == 36        // HOME in Safari 3
                || code == 37        // ARROWLEFT in Safari 3
                || code == 39        // ARROWRIGHT in Safari 3
                || code == 45        // INSERT in Safari 3
                || code == 46        // DELETE in Safari 3
                || code == 91        // WINDOWS LEFT Safari 3
                || code == 92        // WINDOWS RIGHT Safari 3
                || code == 93        // MENU Safari 3
                || code == 113       // F2 Safari 3
                || code == 115       // F4 Safari 3
                || code == 118       // F7 Safari 3
                || code == 119       // F8 Safari 3
                || code == 120       // F9 Safari 3
                || code == 122       // F11 Safari 3
                || code == 145       // SCROLL LOCK Safari 3
            )
                return true;
        }
        else if (Sys.Browser.agent != Sys.Browser.InternetExplorer) {

            if (code == 8           // BACKSPACE in non-microsoft browsers
                || code == 9        // TAB in non-microsoft browsers
                || code == 33       // PAGEUP in non-microsoft browsers
                || code == 34       // PAGEDOWN in non-microsoft browsers
                || code == 35       // END in non-microsoft browsers
                || code == 36       // HOME in non-microsoft browsers
                || code == 37       // ARROWLEFT in non-microsoft browsers
                || code == 39       // ARROWRIGHT in non-microsoft browsers
                || code == 45       // INSERT in non-microsoft browsers
                || code == 46       // DELETE in non-microsoft browsers
            ) {
                if (!e.shiftKey)
                    return true;
            }
            else if (code == 145) {

                return true;

            }
            else if (code == 19) {

                return true;

            }
            else if (Sys.Browser.agent == Sys.Browser.Opera) {

                if (code == 0       // MENU key in Opera
                    || code == 16   // SHIFT key in Opera
                    || code == 17   // CONTROL key in Opera
                ) {
                    return true;
                }
            }
            else if (Sys.Browser.agent == Sys.Browser.Firefox) {

                if (code == 91      // WINDOWS LEFT key in Firefox
                    || code == 92   // WINDOWS RIGHT key in Firefox
                    || code == 93   // MENU key in Firefox
                ) {
                    return true;
                }
            }
        }
        return false;

    },
    _ensureScrollTop: function() {

        var optionListControl = this.get_optionListControl();
        
        if (this._highlightedIndex >= 0) {
            var itemHeight = this._getOptionListItemHeight(),
                itemTop = itemHeight * this._highlightedIndex,
                scrollBottom = optionListControl.scrollTop + optionListControl.clientHeight;

            if (itemTop <= optionListControl.scrollTop || itemTop >= scrollBottom)
                optionListControl.scrollTop = this._highlightedIndex * itemHeight;
        }

    },
    _ensureSelectedIndex: function() {

        var selectedIndex = this.get_hiddenFieldControl().value;
        if (selectedIndex == '') {
            selectedIndex = (this._optionListItems.length > 0) ? 0 : -1;
            this.get_hiddenFieldControl().value = selectedIndex.toString();
        }
        if (this._originalSelectedIndex == null) {
            this._originalSelectedIndex = parseInt(selectedIndex);
        }


    },
    _ensureHighlightedIndex: function() {

        var textBoxValue = this.get_textBoxControl().value;

        if (this._highlightedIndex != null && this._highlightedIndex >= 0
            && this._isExactMatch(this._optionListItems[this._highlightedIndex].text, textBoxValue)) {
            return;
        }

        var firstMatch = -1;
        var ensured = false;
        for (var i = 0; i < this._optionListItems.length; i++) {
            var itemText = this._optionListItems[i].text;
            if (this._isExactMatch(itemText, textBoxValue)) {
                this._highlightListItem(i, true);
                ensured = true;
                break;
            }

            else if (firstMatch < 0 && this._highlightSuggestedItem) {
                if (this._isPrefixMatch(itemText, textBoxValue)) {
                    firstMatch = i;
                }
            }
        }

        if (!ensured) {
            this._highlightListItem(firstMatch, true);
        }

    },
    _isExactMatch: function(itemText, userText) {

        var exactMatch = (itemText == userText);
        if (!exactMatch && !this.get_caseSensitive())
            exactMatch = (itemText.toLowerCase() == userText.toLowerCase())

        return exactMatch;

    },
    _isPrefixMatch: function(itemText, userText) {

        return this._isExactMatch(itemText.substring(0, userText.length), userText);

    },
    _setTextSelectionRange: function(textBox, selectionStart, selectionEnd) {

        var strategy = this._getTextSelectionStrategy();
        if (strategy == Sys.Extended.UI.ComboBoxTextSelectionStrategy.Microsoft) {
            var range = textBox.createTextRange();
            range.collapse(true);
            range.moveEnd('character', selectionEnd);
            range.moveStart('character', selectionStart);
            range.select();

            if (Sys.Browser.agent == Sys.Browser.Opera) {
                textBox.setSelectionRange(selectionStart, selectionEnd)
            }
        }
        else if (strategy == Sys.Extended.UI.ComboBoxTextSelectionStrategy.W3C) {
            textBox.setSelectionRange(selectionStart, selectionEnd)
        }

    },
    _getTextSelectionStrategy: function() {

        if (this._textSelectionStrategy == null) {
            if (this.get_textBoxControl().createTextRange) {
                this._textSelectionStrategy =
                    Sys.Extended.UI.ComboBoxTextSelectionStrategy.Microsoft;
            }
            else if (this.get_textBoxControl().setSelectionRange) {
                this._textSelectionStrategy =
                    Sys.Extended.UI.ComboBoxTextSelectionStrategy.W3C;
            }
            else {
                this._textSelectionStrategy =
                    Sys.Extended.UI.ComboBoxTextSelectionStrategy.Unknown;
            }
        }

        return this._textSelectionStrategy;

    },
    _getTextSelectionInfo: function(textBox, e) {

        var info = new Object();

        info.strategy = this._getTextSelectionStrategy();

        if (info.strategy == Sys.Extended.UI.ComboBoxTextSelectionStrategy.Microsoft) {
            var userRange = document.selection.createRange();
            info.selectionStart = 0;
            info.selectionEnd = textBox.value.length;
            while (userRange.moveStart('character', -1) != 0) {
                info.selectionStart++;
            }
            while (userRange.moveEnd('character', 1) != 0) {
                info.selectionEnd--;
            }
        }
        else if (info.strategy == Sys.Extended.UI.ComboBoxTextSelectionStrategy.W3C) {
            info.selectionStart = textBox.selectionStart;
            info.selectionEnd = textBox.selectionEnd;
        }

        info.typedCharacter = String.fromCharCode(e.charCode);
        info.textBoxValue = textBox.value;
        info.selectionPrefix = (info.textBoxValue.length >= info.selectionStart)
            ? info.textBoxValue.substring(0, info.selectionStart)
            : '';
        info.selectionText = (info.textBoxValue.length >= info.selectionEnd)
            ? info.textBoxValue.substring(info.selectionStart, info.selectionEnd)
            : '';
        info.selectionSuffix = (info.textBoxValue.length >= info.selectionEnd)
            ? info.textBoxValue.substring(info.selectionEnd, info.textBoxValue.length)
            : '';
        info.selectionTextFirst = info.selectionText.substring(0, 1);

        return info;

    },
    _getOptionListItemHeight: function() {

        var optionListControl = this.get_optionListControl();
        
        if (this._optionListItemHeight == null && optionListControl.scrollHeight > 0) {
            this._optionListItemHeight = Math.round(optionListControl.scrollHeight / this._optionListItems.length);
        }
        else if (Sys.Browser.agent === Sys.Browser.InternetExplorer && Sys.Browser.version < 7
            && Math.round(optionListControl.scrollHeight / this._optionListItems.length) < this._optionListItemHeight) {
            this._optionListItemHeight = Math.round(optionListControl.scrollHeight / this._optionListItems.length);
        }
        return this._optionListItemHeight;

    },
    _getOptionListBounds: function() {

        var bounds = {
            width: this._getOptionListWidth(),
            height: this._getOptionListHeight()
        };
        return bounds;

    },
    _getOptionListHeight: function() {

        if (this._optionListHeight == null || (this._getOptionListItemHeight() * this._optionListItems.length) < this._optionListHeight) {
            this._optionListHeight = this._getOptionListItemHeight() * this._optionListItems.length;
        }

        if (this._optionListHeight < 0) {
            this._optionListHeight = 0;
        }

        return this._optionListHeight;

    },
    _getOptionListWidth: function() {

        var optionListControl = this.get_optionListControl();
        
        if (this._optionListWidth == null) {
            var leftBorder = 1;
            var rightBorder = 1;
            var leftPadding = 0;
            var rightPadding = 0;
            var style = optionListControl.style;


            style.overflow = 'auto';

            var bestWidth = this.get_comboTableControl().offsetWidth;

            bestWidth -= (leftBorder + rightBorder);
            if (bestWidth < 0) {
                bestWidth = 0;
            }

            var originalWidth = style.width;
            style.width = bestWidth + 'px';

            if (this.get_comboTableControl().offsetWidth < optionListControl.scrollWidth) {
                bestWidth = optionListControl.scrollWidth + rightPadding + leftPadding;
            }

            style.overflow = 'hidden';

            style.width = originalWidth;

            this._optionListWidth = bestWidth;
        }

        if (this._optionListWidth < 0) {
            this._optionListWidth = 0;
        }

        return this._optionListWidth;

    },
    _getWindowBounds: function() {

        var bounds = {
            x: this._getScrollLeft(),
            y: this._getScrollTop(),
            width: this._getWindowWidth(),
            height: this._getWindowHeight()
        };
        return bounds;

    },
    _getWindowHeight: function() {

        var windowHeight = 0;
        if (typeof (window.innerHeight) == 'number') {
            windowHeight = window.innerHeight;
        }
        else if (document.documentElement && document.documentElement.clientHeight) {
            windowHeight = document.documentElement.clientHeight;
        }
        else if (document.body && document.body.clientHeight) {
            windowHeight = document.body.clientHeight;
        }
        return windowHeight;

    },
    _getWindowWidth: function() {

        var windowWidth = 0;
        if (typeof (window.innerWidth) == 'number') {
            windowWidth = window.innerWidth;
        }
        else if (document.documentElement && document.documentElement.clientWidth) {
            windowWidth = document.documentElement.clientWidth;
        }
        else if (document.body && document.body.clientWidth) {
            windowWidth = document.body.clientWidth;
        }
        return windowWidth;

    },
    _getScrollTop: function() {

        var scrollTop = 0;
        if (typeof (window.pageYOffset) == 'number') {
            scrollTop = window.pageYOffset;
        }
        if (document.body && document.body.scrollTop) {
            scrollTop = document.body.scrollTop;
        }
        else if (document.documentElement && document.documentElement.scrollTop) {
            scrollTop = document.documentElement.scrollTop;
        }
        return scrollTop;

    },
    _getScrollLeft: function() {

        var scrollLeft = 0;
        if (typeof (window.pageXOffset) == 'number') {
            scrollLeft = window.pageXOffset;
        }
        else if (document.body && document.body.scrollLeft) {
            scrollLeft = document.body.scrollLeft;
        }
        else if (document.documentElement && document.documentElement.scrollLeft) {
            scrollLeft = document.documentElement.scrollLeft;
        }
        return scrollLeft;

    },
    set_comboTableControl: function(value) {

        if (this._comboTableControl !== value) {
            this._comboTableControl = value;
            this.raisePropertyChanged('comboTableControl');
        }

    },
    get_comboTableControl: function() {

        return this._comboTableControl;

    },
    set_textBoxControl: function(value) {

        if (this._textBoxControl !== value) {
            this._textBoxControl = value;
            this.raisePropertyChanged('textBoxControl');
        }

    },
    get_textBoxControl: function() {

        return this._textBoxControl;

    },
    set_buttonControl: function(value) {

        if (this._buttonControl !== value) {
            this._buttonControl = value;
            this.raisePropertyChanged('buttonControl');
        }

    },
    get_buttonControl: function() {
        return this._buttonControl;
    },
    set_optionListControl: function(value) {

        if (this._optionListControl !== value) {
            this._optionListControl = value;
            this.raisePropertyChanged('optionListControl');
        }

    },
    get_optionListControl: function() {

        return this._optionListControl;

    },
    set_hiddenFieldControl: function(value) {

        if (this._hiddenFieldControl !== value) {
            this._hiddenFieldControl = value;
            this.raisePropertyChanged('hiddenFieldControl');
        }

    },
    get_hiddenFieldControl: function() {

        return this._hiddenFieldControl;

    },
    set_selectedIndex: function(value) {

        if (this.get_hiddenFieldControl().value !== value.toString()) {
            this.get_hiddenFieldControl().value = value.toString();
            this._ensureSelectedIndex();
            this.raisePropertyChanged('selectedIndex');
        }

    },
    get_selectedIndex: function() {

        this._ensureSelectedIndex();
        var selectedIndex = this.get_hiddenFieldControl().value;
        return parseInt(selectedIndex);

    },
    set_autoPostBack: function(value) {

        if (this._autoPostBack !== value) {
            this._autoPostBack = value;
            this.raisePropertyChanged('autoPostBack');
        }

    },
    get_autoPostBack: function() {

        return this._autoPostBack;

    },
    set_autoCompleteMode: function(value) {

        if (this._autoCompleteMode !== value) {
            this._autoCompleteMode = value;
            this.raisePropertyChanged('autoCompleteMode');
        }

    },
    get_autoCompleteMode: function() {

        return this._autoCompleteMode;

    },
    set_dropDownStyle: function(value) {

        if (this._dropDownStyle !== value) {
            this._dropDownStyle = value;
            this.raisePropertyChanged('dropDownStyle');
        }

    },
    get_dropDownStyle: function() {

        return this._dropDownStyle;

    },
    set_caseSensitive: function(value) {

        if (this._caseSensitive !== value) {
            this._caseSensitive = value;
            this.raisePropertyChanged('caseSensitive');
        }

    },
    get_caseSensitive: function() {

        return this._caseSensitive;

    },
    set_listItemHoverCssClass: function(value) {

        if (this._listItemHoverCssClass !== value) {
            this._listItemHoverCssClass = value;
            this.raisePropertyChanged('listItemHoverCssClass');
        }

    },
    get_listItemHoverCssClass: function() {

        return this._listItemHoverCssClass;

    }

}

Sys.Extended.UI.ComboBox.registerClass('Sys.Extended.UI.ComboBox', Sys.UI.Control);


6:// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedCollapsiblePanel";function a(){var q="expandComplete",p="expanded",o="expanding",n="collapseComplete",m="collapsed",l="collapsing",k="TargetWidth",j="TargetHeight",c="auto",g="display",u="ExpandControlID",f="click",t="CollapseControlID",s="mouseout",r="mouseover",i="Collapsed",b="",h="SuppressPostBack",e="px",a=null,d=false;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.CollapsiblePanelExpandDirection=function(){throw Error.invalidOperation();};Sys.Extended.UI.CollapsiblePanelExpandDirection.prototype={Horizontal:0,Vertical:1};Sys.Extended.UI.CollapsiblePanelExpandDirection.registerEnum("Sys.Extended.UI.CollapsiblePanelExpandDirection",d);Sys.Extended.UI.CollapsiblePanelBehavior=function(c){var b=this;Sys.Extended.UI.CollapsiblePanelBehavior.initializeBase(b,[c]);b._collapsedSize=0;b._expandedSize=0;b._scrollContents=a;b._collapsed=d;b._expandControlID=a;b._collapseControlID=a;b._textLabelID=a;b._collapsedText=a;b._expandedText=a;b._imageControlID=a;b._expandedImage=a;b._collapsedImage=a;b._suppressPostBack=a;b._autoExpand=a;b._autoCollapse=a;b._expandDirection=Sys.Extended.UI.CollapsiblePanelExpandDirection.Vertical;b._collapseClickHandler=a;b._expandClickHandler=a;b._panelMouseEnterHandler=a;b._panelMouseLeaveHandler=a;b._childDiv=a;b._animation=a};Sys.Extended.UI.CollapsiblePanelBehavior.prototype={initialize:function(){var c=this;Sys.Extended.UI.CollapsiblePanelBehavior.callBaseMethod(c,"initialize");var g=c.get_element();c._animation=new Sys.Extended.UI.Animation.LengthAnimation(g,.25,10,"style",a,0,0,e);if(c._expandDirection==Sys.Extended.UI.CollapsiblePanelExpandDirection.Vertical)c._animation.set_propertyKey("height");else c._expandDirection==Sys.Extended.UI.CollapsiblePanelExpandDirection.Horizontal&&c._animation.set_propertyKey("width");c._animation.add_ended(Function.createDelegate(c,c._onAnimateComplete));if(c._suppressPostBack==a)if(g.tagName=="INPUT"&&g.type=="checkbox"){c._suppressPostBack=d;c.raisePropertyChanged(h)}else if(g.tagName=="A"){c._suppressPostBack=true;c.raisePropertyChanged(h)}var j=Sys.Extended.UI.CollapsiblePanelBehavior.callBaseMethod(c,"get_ClientState");if(j&&j!=b){var m=Boolean.parse(j);if(c._collapsed!=m){c._collapsed=m;c.raisePropertyChanged(i)}}c._setupChildDiv();if(c._collapsed)c._setTargetSize(c._getCollapsedSize());else c._setTargetSize(c._getExpandedSize());c._setupState(c._collapsed);if(c._collapseControlID==c._expandControlID){c._collapseClickHandler=Function.createDelegate(c,c.togglePanel);c._expandClickHandler=a}else{c._collapseClickHandler=Function.createDelegate(c,c.collapsePanel);c._expandClickHandler=Function.createDelegate(c,c.expandPanel)}if(c._autoExpand){c._panelMouseEnterHandler=Function.createDelegate(c,c._onMouseEnter);$addHandler(g,r,c._panelMouseEnterHandler)}if(c._autoCollapse){c._panelMouseLeaveHandler=Function.createDelegate(c,c._onMouseLeave);$addHandler(g,s,c._panelMouseLeaveHandler)}if(c._collapseControlID){var k=$get(c._collapseControlID);if(!k)throw Error.argument(t,String.format(Sys.Extended.UI.Resources.CollapsiblePanel_NoControlID,c._collapseControlID));else $addHandler(k,f,c._collapseClickHandler)}if(c._expandControlID)if(c._expandClickHandler){var l=$get(c._expandControlID);if(!l)throw Error.argument(u,String.format(Sys.Extended.UI.Resources.CollapsiblePanel_NoControlID,c._expandControlID));else $addHandler(l,f,c._expandClickHandler)}},dispose:function(){var b=this,e=b.get_element();if(b._collapseClickHandler){var c=b._collapseControlID?$get(b._collapseControlID):a;c&&$removeHandler(c,f,b._collapseClickHandler);b._collapseClickHandler=a}if(b._expandClickHandler){var d=b._expandControlID?$get(b._expandControlID):a;d&&$removeHandler(d,f,b._expandClickHandler);b._expandClickHandler=a}b._panelMouseEnterHandler&&$removeHandler(e,r,b._panelMouseEnterHandler);b._panelMouseLeaveHandler&&$removeHandler(e,s,b._panelMouseLeaveHandler);if(b._animation){b._animation.dispose();b._animation=a}Sys.Extended.UI.CollapsiblePanelBehavior.callBaseMethod(b,"dispose")},togglePanel:function(a){this._toggle(a)},expandPanel:function(a){this._doOpen(a)},collapsePanel:function(a){this._doClose(a)},_checkCollapseHide:function(){if(this._collapsed&&this._getTargetSize()==0){var a=this.get_element(),b=$common.getCurrentStyle(a,g);if(!a.oldDisplay&&b!="none"){a.oldDisplay=b;a.style.display="none"}return true}return d},_doClose:function(b){var a=this,c=new Sys.CancelEventArgs;a.raiseCollapsing(c);if(c.get_cancel())return;if(a._animation){a._animation.stop();a._animation.set_startValue(a._getTargetSize());a._animation.set_endValue(a._getCollapsedSize());a._animation.play()}a._setupState(true);if(a._suppressPostBack)if(b&&b.preventDefault)b.preventDefault();else{if(b)b.returnValue=d;return d}},_doOpen:function(e){var b=this,f=new Sys.CancelEventArgs;b.raiseExpanding(f);if(f.get_cancel())return;if(b._animation){b._animation.stop();var c=b.get_element();if(b._checkCollapseHide()&&$common.getCurrentStyle(c,g,c.style.display)){if(c.oldDisplay)c.style.display=c.oldDisplay;else if(c.style.removeAttribute)c.style.removeAttribute(g);else c.style.removeProperty(g);c.oldDisplay=a}b._animation.set_startValue(b._getTargetSize());b._animation.set_endValue(b._getExpandedSize());b._animation.play()}b._setupState(d);if(b._suppressPostBack)if(e&&e.preventDefault)e.preventDefault();else{if(e)e.returnValue=d;return d}},_onAnimateComplete:function(){var a=this,b=a.get_element();if(!a._collapsed&&!a._expandedSize)if(a._expandDirection==Sys.Extended.UI.CollapsiblePanelExpandDirection.Vertical)if(a._childDiv.offsetHeight<=b.offsetHeight){b.style.height=c;a.raisePropertyChanged(j)}else a._checkCollapseHide();else if(a._childDiv.offsetWidth<=b.offsetWidth){b.style.width=c;a.raisePropertyChanged(k)}else a._checkCollapseHide();else a._checkCollapseHide();if(a._collapsed){a.raiseCollapseComplete();a.raiseCollapsed(Sys.EventArgs.Empty)}else{a.raiseExpandComplete();a.raiseExpanded(new Sys.EventArgs)}},_onMouseEnter:function(a){this._autoExpand&&this.expandPanel(a)},_onMouseLeave:function(a){this._autoCollapse&&this.collapsePanel(a)},_getExpandedSize:function(){var a=this;return a._expandedSize?a._expandedSize:a._expandDirection==Sys.Extended.UI.CollapsiblePanelExpandDirection.Vertical?a._childDiv.offsetHeight:a._expandDirection==Sys.Extended.UI.CollapsiblePanelExpandDirection.Horizontal?a._childDiv.offsetWidth:void 0},_getCollapsedSize:function(){return this._collapsedSize?this._collapsedSize:0},_getTargetSize:function(){var b=this,a;if(b._expandDirection==Sys.Extended.UI.CollapsiblePanelExpandDirection.Vertical)a=b.get_TargetHeight();else if(b._expandDirection==Sys.Extended.UI.CollapsiblePanelExpandDirection.Horizontal)a=b.get_TargetWidth();if(a===undefined)a=0;return a},_setTargetSize:function(b){var a=this,e=a._collapsed||a._expandedSize,d=a.get_element();if(a._expandDirection==Sys.Extended.UI.CollapsiblePanelExpandDirection.Vertical)if(e||b<d.offsetHeight)a.set_TargetHeight(b);else{d.style.height=c;a.raisePropertyChanged(j)}else if(a._expandDirection==Sys.Extended.UI.CollapsiblePanelExpandDirection.Horizontal)if(e||b<d.offsetWidth)a.set_TargetWidth(b);else{d.style.width=c;a.raisePropertyChanged(k)}a._checkCollapseHide()},_setupChildDiv:function(){var h="hidden",g="scroll",a=this,i=a._getTargetSize(),f=a.get_element();a._childDiv=f.cloneNode(d);f.id=b;a._childDiv.style.visibility="visible";a._childDiv.style.display=b;while(f.hasChildNodes()){var j=f.childNodes[0];j=f.removeChild(j);a._childDiv.appendChild(j)}f.setAttribute("style",b);f.className=b;f.style.border="0px";f.style.margin="0px";f.style.padding="0px";if(a._scrollContents){if(a._expandDirection==Sys.Extended.UI.CollapsiblePanelExpandDirection.Vertical){f.style.overflowY=g;a._childDiv.style.overflowY=b}else{f.style.overflowX=g;a._childDiv.style.overflowX=b}if(Sys.Browser.agent==Sys.Browser.Safari||Sys.Browser.agent==Sys.Browser.Opera){f.style.overflow=g;a._childDiv.style.overflow=b}}else{if(a._expandDirection==Sys.Extended.UI.CollapsiblePanelExpandDirection.Vertical){f.style.overflowY=h;a._childDiv.style.overflowY=b}else{f.style.overflowX=h;a._childDiv.style.overflowX=b}if(Sys.Browser.Agent==Sys.Browser.Safari||Sys.Browser.Agent==Sys.Browser.Opera){f.style.overflow=h;a._childDiv.style.overflow=b}}a._childDiv.style.position=b;if(i==a._collapsedSize)if(a._expandDirection==Sys.Extended.UI.CollapsiblePanelExpandDirection.Vertical)a._childDiv.style.height=c;else if(a._expandDirection==Sys.Extended.UI.CollapsiblePanelExpandDirection.Horizontal)a._childDiv.style.width=c;f.appendChild(a._childDiv);f.style.visibility="visible";f.style.display=b;if(a._collapsed)i=a._getCollapsedSize();else i=a._getExpandedSize();if(a._expandDirection==Sys.Extended.UI.CollapsiblePanelExpandDirection.Vertical){f.style.height=i+e;if(!a._expandedSize)f.style.height=c;else f.style.height=a._expandedSize+e;a._childDiv.style.height=c}else if(a._expandDirection==Sys.Extended.UI.CollapsiblePanelExpandDirection.Horizontal){f.style.width=i+e;if(!a._expandedSize)f.style.width=c;else f.style.width=a._expandedSize+e;a._childDiv.style.width=c}},_setupState:function(d){var a=this;if(d){if(a._textLabelID&&a._collapsedText){var c=$get(a._textLabelID);if(c)c.innerHTML=a._collapsedText}if(a._imageControlID&&a._collapsedImage){var b=$get(a._imageControlID);if(b&&b.src){b.src=a._collapsedImage;if(a._expandedText||a._collapsedText)b.title=a._collapsedText}}}else{if(a._textLabelID&&a._expandedText){var c=$get(a._textLabelID);if(c)c.innerHTML=a._expandedText}if(a._imageControlID&&a._expandedImage){var b=$get(a._imageControlID);if(b&&b.src){b.src=a._expandedImage;if(a._expandedText||a._collapsedText)b.title=a._expandedText}}}if(a._collapsed!=d){a._collapsed=d;a.raisePropertyChanged(i)}Sys.Extended.UI.CollapsiblePanelBehavior.callBaseMethod(a,"set_ClientState",[a._collapsed.toString()])},_toggle:function(a){return this.get_Collapsed()?this.expandPanel(a):this.collapsePanel(a)},add_collapsing:function(a){this.get_events().addHandler(l,a)},remove_collapsing:function(a){this.get_events().removeHandler(l,a)},raiseCollapsing:function(b){var a=this.get_events().getHandler(l);a&&a(this,b)},add_collapsed:function(a){this.get_events().addHandler(m,a)},remove_collapsed:function(a){this.get_events().removeHandler(m,a)},raiseCollapsed:function(b){var a=this.get_events().getHandler(m);a&&a(this,b)},add_collapseComplete:function(a){this.get_events().addHandler(n,a)},remove_collapseComplete:function(a){this.get_events().removeHandler(n,a)},raiseCollapseComplete:function(){var a=this.get_events().getHandler(n);a&&a(this,Sys.EventArgs.Empty)},add_expanding:function(a){this.get_events().addHandler(o,a)},remove_expanding:function(a){this.get_events().removeHandler(o,a)},raiseExpanding:function(b){var a=this.get_events().getHandler(o);a&&a(this,b)},add_expanded:function(a){this.get_events().addHandler(p,a)},remove_expanded:function(a){this.get_events().removeHandler(p,a)},raiseExpanded:function(b){var a=this.get_events().getHandler(p);a&&a(this,b)},add_expandComplete:function(a){this.get_events().addHandler(q,a)},remove_expandComplete:function(a){this.get_events().removeHandler(q,a)},raiseExpandComplete:function(){var a=this.get_events().getHandler(q);a&&a(this,Sys.EventArgs.Empty)},get_TargetHeight:function(){return this.get_element().offsetHeight},set_TargetHeight:function(a){this.get_element().style.height=a+e;this.raisePropertyChanged(j)},get_TargetWidth:function(){return this.get_element().offsetWidth},set_TargetWidth:function(a){this.get_element().style.width=a+e;this.raisePropertyChanged(k)},get_Collapsed:function(){return this._collapsed},set_Collapsed:function(b){var a=this;if(a.get_isInitialized()&&a.get_element()&&b!=a.get_Collapsed())a.togglePanel();else{a._collapsed=b;a.raisePropertyChanged(i)}},get_CollapsedSize:function(){return this._collapsedSize},set_CollapsedSize:function(a){if(this._collapsedSize!=a){this._collapsedSize=a;this.raisePropertyChanged("CollapsedSize")}},get_ExpandedSize:function(){return this._expandedSize},set_ExpandedSize:function(a){if(this._expandedSize!=a){this._expandedSize=a;this.raisePropertyChanged("ExpandedSize")}},get_CollapseControlID:function(){return this._collapseControlID},set_CollapseControlID:function(a){if(this._collapseControlID!=a){this._collapseControlID=a;this.raisePropertyChanged(t)}},get_ExpandControlID:function(){return this._expandControlID},set_ExpandControlID:function(a){if(this._expandControlID!=a){this._expandControlID=a;this.raisePropertyChanged(u)}},get_ScrollContents:function(){return this._scrollContents},set_ScrollContents:function(a){if(this._scrollContents!=a){this._scrollContents=a;this.raisePropertyChanged("ScrollContents")}},get_SuppressPostBack:function(){return this._suppressPostBack},set_SuppressPostBack:function(a){if(this._suppressPostBack!=a){this._suppressPostBack=a;this.raisePropertyChanged(h)}},get_TextLabelID:function(){return this._textLabelID},set_TextLabelID:function(a){if(this._textLabelID!=a){this._textLabelID=a;this.raisePropertyChanged("TextLabelID")}},get_ExpandedText:function(){return this._expandedText},set_ExpandedText:function(a){if(this._expandedText!=a){this._expandedText=a;this.raisePropertyChanged("ExpandedText")}},get_CollapsedText:function(){return this._collapsedText},set_CollapsedText:function(a){if(this._collapsedText!=a){this._collapsedText=a;this.raisePropertyChanged("CollapsedText")}},get_ImageControlID:function(){return this._imageControlID},set_ImageControlID:function(a){if(this._imageControlID!=a){this._imageControlID=a;this.raisePropertyChanged("ImageControlID")}},get_ExpandedImage:function(){return this._expandedImage},set_ExpandedImage:function(a){if(this._expandedImage!=a){this._expandedImage=a;this.raisePropertyChanged("ExpandedImage")}},get_CollapsedImage:function(){return this._collapsedImage},set_CollapsedImage:function(a){if(this._collapsedImage!=a){this._collapsedImage=a;this.raisePropertyChanged("CollapsedImage")}},get_AutoExpand:function(){return this._autoExpand},set_AutoExpand:function(a){if(this._autoExpand!=a){this._autoExpand=a;this.raisePropertyChanged("AutoExpand")}},get_AutoCollapse:function(){return this._autoCollapse},set_AutoCollapse:function(a){if(this._autoCollapse!=a){this._autoCollapse=a;this.raisePropertyChanged("AutoCollapse")}},get_ExpandDirection:function(){return this._expandDirection==Sys.Extended.UI.CollapsiblePanelExpandDirection.Vertical},set_ExpandDirection:function(a){if(this._expandDirection!=a){this._expandDirection=a;this.raisePropertyChanged("ExpandDirection")}}};Sys.Extended.UI.CollapsiblePanelBehavior.registerClass("Sys.Extended.UI.CollapsiblePanelBehavior",Sys.Extended.UI.BehaviorBase);Sys.registerComponent(Sys.Extended.UI.CollapsiblePanelBehavior,{name:"collapsiblePanel"})}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedBase","ExtendedCommon","ExtendedAnimations"],a);else a()})();6   �& h�( @ �����������������������������������������������������������������������������������������������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ�ġ���ǰ��ǰ��ǰ��ǰ��ǰ���������������������������������������������������������ǰ��ǰ��ǰ��ǰ�ġ���ġ���ǰ��ǰ��ǰ��ǰ��������������������������������������������������������������������ǰ��ǰ��ǰ�ġ����ǰ��ġ���ǰ��ǰ��ǰ������������������������������333��������������������������������������ǰ��ǰ�ġ����ǰ��ǰ��ǰ��ġ���ǰ��ǰ����������������������������������"""���������������������������������ǰ��ǰ���ǰ��ǰ��ǰ��ǰ��ǰ���ǰ��ǰ������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ���������������������������������������"""������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ�����������������������333�www���������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��������������������������"""���www������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��������������������������������������������������������������������������������������������������������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ���������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ���������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ���������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ���������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ���������������������������������������������������������������������ǰ��ǰ���ǰ��ǰ��ǰ��ǰ��ǰ���ǰ��ǰ��������������������������333���������������������������������������ǰ��ǰ�ġ����ǰ��ǰ��ǰ��ġ���ǰ��ǰ������������������������������������������������������������������ǰ��ǰ��ǰ�ġ����ǰ��ġ���ǰ��ǰ��ǰ���������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ�ġ���ġ���ǰ��ǰ��ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ�ġ���ǰ��ǰ��ǰ��ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ���������������������������������������������������������������������������������������������������������������������������������������������������(  ��������������������������������������������������������������������ǰ��ǰ��ǰ�ġ���ǰ��ǰ���������������������������������ǰ��ǰ�ġ���ġ���ǰ���������������������������������ǰ��ǰ���ǰ���ǰ���������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ�������������������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ���������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ���������������������������������ǰ��ǰ���ǰ���ǰ������������������������������ǰ��ǰ�ġ���ġ���ǰ���������������������������������ǰ��ǰ��ǰ�ġ���ǰ��ǰ�����������������������������������������������������������������������������������GIF89a ��Υ�{��lM:��Ѩ��()dwx���fBH�������i!3���������мA?Y��o=<n$���������D1N����[^�����=��waV��)��Dn�󎥎!����dP2��i[�����f��#��ɨsP<++2�������)��D�k6pr���������� 33f�7!h޵cC��3��ڥ�����������v3ZNXNN��qJJTڰ����
��&��='O������.��.C����O��
�����|| i����F38���	��!����������' ��XDP@�\M.��̥�&�������!�, �����������Ntom���2<<]O��5~q(�V4��~~=5o<"G��WS2=Mp�XA����(q�9����
�<==qqX	Ă�qtqop�E��i�l�6tr<ϺSSrt�z�q���7t�I*L:�rr.�yu�:<����9q�����Ő&L������cd�&����ɗ!�P����/}��a!Fq�1�"����\4&@;3`�!B��r���aȐ0&��ģ�T�p�� ��"�8��M�c�g�ԩ��VE]�h�;W&s��
�6��Q��3�ܹdR����7�>̙3���2�M�%
��F���:Ja�M;@a��
H�hM��$I��&���(!������̉l#9̣�p"�*4h ax�� �p|x���󇀒�W@K�`j��QX��c(Q�V(�Q@pB	�Yh!�T� Yd�ĉ(������`�R?d!��8��7*Dk�a�H&���@�@�{�ƔTVi�{ H ;:GIF89a������������������������������������!�,@���(X���Ç8;1GIF89a��������!��,8@�
;LGIF89a
������!�,
������QZ����q�ǀa�ESe�nX;�GIF89a�?�������������������������������������������������������@`�at������`x����������������������Rcs��p��v�����t�����:Iv��������������)^����!�?,���pH,�
� �l:�M!"��Y���UXb1t�x�t�m�n�
p�&�(���~�u)6;����3=66B8|�z�B6* �� ��6	�		12""�B&688=��81/85�8B+4�
1�-5��#
��055�B#
��55

BS<غ5%5$B��q���&t�8Q�LJBn��^�.4�P��B20�`�	8@aB�)� �)�p�@'#�.,���(]:O�G�J
;�GIF89a����:�=�@�D�D�G�I�H�K�R�S�Hx�V��j��U��c��o��s�Ԟ�衽���������������������������w�ሻ��������������������������������������������������������������������������������������������������������������К����)^�2e�_���������տ�������������������!�l,��l������.023������48<=������9?BD������>CH������HJK��]L����DO��\j�i�ȂHMR��\bRZ\i�ׂQS��Y\[\_h��� T��\^�a��F��W\cj�

A��+Z�x1���T�@��	�D�H��E0# ��.Z���BP	'5X�@��dT��EJA)^L�D�06mZ���F
2��A�M�LP�� >z��!�FE�$�`�@5Jn�(c��!��!��%�<9��'X�(�p!	�#��Q��I�`8��p�%2*��	�|R��Yءװ;�GIF89a�����������������������������������������������������������������������������������������������������������������������������)^�������!�>,�@�pH,��̆�l:�Ma4"Y���U2�V�x�T��z�k�{k�P���o���3B+6��zm��B/488nm<8{�z�8B7
99z}<��<�9�::z��|�<�:B-���n��Bz��|zB
� ��<Bz&<��BS$�n+�#!B>�8�BO�YzV�8Q��B<���77<b�`�"�BF�p1@F�Y�f� 0�BP��Q��
C�q�F
3
�B���(]:A�CG�J
;GIF89a�������������������������������������������333���!�,� $�di�B��l+�p�ƴ:�D��
���p8��a�l�ۑH4�t���	�����J|�A`�n�f��A����o}�p��_
�wD�
_�~��_����_
����k�_p����_�����_��'��!;-GIF89a�3E���E����)d��E��E��@����O|pd?���r/�z1���rtw��\���¾T����x����}M��v����ύf��S����~zd��Mx�������ϐ��f����ŝ�������D��?�����������{|E��V�t���!�3,J��p(\0�H�ddA
C)��B~d�%���3�
R;+�VF�:`���C��8''%N3 /�3�3A;1GIF89a���!�,��	j
(;�.ajax__html_editor_extender_button
{
	background: url(Images/html-editor-buttons.png) no-repeat;
	cursor: pointer;
	display: block;
	float: left;
	border: none;
	background-color:#c2c2c2;
	padding-bottom:2px;	
}
.ajax__html_editor_extender_button:hover 
{
   background-color:#3c8aff; 
}
.ajax__html_editor_extender_buttoncontainer
{
    background-color:#F0F0F0;     
    padding: 2px 2px 2px 2px;
    border: 1px solid #c2c2c2;    
    overflow:auto;
}
.ajax__html_editor_extender_texteditor
{
    border-width:1px;
    border-color:#c2c2c2;
    border-style:solid;
    padding: 2px 2px 2px 2px;
    border-top:none;
}
.ajax__html_editor_extender_container
{
}
.backcolorclass{float:left;}
.forecolorclass{float:left;}
.fontnameclass{float:left;}
.fontsizeclass{float:left;}

.ajax__html_editor_extender_Undo{ background-position:-0px 0px;}
.ajax__html_editor_extender_Redo{ background-position:-23px 0px;}
.ajax__html_editor_extender_Bold{ background-position:-46px 0px;}
.ajax__html_editor_extender_Italic{ background-position:-69px 0px;}
.ajax__html_editor_extender_Underline{ background-position:-92px 0px;}
.ajax__html_editor_extender_StrikeThrough{ background-position:-115px 0px;}
.ajax__html_editor_extender_Subscript{ background-position:-138px 0px;}
.ajax__html_editor_extender_Superscript{ background-position:-161px 0px;}
.ajax__html_editor_extender_JustifyLeft{ background-position:-230px 0px;}
.ajax__html_editor_extender_JustifyRight{ background-position:-276px 0px;}
.ajax__html_editor_extender_JustifyCenter{ background-position:-253px 0px;}
.ajax__html_editor_extender_JustifyFull{ background-position:-299px 0px;}
.ajax__html_editor_extender_insertOrderedList{ background-position:-345px 0px;}
.ajax__html_editor_extender_insertUnorderedList{ background-position:-368px 0px;}
.ajax__html_editor_extender__createLink{ background-position:-414px 0px;}
.ajax__html_editor_extender_UnLink{ background-position:-437px 0px;}
.ajax__html_editor_extender_FormatBlock{ background-position:-897px 0px;}
.ajax__html_editor_extender_RemoveFormat{ background-position:-460px 0px;}
.ajax__html_editor_extender_InsertImage{ background-position:-621px 0px;}
.ajax__html_editor_extender_SelectAll{ background-position:-644px 0px;}
.ajax__html_editor_extender_UnSelect{ background-position:-667px 0px;}
.ajax__html_editor_extender_Delete{ background-position:-690px 0px;}
.ajax__html_editor_extender_Cut{ background-position:-483px 0px;}
.ajax__html_editor_extender_Copy{ background-position:-713px 0px;}
.ajax__html_editor_extender_Paste{ background-position:-736px 0px;}
.ajax__html_editor_extender_BackColor{ background-position:-760px -1px; text-indent:-9999px}
.ajax__html_editor_extender_ForeColor{ background-position:-783px -1px; text-indent:-9999px}
.ajax__html_editor_extender_FontName{ background-position:-0px 48px;}
.ajax__html_editor_extender_Indent{ background-position:-575px 0px;}
.ajax__html_editor_extender_Outdent{ background-position:-552px 0px;}
.ajax__html_editor_extender_InsertHorizontalRule{ background-position:-391px 0px;}

.ajax__html_editor_extender_separator
{
    background: url(Images/ed_sep.gif) no-repeat -920px 0;
	display: block;
	float: left;
	border: none;
	width:13px;
	height:21px;
}
'@charset "utf-8";
/* CSS Document */

.ajax__balloon_popup .cloud {
	background-image:url("sprite.png") !important;
	background-image:url("sprite.gif");
}

/* SMALL SIZE */
.ajax__balloon_popup .cloud .small {
	width:200px;
	height:150px;
}

.ajax__balloon_popup .cloud .small .bottom_right {
	background-position: 0 0;
}
.ajax__balloon_popup .cloud .small .bottom_right .ajax__content {
	padding: 33px 25px 33px 35px;
}
*html .ajax__balloon_popup .cloud .small .bottom_right_shadow {
    background: none;
}
.ajax__balloon_popup .cloud .small .bottom_right_shadow {
	background-position: -950px 0;
}

.ajax__balloon_popup .cloud .small .bottom_left {
	background-position: 0 -150px;
}
.ajax__balloon_popup .cloud .small .bottom_left .ajax__content {
	padding: 33px 25px 33px 35px;
}
*html .ajax__balloon_popup .cloud .small .bottom_left_shadow {
	background: none;
}
.ajax__balloon_popup .cloud .small .bottom_left_shadow {
	background-position: -950px -150px;
}


.ajax__balloon_popup .cloud .small .top_right {
	background-position: 0 -300px;
}
.ajax__balloon_popup .cloud .small .top_right .ajax__content {
	padding: 33px 25px 33px 35px;
}
*html .ajax__balloon_popup .cloud .small .top_right_shadow {
	background: none;
}
.ajax__balloon_popup .cloud .small .top_right_shadow {
	background-position: -950px -300px;
}

.ajax__balloon_popup .cloud .small .top_left {
	background-position: 0 -450px;
}
.ajax__balloon_popup .cloud .small .top_left .ajax__content {
	padding: 33px 25px 33px 35px;
}
*html .ajax__balloon_popup .cloud .small .top_left_shadow {
	background: none;
}
.ajax__balloon_popup .cloud .small .top_left_shadow {
	background-position: -950px -450px;
}
/* END OF - SMALL SIZE */

/* MEDIUM SIZE */
.ajax__balloon_popup .cloud .medium {
	width:250px;
	height:200px;
}

.ajax__balloon_popup .cloud .medium .bottom_right {
	background-position: -200px 0;
}
.ajax__balloon_popup .cloud .medium .bottom_right .ajax__content {
	padding: 40px;
}
*html .ajax__balloon_popup .cloud .medium .bottom_right_shadow {
	background: none;
}
.ajax__balloon_popup .cloud .medium .bottom_right_shadow {
	background-position: -1150px 0;
}

.ajax__balloon_popup .cloud .medium .bottom_left {
	background-position: -200px -200px;
}
.ajax__balloon_popup .cloud .medium .bottom_left .ajax__content {
	padding: 40px;
}
*html .ajax__balloon_popup .cloud .medium .bottom_left_shadow {
	background: none;
}
.ajax__balloon_popup .cloud .medium .bottom_left_shadow {
	background-position: -1150px -200px;
}

.ajax__balloon_popup .cloud .medium .top_right {
	background-position: -200px -400px;
}
.ajax__balloon_popup .cloud .medium .top_right .ajax__content {
	padding: 40px;
}
*html .ajax__balloon_popup .cloud .medium .top_right_shadow {
	background: none;
}
.ajax__balloon_popup .cloud .medium .top_right_shadow {
	background-position: -1150px -400px;
}

.ajax__balloon_popup .cloud .medium .top_left {
	background-position: -200px -600px;
}
.ajax__balloon_popup .cloud .medium .top_left .ajax__content {
	padding: 40px;
}
*html .ajax__balloon_popup .cloud .medium .top_left_shadow {
	background: none;
}
.ajax__balloon_popup .cloud .medium .top_left_shadow {
	background-position: -1150px -600px;
}
/* END OF - MEDIUM SIZE */

/* LARGE SIZE */
.ajax__balloon_popup .cloud .large {
	width:500px;
	height:300px;
}

.ajax__balloon_popup .cloud .large .bottom_right {
	background-position: -450px 0;
}
.ajax__balloon_popup .cloud .large .bottom_right .ajax__content {
	padding: 50px;
}
*html .ajax__balloon_popup .cloud .large .bottom_right_shadow {
	background: none;
}
.ajax__balloon_popup .cloud .large .bottom_right_shadow {
	background-position: -1400px 0;
}

.ajax__balloon_popup .cloud .large .bottom_left {
	background-position: -450px -300px;
}
.ajax__balloon_popup .cloud .large .bottom_left .ajax__content {
	padding: 50px;
}
*html .ajax__balloon_popup .cloud .large .bottom_left_shadow {
	background: none;
}
.ajax__balloon_popup .cloud .large .bottom_left_shadow {
	background-position: -1400px -300px;
}

.ajax__balloon_popup .cloud .large .top_right {
	background-position: -450px -600px;
}
.ajax__balloon_popup .cloud .large .top_right .ajax__content {
	padding: 50px;
}
*html .ajax__balloon_popup .cloud .large .top_right_shadow {
	background: none;
}
.ajax__balloon_popup .cloud .large .top_right_shadow {
	background-position: -1400px -600px;
}

.ajax__balloon_popup .cloud .large .top_left {
	background-position: -450px -900px;
}
.ajax__balloon_popup .cloud .large .top_left .ajax__content {
	padding: 50px;
}
*html .ajax__balloon_popup .cloud .large .top_left_shadow {
	background: none;
}
.ajax__balloon_popup .cloud .large .top_left_shadow {
	background-position: -1400px -900px;
}
/* END OF - LARGE SIZE */|�PNG


IHDR  szz�CIDATx���mlS���^�&�'�7II�҆R�B���
TX�E�P�I�P4i�>L���������Sń�~�*�Ħ�+��Ҕ�^$(@J�8	!�K��ھ�>�p�'��ۑ,�{�9��9��^!��<��R��ܝN�X^��A̠<Ю��ٙ^�8|��	)e��B`*�Ż���00��D���I�G���s5̍�{Ɠ�
��H���8;���g���Ċm���%+��6?쉰������YM���;���4QlჁ��%�����S��
dM��N7��U�V�&�.���]^�őɇO��@��x��=���k�O
O=BAu8��e����$���euKH@4?ہ��l��@@BJus;�?RJ_`����
�t���o��z��v|E�P��l>Ɠ�q!��u��gm.��h�����S}��޷.�b�PJ�X2�G�1}���f�uBFB�4�12��@ρ)!�I��	�߾�o����K���I��~����R�+��%A�	�cJ�K�oUA�b���
L�`��YNun�=P�D���/��K*��� �.x�c�үAԀtՀC��i��������ʉB{;pk*���@^�@����
U��^ܣX��6���
�f�.��qxx�k�rxJ�x��k���!��� =i7��z�Pk{~U��:����
l.��}�}
��n�
�:��!ȑkw�;�^�t��s7	����x8��f���a:����2222����D"�ج��ܑ��G8v%��8��\�E�G5�ɑ]�v�o�>:;;��纺�8x� {���օ[}5���hqRJN�S^�P�`˜��gB,6I__�{��E� +!�@(bʄ/�0���f�/�#c�
�+���'u�nO��q�y#i(�������Ä�P��7�-�ˆ \���Ș9����(���-�3&\�U�:�;�?��:���͌������7<�m;{~�&I.&
]��L�6*��
	�R��I�V�)�o��[�N�/�M������c��8>IsI��X�Bd�)�l�D\~}�4�V�if�=�;�뽠�d<I�oy�~���gɦt%��9���OV81�eU@@:'	�a,m�H)d��D
Iwn{Qpg:�����s����j��U!@B�V�[kN2�l�7$Έom�z<FGm��4��L������<6�*oP�5��5(SA����	mEч�{��U�)!aZMiܰ2'���O?თcS���3�R��#|�l�m�ma�Gt͗�YW��֮��6���g���t9<Jtt�#�7ͩ�,�ٍ������~m��VD�yҎ��\5J�vk��+CQ�����p�mK�q��#��y3�g7����2�|��-��J�p
{*��/�S�d�r
�9�>�%x��UnM�t�io�Ʃ�,���J�/�bS||=�p��ln��F����h�R�E<�{�������z�qj6�9ɔ�&z/I&������uu�|�MQ�Ѻ"GN���4�)=k�*
��F_	eNm)�K�=��c=
AIEND�B`���PNG


IHDR#"Յ`�	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�FIDATxڬ�Ol�ǿo��c;;Ɗ���� ��*)�Be�(ˊ˖"�jˡ���PꅞR+�e/{��jU	$D��@9���+R	$!$N<��ϛy=����R�#�4ϓ�{����Lc�6!�$��
6e�5HE�=��B{����D��_(�>K�{E�f0�P�]���DB��J�V�V���aZ@h\t���H�ȑ#��+Q�۷o�]�zu�P�%���[XX`I�&;
I���?��O�>��eY_����:s����3˲�����߿��ɓ����οo����ǘ��A�\�F�d�ϝ;�����g��0�u��81�jii�ݹs�'N��	�����hjj
������p|���0�����o۶�SEQ�O�V�B�.VVV0>>��S�N��:���`����P�fA����y�SSS����T��y� �a�6���=M�P,�gϞ�]�r�����l����F�ض
�4�V4ƭ[���[6��4v49��뤖��c(�˸q�Ư.]�4��Z�3,�&�� �G����8�J��<DQ��1ְ�DhJQ�a����ܗ�K��u]�T�Ri�4͟QJ�~�IZ���0�y�����ӧO��,������^9��
��H:���-AZ�J�a�R
�q��ߏ�����d��J�d��]�p�{�T�=�b�����f@A@UU��w���]	F%EI�(�-[���N��#SU��Ǣi4MkXk�UU!�J)\�Egg'���~�͔��*Y��vx�۶�iL�!��ò,h�֐O��M���4
Q�^��1EQ���Rx35�&@�}�H)�eY�<�^�B�P���4���P,��ݍL&�#}��9*�
���q��!����}��iBA!B6�!�mG���}x�J)l����,�]���7���XXXhzn�&v�ލz�J)!���Z������v�Z]Q�P-p���UU7��Q!lݺ���<�a]�Q��`۶��{I�-//U�T>	�J)���p��A�EQ6�a��Z�,A�1�l6���9���>���h�Z�D333㝝��޹sg\|߇�M����R�Y�� �Jarr���_�2 2pK�-�J垞�GCCCC������l6�j��G��.//?��MWFn����?ݻwoh�޽��j���5��iشiFGG�����F��P��ie&
 (�Ja��xpp�\�J����EA>�dzg�011�/_��8�hIYC>v올�;??utt�a ������!r�!�x�",�;�*�q�9�fb���?���ryb~~���/_���(�PU��o^�@)�ٳgQ�T>w��8L�k&Vw�\�߿rs��������0��=z��v�B�RA�Z��
�SU�a�4M
ܽ{ׯ_G�^�Cc�T͕0�a����!>|(���,�w4M�hoo��i�>|;v�@>��[UU��d������iܼy�J�D)�3cl�C��%�R��Z3�����O�<!�� ��}��N&����#�XWW��,l�����0|��2��1��"?��wa/��y��x��ErB#K�kJ��(�f&c��{��8��%�mi����h7��֒����$)�\��ې;�/Ay�s2�6tl1L>�o�]�m5�
0]w��6M����iY+��0���Ą)C%�%QR���Z�&UU�$þ�'���/�$�:��
��ȷ��?�-��IEND�B`�
// (c) 2010 CodePlex Foundation
Type.registerNamespace("Sys.Extended.UI.Animation");Sys.Extended.UI.Animation.UpdatePanelAnimationBehavior=function(b){var a=this;Sys.Extended.UI.Animation.UpdatePanelAnimationBehavior.initializeBase(a,[b]);a._onUpdating=new Sys.Extended.UI.Animation.GenericAnimationBehavior(b);a._onUpdated=new Sys.Extended.UI.Animation.GenericAnimationBehavior(b);a._postBackPending=null;a._pageLoadedHandler=null};Sys.Extended.UI.Animation.UpdatePanelAnimationBehavior.prototype={initialize:function(){var a=this;Sys.Extended.UI.Animation.UpdatePanelAnimationBehavior.callBaseMethod(a,"initialize");var c=a.get_element(),b=document.createElement(c.tagName);c.parentNode.insertBefore(b,c);b.appendChild(c);Array.remove(c._behaviors,a);Array.remove(c._behaviors,a._onUpdating);Array.remove(c._behaviors,a._onUpdated);if(b._behaviors){Array.add(b._behaviors,a);Array.add(b._behaviors,a._onUpdating);Array.add(b._behaviors,a._onUpdated)}else b._behaviors=[a,a._onUpdating,a._onUpdated];a._element=a._onUpdating._element=a._onUpdated._element=b;a._onUpdating.initialize();a._onUpdated.initialize();a.registerPartialUpdateEvents();a._pageLoadedHandler=Function.createDelegate(a,a._pageLoaded);a._pageRequestManager.add_pageLoaded(a._pageLoadedHandler)},dispose:function(){var a=this;if(a._pageRequestManager&&a._pageLoadedHandler){a._pageRequestManager.remove_pageLoaded(a._pageLoadedHandler);a._pageLoadedHandler=null}Sys.Extended.UI.Animation.UpdatePanelAnimationBehavior.callBaseMethod(a,"dispose")},_partialUpdateBeginRequest:function(c,b){var a=this;Sys.Extended.UI.Animation.UpdatePanelAnimationBehavior.callBaseMethod(a,"_partialUpdateBeginRequest",[c,b]);if(!a._postBackPending){a._postBackPending=true;a._onUpdated.quit();a._onUpdating.play()}},_pageLoaded:function(f,e){var a=this;if(a._postBackPending){a._postBackPending=false;for(var d=a.get_element(),c=e.get_panelsUpdated(),b=0;b<c.length;b++)if(c[b].parentNode==d){a._onUpdating.quit();a._onUpdated.play();break}}},get_OnUpdating:function(){return this._onUpdating.get_json()},set_OnUpdating:function(a){this._onUpdating.set_json(a);this.raisePropertyChanged("OnUpdating")},get_OnUpdatingBehavior:function(){return this._onUpdating},get_OnUpdated:function(){return this._onUpdated.get_json()},set_OnUpdated:function(a){this._onUpdated.set_json(a);this.raisePropertyChanged("OnUpdated")},get_OnUpdatedBehavior:function(){return this._onUpdated}};Sys.Extended.UI.Animation.UpdatePanelAnimationBehavior.registerClass("Sys.Extended.UI.Animation.UpdatePanelAnimationBehavior",Sys.Extended.UI.BehaviorBase);	// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference name="MicrosoftAjaxTimer.debug.js" />
/// <reference name="MicrosoftAjaxWebForms.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Compat/Timer/Timer.js" />
/// <reference path="../Common/Common.js" />
/// <reference path="../Animation/Animations.js" />
/// <reference path="../Animation/AnimationBehavior.js" />


Type.registerNamespace('Sys.Extended.UI.Animation');

Sys.Extended.UI.Animation.UpdatePanelAnimationBehavior = function(element) {
    /// <summary>
    /// Play animations just before and just after an UpdatePanel updates
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// UpdatePanel associated with the behavior
    /// </param>
    Sys.Extended.UI.Animation.UpdatePanelAnimationBehavior.initializeBase(this, [element]);
    
    this._onUpdating = new Sys.Extended.UI.Animation.GenericAnimationBehavior(element);
    this._onUpdated = new Sys.Extended.UI.Animation.GenericAnimationBehavior(element);
    
    this._postBackPending = null;
    this._pageLoadedHandler = null;
}
Sys.Extended.UI.Animation.UpdatePanelAnimationBehavior.prototype = {    
    initialize : function() {
        /// <summary>
        /// Initialize the behavior
        /// </summary>
        Sys.Extended.UI.Animation.UpdatePanelAnimationBehavior.callBaseMethod(this, 'initialize');
        
        var element = this.get_element();
        var parentDiv = document.createElement(element.tagName);
        element.parentNode.insertBefore(parentDiv, element);
        parentDiv.appendChild(element);

        Array.remove(element._behaviors, this);
        Array.remove(element._behaviors, this._onUpdating);
        Array.remove(element._behaviors, this._onUpdated);
        if (parentDiv._behaviors) {
            Array.add(parentDiv._behaviors, this);
            Array.add(parentDiv._behaviors, this._onUpdating);
            Array.add(parentDiv._behaviors, this._onUpdated);
        } else {
            parentDiv._behaviors = [this, this._onUpdating, this._onUpdated];
        }
        this._element = this._onUpdating._element = this._onUpdated._element = parentDiv;
        
        this._onUpdating.initialize();
        this._onUpdated.initialize();

        this.registerPartialUpdateEvents();
        this._pageLoadedHandler = Function.createDelegate(this, this._pageLoaded);
        this._pageRequestManager.add_pageLoaded(this._pageLoadedHandler);
    },
    
    dispose : function() {
        /// <summary>
        /// Dispose the behavior
        /// </summary>
        
        if (this._pageRequestManager && this._pageLoadedHandler) {
            this._pageRequestManager.remove_pageLoaded(this._pageLoadedHandler);
            this._pageLoadedHandler = null;
        }
        
        Sys.Extended.UI.Animation.UpdatePanelAnimationBehavior.callBaseMethod(this, 'dispose');
    },
    
    _partialUpdateBeginRequest : function(sender, beginRequestEventArgs) {
        /// <summary>
        /// Method that will be called when a partial update (via an UpdatePanel) begins,
        /// if registerPartialUpdateEvents() has been called.
        /// </summary>
        /// <param name="sender" type="Object">
        /// Sender
        /// </param>
        /// <param name="beginRequestEventArgs" type="Sys.WebForms.BeginRequestEventArgs">
        /// Event arguments
        /// </param>
        Sys.Extended.UI.Animation.UpdatePanelAnimationBehavior.callBaseMethod(this, '_partialUpdateBeginRequest', [sender, beginRequestEventArgs]);
        
        if (!this._postBackPending) {
            this._postBackPending = true;
            this._onUpdated.quit();
            this._onUpdating.play();
        }
    },

    _pageLoaded : function(sender, args) {
        /// <summary>
        /// Method that will be called when a partial update (via an UpdatePanel) finishes
        /// </summary>
        /// <param name="sender" type="Object">
        /// Sender
        /// </param>
        /// <param name="args" type="Sys.WebForms.PageLoadedEventArgs">
        /// Event arguments
        /// </param>
        
        if (this._postBackPending) {
            this._postBackPending = false;
            
            var element = this.get_element();
            var panels = args.get_panelsUpdated();
            for (var i = 0; i < panels.length; i++) {
                if (panels[i].parentNode == element) {
                    this._onUpdating.quit();
                    this._onUpdated.play();
                    break;
                }
            }
        }
    },

    get_OnUpdating : function() {
        /// <value type="String">
        /// Generic OnUpdating Animation's JSON definition
        /// </value>
        return this._onUpdating.get_json();
    },
    set_OnUpdating : function(value) {
        this._onUpdating.set_json(value);
        this.raisePropertyChanged('OnUpdating');
    },
    
    get_OnUpdatingBehavior : function() {
        /// <value type="Sys.Extended.UI.Animation.GenericAnimationBehavior">
        /// Generic OnUpdating Animation's behavior
        /// </value>
        return this._onUpdating;
    },
    
    
    get_OnUpdated : function() {
        /// <value type="String">
        /// Generic OnUpdated Animation's JSON definition
        /// </value>
        return this._onUpdated.get_json();
    },
    set_OnUpdated : function(value) {
        this._onUpdated.set_json(value);
        this.raisePropertyChanged('OnUpdated');
    },
    
    get_OnUpdatedBehavior : function() {
        /// <value type="Sys.Extended.UI.Animation.GenericAnimationBehavior">
        /// Generic OnUpdated Animation's behavior
        /// </value>
        return this._onUpdated;
    }
}
Sys.Extended.UI.Animation.UpdatePanelAnimationBehavior.registerClass('Sys.Extended.UI.Animation.UpdatePanelAnimationBehavior', Sys.Extended.UI.BehaviorBase);
V7// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />

(function() {
var scriptName = "ExtendedToggleButton";

function execute() {

Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.ToggleButtonBehavior = function(element) {
    /// <summary>
    /// The ToggleButtonBehavior is used to replace a checkbox with a pair of images
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// Checkbox associated with the behavior
    /// </param>
    Sys.Extended.UI.ToggleButtonBehavior.initializeBase(this, [element]);
    
    this._idDecoration = '_ToggleButton';

    this._ImageWidth = null;
    this._ImageHeight = null;
    this._UncheckedImageUrl = null;
    this._CheckedImageUrl = null;
    this._DisabledUncheckedImageUrl = null;
    this._DisabledCheckedImageUrl = null;
    this._CheckedImageOverUrl = null;
    this._UncheckedImageOverUrl = null;
    this._UncheckedImageAlternateText = null;
    this._CheckedImageAlternateText = null;
    this._CheckedImageOverAlternateText = null;
    this._UncheckedImageOverAlternateText = null;

    this._decoyElement = null;
    this._decoyElementClickHandler = null;
    this._checkChangedHandler = null;
    this._divContent = null;
    this._clickHandler = null;
    this._decoyElementMouseOverHandler = null;
    this._decoyElementMouseOutHandler = null;
}
Sys.Extended.UI.ToggleButtonBehavior.prototype = {
    initialize : function() {
        /// <summary>
        /// Initialize the behavior
        /// </summary>
        Sys.Extended.UI.ToggleButtonBehavior.callBaseMethod(this, 'initialize');

        var e = this.get_element();

        this._divContent = document.createElement('div');
        this._divContent.style.position = 'relative';
        this._decoyElement = document.createElement('a');
        e.parentNode.insertBefore(this._divContent, e);
        this._decoyElement.id = e.id + this._idDecoration;
        this._decoyElement.href = '';
        this._divContent.appendChild(this._decoyElement);

        e.style.visibility = 'hidden';
        var decoyElementStyle = this._decoyElement.style;
        decoyElementStyle.position = 'absolute';
        decoyElementStyle.left = '0px';
        decoyElementStyle.top = '0px';
        decoyElementStyle.width = this._ImageWidth + 'px';
        decoyElementStyle.height = this._ImageHeight + 'px';

        decoyElementStyle.fontSize = this._ImageHeight + 'px';

        decoyElementStyle.backgroundRepeat = 'no-repeat';
        this._onClick();

        this._clickHandler = Function.createDelegate(this, this._onClick);
        this._checkChangedHandler = Function.createDelegate(this, this._onClick);
        this._decoyElementClickHandler = Function.createDelegate(this, this._onDecoyElementClick);
        this._decoyElementMouseOverHandler = Function.createDelegate(this, this._onDecoyElementMouseOver);
        this._decoyElementMouseOutHandler = Function.createDelegate(this, this._onDecoyElementMouseOut);
        
        $addHandler(e, "click", this._clickHandler);
        $addHandler(e, "change", this._checkChangedHandler);        
        $addHandler(this._decoyElement, "click", this._decoyElementClickHandler);
        $addHandler(this._decoyElement, "mouseover", this._decoyElementMouseOverHandler);
        $addHandler(this._decoyElement, "mouseout", this._decoyElementMouseOutHandler);

        if (Sys.Browser.agent === Sys.Browser.InternetExplorer) {
            var labels = this._divContent.parentNode.getElementsByTagName('label');
            for (i = 0 ; i < labels.length ; i++) {
                if (e.id == labels[i].htmlFor) {
                    labels[i].htmlFor = e.id + this._idDecoration;
                }
            }
        }
    },

    dispose : function() {
        /// <summary>
        /// Dispose the behavior
        /// </summary>

        if (this._decoyElementClickHandler) {
            $removeHandler(this._decoyElement, "click", this._decoyElementClickHandler);
            this._decoyElementClickHandler = null;
        }
        if(this._checkChangedHandler) {
            $removeHandler(this.get_element(), "change", this._checkChangedHandler);
            this._checkChangedHandler = null;
        }
        if (this._clickHandler) {
            $removeHandler(this.get_element(), "click", this._clickHandler);
            this._clickHandler = null;
        }
        if(this._decoyElementMouseOverHandler) {
            $removeHandler(this._decoyElement, "mouseover", this._decoyElementMouseOverHandler);
            this._decoyElementMouseOverHandler = null;        
        }
        if(this._decoyElementMouseOutHandler) {
            $removeHandler(this._decoyElement, "mouseout", this._decoyElementMouseOutHandler);
            this._decoyElementMouseOutHandler = null;        
        }        

        Sys.Extended.UI.ToggleButtonBehavior.callBaseMethod(this, 'dispose');
    },

    _onClick : function() {
        /// <summary>
        /// Handle the element's click events
        /// </summary>

        if(this.get_element().checked) {
            this._decoyElement.style.backgroundImage = 'url(' + (this.get_element().disabled ? this.get_DisabledCheckedImageUrl() : this._CheckedImageUrl) + ')';
            if (this._CheckedImageAlternateText) {
                this._decoyElement.title = this._CheckedImageAlternateText;
            }
        } else {
            this._decoyElement.style.backgroundImage = 'url(' + (this.get_element().disabled ? this.get_DisabledUncheckedImageUrl() : this._UncheckedImageUrl) + ')';
            if (this._UncheckedImageAlternateText) {
                this._decoyElement.title = this._UncheckedImageAlternateText;
            }
        }
    },

    _onDecoyElementClick : function(e) {
        /// <summary>
        /// Handle the decoy element's click events
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">
        /// Event info
        /// </param>

        this.get_element().click();
        e.preventDefault();
        return false;
    },
    
    _onDecoyElementMouseOver : function(e) {
        /// <summary>
        /// Handle the decoy element's mouseover event
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">
        /// Event info
        /// </param>
        
        var e = this.get_element();
        if(e && !e.disabled) {
            if (e.checked && this._CheckedImageOverUrl) {
                this._decoyElement.style.backgroundImage = 'url(' + this._CheckedImageOverUrl + ')';
                if (this._CheckedImageOverAlternateText) {
                    this._decoyElement.title = this._CheckedImageOverAlternateText;
                }                
            } else if (!e.checked && this._UncheckedImageOverUrl) {
                this._decoyElement.style.backgroundImage = 'url(' + this._UncheckedImageOverUrl + ')';
                if (this._UncheckedImageOverAlternateText) {
                    this._decoyElement.title = this._UncheckedImageOverAlternateText;
                }              
            }
        } 
    },
    
    _onDecoyElementMouseOut : function(e) {
        /// <summary>
        /// Handle the decoy element's mouseout event
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">
        /// Event info
        /// </param>

        this._onClick();
    },        

    get_ImageWidth : function() {
        /// <value type="Number" integer="true">
        /// Width of the image that will be displayed
        /// </value>
        return this._ImageWidth;
    },
    set_ImageWidth : function(value) {
        if (this._ImageWidth != value) {
           this._ImageWidth = value;
           this.raisePropertyChanged('ImageWidth');
        }
    },

    get_ImageHeight : function() {
        /// <value type="Number" integer="true">
        /// Height of the image that will be displayed
        /// </value>
        return this._ImageHeight;
    },
    set_ImageHeight : function(value) {
        if (this._ImageHeight != value) {
            this._ImageHeight = value;
            this.raisePropertyChanged('ImageHeight');
        }
    },

    get_UncheckedImageUrl : function() {
        /// <value type="String">
        /// URL of the image to show when the toggle button is in the unchecked state
        /// </value>
        return this._UncheckedImageUrl;
    },
    set_UncheckedImageUrl : function(value) {
        if (this._UncheckedImageUrl != value) {
            this._UncheckedImageUrl = value;
            this.raisePropertyChanged('UncheckedImageUrl');
        }
    },

    get_CheckedImageUrl : function() {
        /// <value type="String">
        /// URL of the image to show when the toggle button is in the checked state
        /// </value>
        return this._CheckedImageUrl;
    },
    set_CheckedImageUrl : function(value) {
        if (this._CheckedImageUrl != value) {
            this._CheckedImageUrl = value;
            this.raisePropertyChanged('CheckedImageUrl');
        }
    },

    get_DisabledUncheckedImageUrl : function() {
        /// <value type="String">
        /// URL of the image to show when the toggle button is disabled and in the unchecked state
        /// </value>
        return (this._DisabledUncheckedImageUrl != undefined) ?
            this._DisabledUncheckedImageUrl : this._UncheckedImageUrl;
    },
    set_DisabledUncheckedImageUrl : function(value) {
        if (this._DisabledUncheckedImageUrl != value) {
            this._DisabledUncheckedImageUrl = value;
            this.raisePropertyChanged('DisabledUncheckedImageUrl');
        }
    },

    get_DisabledCheckedImageUrl : function() {
        /// <value type="String">
        /// URL of the image to show when the toggle button is disabled and in the checked state
        /// </value>
        return (this._DisabledUncheckedImageUrl != undefined) ?
            this._DisabledCheckedImageUrl : this._CheckedImageUrl;
    },
    set_DisabledCheckedImageUrl : function(value) {
        if (this._DisabledCheckedImageUrl != value) {
            this._DisabledCheckedImageUrl = value;
            this.raisePropertyChanged('DisabledCheckedImageUrl');
        }
    },
    
    get_CheckedImageOverUrl : function() {
        /// <value type="String">
        /// URL of the image to show when the toggle button is in the checked state and the cursor is positioned over the element
        /// </value>
        return this._CheckedImageOverUrl;
    },
    set_CheckedImageOverUrl : function(value) {
        if (this._CheckedImageOverUrl != value) {
            this._CheckedImageOverUrl = value;
            this.raisePropertyChanged('CheckedImageOverUrl');
        }
    },  
    
    get_UncheckedImageOverUrl : function() {
        /// <value type="String">
        /// URL of the image to show when the toggle button is in the unchecked state and the cursor is positioned over the element
        /// </value>
        return this._UncheckedImageOverUrl;
    },
    set_UncheckedImageOverUrl : function(value) {
        if (this._UncheckedImageOverUrl != value) {
            this._UncheckedImageOverUrl = value;
            this.raisePropertyChanged('UncheckedImageOverUrl');
        }
    },        

    get_UncheckedImageAlternateText : function() {
        /// <value type="String">
        /// the alt text to show when the toggle button is in the unchecked state
        /// </value>
        return this._UncheckedImageAlternateText;
    },
    set_UncheckedImageAlternateText : function(value) {
        if (this._UncheckedImageAlternateText != value) {
            this._UncheckedImageAlternateText = value;
            this.raisePropertyChanged('UncheckedImageAlternateText');
        }
    },

    get_CheckedImageAlternateText : function() {
        /// <value type="String">
        /// the alt text to show when the toggle button is in the checked state
        /// </value>
        return this._CheckedImageAlternateText;
    },
    set_CheckedImageAlternateText : function(value) {
        if (this._CheckedImageAlternateText != value) {
            this._CheckedImageAlternateText = value;
            this.raisePropertyChanged('CheckedImageAlternateText');
        }
    },
    
    get_CheckedImageOverAlternateText : function() {
        /// <value type="String">
        /// the alt text to show when the toggle button is in the checked state and the element is moused over
        /// </value>
        return this._CheckedImageOverAlternateText;
    },
    set_CheckedImageOverAlternateText : function(value) {
        if (this._CheckedImageOverAlternateText != value) {
            this._CheckedImageOverAlternateText = value;
            this.raisePropertyChanged('CheckedImageOverAlternateText');
        }
    },
    
    get_UncheckedImageOverAlternateText : function() {
        /// <value type="String">
        /// the alt text to show when the toggle button is in the unchecked state and the element is moused over
        /// </value>
        return this._UncheckedImageOverAlternateText;
    },
    set_UncheckedImageOverAlternateText : function(value) {
        if (this._UncheckedImageOverAlternateText != value) {
            this._UncheckedImageOverAlternateText = value;
            this.raisePropertyChanged('UncheckedImageOverAlternateText');
        }
    }        
}
Sys.Extended.UI.ToggleButtonBehavior.registerClass('Sys.Extended.UI.ToggleButtonBehavior', Sys.Extended.UI.BehaviorBase);
Sys.registerComponent(Sys.Extended.UI.ToggleButtonBehavior, { name: "toggleButton" });

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedBase"], execute);
}
else {
    execute();
}

})();
�i// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />
/// <reference path="../Compat/Timer/Timer.js" />

(function() {
var scriptName = "ExtendedSlideShow";

function execute() {

Type.registerNamespace('Sys.Extended.UI');
Sys.Extended.UI.SlideShowBehavior = function(element) {
        /// <summary>
        /// creates a new slide show behavior
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" DomElement="true" mayBeNull="false" />
        /// <returns />
        Sys.Extended.UI.SlideShowBehavior.initializeBase(this, [element]);
        this._nextButtonID = null;
        this._previousButtonID = null;
        this._imageDescriptionLabelID = null;
        this._imageTitleLabelID = null;
        this._playButtonID = null;
        this._playButtonValue = '||>';
        this._stopButtonValue = '[]';
        this._slideShowServicePath = location.pathname;
        this._slideShowServiceMethod = null;
        this._contextKey = null;
        this._useContextKey = false;
        this._playInterval = 3000;
        this._tickHandler = null;
        this._loop = false;
        this._autoPlay = false;
                
        this._inPlayMode = false;
        this._elementImage = null;
        this._bNext = null;
        this._bPrevious = null;
        this._currentIndex = -1;
        this._currentValue = null;
        this._imageDescriptionLabel = null;
        this._imageTitleLabel = null;
        this._bPlay = null;
        this._slides = null;
        this._timer = null;
        this._currentImageElement = null;
        this._images = null;
        this._cachedImageIndex = -1;

        this._clickNextHandler = null;
        this._clickPreviousHandler = null;
        this._clickPlayHandler = null;
        this._tickHandler = null;
        this._imageLoadedHandler = null;

}
Sys.Extended.UI.SlideShowBehavior.prototype = { 
    initialize : function() {
        ///<summary>
        /// Initialize the slide show.
        /// </summary>
        /// <returns />      
        
        Sys.Extended.UI.SlideShowBehavior.callBaseMethod(this, 'initialize');
        var e = this.get_element();
        this._elementImage = e;
        
        this._currentImageElement = document.createElement('IMG');
        this._currentImageElement.style.display = 'none';
        document.body.appendChild(this._currentImageElement);
        
        var _divContent = document.createElement('DIV');
        e.parentNode.insertBefore(_divContent, e);
        e.parentNode.removeChild(e);
        _divContent.appendChild(e);
        _divContent.align = 'center';    
        
        this.controlsSetup();
        if (this._bNext) {
            this._clickNextHandler = Function.createDelegate(this, this._onClickNext);
            $addHandler(this._bNext, 'click', this._clickNextHandler);
        }
        if (this._bPrevious) {
            this._clickPreviousHandler = Function.createDelegate(this, this._onClickPrevious);
            $addHandler(this._bPrevious, 'click', this._clickPreviousHandler);
        } 
        if (this._bPlay) {
            this._clickPlayHandler = Function.createDelegate(this, this._onClickPlay);
            $addHandler(this._bPlay, 'click', this._clickPlayHandler);
        } 
        
        this._imageLoadedHandler = Function.createDelegate(this, this._onImageLoaded);
        $addHandler(this._currentImageElement, 'load', this._imageLoadedHandler);
                
        this._slideShowInit();
    },
    
    dispose : function() {
        ///<summary>
        /// Dispose the handlers and perform other slide show cleanup.
        /// </summary>
        /// <returns />      
        
        if (this._clickNextHandler) {
            $removeHandler(this._bNext, 'click', this._clickNextHandler);
            this._clickNextHandler = null;
        }
        if (this._clickPreviousHandler) {
            $removeHandler(this._bPrevious, 'click', this._clickPreviousHandler);
            this._clickPreviousHandler = null;
        }
        if (this._clickPlayHandler) {
            $removeHandler(this._bPlay, 'click', this._clickPlayHandler);
            this._clickPlayHandler = null;
        }     
        if (this._imageLoadedHandler) {
            $removeHandler(this._currentImageElement, 'load', this._imageLoadedHandler);
            this._imageLoadedHandler = null;
        }
        if (this._timer) {
            this._timer.dispose();
            this._timer = null;
        }
        Sys.Extended.UI.SlideShowBehavior.callBaseMethod(this, 'dispose');
    },
        
    add_slideChanged : function(handler) {
        ///<summary>
        /// Add handler for the <code>slideChanged</code> Event.
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false" />   
        /// <returns />       
        this.get_events().addHandler('slideChanged', handler);
    },
    remove_slideChanged : function(handler) {
        ///<summary>
        /// Remove handler for the <code>slideChanged</code> Event.
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false"/>   
        /// <returns />     
        this.get_events().removeHandler('slideChanged', handler);
    },
    raiseSlideChanged : function(eventArgs) {
        ///<summary>
        /// Raise the <code>slideChanged</code> Event.
        /// </summary>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="true"/>   
        /// <returns />      
        var handler = this.get_events().getHandler('slideChanged');
        if (handler) {
            if (!eventArgs) {
                eventArgs = Sys.EventArgs.Empty;
            }
            handler(this, eventArgs);
        }
    },
    
    add_slideChanging : function(handler) {
        ///<summary>
        /// Add handler for the <code>slideChanging</code> Event.
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false" />   
        /// <returns />      
        this.get_events().addHandler('slideChanging', handler);
    },
    remove_slideChanging : function(handler) {
        ///<summary>
        /// Remove handler for the <code>slideChanging</code> Event.
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false"/>   
        /// <returns />       
        this.get_events().removeHandler('slideChanging', handler);
    },
    raiseSlideChanging : function(previousSlide, newSlide) {
        ///<summary>
        /// Raise the <code>slideChanging</code> Event.
        /// </summary>
        /// <param name="previousSlide" type="Object" mayBeNull="true"/>   
        /// <param name="nextSlide" type="Object" mayBeNull="true"/>           
        /// <returns type="Boolean" />       
        var handler = this.get_events().getHandler('slideChanging');
        if (handler) {
            var eventArgs = new Sys.Extended.UI.SlideShowEventArgs(previousSlide, newSlide, this._currentIndex);
            handler(this, eventArgs);
            return eventArgs.get_cancel();
        }
        return false;
    },
    
    get_contextKey : function() {
        /// <value type="String" mayBeNull="true">
        /// User/page specific context provided to an optional overload of the
        /// web method described by ServiceMethod/ServicePath.  If the context
        /// key is used, it should have the same signature with an additional
        /// parameter named contextKey of type string.
        /// </value>
        return this._contextKey;
    },
    set_contextKey : function(value) {
        if (this._contextKey != value) {
            this._contextKey = value;
            this.set_useContextKey(true);
            if(this._elementImage) {
                this._slideShowInit();
            }
            this.raisePropertyChanged('contextKey');
        }
    },
    
    get_useContextKey : function() {
        /// <value type="Boolean">
        /// Whether or not the ContextKey property should be used.  This will be
        /// automatically enabled if the ContextKey property is ever set
        /// (on either the client or the server).  If the context key is used,
        /// it should have the same signature with an additional parameter
        /// named contextKey of type string.
        /// </value>
        return this._useContextKey;
    },
    set_useContextKey : function(value) {
        if (this._useContextKey != value) {
            this._useContextKey = value;
            this.raisePropertyChanged('useContextKey');
        }
    },
    
   
    controlsSetup : function() {
        /// <summary>
        /// Get handles to various slide show controls if specified.
        /// </summary>      
        /// <returns />
        if (this._previousButtonID) {
            this._bPrevious = document.getElementById(this._previousButtonID);
        }
        if (this._imageDescriptionLabelID) {
           this._imageDescriptionLabel = document.getElementById(this._imageDescriptionLabelID);
        }
        if (this._imageTitleLabelID) {
           this._imageTitleLabel = document.getElementById(this._imageTitleLabelID);
        }
        if (this._nextButtonID) {
            this._bNext = document.getElementById(this._nextButtonID);
        }
        if (this._playButtonID) {
            this._bPlay = document.getElementById(this._playButtonID);
            this._bPlay.value = this._playButtonValue;
        }
    },

    resetButtons : function() {
        /// <summary>
        /// Maintain the various buttons states.
        /// </summary>    
        /// <returns />  
                   
        if (!this._loop) {
            if (this._slides.length <= this._currentIndex + 1 ) {
                if (this._bNext) this._bNext.disabled = true;
                if (this._bPlay) this._bPlay.disabled = true;
                if (this._bPrevious) this._bPrevious.disabled = false;    
                this._inPlayMode = false;
                if (this._timer) {
                    this._timer.set_enabled(false);
                }
                if (this._bPlay) this._bPlay.value = this._playButtonValue; 
                                
            } else {
                if (this._bNext) this._bNext.disabled = false;
                if (this._bPlay) this._bPlay.disabled = false;            
            }
            if (this._currentIndex <= 0) {
                if (this._bPrevious) this._bPrevious.disabled = true;
            } else {
                if (this._bPrevious) this._bPrevious.disabled = false;
            }
        }
        else {
            if (this._slides.length == 0) {
                if (this._bPrevious) this._bPrevious.disabled = true;
                if (this._bNext) this._bNext.disabled = true;
                if (this._bPlay) this._bPlay.disabled = true;
            }
        } 
        if (this._inPlayMode) {
            this._timer.set_enabled(false);
            this._timer.set_enabled(true);            
        }
    },
    
    resetSlideShowButtonState : function() {
        /// <summary>
        /// Maintain the play button state to reflect whether the slide show is in play mode.
        /// </summary>       
        /// <returns />      
            
        if (this._inPlayMode) {
            if (this._bPlay) this._bPlay.value = this._stopButtonValue;
        }
        else {
            this.resetButtons();
            if (this._bPlay) this._bPlay.value = this._playButtonValue;
        }
    },
    
    setCurrentImage : function() {
        /// <summary>
        /// Retrieve the current image.
        /// </summary>  
        /// <returns />    
        if (this._slides[this._currentIndex]) {
            this._currentImageElement.src = this._slides[this._currentIndex].ImagePath;
        } else {
            this._currentImageElement.src = '';
        }
        if(Sys.Browser.agent == Sys.Browser.Opera) {   
            this._onImageLoaded(true);
        }
    },
        
    updateImage : function(value) {
        /// <summary>
        /// Set current image to be the specified Slide.
        /// </summary>  
        /// <param name="value" type="Object" mayBeNull="false" />
        /// <returns />
             
        if (value) {
            if (this.raiseSlideChanging(this._currentValue, value)) {
                return;
            }
            this._currentValue = value;
            this._elementImage.src = value.ImagePath;
            this._elementImage.alt = value.Name;
            
            if (this._imageDescriptionLabel) {
                this._imageDescriptionLabel.innerHTML = value.Description ? value.Description : "";
            }
            if (this._imageTitleLabel) {
                this._imageTitleLabel.innerHTML = value.Name ? value.Name : "";
            }
            this.raiseSlideChanged(value);
            this.resetButtons();
        }
    },
    
    get_imageDescriptionLabelID : function() {
        /// <value type="String" mayBeNull="true">    
        /// ID of the label that describes the current slide.
        /// </value>
        return this._imageDescriptionLabelID;
    },    
    set_imageDescriptionLabelID : function(value) {
        if (this._imageDescriptionLabelID != value) {
            this._imageDescriptionLabelID = value;
            this.raisePropertyChanged('imageDescriptionLabelID');
        }
    },
    
    get_imageTitleLabelID : function() {
        /// <value type="String" mayBeNull="true">    
        /// ID of the label that shows the title of the current slide.
        /// </value>
        return this._imageTitleLabelID;
    },
    set_imageTitleLabelID : function(value) {
        if (this._imageTitleLabelID != value) {
            this._imageTitleLabelID = value;
            this.raisePropertyChanged('imageTitleLabelID');
        }
    },
    
    get_nextButtonID : function() {
        /// <value type="String" mayBeNull="true">    
        /// ID on the next button.
        /// </value>        
        return this._nextButtonID;
    },
    set_nextButtonID : function(value) {
        if (this._nextButtonID != value) {
            this._nextButtonID = value;
            this.raisePropertyChanged('nextButtonID');
        }
    },
     
    get_playButtonID : function() {
        /// <value type="String" mayBeNull="true">    
        /// ID on the play button.    
        /// </value>        
        return this._playButtonID;
    },
    set_playButtonID : function(value) {
        if (this._playButtonID != value) {
            this._playButtonID = value;
            this.raisePropertyChanged('playButtonID');
        }
    },
       
    get_playButtonText : function() {
        /// <value type="String" mayBeNull="true">    
        /// Text in play button to play the slide show when it is not playing.    
        /// </value>        
        return this._playButtonValue;
    },
    set_playButtonText : function(value) {
        if (this._playButtonValue != value) {
            this._playButtonValue = value;
            this.raisePropertyChanged('playButtonText');
        }
    },    

    get_stopButtonText : function() {
        /// <value type="String" mayBeNull="true">    
        /// Text in play button to stop the slide show when it is playing.
        /// </value>        
        return this._stopButtonValue;
    },
    set_stopButtonText : function(value) {
        if (this._stopButtonValue != value) {
            this._stopButtonValue = value;
            this.raisePropertyChanged('stopButtonText');
        }
    },

    get_playInterval : function() {
        /// <value type="Number" integer="true" mayBeNull="true">    
        /// Interval in milliseconds between slide switches.
        /// </value>        
        return this._playInterval;
    },
    set_playInterval : function(value) {
        if (this._playInterval != value) {
            this._playInterval = value;
            this.raisePropertyChanged('playInterval');
        }
    },
    
    get_previousButtonID : function() {
        /// <value type="String" mayBeNull="true">
        /// ID of the previous button.
        /// </value>
        return this._previousButtonID;
    },
    set_previousButtonID : function(value) {
        if (this._previousButtonID != value) {
            this._previousButtonID = value;
            this.raisePropertyChanged('previousButtonID');
        }
    },
    
    get_slideShowServicePath : function() {
        /// <value type="String" mayBeNull="true">
        /// Slide show webservice path to pull the images.
        /// </value>        
        return this._slideShowServicePath;
    },
    
    set_slideShowServicePath : function(value) {
        if (this._slideShowServicePath != value) {
            this._slideShowServicePath = value;
            this.raisePropertyChanged('slideShowServicePath');
        }
    },
    
    get_slideShowServiceMethod : function() {
        /// <value type="String" mayBeNull="false">
        /// Slide show webservice methods that will return the slide images.
        /// </value>        
        return this._slideShowServiceMethod;
    },
    set_slideShowServiceMethod : function(value) {
        if (this._slideShowServiceMethod != value) {
            this._slideShowServiceMethod = value;
            this.raisePropertyChanged('slideShowServiceMethod');
        }
    },

    get_loop : function() {
        /// <value type="Boolean" mayBeNull="true">
        /// boolean to detect if slideshow should wrap around on hitting the first/last slides.
        /// </value>
        return this._loop;
    },
    set_loop : function(value) {
        if (this._loop != value) {
            this._loop = value;
            this.raisePropertyChanged('loop');
        }
    },
    
    get_autoPlay : function() {
        /// <value type="Boolean" mayBeNull="true">
        /// boolean to detect if slide show should start playing on render.
        /// </value>
        return this._autoPlay;
    },
    set_autoPlay : function(value) {
        if (this._autoPlay != value) {
            this._autoPlay = value;
            this.raisePropertyChanged('autoPlay');
        }
    },
    
    _onClickNext : function(e) {
        /// <summary>
        /// Next button click handler.
        /// </summary>      
        /// <param name="e" type="Sys.UI.DomEvent" mayBeNull="false" />   
        /// <returns />  
               
        e.preventDefault();
        e.stopPropagation();        
        this._clickNext();
    }, 
    
    _onImageLoaded : function(e) {
        /// <summary>
        /// Image loaded handler.
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent" mayBeNull="false"/>   
        /// <returns />      
        this.updateImage(this._slides[this._currentIndex]);
        this.resetButtons();        
        this._cacheImages();
    },
    
    _clickNext : function() {
        /// <summary>
        /// Switches slide show to displaying the next slide.
        /// </summary>  
        /// <returns />  
                  
        if (this._slides) {
            if ((this._currentIndex + 1) < this._slides.length) {
                ++this._currentIndex;
            } else if (this._loop) {
                this._currentIndex = 0;
            } else {
                return false;
            }
            this.setCurrentImage();
            return true;
        }
        return false;    
    },
        
    _onClickPrevious : function(e) {
        /// <summary>
        /// Previous button click handler.
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent" mayBeNull="false"/>   
        /// <returns />  
        
        e.preventDefault();
        e.stopPropagation();        
        this._clickPrevious();

    }, 
    
    _clickPrevious : function() {
        /// <summary>
        /// Switches slide show to displaying the previous slide.
        /// </summary>    
        /// <returns />          
        
        if (this._slides) {
            if ((this._currentIndex - 1) >= 0) {
                --this._currentIndex;
            }
            else if (this._loop) {
                this._currentIndex = this._slides.length - 1;
            } else {
                return false;
            }
            this.setCurrentImage();
            return true;
        }
        return false;
    },

    _onClickPlay : function(e) {
        /// <summary>
        /// Play button click handler.
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent" mayBeNull="false"/>   
        /// <returns />
                
        e.preventDefault();
        e.stopPropagation();
        this._play();
    }, 
    
    _play : function() {
        /// <summary>
        /// Maintains timer state/slide show buttons state and creates handler to switch images in play mode
        /// if not already in play mode.
        /// </summary>   
        /// <returns />
        if (this._inPlayMode) {
            this._inPlayMode = false;
            this._timer.set_enabled(false);
            this.resetSlideShowButtonState();
        } else {
            this._inPlayMode = true;
            if (!this._timer) {
                this._timer = new Sys.Timer();
                this._timer.set_interval(this._playInterval);
                this._tickHandler = Function.createDelegate(this, this._onPlay);
                this._timer.add_tick(this._tickHandler);
            }
            this.resetSlideShowButtonState();
            this._timer.set_enabled(true);
        }
    },
    
    _onPlay : function(e) {
        /// <summary>
        /// Sets the slide show to the current image in play mode and maintains button state.
        /// </summary>   
        /// <param name="e" type="Sys.UI.DomEvent" mayBeNull="false"/>
        /// <returns type="Boolean" />
        if (this._slides) {
            if ((this._currentIndex + 1) < this._slides.length) {
                ++this._currentIndex;
                this.setCurrentImage();
                return true;
            } else if (this._loop) {
                this._currentIndex = 0;
                this.setCurrentImage();
                return true;
            } else {
                this._inPlayMode = false;
                this.resetSlideShowButtonState();
            }
        }
        return false;
    },
    
    _slideShowInit : function() {
        /// <summary>
        /// Initializes the slide show by invoking the webservice to retrieve the slides
        /// and sets the first slide.
        /// </summary>
        /// <returns />
        this._currentIndex = -1;
        this._cachedImageIndex = -1;
        this._inPlayMode = false;
        this._currentValue = null;
        this._images = null;
        var params = null;
        if (this._useContextKey) {
            params = { contextKey : this._contextKey };
        }
        
        Sys.Net.WebServiceProxy.invoke(
                this._slideShowServicePath, 
                this._slideShowServiceMethod, 
                false,
                params,
                Function.createDelegate(this, this._initSlides), 
                null, 
                null);
    },
    
    _initSlides : function(sender, eventArgs) {
        /// <summary>
        /// Initializes the slide show with the first image and configures the specified play settings.
        /// </summary>
        /// <param name="sender" type="Object" mayBeNull="true"/>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="true" />
        /// <returns />

        this._slides = sender;
        if (this._slides) {
            this._images = new Array();
            this._clickNext();  
            if (this._autoPlay) {
                this._play();
            }
        }
    },
   
    _cacheImages : function() {
        /// <summary>
        /// Caches 4 more slides periodically.
        /// </summary>
        /// <returns />
        
        if ((this._currentIndex) % 3 == 0) {
            var oldCachedImageIndex = this._cachedImageIndex;
            for (var i = this._cachedImageIndex + 1; i < this._slides.length; i++) {
                if (this._slides[i]) {
                    this._images[i] = new Image();
                    this._images[i].src = this._slides[i].ImagePath;
                    this._cachedImageIndex = i;
                    if((oldCachedImageIndex + 4) <= i ) {
                        break;
                    }
                }
            }
        }
    }
    
}
Sys.Extended.UI.SlideShowBehavior.registerClass('Sys.Extended.UI.SlideShowBehavior', Sys.Extended.UI.BehaviorBase);
Sys.registerComponent(Sys.Extended.UI.SlideShowBehavior, { name: "slideShow" });
 
Sys.Extended.UI.SlideShowEventArgs = function(previousSlide, nextSlide, slideIndex) {
    /// <summary>
    /// Event arguments for the SlideShowBehavior's slideChanging event
    /// </summary>
    /// <param name="previousSlide" type="Object" mayBeNull="true" />
    /// <param name="nextSlide" type="Object" mayBeNull="true" />
    /// <param name="slideIndex" type="Integer" mayBeNull="true" />
    /// <returns />
    Sys.Extended.UI.SlideShowEventArgs.initializeBase(this);

    this._previousSlide = previousSlide;
    this._nextSlide = nextSlide;
    this._slideIndex = slideIndex;
}
Sys.Extended.UI.SlideShowEventArgs.prototype = {
    get_previousSlide : function() {
        /// <value type="Object">
        /// PreviousSlide
        /// </value>
        return this._previousSlide;
    },

    get_nextSlide : function() {
        /// <value type="Object">
        /// NextSlide
        /// </value>
        return this._nextSlide;
    },

    get_slideIndex : function () {
        /// <value type="Number" integer="true">    
        /// SlideIndex
        /// </value>
        return this._slideIndex;
    }
}
Sys.Extended.UI.SlideShowEventArgs.registerClass('Sys.Extended.UI.SlideShowEventArgs', Sys.CancelEventArgs);

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedBase", "ExtendedCommon", "ExtendedTimer", "Network"], execute);
}
else {
    execute();
}

})();
�y// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />
/// <reference path="../Compat/DragDrop/DragDropScripts.js" />
/// <reference path="../Animation/Animations.js" />

(function() {
var scriptName = "ExtendedSlider";

function execute() {

Type.registerNamespace('Sys.Extended.UI');


Sys.Extended.UI._SliderDragDropManagerInternal = function() {
    Sys.Extended.UI._SliderDragDropManagerInternal.initializeBase(this);
    
    this._instance = null;
}
Sys.Extended.UI._SliderDragDropManagerInternal.prototype = {
    _getInstance : function() {
        this._instance = new Sys.Extended.UI.GenericDragDropManager();

        this._instance.initialize();
        this._instance.add_dragStart(Function.createDelegate(this, this._raiseDragStart));
        this._instance.add_dragStop(Function.createDelegate(this, this._raiseDragStop));
        
        return this._instance;
    }   
}
Sys.Extended.UI._SliderDragDropManagerInternal.registerClass('Sys.Extended.UI._SliderDragDropManagerInternal', Sys.Extended.UI._DragDropManager);
Sys.Extended.UI.SliderDragDropManagerInternal = new Sys.Extended.UI._SliderDragDropManagerInternal();

Sys.Extended.UI.SliderOrientation = function() {

}
Sys.Extended.UI.SliderOrientation.prototype = {
    Horizontal : 0,
    Vertical : 1
}
Sys.Extended.UI.SliderOrientation.registerEnum('Sys.Extended.UI.SliderOrientation', false);

Sys.Extended.UI.SliderBehavior = function(element) {
    Sys.Extended.UI.SliderBehavior.initializeBase(this, [element]);
    
    this._minimum =  0;
    this._maximum =  100;
    this._value = null;
    this._steps =  0;
    this._decimals =  0;
    this._orientation =  Sys.Extended.UI.SliderOrientation.Horizontal;
    this._railElement = null;
    this._railCssClass = null;
    this._isHorizontal =  true;
    this._isUpdatingInternal =  false;
    this._isInitializedInternal =  false;
    this._enableHandleAnimation =  false;
    this._handle = null;
    this._handleImage =  null;
    this._handleAnimation =  null;
    this._handleAnimationDuration =  0.1;
    this._handleImageUrl = null;
    this._handleCssClass = null;
    this._dragHandle = null;
    this._mouseupHandler = null;
    this._selectstartHandler = null;
    this._boundControlChangeHandler = null;
    this._boundControlKeyPressHandler = null;
    this._boundControlID = null;
    this._boundControl = null;
    this._length = null;
    this._raiseChangeOnlyOnMouseUp =  true;
    this._animationPending = false;
    this._selectstartPending = false;
    this._tooltipText = '';

    this._enableKeyboard = true;

    this._keyDownHandler = null;
    
}
Sys.Extended.UI.SliderBehavior.prototype = {
    
    initialize : function() {
        Sys.Extended.UI.SliderBehavior.callBaseMethod(this, 'initialize');
                
        this._initializeLayout();
    },
    
    dispose : function() {
        this._disposeHandlers();
        
        this._disposeBoundControl();
        
        if(this._enableHandleAnimation && this._handleAnimation) {
            this._handleAnimation.dispose();
        }
                
        Sys.Extended.UI.SliderBehavior.callBaseMethod(this, 'dispose');
    },
        
    _initializeLayout : function() {
        this._railElement = document.createElement('DIV');
        this._railElement.id = this.get_id() + '_railElement';
        
        this._railElement.tabIndex = -1;
        
        this._railElement.innerHTML = '<div></div>';
        this._handle = this._railElement.childNodes[0];
        this._handle.style.overflow = 'hidden';
        this._handle.style.position = 'absolute'; 

        if(Sys.Browser.agent == Sys.Browser.Opera) {
            this._handle.style.left = '0px';
            this._handle.style.top = '0px';
        }
        
        var textBoxElement = this.get_element();
        var textBoxElementBounds = $common.getBounds(textBoxElement);
        textBoxElement.parentNode.insertBefore(this._railElement, textBoxElement);
        
        this._isHorizontal = (this._orientation == Sys.Extended.UI.SliderOrientation.Horizontal); 
        
        var defaultRailCssClass = (this._isHorizontal) ? 'ajax__slider_h_rail' : 'ajax__slider_v_rail'; 
        var defaultHandleCssClass = (this._isHorizontal) ? 'ajax__slider_h_handle' : 'ajax__slider_v_handle';
        var defaultHandleImageUrl = (this._isHorizontal) ? 'slider_h_handle.gif' : 'slider_v_handle.gif';
        if (Sys.loader) {
            var url = Sys.loader.basePath;
            if (url) {
                if (url.charAt(url.length-1) !== "/") {
                    url += "/";
                }
                defaultHandleImageUrl = url + "extended/slider/images/" + defaultHandleImageUrl;
            }
        }
        this._railElement.className = (this._railCssClass) ? this._railCssClass : defaultRailCssClass; 
        this._handle.className = (this._handleCssClass) ? this._handleCssClass : defaultHandleCssClass;
        if(!this._handleImageUrl) this._handleImageUrl = defaultHandleImageUrl;
        
        if (this._isHorizontal) {
            if(this._length) this._railElement.style.width =  this._length;
        } 
        else {
            if(this._length) this._railElement.style.height =  this._length;
        }
        
        this._loadHandleImage();
        
        this._enforceTextBoxElementPositioning();

        this._hideTextBoxElement();
        
        this._initializeSlider();
    },
    
    _enforceTextBoxElementPositioning : function() {
        var tbPosition = 
            {
                position: this.get_element().style.position,
                top: this.get_element().style.top,
                right: this.get_element().style.right,
                bottom: this.get_element().style.bottom,
                left: this.get_element().style.left
            };
        
        if(tbPosition.position != '') {
           this._railElement.style.position = tbPosition.position;
        }
        if(tbPosition.top != '') {
            this._railElement.style.top = tbPosition.top;
        }
        if(tbPosition.right != '') {
           this._railElement.style.right = tbPosition.right;
        }
        if(tbPosition.bottom != '') {
           this._railElement.style.bottom = tbPosition.bottom;
        }
        if(tbPosition.left != '') {
            this._railElement.style.left = tbPosition.left;
        }
    },

    _hideTextBoxElement: function() {
        var textBoxElement = this.get_element();

        textBoxElement.readOnly = true;

        var dimension = '0px';

        if (Sys.Browser.agent == Sys.Browser.Safari) {
            dimension = '1px';
        }

        textBoxElement.style.width = dimension;
        textBoxElement.style.height = dimension;
        textBoxElement.style.border = '0px';
        textBoxElement.style.padding = '0px';
        textBoxElement.style.margin = '0px';
        textBoxElement.style.fontSize = '1px';
        textBoxElement.style.lineHeight = '1px';
        textBoxElement.style.outline = '0';

        textBoxElement.style.position = 'absolute';
    },
    
    _loadHandleImage : function() {
        this._handleImage = document.createElement('IMG');
        this._handleImage.id = this.get_id() + '_handleImage';
        this._handle.appendChild(this._handleImage);
        this._handleImage.src = this._handleImageUrl;
    },
       
    _initializeSlider : function() {
        this._initializeBoundControl();
                
        var _elementValue;
        try {
            _elementValue = parseFloat(this.get_element().value);
        } catch(ex) {
            _elementValue = Number.NaN;
        }
        
        this.set_Value(_elementValue);
        
        this._setHandleOffset(this._value);
                
        this._initializeDragHandle();
                                        
        Sys.Extended.UI.SliderDragDropManagerInternal.registerDropTarget(this);
        
        this._initializeHandlers();
                
        this._initializeHandleAnimation();
                        
        this._isInitializedInternal = true;
        
        this._raiseEvent('sliderInitialized');
    },
    
    _initializeBoundControl : function() {
        if(this._boundControl) {
            var isInputElement = this._boundControl.nodeName == 'INPUT';
            
            if(isInputElement) {
                this._boundControlChangeHandler = Function.createDelegate(this, this._onBoundControlChange);
                this._boundControlKeyPressHandler = Function.createDelegate(this, this._onBoundControlKeyPress);
                
                $addHandler(this._boundControl, 'change', this._boundControlChangeHandler);
                $addHandler(this._boundControl, 'keypress', this._boundControlKeyPressHandler);
            }
        }
    },
    
    _disposeBoundControl : function() {
        if(this._boundControl) {;
            var isInputElement = this._boundControl.nodeName == 'INPUT';
            
            if(isInputElement) {
                $removeHandler(this._boundControl, 'change', this._boundControlChangeHandler);
                $removeHandler(this._boundControl, 'keypress', this._boundControlKeyPressHandler);
            }
        }
    },
    
    _onBoundControlChange : function(evt) {
        this._animationPending = true;
        this._setValueFromBoundControl();
    },
    
    _onBoundControlKeyPress : function(evt) {
        if(evt.charCode == 13) {
            this._animationPending = true;
            this._setValueFromBoundControl();
            evt.preventDefault();
        }
    },
    
    _setValueFromBoundControl : function() {
        this._isUpdatingInternal = true;
        
        if(this._boundControlID) {
            this._calcValue($get(this._boundControlID).value);
        }
        
        this._isUpdatingInternal = false;
    },
   
    _initializeHandleAnimation : function() {
        if(this._steps > 0) {
            this._enableHandleAnimation = false;
            return;
        }
        
        if(this._enableHandleAnimation) {
            this._handleAnimation = new Sys.Extended.UI.Animation.LengthAnimation(
                    this._handle, this._handleAnimationDuration, 100, 'style');
        }
    },
    
    _ensureBinding : function() {
        if(this._boundControl) {
            var value = this._value;
            
            if(value >= this._minimum || value <= this._maximum) {
                var isInputElement = this._boundControl.nodeName == 'INPUT';
                
                if(isInputElement) {
                    this._boundControl.value = value;
                }
                else if(this._boundControl) {
                    this._boundControl.innerHTML = value;
                }
            }
        }
    },
        
    _getBoundsInternal : function(element) {
        var bounds = $common.getBounds(element);
        
        function hasSize() { 
            return bounds.width > 0 && bounds.height > 0;
        }
        
        if(!hasSize()) {
            bounds.width = parseInt($common.getCurrentStyle(element, 'width'));
            bounds.height = parseInt($common.getCurrentStyle(element, 'height'));
            
            if(!hasSize()) {
                var tempNode = element.cloneNode(true);
                tempNode.visibility = 'hidden';
                document.body.appendChild(tempNode);
                
                bounds.width = parseInt($common.getCurrentStyle(tempNode, 'width'));
                bounds.height = parseInt($common.getCurrentStyle(tempNode, 'height'));
                document.body.removeChild(tempNode);

                if(!hasSize()) {
                    throw Error.argument('element size', Sys.Extended.UI.Resources.Slider_NoSizeProvided);
                }
            }
        }

        if(this._orientation == Sys.Extended.UI.SliderOrientation.Vertical) {
             bounds = { x : bounds.y, 
                        y : bounds.x, 
                        height : bounds.width, 
                        width : bounds.height, 
                        right : bounds.right,
                        bottom : bounds.bottom,
                        location : {x:bounds.y, y:bounds.x},
                        size : {width:bounds.height, height:bounds.width}
                      };
        }
        
        return bounds;
    },
    
    _getRailBounds : function() {
        var bounds = this._getBoundsInternal(this._railElement);
        
        return bounds;
    },
    
    _getHandleBounds : function() {
        return this._getBoundsInternal(this._handle);
    },
    
    _initializeDragHandle : function() {
        var dh = this._dragHandle = document.createElement('DIV');
        
        dh.style.position = 'absolute';
        dh.style.width = '1px';
        dh.style.height = '1px';
        dh.style.overflow = 'hidden';
        dh.style.zIndex = '999';
        dh.style.background = 'none';
        
        document.body.appendChild(this._dragHandle);
    },
    
    _resetDragHandle : function() {
        var handleBounds = $common.getBounds(this._handle);
        
        $common.setLocation(this._dragHandle, {x:handleBounds.x, y:handleBounds.y});
    },
    
    _initializeHandlers : function() {
        this._selectstartHandler = Function.createDelegate(this, this._onSelectStart);
        this._mouseupHandler = Function.createDelegate(this, this._onMouseUp);

        this._keyDownHandler = Function.createDelegate(this, this._onKeyDown);
        
        $addHandler(document, 'mouseup', this._mouseupHandler);

        $addHandler(this.get_element(), 'keydown', this._keyDownHandler);
                   
        $addHandlers(this._handle, 
            {
                'mousedown': this._onMouseDown,
                'dragstart': this._IEDragDropHandler,
                'drag': this._IEDragDropHandler,
                'dragend': this._IEDragDropHandler
            },
            this);
            
        $addHandlers(this._railElement,
            {
                'click': this._onRailClick
            },
            this);
    },
    
    _disposeHandlers : function() {
        $clearHandlers(this._handle);
        $clearHandlers(this._railElement);

        $removeHandler(this.get_element(), 'keydown', this._keyDownHandler);

        $removeHandler(document, 'mouseup', this._mouseupHandler);

        this._keyDownHandler = null;
        this._mouseupHandler = null;
        this._selectstartHandler = null;
    },
    
    startDragDrop : function(dragVisual) {
        this._resetDragHandle();
        
        Sys.Extended.UI.SliderDragDropManagerInternal.startDragDrop(this, dragVisual, null);
    },
    
    _onMouseDown : function(evt) {
        window._event = evt;        
        evt.preventDefault();
        
        if(!Sys.Extended.UI.SliderBehavior.DropPending) {
            Sys.Extended.UI.SliderBehavior.DropPending = this;
            
            $addHandler(document, 'selectstart', this._selectstartHandler);
            this._selectstartPending = true;
            
            this.startDragDrop(this._dragHandle);
        }
    },
    
    _onMouseUp : function(evt) {
        var srcElement = evt.target;
        
        if(Sys.Extended.UI.SliderBehavior.DropPending == this) {
            Sys.Extended.UI.SliderBehavior.DropPending = null;
            
            if(this._selectstartPending) {
                $removeHandler(document, 'selectstart', this._selectstartHandler);
            }
        }
    },

    _onKeyDown: function(e) {
        if (this._enableKeyboard) {
            var evt = new Sys.UI.DomEvent(e);

            switch (evt.keyCode || evt.rawEvent.keyCode) {
                case Sys.UI.Key.up:
                case Sys.UI.Key.left:
                    this._handleSlide(true);
                    evt.preventDefault();
                    return;
                case Sys.UI.Key.down:
                case Sys.UI.Key.right:
                    this._handleSlide(false);
                    evt.preventDefault();
                    return false;
                default:
                    return false;
            }
        }
    },

    _handleSlide: function(decrement) {
        this._animationPending = true;

        this._isUpdatingInternal = true;

        var currentValue = this.get_Value();
        var increment;

        if (this._steps > 0) {
            var extent = this._maximum - this._minimum;

            var delta = (extent / (this._steps - 1)).toFixed(this._decimals);

            increment = delta;
        } else {
            increment = this._decimals == 0 ? 1 : 1 / Math.pow(10, this._decimals);
        }

        if (decrement) {
            increment = 0 - increment
        }

        this._calcValue(parseFloat(currentValue) + parseFloat(increment));

        this._isUpdatingInternal = false;

        this._fireTextBoxChangeEvent();
    },
    
    _onRailClick : function(evt) {
        if(evt.target == this._railElement) {
            this._animationPending = true;
            this._onRailClicked(evt);    
        }
    },
    
    _IEDragDropHandler : function(evt) {
        evt.preventDefault();
    },
    
    _onSelectStart : function(evt) {
        evt.preventDefault();
    },
    
    _calcValue : function(value, mouseOffset) {
        var val;
        
        if(value != null) {
            if(!Number.isInstanceOfType(value)) {
                try {
                    value = parseFloat(value);
                } catch(ex) {
                    value = Number.NaN;
                }
            }

            if(isNaN(value)) {
                value = this._minimum;
            }
            
            val = (value < this._minimum) ? this._minimum
                : (value > this._maximum) ? this._maximum
                : value;
        }
        else {                
            var _minimum = this._minimum;
            var _maximum = this._maximum;
            var handleBounds = this._getHandleBounds();
            var sliderBounds = this._getRailBounds();        
            var handleX = (mouseOffset) ? mouseOffset - handleBounds.width / 2 
                                        : handleBounds.x - sliderBounds.x;
            var extent = sliderBounds.width - handleBounds.width;
            var percent = handleX / extent;
            
            val = (handleX == 0) ? _minimum
                : (handleX == (sliderBounds.width - handleBounds.width)) ? _maximum
                : _minimum + percent * (_maximum - _minimum);
        }
        
        if(this._steps > 0) {
            val = this._getNearestStepValue(val);
        }
        
        val = (val < this._minimum) ? this._minimum
            : (val > this._maximum) ? this._maximum
            : val;
                
        this._isUpdatingInternal = true;
        this.set_Value(val);
        this._isUpdatingInternal = false;
        
        return val;
    },
       
    _setHandleOffset : function(value, playHandleAnimation) {
        var _minimum = this._minimum;
        var _maximum = this._maximum;
        var handleBounds = this._getHandleBounds();
        var sliderBounds = this._getRailBounds();
        
        var extent = _maximum - _minimum;
        var fraction = (value - _minimum) / extent;
        var hypOffset = Math.round(fraction * (sliderBounds.width - handleBounds.width));
        
        var offset = (value == _minimum) ? 0
                   : (value == _maximum) ? (sliderBounds.width - handleBounds.width)
                   : hypOffset;
        
        if(playHandleAnimation) {
            this._handleAnimation.set_startValue(handleBounds.x - sliderBounds.x);
            this._handleAnimation.set_endValue(offset);
            this._handleAnimation.set_propertyKey((this._isHorizontal) ? 'left' : 'top');
            this._handleAnimation.play();
            
            this._animationPending = false;
        }
        else {
            if(this._isHorizontal) {
                this._handle.style.left = offset + 'px';
            }
            else {
                this._handle.style.top = offset + 'px';
            }
        }
    },
 
    _getNearestStepValue : function(value) {
        if(this._steps == 0) return value;
        
        var extent = this._maximum - this._minimum;
        if (extent == 0) return value;
        
        var delta = extent / (this._steps - 1);

        return Math.round(value / delta) * delta;
    },
    
    _onHandleReleased : function() {
        if(this._raiseChangeOnlyOnMouseUp) {
            this._fireTextBoxChangeEvent();
        }
        
        this._raiseEvent('slideEnd');
    },
    
    _onRailClicked : function(evt) {
        var handleBounds = this._getHandleBounds();
        var sliderBounds = this._getRailBounds();
        var offset = (this._isHorizontal) ? evt.offsetX : evt.offsetY;
        var minOffset = handleBounds.width / 2;
        var maxOffset = sliderBounds.width - minOffset;
        
        offset = (offset < minOffset) ? minOffset 
               : (offset > maxOffset) ? maxOffset
               : offset;

        this._calcValue(null, offset, true);

        this.get_element().focus();
        
        this._fireTextBoxChangeEvent();
    },
    
    _fireTextBoxChangeEvent : function() {
        if (document.createEvent) {
            var onchangeEvent = document.createEvent('HTMLEvents');
            onchangeEvent.initEvent('change', true, false);
            
            this.get_element().dispatchEvent(onchangeEvent);
        } 
        else if(document.createEventObject) {
            this.get_element().fireEvent('onchange');
        }
    },
        
    get_dragDataType : function() {        
        return 'HTML';
    },
    
    getDragData : function() {
        return this._handle;
    },
    
    get_dragMode : function() {       
        return Sys.Extended.UI.DragMode.Move;
    },

    onDragStart : function() {
        this.get_element().focus();
        
        this._resetDragHandle();
        this._raiseEvent('slideStart');
    },
    
    onDrag : function() {
        var dragHandleBounds = this._getBoundsInternal(this._dragHandle);
        var handleBounds = this._getHandleBounds();
        var sliderBounds = this._getRailBounds();
        
        var handlePosition; 
        if(this._isHorizontal) {
            handlePosition = { x:dragHandleBounds.x - sliderBounds.x, y:0 };
        }
        else {
            handlePosition = { y:dragHandleBounds.x - sliderBounds.x, x:0 };
        }
        
        $common.setLocation(this._handle, handlePosition);
        
        this._calcValue(null, null);
        
        if(this._steps > 1) {
            this._setHandleOffset(this.get_Value(), false);
        }
    },
        
    onDragEnd : function() {
        this._onHandleReleased();
    },
    
    get_dropTargetElement : function() {
        return document.body;
    },
        
    canDrop : function(dragMode, dataType) {
        return dataType == 'HTML';
    },
    
    drop : Function.emptyMethod,
    
    onDragEnterTarget : Function.emptyMethod,
    
    onDragLeaveTarget : Function.emptyMethod,
    
    onDragInTarget : Function.emptyMethod,
    
    add_sliderInitialized : function(handler) {
        this.get_events().addHandler('sliderInitialized', handler);
    },
    
    remove_sliderInitialized : function(handler) {
        this.get_events().removeHandler('sliderInitialized', handler);
    },
    
    add_valueChanged : function(handler) {
        this.get_events().addHandler('valueChanged', handler);
    },
    
    remove_valueChanged : function(handler) {
        this.get_events().removeHandler('valueChanged', handler);
    },
    
    add_slideStart : function(handler) {
        this.get_events().addHandler('slideStart', handler);
    },
    
    remove_slideStart : function(handler) {
        this.get_events().removeHandler('slideStart', handler);
    },
    
    add_slideEnd : function(handler) {
        this.get_events().addHandler('slideEnd', handler);
    },
    
    remove_slideEnd : function(handler) {
        this.get_events().removeHandler('slideEnd', handler);
    },
    
    _raiseEvent : function(eventName, eventArgs) {
        var handler = this.get_events().getHandler(eventName);
        if (handler) {
         if (!eventArgs) {
            eventArgs = Sys.EventArgs.Empty;
         }
         handler(this, eventArgs);
        }
    },
    
    get_Value : function() {
        return this._value;
    },
    
    set_Value : function(value) {
        var oldValue = this._value;
        var newValue = value;
        
        if(!this._isUpdatingInternal) {
            newValue = this._calcValue(value);
        }
        
        this.get_element().value = this._value = newValue.toFixed(this._decimals);

        this._ensureBinding();
                
        if(!Number.isInstanceOfType(this._value)) {
            try {
                this._value = parseFloat(this._value);
            } catch(ex) {
                this._value = Number.NaN;
            }
        }
        
        if(this._tooltipText) {
            this._handle.alt = this._handle.title = 
                String.format(this._tooltipText, this._value);
        }
        
        if(this._isInitializedInternal) {
            this._setHandleOffset(newValue, this._enableHandleAnimation && this._animationPending);
                
            if(this._isUpdatingInternal) {
                if(!this._raiseChangeOnlyOnMouseUp) {
                    this._fireTextBoxChangeEvent();
                }
            }
            
            if(this._value != oldValue) {
                this._raiseEvent('valueChanged');
            }
        }
    },

    get_RailCssClass : function() {
        return this._railCssClass;
    },
    
    set_RailCssClass : function(value) {
        this._railCssClass = value;
    },  
    
    get_HandleImageUrl : function() {
        return this._handleImageUrl;
    },
    
    set_HandleImageUrl : function(value) {
        this._handleImageUrl = value;
    },
    
    get_HandleCssClass : function() {
        return this._handleCssClass;
    },
    
    set_HandleCssClass : function(value) {
        this._handleCssClass = value;
    },
    
    get_Minimum : function() {
        return this._minimum;
    },
    
    set_Minimum : function(value) {
        this._minimum = value;
    }, 
    
    get_Maximum : function() {
        return this._maximum;
    },
    
    set_Maximum : function(value) {
        this._maximum = value;
    },
    
    get_Orientation : function() {
        return this._orientation;
    },
    
    set_Orientation : function(value) {
        this._orientation = value;
    },
    
    get_Steps : function() {
        return this._steps;
    },
    
    set_Steps : function(value) {
        this._steps = Math.abs(value);
        this._steps = (this._steps == 1) ? 2 : this._steps;
    },
    
    get_Decimals : function() {
        return this._decimals;
    },
    
    set_Decimals : function(value) {
        this._decimals = Math.abs(value);
    },
    
    get_EnableHandleAnimation : function() {
        return this._enableHandleAnimation;
    },
    
    set_EnableHandleAnimation : function(value) {
        this._enableHandleAnimation = value;
    },
    
    get_HandleAnimationDuration : function() {
        return this._handleAnimationDuration;
    },
    
    set_HandleAnimationDuration : function(value) {
        this._handleAnimationDuration = value;
    }, 
      
    get_BoundControlID : function() {
        return this._boundControlID;
    },
    
    set_BoundControlID : function(value) {
        this._boundControlID = value;
        if(this._boundControlID) {
            this._boundControl = $get(this._boundControlID);
        } else {
            this._boundControl = null;
        }
    },
    
    get_Length : function() {
        return this._length;
    },
    
    set_Length : function(value) {
        this._length = value + 'px';
    },
    
    get_SliderInitialized : function() {
        return this._isInitializedInternal;
    },
    
    get_RaiseChangeOnlyOnMouseUp : function() {
        return this._raiseChangeOnlyOnMouseUp;
    },
    
    set_RaiseChangeOnlyOnMouseUp : function(value) {
        this._raiseChangeOnlyOnMouseUp = value;
    },
    
    get_TooltipText : function() {
        return this._tooltipText;
    },
    
    set_TooltipText : function(value) {
        this._tooltipText = value;
    },

    get_enableKeyboard: function() {
        /// <value type="Boolean">
        /// Determines if the slider will respond to arrow keys when it has focus.
        /// </value>

        return this._enableKeyboard;
    },
    set_enableKeyboard: function(value) {
        /// <value type="Boolean">
        /// Determines if the slider will respond to arrow keys when it has focus.
        /// </value>

        if (value !== this._enableKeyboard) {
            this._enableKeyboard = value;
            this.raisePropertyChanged('enableKeyboard');
        }
    },
        
    getClientState : function() {
        var value = Sys.Extended.UI.SliderBehavior.callBaseMethod(this, 'get_ClientState');                
        if (value == '') value = null;
        return value;
    },
     
    setClientState : function(value) {
        return Sys.Extended.UI.SliderBehavior.callBaseMethod(this, 'set_ClientState',[value]);                
    }
}

Sys.Extended.UI.SliderBehavior.DropPending = null; // Global, used to work around an issue when using the GenericDragDropManager in IE.

Sys.Extended.UI.SliderBehavior.registerClass('Sys.Extended.UI.SliderBehavior', Sys.Extended.UI.BehaviorBase, Sys.Extended.UI.IDragSource, Sys.Extended.UI.IDropTarget);
Sys.registerComponent(Sys.Extended.UI.SliderBehavior, { name: "slider" });

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedBase", "ExtendedDragDrop", "ExtendedAnimations"], execute);
}
else {
    execute();
}

})();
Y// (c) 2010 CodePlex Foundation
Type.registerNamespace("Sys.Extended.UI.Seadragon");Sys.Extended.UI.Seadragon.TileSource=function(c,b,g,d,f,e){var a=this;a.aspectRatio=c/b;a.dimensions=new Sys.Extended.UI.Seadragon.Point(c,b);a.minLevel=f?f:0;a.maxLevel=e?e:Math.ceil(Math.log(Math.max(c,b))/Math.log(2));a.tileSize=g?g:0;a.tileOverlap=d?d:0};Sys.Extended.UI.Seadragon.TileSource.prototype={getLevelScale:function(a){return 1/(1<<this.maxLevel-a)},getNumTiles:function(c){var a=this,b=a.getLevelScale(c),d=Math.ceil(b*a.dimensions.x/a.tileSize),e=Math.ceil(b*a.dimensions.y/a.tileSize);return new Sys.Extended.UI.Seadragon.Point(d,e)},getPixelRatio:function(b){var a=this.dimensions.times(this.getLevelScale(b)),c=1/a.x,d=1/a.y;return new Sys.Extended.UI.Seadragon.Point(c,d)},getTileAtPoint:function(c,d){var a=this,b=d.times(a.dimensions.x).times(a.getLevelScale(c)),e=Math.floor(b.x/a.tileSize),f=Math.floor(b.y/a.tileSize);return new Sys.Extended.UI.Seadragon.Point(e,f)},getTileBounds:function(j,f,g){var a=this,c=a.dimensions.times(a.getLevelScale(j)),h=f===0?0:a.tileSize*f-a.tileOverlap,i=g===0?0:a.tileSize*g-a.tileOverlap,d=a.tileSize+(f===0?1:2)*a.tileOverlap,e=a.tileSize+(g===0?1:2)*a.tileOverlap;d=Math.min(d,c.x-h);e=Math.min(e,c.y-i);var b=1/c.x;return new Sys.Extended.UI.Seadragon.Rect(h*b,i*b,d*b,e*b)},getTileUrl:function(){throw new Error("Method not implemented.");},tileExists:function(a,c,d){var b=this.getNumTiles(a);return a>=this.minLevel&&a<=this.maxLevel&&c>=0&&d>=0&&c<b.x&&d<b.y}};Sys.Extended.UI.Seadragon.TileSource.registerClass("Sys.Extended.UI.Seadragon.TileSource",null,Sys.IDisposable);@T// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />

(function() {
var scriptName = "ExtendedResizable";

function execute() {

Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.ResizableControlBehavior = function(element) {
    /// <summary>
    /// The ResizableControlBehavior makes the target element resizable
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// DOM element associated with the behaviro
    /// </param>
    Sys.Extended.UI.ResizableControlBehavior.initializeBase(this, [element]);
    
    this._HandleCssClass = "";
    this._ResizableCssClass = "";
    this._HandleOffsetX = 0;
    this._HandleOffsetY = 0;
    this._MinimumWidth = 0;
    this._MinimumHeight = 0;
    this._MaximumWidth = 100000;
    this._MaximumHeight = 100000;

    this._frame = null;
    this._handle = null;
    this._handleHolder = null;
    this._lining = null;
    this._tracking = false;
    this._lastClientX = 0;
    this._lastClientY = 0;

    this._onmouseoverDelegate = null;
    this._onmouseoutDelegate = null;
    this._onmousedownDelegate = null;
    this._onmousemoveDelegate = null;
    this._onmouseupDelegate = null;
    this._onselectstartDelegate = null;
}
Sys.Extended.UI.ResizableControlBehavior.prototype = {
    initialize : function() {
        /// <summary>
        /// Initialize the behavior
        /// </summary>
        Sys.Extended.UI.ResizableControlBehavior.callBaseMethod(this, 'initialize');

        this._frame = this.get_element();

        var savedSizeString = Sys.Extended.UI.ResizableControlBehavior.callBaseMethod(this, 'get_ClientState');
        if (savedSizeString && (-1 != savedSizeString.indexOf(','))) {
            var savedSize = savedSizeString.split(',');
            this._frame.style.width = savedSize[0]+'px';
            this._frame.style.height = savedSize[1]+'px';
        }

        this._lining = document.createElement('DIV');
        this._lining.style.width = $common.getCurrentStyle(this._frame, 'width');
        this._lining.style.height = $common.getCurrentStyle(this._frame, 'height');
        this._lining.style.position = 'absolute';
        this._lining.style.backgroundColor = 'black';  // Keeps browsers from ignoring the content-free element
        this._lining.style.opacity = "0";  // Makes the lining invisible
        this._lining.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=0)";  // Ditto, for IE
        this._lining.style.visibility = 'hidden';
        this._frame.insertBefore(this._lining, this._frame.firstChild);

        this._handleHolder = document.createElement('DIV');
        this._handleHolder.style.width = '0px';
        this._handleHolder.style.height = '0px';
        this._handleHolder.style.position = ((Sys.Browser.agent === Sys.Browser.Opera) ? 'relative' : 'absolute');
        this._frame.insertBefore(this._handleHolder, this._frame.firstChild);

        this._handle = document.createElement('DIV');
        this._handle.className = this._HandleCssClass;
        this._handle.style.position = 'absolute';
        this._handleHolder.appendChild(this._handle);

        this._onmouseoverDelegate = Function.createDelegate(this, this._onmouseover);
        $addHandler(this._handle, 'mouseover', this._onmouseoverDelegate);
        this._onmouseoutDelegate = Function.createDelegate(this, this._onmouseout);
        $addHandler(this._handle, 'mouseout', this._onmouseoutDelegate);
        this._onmousedownDelegate = Function.createDelegate(this, this._onmousedown);
        $addHandler(this._handle, 'mousedown', this._onmousedownDelegate);
        this._onmousemoveDelegate = Function.createDelegate(this, this._onmousemove);
        this._onmouseupDelegate = Function.createDelegate(this, this._onmouseup);
        this._onselectstartDelegate = Function.createDelegate(this, this._onselectstart);

        this._resizeControl(0, 0, 0, 0);
        this._rememberSize();
    },

    dispose : function() {
        /// <summary>
        /// Dispose the behavior
        /// </summary>
        if (this._onmouseoverDelegate) {
            $removeHandler(this._handle, 'mouseover', this._onmouseoverDelegate);
            this._onmouseoverDelegate = null;
        }

        if (this._onmouseoutDelegate) {
            $removeHandler(this._handle, 'mouseout', this._onmouseoutDelegate);
            this._onmouseoutDelegate = null;
        }

        if (this._onmousedownDelegate) {
            $removeHandler(this._handle, 'mousedown', this._onmousedownDelegate);
            this._onmousedownDelegate = null;
        }

        if (this._onmousemoveDelegate) {
            if (this.tracking) {
                $removeHandler(document, 'mousemove', this._onmousemoveDelegate);
            }
            this._onmousemoveDelegate = null;
        }

        if (this._onmouseupDelegate) {
            if (this.tracking) {
                $removeHandler(document, 'mouseup', this._onmouseupDelegate);
            }
            this._onmouseupDelegate = null;
        }

        if (this._onselectstartDelegate) {
            if (this.tracking) {
                $removeHandler(document, 'selectstart', this._onselectstartDelegate);
                if (Sys.Browser.agent === Sys.Browser.Opera) {
                    $removeHandler(document, 'mousedown', this._onselectstartDelegate);
                }
            }
            this._onselectstartDelegate = null;
        }

        Sys.Extended.UI.ResizableControlBehavior.callBaseMethod(this, 'dispose');
    },

    _onmouseover : function() {
        /// <summary>
        /// Handler for the handle's mouseover event
        /// </summary>
        Sys.UI.DomElement.addCssClass(this._frame, this._ResizableCssClass);
    },

    _onmouseout : function() {
        /// <summary>
        /// Handler for the handle's mouseout event
        /// </summary>
        if (!this._tracking) {
            Sys.UI.DomElement.removeCssClass(this._frame, this._ResizableCssClass);
        }
    },

    _onmousedown : function(e) {
        /// <summary>
        /// Handler for the handle's mousedown event
        /// </summary>

        if (!e) {
            e = event;
        }
        this._onmousedownImplementation(e.clientX, e.clientY);
    },
    
    _onmousedownImplementation : function(clientX, clientY) {
        /// <summary>
        /// Setup the target for resizing when its handle receives a mousedown event
        /// </summary>
        /// <param name="clientX" type="Number" integer="true">
        /// X coordinate of the click
        /// </param>
        /// <param name="clientY" type="Number" integer="true">
        /// Y coordinate of the click
        /// </param>

        this._tracking = true;
        this._resizeControl(clientX, clientY, 0, 0);
        this._lining.style.visibility = 'visible';  // Overlay resizing control to avoid interacting with it (ex: IFRAME)
        $addHandler(document, 'mousemove', this._onmousemoveDelegate);
        $addHandler(document, 'mouseup', this._onmouseupDelegate);
        $addHandler(document, 'selectstart', this._onselectstartDelegate);
        if (Sys.Browser.agent === Sys.Browser.Opera) {
            $addHandler(document, 'mousedown', this._onselectstartDelegate);
        }
        this.raiseResizeBegin();
    },

    _onmousemove : function(e) {
        /// <summary>
        /// Handler for the handle's mousemove event
        /// </summary>

        if (!e) {
            e = event;
        }
        this._onmousemoveImplementation(e.clientX, e.clientY);
    },
    
    _onmousemoveImplementation : function(clientX, clientY) {
        /// <summary>
        /// Resize the target when the handle receives mousemove events
        /// </summary>
        /// <param name="clientX" type="Number" integer="true">
        /// X coordinate of the click
        /// </param>
        /// <param name="clientY" type="Number" integer="true">
        /// Y coordinate of the click
        /// </param>

        if (this._tracking) {
            var deltaX = (clientX-this._lastClientX);
            var deltaY = (clientY-this._lastClientY);
            this._resizeControl(clientX, clientY, deltaX, deltaY);
        }
    },

    _onmouseup : function() {
        /// <summary>
        /// Handler for the handle's mouseup event
        /// </summary>

        this._tracking = false;
        this._rememberSize();
        this._lining.style.visibility = 'hidden';
        $removeHandler(document, 'mousemove', this._onmousemoveDelegate);
        $removeHandler(document, 'mouseup', this._onmouseupDelegate);
        $removeHandler(document, 'selectstart', this._onselectstartDelegate);
        if (Sys.Browser.agent === Sys.Browser.Opera) {
            $removeHandler(document, 'mousedown', this._onselectstartDelegate);
        }
        Sys.UI.DomElement.removeCssClass(this._frame, this._ResizableCssClass);
    },

    _onselectstart : function(e) {
        /// <summary>
        /// Handler for the target's selectstart event
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">
        /// Event info
        /// </param>

        e.preventDefault();
        return false;
    },

    _resizeControl : function(clientX, clientY, deltaX, deltaY) {
        /// <summary>
        /// Resize the target
        /// </summary>
        /// <param name="clientX" type="Number" integer="true">
        /// Starting X coordinate
        /// </param>
        /// <param name="clientY" type="Number" integer="true">
        /// Starting Y coordinate
        /// </param>
        /// <param name="deltaX" type="Number" integer="true">
        /// Change in the width
        /// </param>
        /// <param name="deltaY" type="Number" integer="true">
        /// Change in the height
        /// </param>

        this._lastClientX = clientX;
        this._lastClientY = clientY;
        var _liningWidth = Math.min(Math.max(this._lining.offsetWidth+deltaX, Math.max(this._MinimumWidth, this._handle.offsetWidth)), this._MaximumWidth);
        var _liningHeight = Math.min(Math.max(this._lining.offsetHeight+deltaY, Math.max(this._MinimumHeight, this._handle.offsetHeight)), this._MaximumHeight);
        this._lining.style.width = _liningWidth+'px';
        this._lining.style.height = _liningHeight+'px';
        this._frame.style.width = _liningWidth+'px';
        this._frame.style.height = _liningHeight+'px';
        var _handleLeft = this._lining.offsetWidth-this._handle.offsetWidth+this._HandleOffsetX;
        var _handleTop = this._lining.offsetHeight-this._handle.offsetHeight+this._HandleOffsetY;
        this._handle.style.left = _handleLeft+'px';
        this._handle.style.top = _handleTop+'px';
        this.raiseResizing();
    },

    _rememberSize : function() {
        /// <summary>
        /// Save the size in ClientState
        /// </summary>
        var size = this.get_Size();
        Sys.Extended.UI.ResizableControlBehavior.callBaseMethod(this, 'set_ClientState', [ size.width+','+size.height ]);
        this.raiseResize();
    },

    _measurementToNumber : function(m) {
        /// <summary>
        /// Get the magnitude of a measurement
        /// </summary>
        /// <param name="m" type="String">
        /// Measurement
        /// </param>
        /// <returns type="String">
        /// Magnitude of a measurement
        /// </returns>
        return m.replace('px', '');
    },

    get_HandleCssClass : function() {
        /// <value type="String">
        /// The name of the CSS class to apply to the resize handle
        /// </value>
        return this._HandleCssClass;
    },
    set_HandleCssClass : function(value) {
        if (this._HandleCssClass) {
            throw String.format(Sys.Extended.UI.Resources.ResizableControlBehavior_CannotChangeProperty, 'HandleCssClass');
        }
        this._HandleCssClass = value;
        this.raisePropertyChanged('HandleCssClass');
    },

    get_ResizableCssClass : function() {
        /// <value type="String">
        /// name of the CSS class to apply to the element when resizing
        /// </value>
        return this._ResizableCssClass;
    },
    set_ResizableCssClass : function(value) {
        if (this._ResizableCssClass) {
            throw String.format(Sys.Extended.UI.Resources.ResizableControlBehavior_CannotChangeProperty, 'ResizableCssClass');
        }
        this._ResizableCssClass = value;
        this.raisePropertyChanged('ResizableCssClass');
    },

    get_HandleOffsetX : function() {
        /// <value type="Number" integer="true">
        /// Horizontal offset to apply to the location of the resize handle
        /// </value>
        return this._HandleOffsetX;
    },
    set_HandleOffsetX : function(value) {
        if (this._HandleOffsetX != value) {
            this._HandleOffsetX = value;
            this.raisePropertyChanged('HandleOffsetX');
        }
    },

    get_HandleOffsetY : function() {
        /// <value type="Number" integer="true">
        /// Vertical offset to apply to the location of the resize handle
        /// </value>
        return this._HandleOffsetY;
    },
    set_HandleOffsetY : function(value) {
        if (this._HandleOffsetY != value) {
            this._HandleOffsetY = value;
            this.raisePropertyChanged('HandleOffsetY');
        }
    },

    get_MinimumWidth : function() {
        /// <value type="Number" integer="true">
        /// Minimum width of the resizable element
        /// </value>
        return this._MinimumWidth;
    },
    set_MinimumWidth : function(value) {
        if (this._MinimumWidth != value) {
            this._MinimumWidth = value;
            this.raisePropertyChanged('MinimumWidth');
        }
    },

    get_MinimumHeight : function() {
        /// <value type="Number" integer="true">
        /// Minimum height of the resizable element
        /// </value>
        return this._MinimumHeight;
    },
    set_MinimumHeight : function(value) {
        if (this._MinimumHeight != value) {
            this._MinimumHeight = value;
            this.raisePropertyChanged('MinimumHeight');
        }
    },

    get_MaximumWidth : function() {
        /// <value type="Number" integer="true">
        /// Maximum width of the resizing element
        /// </value>
        return this._MaximumWidth;
    },
    set_MaximumWidth : function(value) {
        if (this._MaximumWidth != value) { 
            this._MaximumWidth = value;
            this.raisePropertyChanged('MaximumWidth');
        }
    },

    get_MaximumHeight : function() {
        /// <value type="Number" integer="true">
        /// Maximum height of the resizing element
        /// </value>
        return this._MaximumHeight;
    },
    set_MaximumHeight : function(value) {
        if (this._MaximumHeight != value) {
            this._MaximumHeight = value;
            this.raisePropertyChanged('MaximumHeight');
        }
    },

    add_resizing : function(handler) {
        /// <summary>
        /// Add a handler to the resizing event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        this.get_events().addHandler("resizing", handler);
    },
    remove_resizing : function(handler) {
        /// <summary>
        /// Remove a handler from the resizing event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        this.get_events().removeHandler("resizing", handler);
    },
    raiseResizing : function() {
        /// <summary>
        /// Raise the resizing event
        /// </summary>
        var onResizingHandler = this.get_events().getHandler("resizing");
        if (onResizingHandler) {
            onResizingHandler(this, Sys.EventArgs.Empty);
        }
    },

    get_resizing : function() {
        /// <value type="Object">
        /// Function to invoke on resizing (can a Function, name of a Function, or expression that evaluates to a Function)
        /// </value>
        return this.get_events().getHandler("resizing");
    },
    set_resizing : function(value) {
        if (value && (0 < value.length)) {
            var func = $common.resolveFunction(value);
            if (func) { 
                this.add_resizing(func);
            } else {
                throw Error.argumentType('value', typeof(value), 'Function', String.format(Sys.Extended.UI.Resources.ResizableControlBehavior_InvalidHandler, 'resizing'));
            }
        }
    },

    add_resize : function(handler) {
        /// <summary>
        /// Add a handler to the resize event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        this.get_events().addHandler("resize", handler);
    },
    remove_resize : function(handler) {
        /// <summary>
        /// Remove a handler from the resize event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        this.get_events().removeHandler("resize", handler);
    },
    raiseResize : function() {
        /// <summary>
        /// Raise the resize event
        /// </summary>
        var onResizeHandler = this.get_events().getHandler("resize");
        if (onResizeHandler) {
            onResizeHandler(this, Sys.EventArgs.Empty);
        }
    },

    get_resize : function() {
        /// <value type="Object">
        /// Function to invoke on resize (can be a Function, name of a Function, or expression that evaluates to a Function)
        /// </value>
        return this.get_events().getHandler("resize");
    },
    set_resize : function(value) {
        if (value && (0 < value.length)) {
            var func = $common.resolveFunction(value);
            if (func) { 
                this.add_resize(func);
            } else {
                throw Error.argumentType('value', typeof(value), 'Function', String.format(Sys.Extended.UI.Resources.ResizableControlBehavior_InvalidHandler, 'resize'));
            }
        }
    },

    add_resizebegin : function(handler) {
        /// <summary>
        /// Add a handler to the resizebegin event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        this.get_events().addHandler("resizebegin", handler);
    },
    remove_resizebegin : function(handler) {
        /// <summary>
        /// Remove a handler from the resizebegin event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        this.get_events().removeHandler("resizebegin", handler);
    },
    raiseResizeBegin : function() {
        /// <summary>
        /// Raise the resizebegin event
        /// </summary>
        var onresizebeginHandler = this.get_events().getHandler("resizebegin");
        if (onresizebeginHandler) {
            onresizebeginHandler(this, Sys.EventArgs.Empty);
        }
    },

    get_resizebegin : function() {
        /// <value type="Object">
        /// Function to invoke on resizebegin (can be a Function, name of a Function, or expression that evaluates to a Function)
        /// </value>
        return this.get_events().getHandler("resizebegin");
    },
    set_resizebegin : function(value) {
        if (value && (0 < value.length)) {
            var func = $common.resolveFunction(value);
            if (func) { 
                this.add_resizebegin(func);
            } else {
                throw Error.argumentType('value', typeof(value), 'Function', String.format(Sys.Extended.UI.Resources.ResizableControlBehavior_InvalidHandler, 'resizebegin'));
            }
        }
    },

    get_Size : function() {
        /// <value type="Object">
        /// Size of the target (of the form {width, height})
        /// </value>
        return { width: this._measurementToNumber($common.getCurrentStyle(this._lining, 'width')),
            height: this._measurementToNumber($common.getCurrentStyle(this._lining, 'height'))};
    },
    set_Size : function(value) {
        var deltaX = value.width-this._measurementToNumber($common.getCurrentStyle(this._lining, 'width'));
        var deltaY = value.height-this._measurementToNumber($common.getCurrentStyle(this._lining, 'height'));
        this._resizeControl(0, 0, deltaX, deltaY);
        this._rememberSize();
        this.raisePropertyChanged('Size');
    }
}
Sys.Extended.UI.ResizableControlBehavior.registerClass('Sys.Extended.UI.ResizableControlBehavior', Sys.Extended.UI.BehaviorBase);
Sys.registerComponent(Sys.Extended.UI.ResizableControlBehavior, { name: "resizable" });


} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedBase", "ExtendedCommon"], execute);
}
else {
    execute();
}

})();
V// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />
/// <reference path="../DynamicPopulate/DynamicPopulateBehavior.js" />
/// <reference path="../Animation/Animations.js" />
/// <reference path="../Animation/AnimationBehavior.js" />
/// <reference path="../PopupExtender/PopupBehavior.js" />

(function() {
var scriptName = "ExtendedPopupBehavior";

function execute() {

Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.PopupControlBehavior = function(element) {
    /// <summary>
    /// The PopupControlBehavior opens a popup window next to the target element
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// DOM element associated with the behavior
    /// </param>
    Sys.Extended.UI.PopupControlBehavior.initializeBase(this, [element]);
    
    this._popupControlID = null;
    this._commitProperty = null;
    this._commitScript = null;
    this._position = null;
    this._offsetX = 0;
    this._offsetY = 0;
    this._extenderControlID = null;

    this._popupElement = null;
    this._popupBehavior = null;
    this._popupVisible = false;
    this._focusHandler = null;
    this._popupKeyDownHandler = null;
    this._popupClickHandler = null;
    this._bodyClickHandler = null;
    this._onShowJson = null;
    this._onHideJson = null;
}
Sys.Extended.UI.PopupControlBehavior.prototype = {
    initialize : function() {
        /// <summary>
        /// Initialize the behavior
        /// </summary>
        Sys.Extended.UI.PopupControlBehavior.callBaseMethod(this, 'initialize');

        var e = this.get_element();
        this._popupElement = $get(this._popupControlID);

        this._popupBehavior = $create(Sys.Extended.UI.PopupBehavior, { 'id':this.get_id()+'PopupBehavior', 'parentElement':e }, null, null, this._popupElement);
        
        if (this._onShowJson) {
            this._popupBehavior.set_onShow(this._onShowJson);
        }
        if (this._onHideJson) {
            this._popupBehavior.set_onHide(this._onHideJson);
        }

        this._focusHandler = Function.createDelegate(this, this._onFocus);
        this._popupClickHandler = Function.createDelegate(this, this._onPopupClick);
        this._bodyClickHandler = Function.createDelegate(this, this._onBodyClick);
        this._popupKeyDownHandler = Function.createDelegate(this, this._onPopupKeyDown);

        $addHandler(e, 'focus', this._focusHandler);
        $addHandler(e, 'click', this._focusHandler);  // So that a dismissed popup can be more easily re-popped
        $addHandler(document.body, 'click', this._bodyClickHandler);
        $addHandler(this._popupElement, 'click', this._popupClickHandler);
        $addHandler(this._popupElement, 'keydown', this._popupKeyDownHandler);

        this.registerPartialUpdateEvents();

        if(Sys.Extended.UI.PopupControlBehavior.__VisiblePopup && (this.get_id() == Sys.Extended.UI.PopupControlBehavior.__VisiblePopup.get_id())) {
            this._onFocus(null);
        }
    },

    dispose : function() {
        /// <summary>
        /// Dispose the behavior
        /// </summary>

        var e = this.get_element();
    
        this._onShowJson = null;
        this._onHideJson = null;

        if (this._popupBehavior) {
            this._popupBehavior.dispose();
            this._popupBehavior = null;
        }
        if (this._focusHandler) {
            $removeHandler(e, 'focus', this._focusHandler);
            $removeHandler(e, 'click', this._focusHandler);
            this._focusHandler = null;
        }
        if (this._bodyClickHandler) {
            $removeHandler(document.body, 'click', this._bodyClickHandler);
            this._bodyClickHandler = null;
        }
        if (this._popupClickHandler) {
            $removeHandler(this._popupElement, 'click', this._popupClickHandler);
            this._popupClickHandler = null;
        }
        if (this._popupKeyDownHandler) {
            $removeHandler(this._popupElement, 'keydown', this._popupKeyDownHandler);
            this._popupKeyDownHandler = null;
        }
        Sys.Extended.UI.PopupControlBehavior.callBaseMethod(this, 'dispose');
    },

    showPopup : function() {
        /// <summary>
        /// Display the popup
        /// </summary>

        var old = Sys.Extended.UI.PopupControlBehavior.__VisiblePopup;
        if (old && old._popupBehavior) {
            old.hidePopup();
        }

        Sys.Extended.UI.PopupControlBehavior.callBaseMethod(this, 'populate');
        
        this._popupBehavior.set_x(this._getLeftOffset());
        this._popupBehavior.set_y(this._getTopOffset());
        this._popupBehavior.show();
        
        this._popupVisible = true;
        Sys.Extended.UI.PopupControlBehavior.__VisiblePopup = this;
    },

    hidePopup : function() {
        /// <summary>
        /// Hide the popup
        /// </summary>
        
        this._popupBehavior.hide();
        this._popupVisible = false;
        Sys.Extended.UI.PopupControlBehavior.__VisiblePopup = null;
    },

    _onFocus : function(e) {
        /// <summary>
        /// Show the popup when its control is focused
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent" mayBeNull="true">
        /// Event info
        /// </param>
        
        if (!this._popupVisible) {
            this.showPopup();
        }
        if (e) {
            e.stopPropagation();
        }
    },

    _onPopupKeyDown : function(e) {
        /// <summary>
        /// Handle key presses in the popup element
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">
        /// Event info
        /// </param>

        if (this._popupVisible && e.keyCode == 27 /* Escape */) {
            this.get_element().focus();
        }
    },

    _onPopupClick : function(e) {
        /// <summary>
        /// Click handler for the popup
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">
        /// Event info
        /// </param>
        e.stopPropagation();
    },

    _onBodyClick : function() {
        /// <summary>
        /// Handler for the HTML body tag's click event
        /// </summary>

        if (this._popupVisible) {
            this.hidePopup();
        }
    },

    _close : function(result) {
        /// <summary>
        /// Close the popup
        /// </summary>
        /// <param name="result" type="String">
        /// Result obtained from committing the popup
        /// </param>

        var e = this.get_element();

        if (null != result) {
            if ('$$CANCEL$$' != result) {
                if (this._commitProperty) {
                    e[this._commitProperty] = result;
                } else if ('text' == e.type) {
                    e.value = result;
                } else {
                    Sys.Debug.assert(false, String.format(Sys.Extended.UI.Resources.PopupControl_NoDefaultProperty, e.id, e.type));
                }
                if (this._commitScript) {
                    eval(this._commitScript);
                }
            }

            this.hidePopup();
        }
    },

    _partialUpdateEndRequest : function(sender, endRequestEventArgs) {
        /// <summary>
        /// Handler for UpdatePanel partial postback notifications
        /// </summary>
        /// <param name="sender" type="Object">
        /// Sender
        /// </param>
        /// <param name="endRequestEventArgs" type="Sys.WebForms.EndRequestEventArgs">
        /// Event arguments
        /// </param>
        Sys.Extended.UI.PopupControlBehavior.callBaseMethod(this, '_partialUpdateEndRequest', [sender, endRequestEventArgs]);

        if (this.get_element()) {
            var result = endRequestEventArgs.get_dataItems()[this.get_element().id];

            if ((undefined === result) &&
                Sys.Extended.UI.PopupControlBehavior.__VisiblePopup &&
                (this.get_id() == Sys.Extended.UI.PopupControlBehavior.__VisiblePopup.get_id())) {
                    result = endRequestEventArgs.get_dataItems()["_PopupControl_Proxy_ID_"];
            }

            if (undefined !== result) {
                this._close(result);
            }
        }
    },

    _onPopulated : function(sender, eventArgs) {
        /// <summary>
        /// Handler for DynamicPopulate completion
        /// </summary>
        /// <param name="sender" type="Object">
        /// Sender
        /// </param>
        /// <param name="eventArgs" type="Sys.EventArgs">
        /// Event arguments
        /// </param>
        Sys.Extended.UI.PopupControlBehavior.callBaseMethod(this, '_onPopulated', [sender, eventArgs]);

        if (this._popupVisible) {
            this._popupBehavior.show();
        }
    },

    _getLeftOffset : function() {
        /// <summary>
        /// Get the left offset for the popup
        /// </summary>
        /// <returns type="Number" integer="true">
        /// Left offset for the popup
        /// </returns>
 
        if (Sys.Extended.UI.PopupControlPopupPosition.Left == this._position) {
            return (-1 * this.get_element().offsetWidth) + this._offsetX;
        } else if (Sys.Extended.UI.PopupControlPopupPosition.Right == this._position) {
            return this.get_element().offsetWidth + this._offsetX;
        } else {
            return this._offsetX;
        }
    },

    _getTopOffset : function() {
        /// <summary>
        /// Get the top offset for the popup
        /// </summary>
        /// <returns type="Number" integer="true">
        /// Top offset for the popup
        /// </returns>

        var yoffSet;
        if(Sys.Extended.UI.PopupControlPopupPosition.Top == this._position) {
            yoffSet =  (-1 * this.get_element().offsetHeight) + this._offsetY;
        } else if (Sys.Extended.UI.PopupControlPopupPosition.Bottom == this._position) {
            yoffSet =  this.get_element().offsetHeight + this._offsetY;
        } else {
            yoffSet = this._offsetY;
        }
        
        return yoffSet;
    },
    
    get_onShow : function() {
        /// <value type="String" mayBeNull="true">
        /// Generic OnShow Animation's JSON definition
        /// </value>
        return this._popupBehavior ? this._popupBehavior.get_onShow() : this._onShowJson;
    },
    set_onShow : function(value) {
        if (this._popupBehavior) {
            this._popupBehavior.set_onShow(value)
        } else {
            this._onShowJson = value;
        }
        this.raisePropertyChanged('onShow');
    },
    get_onShowBehavior : function() {
        /// <value type="Sys.Extended.UI.Animation.GenericAnimationBehavior">
        /// Generic OnShow Animation's behavior
        /// </value>
        return this._popupBehavior ? this._popupBehavior.get_onShowBehavior() : null;
    },
    onShow : function() {
        /// <summary>
        /// Play the OnShow animation
        /// </summary>
        /// <returns />
        if (this._popupBehavior) {
            this._popupBehavior.onShow();
        }
    },
        
    get_onHide : function() {
        /// <value type="String" mayBeNull="true">
        /// Generic OnHide Animation's JSON definition
        /// </value>
        return this._popupBehavior ? this._popupBehavior.get_onHide() : this._onHideJson;
    },
    set_onHide : function(value) {
        if (this._popupBehavior) {
            this._popupBehavior.set_onHide(value)
        } else {
            this._onHideJson = value;
        }
        this.raisePropertyChanged('onHide');
    },
    get_onHideBehavior : function() {
        /// <value type="Sys.Extended.UI.Animation.GenericAnimationBehavior">
        /// Generic OnHide Animation's behavior
        /// </value>
        return this._popupBehavior ? this._popupBehavior.get_onHideBehavior() : null;
    },
    onHide : function() {
        /// <summary>
        /// Play the OnHide animation
        /// </summary>
        /// <returns />
        if (this._popupBehavior) {
            this._popupBehavior.onHide();
        }
    },
    
    get_PopupControlID : function() {
        /// <value type="String">
        /// The ID of the control to display
        /// </value>
        return this._popupControlID;
    },
    set_PopupControlID : function(value) {
        if (this._popupControlID != value) { 
            this._popupControlID = value;
            this.raisePropertyChanged('PopupControlID');
        }
    },

    get_CommitProperty : function() {
        /// <value type="String" mayBeNull="true" optional="true">
        /// The property on the control being extended that should be set with the result of the popup
        /// </value>
        return this._commitProperty;
    },
    set_CommitProperty : function(value) {
        if (this._commitProperty != value) {
            this._commitProperty = value;
            this.raisePropertyChanged('CommitProperty');
        }
    },

    get_CommitScript : function() {
        /// <value type="String" mayBeNull="true" optional="true">
        /// Additional script to run after setting the result of the popup
        /// </value>
        return this._commitScript;
    },
    set_CommitScript : function(value) {
        if (this._commitScript != value) {
            this._commitScript = value;
            this.raisePropertyChanged('CommitScript');
        }
    },

    get_Position : function() {
        /// <value type="Sys.Extended.UI.PopupControlPopupPosition">
        /// Where the popup should be positioned relative to the target control. (Left, Right, Top, Bottom, Center)
        /// </value>
        return this._position;
    },
    set_Position : function(value) {
        if (this._position != value) {
            this._position = value;
            this.raisePropertyChanged('Position');
        }
    },

    get_ExtenderControlID : function() {
        /// <value type="String">
        /// ID of the extender control
        /// </value>
        return this._extenderControlID;
    },
    set_ExtenderControlID : function(value) {
        if (this._extenderControlID != value) {
            this._extenderControlID = value;
            this.raisePropertyChanged('ExtenderControlID');
        }
    },

    get_OffsetX : function() {
        /// <value type="Number" integer="true">
        /// The number of pixels to horizontally offset the Popup from its default position
        /// </value>
        return this._offsetX;
    },
    set_OffsetX : function(value) {
        if (this._offsetX != value) {
            this._offsetX = value;
            this.raisePropertyChanged('OffsetX');
        }
    },

    get_OffsetY : function() {
        /// <value type="Number" integer="true">
        /// The number of pixels to vertically offset the Popup from its default position
        /// </value>
        return this._offsetY;
    },
    set_OffsetY : function(value) {
        if (this._offsetY != value) {
            this._offsetY = value;
            this.raisePropertyChanged('OffsetY');
        }
    },
    
    get_PopupVisible : function() {
        /// <value type="Boolean">
        /// Whether the popup control is currently visible
        /// </value>
        return this._popupVisible;
    },
    
    add_showing : function(handler) {
        /// <summary>
        /// Add an event handler for the showing event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        
        if (this._popupBehavior) {
            this._popupBehavior.add_showing(handler);
        }
    },
    remove_showing : function(handler) {
        /// <summary>
        /// Remove an event handler from the showing event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        
        if (this._popupBehavior) {
            this._popupBehavior.remove_showing(handler);
        }
    },
    raiseShowing : function(eventArgs) {
        /// <summary>
        /// Raise the showing event
        /// </summary>
        /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
        /// Event arguments for the showing event
        /// </param>
        /// <returns />
        
        if (this._popupBehavior) {
            this._popupBehavior.raiseShowing(eventArgs);
        }
    },
    
    add_shown : function(handler) {
        /// <summary>
        /// Add an event handler for the shown event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        
        if (this._popupBehavior) {
            this._popupBehavior.add_shown(handler);
        }
    },
    remove_shown : function(handler) {
        /// <summary>
        /// Remove an event handler from the shown event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        
        if (this._popupBehavior) {
            this._popupBehavior.remove_shown(handler);
        }
    },
    raiseShown : function(eventArgs) {
        /// <summary>
        /// Raise the shown event
        /// </summary>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="false">
        /// Event arguments for the shown event
        /// </param>
        /// <returns />
        
        if (this._popupBehavior) {
            this._popupBehavior.raiseShown(eventArgs);
        }
    },    
    
    add_hiding : function(handler) {
        /// <summary>
        /// Add an event handler for the hiding event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        
        if (this._popupBehavior) {
            this._popupBehavior.add_hiding(handler);
        }
    },
    remove_hiding : function(handler) {
        /// <summary>
        /// Remove an event handler from the hiding event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        
        if (this._popupBehavior) {
            this._popupBehavior.remove_hiding(handler);
        }
    },
    raiseHiding : function(eventArgs) {
        /// <summary>
        /// Raise the hiding event
        /// </summary>
        /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
        /// Event arguments for the hiding event
        /// </param>
        /// <returns />
        
        if (this._popupBehavior) {
            this._popupBehavior.raiseHiding(eventArgs);
        }
    },
    
    add_hidden : function(handler) {
        /// <summary>
        /// Add an event handler for the hidden event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        
        if (this._popupBehavior) {
            this._popupBehavior.add_hidden(handler);
        }
    },
    remove_hidden : function(handler) {
        /// <summary>
        /// Remove an event handler from the hidden event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        
        if (this._popupBehavior) {
            this._popupBehavior.remove_hidden(handler);
        }
    },
    raiseHidden : function(eventArgs) {
        /// <summary>
        /// Raise the hidden event
        /// </summary>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="false">
        /// Event arguments for the hidden event
        /// </param>
        /// <returns />
        
        if (this._popupBehavior) {
            this._popupBehavior.raiseHidden(eventArgs);
        }
    }
}
Sys.Extended.UI.PopupControlBehavior.registerClass('Sys.Extended.UI.PopupControlBehavior', Sys.Extended.UI.DynamicPopulateBehaviorBase);
Sys.registerComponent(Sys.Extended.UI.PopupControlBehavior, { name: "popupBehavior" });

Sys.Extended.UI.PopupControlBehavior.__VisiblePopup = null;


Sys.Extended.UI.PopupControlPopupPosition = function() {
    /// <summary>
    /// Position of the popup relative to the target control
    /// </summary>
    /// <field name="Center" type="Number" integer="true" />
    /// <field name="Top" type="Number" integer="true" />
    /// <field name="Left" type="Number" integer="true" />
    /// <field name="Bottom" type="Number" integer="true" />
    /// <field name="Right" type="Number" integer="true" />
    throw Error.invalidOperation();
}
Sys.Extended.UI.PopupControlPopupPosition.prototype = {
    Center : 0,
    Top : 1,
    Left : 2,
    Bottom : 3,
    Right : 4
}
Sys.Extended.UI.PopupControlPopupPosition.registerEnum("Sys.Extended.UI.PopupControlPopupPosition", false);

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedDynamicPopulate", "ExtendedPopup", "ExtendedAnimationBehavior"], execute);
}
else {
    execute();
}

})();
h�// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />

(function() {
var scriptName = "ExtendedPasswordStrength";

function execute() {

Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.PasswordStrengthExtenderBehavior = function(element) {
    Sys.Extended.UI.PasswordStrengthExtenderBehavior.initializeBase(this, [element]);

    this._levelArray = new Array();
    this._styleArray = new Array();
    
    this._txtPwdStrengthCssClass = null;
    this._barBorderCssClass = null;
    this._barIndicatorCssClass = null;
    this._displayPosition = Sys.Extended.UI.DisplayPosition.RightSide;
    this._strengthIndicator = Sys.Extended.UI.StrengthIndicatorTypes.Text;
    
    this._preferredPasswordLength = 0;
    this._minimumNumericCharacters = 0;
    this._minimumSymbolCharacters = 0;
    this._requiresUpperAndLowerCaseCharacters = false;
    this._helpHandleCssClass = '';
    this._helpHandlePosition =  Sys.Extended.UI.DisplayPosition.AboveRight;
    this._helpText = '';
    this._helpStatusLabelID = null;
    
    this._displayDiv = null; // The DIV for displaying the textual indicator
    this._helpDiv = null;  // The DIV that the user can click on to display the password requirements
    
    this._barOuterDiv = null;  // The outer DIV for the bar indicator
    this._barInnerDiv = null;  // The Inner DIV for the bar indicator
    
    this._keyPressHandler = null;
    this._blurHandler = null;
    this._helpClickHandler = null;
    this._prefixText = Sys.Extended.UI.Resources.PasswordStrength_StrengthPrompt;
    
    this._txtStrengthDescriptions = Sys.Extended.UI.Resources.PasswordStrength_DefaultStrengthDescriptions;
    this._strengthStyles = '';
    this._barIndicatorStyles = '';
    this._txtseparator = ';';
    this._MIN_TXT_LEVEL_COUNT = 2;
    this._MAX_TXT_LEVEL_COUNT = 10;
    
    this._calcWeightings = "50;15;15;20";

    this._minLowerCaseChars = 0;
    this._minUpperCaseChars = 0;
}
        
Sys.Extended.UI.PasswordStrengthExtenderBehavior.prototype = {
    
    
    initialize : function() {
        Sys.Extended.UI.PasswordStrengthExtenderBehavior.callBaseMethod(this, 'initialize');
        
        this._createIndicatorDisplayElement();
        
        var e = this.get_element();

        this._keyPressHandler = Function.createDelegate(this, this._onKeyPress);
        this._blurHandler = Function.createDelegate(this, this._onBlur);
        

        $addHandler(e,'keyup', this._keyPressHandler);
        $addHandler(e,'blur', this._blurHandler);
        
        if (this._preferredPasswordLength == null || this._preferredPasswordLength == '' || this._preferredPasswordLength <= 0) {
            this._preferredPasswordLength = 10;  // Set to at least 10 chars as a preferred pwd length, even though this is very small.
            this.raisePropertyChanged('PreferredPasswordLength');
        }
        if (this._calcWeightings == null || this._calcWeightings == "") {
            this._calcWeightings = "50;15;15;20";
            this.raisePropertyChanged('CalculationWeightings');
        }
        
        this._getPasswordStrength();

    },
    
    _createIndicatorDisplayElement : function() {
            
        if (this._strengthIndicator == Sys.Extended.UI.StrengthIndicatorTypes.BarIndicator)
            this._createBarIndicatorDisplayElement();
        else
            this._createTextDisplayElement();
        
        if (this._createHelpDisplayElement() == true)
        {
             $common.setVisible(this._helpDiv,true);

            
            var bounds = $common.getBounds(this.get_element());
            
            var helpBounds = $common.getBounds(this._helpDiv);
            var posY;
            var posX;
            var offset = 3;  // 3 pixels for a very small amount of overlap to "connect" the help icon to the textbox

            if (this._helpHandlePosition == "LeftSide")
            {
                posY = bounds.y + ((bounds.height / 2) - (helpBounds.height / 2));
                posX = bounds.x - helpBounds.width;
            } else if (this._helpHandlePosition == "BelowRight")
            {
                posY = bounds.y + bounds.height - offset;   // Just one pixel for a small overlap
                posX = bounds.x + bounds.width - offset;
            } else if (this._helpHandlePosition == "BelowLeft")
            {
                posY = bounds.y + bounds.height - offset;
                posX = bounds.x - helpBounds.width + offset;
            } else if (this._helpHandlePosition == "RightSide")
            {
                posY = bounds.y + ((bounds.height / 2) - (helpBounds.height / 2));
                posX = bounds.x + bounds.width;
            } else if (this._helpHandlePosition == "AboveLeft")
            {
                posY = bounds.y - helpBounds.height + offset;
                posX = bounds.x - helpBounds.width + offset;

            } else   // This fall through logic gets called if the Help position is "AboveRight" or anything else for that matter
            {
                posY = bounds.y  - helpBounds.height + offset;
                posX = bounds.x + bounds.width - offset;
            }

            this._helpDiv.style.top = posY + 'px';
            this._helpDiv.style.left = posX + 'px';

        }

    },
    
    _createTextDisplayElement : function() {
        var p = document.createElement("label");  
        p.style.position= "absolute"; 
        p.style.visibility="hidden";
        p.style.display = "none";

        if (this.get_element().id) {
            p.id = this.get_element().id + "_PasswordStrength";
        }
        
        this._displayDiv = p;
        

        this._setTextDisplayLocation(p);
        
        document.body.appendChild(p);
        
        this._setTextDisplayStyle(0);
        
    },
    
    _setTextDisplayStyle : function(index) {
        if (this._styleArray.length == 0)
        {
            if (this._txtPwdStrengthCssClass)
                this._displayDiv.className = this._txtPwdStrengthCssClass;
            else
                this._displayDiv.style.backgroundColor = "yellow";
        } else
        {
            this._displayDiv.style.backgroundColor = "";
            if (this._txtPwdStrengthCssClass &&
                Sys.UI.DomElement.containsCssClass(this._displayDiv,this._txtPwdStrengthCssClass))
            {
                Sys.UI.DomElement.removeCssClass(this._displayDiv,this._txtPwdStrengthCssClass)
            }
            this._displayDiv.className = this._styleArray[index];
        }
        
    },
    
    _setBarDisplayStyle : function(index) {
        if (this._barBorderCssClass != '')
            this._barOuterDiv.className = this._barBorderCssClass;
        else
        {
            d1.style.width="200px";
            d1.style.borderStyle="solid";
            d1.style.borderWidth="1px";
        }

        if (this._styleArray.length == 0)
        {
            if (this._barIndicatorCssClass != '')
                this._barInnerDiv.className = this._barIndicatorCssClass;
            else
                this._barInnerDiv.style.backgroundColor = "red";
        } else
        {
            if (this._barIndicatorCssClass && 
                Sys.UI.DomElement.containsCssClass(this._barInnerDiv,this._barIndicatorCssClass))
            {
                Sys.UI.DomElement.removeCssClass(this._barInnerDiv,this._barIndicatorCssClass)
            }
            this._barInnerDiv.className = this._styleArray[index];
            
        }
        
    },

    _createBarIndicatorDisplayElement : function() {
        var d1 = document.createElement("div");  // outer div
        d1.style.position= "absolute"; 
        d1.style.visibility="hidden";
        d1.style.display = "none";

        var d2 = document.createElement("div");  // inner div, the bar itself
        d2.style.position= "absolute"; 
        d2.style.visibility="hidden";
        d2.style.display = "none";
        
        d1.style.height = this.get_element().offsetHeight+4 + "px";

        if (this.get_element().id) {
            d1.id = this.get_element().id + "_PasswordStrengthBar1";
            d2.id = this.get_element().id + "_PasswordStrengthBar2";
        }

        this._barOuterDiv = d1;
        this._barInnerDiv = d2;
        
        this._extractStyles();
        
        this._setBarDisplayStyle(0);

        document.body.appendChild(d1);
        document.body.appendChild(d2);

        this._setBarDisplayLocation(d1,d2);
        
    },

    _createHelpDisplayElement : function() {
        if (this._helpHandleCssClass != '')
        {
            var req = document.createElement("a");
            
            req.style.position= "absolute"; 
            req.style.visibility="hidden";
            req.style.display = "none";
            req.href = "#"; // fix for work item #8217
            req.title = Sys.Extended.UI.Resources.PasswordStrength_GetHelpRequirements;

            if (this.get_element().id) {
                req.id = this.get_element().id + "_PasswordStrengthReqDisplay";
            }

            this._helpClickHandler = Function.createDelegate(this,this._onHelpClick);
            $addHandler(req,'click',this._helpClickHandler);

            this._helpDiv = req;
            
        
            this._helpDiv.className = this._helpHandleCssClass;
            if (this.get_element().parentElement != null && this.get_element().parentElement.canHaveChildren)
                this.get_element().parentElement.appendChild(req);
            else
                document.body.appendChild(req);
            
            return true;
        } else
            return false;
    },

    _setTextDisplayLocation : function(htmlElement) {
        var location = $common.getLocation(this.get_element());
        var bounds = $common.getBounds(this.get_element());
        var offsetAmount = 15;
        
        if (this._displayPosition == Sys.Extended.UI.DisplayPosition.LeftSide)
        {
            htmlElement.style.top = location.y + "px";
            htmlElement.style.left = location.x - bounds.width - offsetAmount + "px"; 
        } else if (this._displayPosition == "BelowRight")
        {
            htmlElement.style.top = location.y + this.get_element().offsetHeight + "px";
            htmlElement.style.left = location.x + this.get_element().offsetWidth - (this.get_element().offsetWidth/4) + "px";
        } else if (this._displayPosition == Sys.Extended.UI.DisplayPosition.BelowLeft)
        {
            htmlElement.style.top = location.y + this.get_element().offsetHeight + "px";
            htmlElement.style.left = location.x - offsetAmount + "px";
        } else if (this._displayPosition == Sys.Extended.UI.DisplayPosition.AboveRight)
        {
            htmlElement.style.top = location.y  - this.get_element().offsetHeight + "px";
            htmlElement.style.left = location.x + this.get_element().offsetWidth - (this.get_element().offsetWidth/4) + "px";
        } else if (this._displayPosition == Sys.Extended.UI.DisplayPosition.AboveLeft)
        {
            htmlElement.style.top = location.y - this.get_element().offsetHeight + "px";
            htmlElement.style.left = location.x - offsetAmount + "px";
        } else   // This fall through logic gets called if the DisplayPositon is "RightSide" or anything else for that matter
        {
            htmlElement.style.top = location.y + "px";
            htmlElement.style.left = location.x + this.get_element().offsetWidth + offsetAmount + "px";
        }
    },
    
    _setBarDisplayLocation : function(outerElement, innerElement) {
        
        if (this.get_element().offsetHeight > 0) {

            var outerBorder = $common.getBorderBox(outerElement);
            var outerPadding = $common.getPaddingBox(outerElement);
            var leftIndent = outerBorder.left + outerPadding.left;
            var topIndent = outerBorder.top + outerPadding.top;
            
            innerElement.style.height = this.get_element().offsetHeight  + "px";    // why does IE only do a minimum height????
            outerElement.style.height = this.get_element().offsetHeight  + "px";
            

            var location = $common.getLocation(this.get_element());

            var offsetAmount = 15;
            
            if (this._displayPosition == Sys.Extended.UI.DisplayPosition.LeftSide)
            {
                
                var initialVisibleState = $common.getVisible(this._barOuterDiv);
                
                $common.setVisible(this._barOuterDiv,true);        
                var barBounds = $common.getContentSize(outerElement);
                $common.setVisible(this._barOuterDiv, initialVisibleState);   
                
                var _barIndicatorWidth = barBounds.width;

                outerElement.style.top = location.y + "px";
                outerElement.style.left = location.x - parseInt(_barIndicatorWidth) - offsetAmount + "px";
                
                innerElement.style.top = location.y + topIndent + "px";
                innerElement.style.left = location.x - parseInt(_barIndicatorWidth) - offsetAmount + leftIndent + "px";
            } else if (this._displayPosition == Sys.Extended.UI.DisplayPosition.BelowRight)
            {
                outerElement.style.top = location.y + this.get_element().offsetHeight + "px";
                outerElement.style.left = location.x + this.get_element().offsetWidth + "px";
                
                innerElement.style.top = location.y + this.get_element().offsetHeight + topIndent + "px";
                innerElement.style.left = location.x + this.get_element().offsetWidth + leftIndent + "px";
            } else if (this._displayPosition == Sys.Extended.UI.DisplayPosition.BelowLeft)
            {
                outerElement.style.top = location.y + this.get_element().offsetHeight + "px";
                outerElement.style.left = location.x + "px";
                
                innerElement.style.top = location.y + this.get_element().offsetHeight + topIndent + "px";
                innerElement.style.left = location.x + leftIndent + "px";
            } else if (this._displayPosition == Sys.Extended.UI.DisplayPosition.AboveRight)
            {
                outerElement.style.top = location.y-this.get_element().offsetHeight + "px";
                outerElement.style.left = location.x + this.get_element().offsetWidth + "px";
                
                innerElement.style.top = location.y-this.get_element().offsetHeight + topIndent + "px";
                innerElement.style.left = location.x + this.get_element().offsetWidth + leftIndent + "px";

            } else if (this._displayPosition == Sys.Extended.UI.DisplayPosition.AboveLeft)
            {
                outerElement.style.top = location.y-this.get_element().offsetHeight + "px";
                outerElement.style.left = location.x + "px";
                
                innerElement.style.top = location.y-this.get_element().offsetHeight + topIndent + "px";
                innerElement.style.left = location.x + leftIndent + "px";
            } else   // This fall through logic gets called if the DisplayPositon is "RightSide" or anything else for that matter
            {
                outerElement.style.top = location.y + "px";
                outerElement.style.left = location.x + this.get_element().offsetWidth + offsetAmount + "px";
                
                innerElement.style.top = location.y + topIndent + "px";
                innerElement.style.left = location.x + this.get_element().offsetWidth + offsetAmount + leftIndent + "px";
            }
        }
    },

    _showStrength : function() {
    
        var e = this.get_element();
        
        if (e.readOnly == true)
            return;

        var pwdStrength = this._getPasswordStrength();
        
        if (this._strengthIndicator == Sys.Extended.UI.StrengthIndicatorTypes.BarIndicator)
        {
            
            $common.setVisible(this._barOuterDiv , true);
            $common.setVisible(this._barInnerDiv, true);

            var index = 0;
            if (this._styleArray != null && this._styleArray.length > 0)
            {
                index = parseInt(pwdStrength/100 * (this._styleArray.length-1));
            }
            this._setBarDisplayStyle(index);

            this._setBarDisplayLocation(this._barOuterDiv,this._barInnerDiv);
             
            this._showStrengthAsBarValue(pwdStrength);
            
            
        } else
        {
            this._createTextDescriptions(this._txtStrengthDescriptions);
      
            $common.setVisible(this._displayDiv, true);
            
            var index = parseInt(pwdStrength/100 * (this._levelArray.length-1));
            var pwdStrengthText = this._levelArray[index];
            
            this._setTextDisplayStyle(index);
            
            this._setTextDisplayLocation(this._displayDiv);
            
            this._showStrengthAsText(pwdStrengthText);   

        }
        
    },
    
    _showStrengthAsText : function(pwdStrengthVal) {
        this._displayDiv.innerHTML = this._prefixText + pwdStrengthVal;
    },
    
    _showStrengthAsBarValue : function(strengthValue) {
        var bounds = $common.getContentSize(this._barOuterDiv);
        var outerPadding = $common.getPaddingBox(this._barOuterDiv);
        var barLength = parseInt( bounds.width * (strengthValue / 100));
        this._barInnerDiv.style.width = barLength + "px";
    },
    
    _getPasswordStrength : function() {
        
        var pwd = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element()).get_Value();
        
        var pwdRequirements = '';  // This will contain what is required to make this password a 'strong' password.
        
        var percentTotal = 0;
        
        var weights = this._calcWeightings.split(';');
        if (weights.length != 4)
            Sys.Debug.assert(null, Sys.Extended.UI.Resources.PasswordStrength_InvalidWeightingRatios);

        var _ratioLen = parseInt(weights[0]);
        var _ratioNum = parseInt(weights[1]);
        var _ratioCas = parseInt(weights[2]);
        var _ratioSym = parseInt(weights[3]);
        
        var ratio = pwd.length / this._preferredPasswordLength;
        if (ratio > 1)
            ratio = 1;
        
        var lengthStrength = (ratio * _ratioLen);
        
        percentTotal += lengthStrength;
        
        if (ratio < 1)
            pwdRequirements = String.format(Sys.Extended.UI.Resources.PasswordStrength_RemainingCharacters, this._preferredPasswordLength - pwd.length);
            
        if (this._minimumNumericCharacters > 0)
        {
            var numbersRegex = new RegExp("[0-9]", "g");
            var numCount = this._getRegexCount(numbersRegex,pwd);
            if ( numCount >= this._minimumNumericCharacters)
                percentTotal += _ratioNum;
            
            if (numCount < this._minimumNumericCharacters)
            {
                if (pwdRequirements != '')
                    pwdRequirements += ', ';
                pwdRequirements += String.format(Sys.Extended.UI.Resources.PasswordStrength_RemainingNumbers, this._minimumNumericCharacters - numCount);
            }
        } else
        {
            percentTotal += (ratio * _ratioNum);
        }
            
        if (this._requiresUpperAndLowerCaseCharacters == true ||
            (typeof(this._requiresUpperAndLowerCaseCharacters) == 'String' && Boolean.parse(this._requiresUpperAndLowerCaseCharacters) == true) )
        {
            var lowercaseRegex = new RegExp("[a-z]", "g");
            var uppercaseRegex = new RegExp("[A-Z]", "g");
            
            var numLower = this._getRegexCount(lowercaseRegex,pwd);
            var numUpper = this._getRegexCount(uppercaseRegex,pwd);

            if (numLower > 0 || numUpper > 0)
            {
                if (numLower >= this._minLowerCaseChars && numUpper >= this._minUpperCaseChars)
                    percentTotal += _ratioCas;
                else
                {
                    if (this._minLowerCaseChars > 0 && (this._minLowerCaseChars - numLower) > 0)
                    {
                        if (pwdRequirements != '')
                            pwdRequirements += ', ';
                        pwdRequirements += String.format(Sys.Extended.UI.Resources.PasswordStrength_RemainingLowerCase, this._minLowerCaseChars - numLower);
                    }
                    if (this._minUpperCaseChars > 0 && (this._minUpperCaseChars - numUpper) > 0)
                    {
                        if (pwdRequirements != '')
                            pwdRequirements += ', ';
                        pwdRequirements += String.format(Sys.Extended.UI.Resources.PasswordStrength_RemainingUpperCase, this._minUpperCaseChars - numUpper);
                    }
                }
                
            }
            else
            {
                if (pwdRequirements != '')
                    pwdRequirements += ', ';
                pwdRequirements += Sys.Extended.UI.Resources.PasswordStrength_RemainingMixedCase;

            }
        } else
        {
            percentTotal += (ratio * _ratioCas);
        }


        if (this._minimumSymbolCharacters > 0)
        {
            var symbolRegex = new RegExp("[^a-z,A-Z,0-9,\x20]", "g"); // related to work item 1034
            var numCount = this._getRegexCount(symbolRegex,pwd);
            if (numCount >= this._minimumSymbolCharacters)
                percentTotal += _ratioSym;
            
            if (numCount < this._minimumSymbolCharacters)
            {
                if (pwdRequirements != '')
                    pwdRequirements += ', ';
                pwdRequirements += String.format(Sys.Extended.UI.Resources.PasswordStrength_RemainingSymbols, this._minimumSymbolCharacters - numCount);
            }

        } else
        {
            percentTotal += (ratio * _ratioSym);
        }
        
        this.set_HelpText(pwdRequirements);
        
        return percentTotal;
        
    },
    
    _getRegexCount : function(regex,testString) {
        var cnt = 0;
        if (testString != null && testString != "")
        {
            var results = testString.match(regex);
            if (results != null)
                cnt = results.length;
        }
        return cnt;
    },

    _extractStyles : function() {
        if (this._strengthStyles != null && this._strengthStyles != "" )
            this._styleArray = this._strengthStyles.split(this._txtseparator);

    },
    
    _createTextDescriptions : function(descriptions) {
        this._levelArray = this._txtStrengthDescriptions.split(this._txtseparator);
        
        this._extractStyles();
                
        if (this._styleArray.length > 0 && this._styleArray.length != this._levelArray.length)
        {
            Sys.Debug.assert(false, Sys.Extended.UI.Resources.PasswordStrength_InvalidStrengthDescriptionStyles);
        }
            
        if (this._levelArray.length < this._MIN_TXT_LEVEL_COUNT || this._levelArray > this._MAX_TXT_LEVEL_COUNT)
        {
            Sys.Debug.assert(false, Sys.Extended.UI.Resources.PasswordStrength_InvalidStrengthDescriptions);
        }
    },
    
    _onKeyPress : function() {
        
        this._showStrength();
    },

    _onBlur : function() {
        if (this._strengthIndicator == Sys.Extended.UI.StrengthIndicatorTypes.BarIndicator)
        {
             $common.setVisible(this._barOuterDiv, false);
             $common.setVisible(this._barInnerDiv, false);
        } else
        {
            $common.setVisible(this._displayDiv, false);
        }
    },
    
    _onHelpClick : function() {
        if (this._helpText == '')
            alert(Sys.Extended.UI.Resources.PasswordStrength_Satisfied);
        else
            alert(this._helpText);
    },
    
    dispose : function() {
        var e = this.get_element();

        if (this._keyPressHandler) {
            $removeHandler(e,'keyup', this._keyPressHandler);
            this._keyPressHandler = null;
        }
        if (this._blurHandler) {
            $removeHandler(e,'blur', this._blurHandler);
            this._blurHandler = null;
        }
        if (this._helpClickHandler) {
            $removeHandler(this._helpDiv, 'click', this._helpClickHandler);
            this._helpClickHandler = null;
        }

        if(this._displayDiv) 
           $common.setVisible(this._displayDiv, false);

        if (this._barOuterDiv)
             $common.setVisible(this._barOuterDiv,false);
        if (this._barInnerDiv)
             $common.setVisible(this._barInnerDiv, false);
        
        
        if (this._helpHandleCssClass != '' && this._helpDiv)
             $common.setVisible(this._helpDiv ,false);
       
        Sys.Extended.UI.PasswordStrengthExtenderBehavior.callBaseMethod(this, 'dispose');
    },
    
    get_PreferredPasswordLength : function() {
        return this._preferredPasswordLength;
    },

    set_PreferredPasswordLength : function(value) {
        if (this._preferredPasswordLength != value) {
            this._preferredPasswordLength = value;
            this.raisePropertyChanged('PreferredPasswordLength');
        }
    },

    get_MinimumNumericCharacters : function() {
        return this._minimumNumericCharacters;
    },

    set_MinimumNumericCharacters : function(value) {
        if (this._minimumNumericCharacters != value) {
            this._minimumNumericCharacters = value;
            this.raisePropertyChanged('MinimumNumericCharacters');
        }
    },
    
    get_MinimumSymbolCharacters : function() {
        return this._minimumSymbolCharacters;
    },

    set_MinimumSymbolCharacters : function(value) {
        if (this._minimumSymbolCharacters != value) {
            this._minimumSymbolCharacters = value;
            this.raisePropertyChanged('MinimumSymbolCharacters');
        }
    },
    get_RequiresUpperAndLowerCaseCharacters : function() {
        return this._requiresUpperAndLowerCaseCharacters;
    },

    set_RequiresUpperAndLowerCaseCharacters : function(value) {
        if (this._requiresUpperAndLowerCaseCharacters != value) {
            this._requiresUpperAndLowerCaseCharacters = value;
            this.raisePropertyChanged('RequiresUpperAndLowerCaseCharacters');
        }
    },

    get_TextCssClass : function() {
        return this._txtPwdStrengthCssClass;
    },

    set_TextCssClass : function(value) {
        if (this._txtPwdStrengthCssClass != value) {
            this._txtPwdStrengthCssClass = value;
            this.raisePropertyChanged('TextCssClass');
        }
    },

    get_BarBorderCssClass : function() {
        return this._barBorderCssClass;
    },

    set_BarBorderCssClass : function(value) {
        if (this._barBorderCssClass != value) {
            this._barBorderCssClass = value;
            this.raisePropertyChanged('BarBorderCssClass');
        }
    },
    get_BarIndicatorCssClass : function() {
        return this._barIndicatorCssClass;
    },
    
    set_BarIndicatorCssClass : function(value) {
        if (this._barIndicatorCssClass != value) {
            this._barIndicatorCssClass = value;
            this.raisePropertyChanged('BarIndicatorCssClass');
        }
    },


    get_DisplayPosition : function() {
        return this._displayPosition;
    },
    
    set_DisplayPosition : function(value) {
        if (this._displayPosition != value) {
            this._displayPosition = value;
            this.raisePropertyChanged('DisplayPosition');
        }
    },

    
    get_PrefixText : function() {
        return this._prefixText;
    },
    
    set_PrefixText : function(value) {
        if (this._prefixText != value) {
            this._prefixText = value;
            this.raisePropertyChanged('PrefixText');
        }
    },

    get_StrengthIndicatorType : function() {
        return this._strengthIndicator;
    },
    
    set_StrengthIndicatorType : function(value) {
        if (this._strengthIndicator != value) {
            this._strengthIndicator = value;
            this.raisePropertyChanged('StrengthIndicatorType');
        }
    },
    
    get_TextStrengthDescriptions : function() {
        return this._txtStrengthDescriptions;
    },
    
    set_TextStrengthDescriptions : function(value) {
        if (value != null && value != '' && value != this._txtStrengthDescriptions) {
            this._txtStrengthDescriptions = value;
            this.raisePropertyChanged('TextStrengthDescriptions');
        }
    },

    get_StrengthStyles : function() {
        return this._strengthStyles;
    },
    
    set_StrengthStyles : function(value) {
        if (value != null && value != '' && value != this._strengthStyles) {
            this._strengthStyles = value;
            this.raisePropertyChanged('StrengthStyles');
        }
    },
    
    get_TextStrengthDescriptionStyles : function() {
        return this.get_StrengthStyles();
    },
    
    set_TextStrengthDescriptionStyles : function(value) {
    	this.set_StrengthStyles(value);
    },

    
    get_HelpHandleCssClass : function() {
        return this._helpHandleCssClass;
    },
    
    set_HelpHandleCssClass : function(value) {
        if (this._helpHandleCssClass != value) {
            this._helpHandleCssClass = value;
            this.raisePropertyChanged('HelpHandleCssClass');
        }
    },
        
    get_HelpHandlePosition : function() {
        return this._helpHandlePosition;
    },
    
    set_HelpHandlePosition : function(value) {
        if (this._helpHandlePosition != value) {
            this._helpHandlePosition = value;
            this.raisePropertyChanged('HelpHandlePosition');
        }
    },
    
    get_HelpText : function() {
        return this._helpText;
    },
    
    get_CalculationWeightings : function() {
        return this._calcWeightings;
    },
    
    set_CalculationWeightings : function(value) {
        if (this._calcWeightings != value) {
            this._calcWeightings = value;
            this.raisePropertyChanged('CalculationWeightings');
        }
    },
    
    set_HelpText : function(value) {
        if (this._helpStatusLabelID) {
            var label = $get(this._helpStatusLabelID);
            if (label) {
                if (Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element()).get_Value().length > 0) {            
                    label.innerHTML = value;
                }
                else {
                    label.innerHTML = "";
                }
            }
        }
        if (this._helpText != value) {
            this._helpText = value;
            this.raisePropertyChanged('HelpText');
        }
    },
    
    get_MinimumLowerCaseCharacters : function() {
        return this._minLowerCaseChars;
    },
            
    set_MinimumLowerCaseCharacters : function(value) {
        this._minLowerCaseChars = value;
    },

    get_MinimumUpperCaseCharacters : function() {
        return this._minUpperCaseChars;
    },
            
    set_MinimumUpperCaseCharacters : function(value) {
        this._minUpperCaseChars = value;
    },

    get_HelpStatusLabelID : function() {
        return this._helpStatusLabelID;
    },
    
    set_HelpStatusLabelID : function(value) {
        if (this._helpStatusLabelID != value) {
            this._helpStatusLabelID = value;
            this.raisePropertyChanged('HelpStatusLabelID');
        }
    }
}


Sys.Extended.UI.PasswordStrengthExtenderBehavior.registerClass('Sys.Extended.UI.PasswordStrengthExtenderBehavior', Sys.Extended.UI.BehaviorBase);
Sys.registerComponent(Sys.Extended.UI.PasswordStrengthExtenderBehavior, { name: "passwordStrength" });


Sys.Extended.UI.StrengthIndicatorTypes = function() {
    throw Error.invalidOperation();
}
Sys.Extended.UI.DisplayPosition = function() {
    throw Error.invalidOperation();
}

Sys.Extended.UI.StrengthIndicatorTypes.prototype = {
    Text: 0,
    BarIndicator: 1
}

Sys.Extended.UI.DisplayPosition.prototype = {
    RightSide: 0,
    AboveRight: 1,
    AboveLeft: 2,
    LeftSide: 3,
    BelowRight: 4,
    BelowLeft: 5
}

Sys.Extended.UI.DisplayPosition.registerEnum('Sys.Extended.UI.DisplayPosition');
Sys.Extended.UI.StrengthIndicatorTypes.registerEnum('Sys.Extended.UI.StrengthIndicatorTypes');

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedBase", "ExtendedCommon"], execute);
}
else {
    execute();
}

})();
	// (c) 2010 CodePlex Foundation
(function(){var a=null;function b(){var c=false,b=true;Type._registerScript("Timer.js",["MicrosoftAjaxComponentModel.js"]);var d,e;d=Sys.UI._Timer=function(e){var d=this;Sys.UI._Timer.initializeBase(d,[e]);d._interval=6e4;d._enabled=b;d._postbackPending=c;d._raiseTickDelegate=a;d._endRequestHandlerDelegate=a;d._timer=a;d._pageRequestManager=a;d._uniqueID=a};d.prototype={get_enabled:function(){return this._enabled},set_enabled:function(a){this._enabled=a},get_interval:function(){return this._interval},set_interval:function(a){this._interval=a},get_uniqueID:function(){return this._uniqueID},set_uniqueID:function(a){this._uniqueID=a},dispose:function(){var b=this;b._stopTimer();b._pageRequestManager!==a&&b._pageRequestManager.remove_endRequest(b._endRequestHandlerDelegate);Sys.UI._Timer.callBaseMethod(b,"dispose")},_doPostback:function(){__doPostBack(this.get_uniqueID(),"")},_handleEndRequest:function(g,f){var d=this,e=f.get_dataItems()[d.get_id()];e&&d._update(e[0],e[1]);if(d._postbackPending===b&&d._pageRequestManager!==a&&d._pageRequestManager.get_isInAsyncPostBack()===c){d._postbackPending=c;d._doPostback()}},initialize:function(){var b=this;Sys.UI._Timer.callBaseMethod(b,"initialize");b._raiseTickDelegate=Function.createDelegate(b,b._raiseTick);b._endRequestHandlerDelegate=Function.createDelegate(b,b._handleEndRequest);if(Sys.WebForms&&Sys.WebForms.PageRequestManager)b._pageRequestManager=Sys.WebForms.PageRequestManager.getInstance();b._pageRequestManager!==a&&b._pageRequestManager.add_endRequest(b._endRequestHandlerDelegate);b.get_enabled()&&b._startTimer()},_raiseTick:function(){var d=this;d._startTimer();if(d._pageRequestManager===a||!d._pageRequestManager.get_isInAsyncPostBack()){d._doPostback();d._postbackPending=c}else d._postbackPending=b},_startTimer:function(){var a=this;a._timer=window.setTimeout(Function.createDelegate(a,a._raiseTick),a.get_interval())},_stopTimer:function(){if(this._timer!==a){window.clearTimeout(this._timer);this._timer=a}},_update:function(e,d){var a=this,c=!a.get_enabled(),f=a.get_interval()!==d;if(!c&&(!e||f)){a._stopTimer();c=b}a.set_enabled(e);a.set_interval(d);a.get_enabled()&&c&&a._startTimer()}};d.registerClass("Sys.UI._Timer",Sys.UI.Control)}if(window.Sys&&Sys.loader)Sys.loader.registerScript("Timer",a,b);else b()})();�// (c) 2010 CodePlex Foundation
(function(){var a=null;function b(){var d="completed",g="completedRequest",f="invokingRequest",j="Sys.Net.XMLHttpExecutor",i="function",b=true,h="SelectionLanguage";Type._registerScript("MicrosoftAjaxNetwork.js",["MicrosoftAjaxSerialization.js"]);var c,k;if(!window.XMLHttpRequest)window.XMLHttpRequest=function(){for(var e,c=["Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP"],b=0,d=c.length;b<d;b++)try{return new ActiveXObject(c[b])}catch(e){}return a};Type.registerNamespace("Sys.Net");c=Sys.Net.WebRequestExecutor=function(){this._webRequest=a;this._resultObject=a};var e=function(){};c.prototype={get_started:e,get_responseAvailable:e,get_timedOut:e,get_aborted:e,get_responseData:e,get_statusCode:e,get_statusText:e,get_xml:e,executeRequest:e,abort:e,getAllResponseHeaders:e,getResponseHeader:e,get_webRequest:function(){return this._webRequest},_set_webRequest:function(a){this._webRequest=a},get_object:function(){var a=this._resultObject;if(!a)this._resultObject=a=Sys.Serialization.JavaScriptSerializer.deserialize(this.get_responseData());return a}};c.registerClass("Sys.Net.WebRequestExecutor");Sys.Net.XMLDOM=function(e){if(!window.DOMParser)for(var i,d=["Msxml2.DOMDocument.3.0","Msxml2.DOMDocument"],c=0,g=d.length;c<g;c++)try{var b=new ActiveXObject(d[c]);b.async=false;b.loadXML(e);b.setProperty(h,"XPath");return b}catch(i){}else try{var f=new window.DOMParser;return f.parseFromString(e,"text/xml")}catch(i){}return a};c=Sys.Net.XMLHttpExecutor=function(){var d=this;Sys.Net.XMLHttpExecutor.initializeBase(d);var c=d;d._onReadyStateChange=function(){if(c._xmlHttpRequest.readyState===4){try{if(typeof c._xmlHttpRequest.status==="undefined")return}catch(d){return}c._clearTimer();c._responseAvailable=b;try{c._webRequest.completed(Sys.EventArgs.Empty)}finally{if(c._xmlHttpRequest){c._xmlHttpRequest.onreadystatechange=Function.emptyMethod;c._xmlHttpRequest=a}}}};d._clearTimer=function(){if(c._timer){window.clearTimeout(c._timer);c._timer=a}};d._onTimeout=function(){if(!c._responseAvailable){c._clearTimer();c._timedOut=b;var d=c._xmlHttpRequest;d.onreadystatechange=Function.emptyMethod;d.abort();c._webRequest.completed(Sys.EventArgs.Empty);c._xmlHttpRequest=a}}};c.prototype={get_timedOut:function(){return!!this._timedOut},get_started:function(){return!!this._started},get_responseAvailable:function(){return!!this._responseAvailable},get_aborted:function(){return!!this._aborted},executeRequest:function(){var e="Content-Type",c=this,f=c.get_webRequest();c._webRequest=f;var h=f.get_body(),g=f.get_headers(),d=new XMLHttpRequest;c._xmlHttpRequest=d;d.onreadystatechange=c._onReadyStateChange;var l=f.get_httpVerb();d.open(l,f.getResolvedUrl(),b);d.setRequestHeader("X-Requested-With","XMLHttpRequest");if(g)for(var k in g){var m=g[k];typeof m!==i&&d.setRequestHeader(k,m)}if(l.toLowerCase()==="post"){(g===a||!g[e])&&d.setRequestHeader(e,"application/x-www-form-urlencoded; charset=utf-8");if(!h)h=""}var j=f.get_timeout();if(j>0)c._timer=window.setTimeout(Function.createDelegate(c,c._onTimeout),j);d.send(h);c._started=b},getResponseHeader:function(b){var c,a;try{a=this._xmlHttpRequest.getResponseHeader(b)}catch(c){}if(!a)a="";return a},getAllResponseHeaders:function(){return this._xmlHttpRequest.getAllResponseHeaders()},get_responseData:function(){return this._xmlHttpRequest.responseText},get_statusCode:function(){var b,a=0;try{a=this._xmlHttpRequest.status}catch(b){}return a},get_statusText:function(){return this._xmlHttpRequest.statusText},get_xml:function(){var c="parsererror",d=this._xmlHttpRequest,b=d.responseXML;if(!b||!b.documentElement){b=Sys.Net.XMLDOM(d.responseText);if(!b||!b.documentElement)return a}else navigator.userAgent.indexOf("MSIE")!==-1&&b.setProperty(h,"XPath");return b.documentElement.namespaceURI==="http://www.mozilla.org/newlayout/xml/parsererror.xml"&&b.documentElement.tagName===c?a:b.documentElement.firstChild&&b.documentElement.firstChild.tagName===c?a:b},abort:function(){var c=this;if(c._aborted||c._responseAvailable||c._timedOut)return;c._aborted=b;c._clearTimer();var d=c._xmlHttpRequest;if(d&&!c._responseAvailable){d.onreadystatechange=Function.emptyMethod;d.abort();c._xmlHttpRequest=a;c._webRequest.completed(Sys.EventArgs.Empty)}}};c.registerClass(j,Sys.Net.WebRequestExecutor);c=Sys.Net._WebRequestManager=function(){this._defaultExecutorType=j};c.prototype={add_invokingRequest:function(a){Sys.Observer.addEventHandler(this,f,a)},remove_invokingRequest:function(a){Sys.Observer.removeEventHandler(this,f,a)},add_completedRequest:function(a){Sys.Observer.addEventHandler(this,g,a)},remove_completedRequest:function(a){Sys.Observer.removeEventHandler(this,g,a)},get_defaultTimeout:function(){return this._defaultTimeout||0},set_defaultTimeout:function(a){this._defaultTimeout=a},get_defaultExecutorType:function(){return this._defaultExecutorType},set_defaultExecutorType:function(a){this._defaultExecutorType=a},executeRequest:function(c){var a=c.get_executor();if(!a){var h,g;try{var e=window.eval(this._defaultExecutorType);a=new e}catch(h){g=b}c.set_executor(a)}if(!a.get_aborted()){var d=new Sys.Net.NetworkRequestEventArgs(c);Sys.Observer.raiseEvent(this,f,d);!d.get_cancel()&&a.executeRequest()}}};c.registerClass("Sys.Net._WebRequestManager");Sys.Net.WebRequestManager=new Sys.Net._WebRequestManager;c=Sys.Net.NetworkRequestEventArgs=function(a){Sys.Net.NetworkRequestEventArgs.initializeBase(this);this._webRequest=a};c.prototype={get_webRequest:function(){return this._webRequest}};c.registerClass("Sys.Net.NetworkRequestEventArgs",Sys.CancelEventArgs);c=Sys.Net.WebRequest=function(){var b=this;b._url="";b._headers={};b._body=a;b._userContext=a;b._httpVerb=a};c.prototype={add_completed:function(a){Sys.Observer.addEventHandler(this,d,a)},remove_completed:function(a){Sys.Observer.removeEventHandler(this,d,a)},completed:function(e){var a=this;function c(f,d,c){var a=Sys.Observer._getContext(f,b).events.getHandler(c);a&&a(d,e)}c(Sys.Net.WebRequestManager,a._executor,g);c(a,a._executor,d);Sys.Observer.clearEventHandlers(a,d)},get_url:function(){return this._url},set_url:function(a){this._url=a},get_headers:function(){return this._headers},get_httpVerb:function(){return this._httpVerb===a?this._body===a?"GET":"POST":this._httpVerb},set_httpVerb:function(a){this._httpVerb=a},get_body:function(){return this._body},set_body:function(a){this._body=a},get_userContext:function(){return this._userContext},set_userContext:function(a){this._userContext=a},get_executor:function(){return this._executor||a},set_executor:function(a){this._executor=a;a._set_webRequest(this)},get_timeout:function(){return this._timeout||Sys.Net.WebRequestManager.get_defaultTimeout()},set_timeout:function(a){this._timeout=a},getResolvedUrl:function(){return Sys.Net.WebRequest._resolveUrl(this._url)},invoke:function(){Sys.Net.WebRequestManager.executeRequest(this)}};c._resolveUrl=function(b,a){if(b&&b.indexOf("://")>0)return b;if(!a||!a.length){var d=Sys.get("base");if(d&&d.href&&d.href.length)a=d.href;else a=document.URL}var c=a.indexOf("?");if(c>0)a=a.substr(0,c);c=a.indexOf("#");if(c>0)a=a.substr(0,c);a=a.substr(0,a.lastIndexOf("/")+1);if(!b||!b.length)return a;if(b.charAt(0)==="/"){var e=a.indexOf("://"),g=a.indexOf("/",e+3);return a.substr(0,g)+b}else{var f=a.lastIndexOf("/");return a.substr(0,f+1)+b}};c._createQueryString=function(c,b,f){b=b||encodeURIComponent;var h=0,e,g,d,a=new Sys.StringBuilder;if(c)for(d in c){e=c[d];if(typeof e===i)continue;g=Sys.Serialization.JavaScriptSerializer.serialize(e);h++&&a.append("&");a.append(d);a.append("=");a.append(b(g))}if(f){h&&a.append("&");a.append(f)}return a.toString()};c._createUrl=function(b,c,d){if(!c&&!d)return b;var e=Sys.Net.WebRequest._createQueryString(c,a,d);return e.length?b+(b&&b.indexOf("?")>=0?"&":"?")+e:b};c.registerClass("Sys.Net.WebRequest")}if(window.Sys&&Sys.loader)Sys.loader.registerScript("Network",a,b);else b()})();�7// (c) 2010 CodePlex Foundation
//!/ <reference name="MicrosoftAjaxComponentModel.js" />
//!/ <reference name="MicrosoftAjaxSerialization.js" />

(function() {

function execute() {

Type._registerScript("MicrosoftAjaxHistory.js", ["MicrosoftAjaxComponentModel.js", "MicrosoftAjaxSerialization.js"]);

var $type, $prototype,
    isBrowser = Sys._isBrowser;

$type = Sys.HistoryEventArgs = function HistoryEventArgs(state) {
    /// <summary locid="M:J#Sys.HistoryEventArgs.#ctor"></summary>
    /// <param name="state" type="Object"></param>
    var e = Function._validateParams(arguments, [
        {name: "state", type: Object}
    ]);
    if (e) throw e;
    Sys.HistoryEventArgs.initializeBase(this);
    this._state = state;
}
$type.prototype = {
    get_state: function HistoryEventArgs$get_state() {
        /// <value type="Object" locid="P:J#Sys.HistoryEventArgs.state"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._state;
    }
}
$type.registerClass('Sys.HistoryEventArgs', Sys.EventArgs);
$type = Sys.Application;
$type._currentEntry = '';
$type._initialState = null;
$type._state = {};

$prototype = Sys._Application.prototype;
$prototype.get_stateString = function _Application$get_stateString() {
    /// <summary locid="M:J#Sys._Application.get_stateString"></summary>
    if (arguments.length !== 0) throw Error.parameterCount();
    var hash = null;
    
    if (isBrowser("Firefox")) {
        var href = window.location.href;
        var hashIndex = href.indexOf('#');
        if (hashIndex !== -1) {
            hash = href.substring(hashIndex + 1);
        }
        else {
            hash = "";
        }
        return hash;
    }
    else {
        hash = window.location.hash;
    }
    
    if (hash.length && (hash.charAt(0) === '#')) {
        hash = hash.substring(1);
    }

    return hash;
};

$prototype.get_enableHistory = function _Application$get_enableHistory() {
    /// <summary locid="M:J#Sys._Application.get_enableHistory"></summary>
    if (arguments.length !== 0) throw Error.parameterCount();
    return !!this._enableHistory;
};

$prototype.set_enableHistory = function _Application$set_enableHistory(value) {
    if (this._initialized && !this._initializing) {
        throw Error.invalidOperation(Sys.Res.historyCannotEnableHistory);
    }
    else if (this._historyEnabledInScriptManager && !value) {
        throw Error.invalidOperation(Sys.Res.invalidHistorySettingCombination);
    }
    this._enableHistory = value;
};

$prototype.add_navigate = function _Application$add_navigate(handler) {
    /// <summary locid="E:J#Sys.Application.navigate"></summary>
    /// <param name="handler" type="Function"></param>
    var e = Function._validateParams(arguments, [
        {name: "handler", type: Function}
    ]);
    if (e) throw e;
    this._addHandler("navigate", handler);
};

$prototype.remove_navigate = function _Application$remove_navigate(handler) {
    /// <summary locid="M:J#Sys._Application.remove_navigate"></summary>
    /// <param name="handler" type="Function"></param>
    var e = Function._validateParams(arguments, [
        {name: "handler", type: Function}
    ]);
    if (e) throw e;
    this._removeHandler("navigate", handler);
};

$prototype.addHistoryPoint = function _Application$addHistoryPoint(state, title) {
    /// <summary locid="M:J#Sys.Application.addHistoryPoint"></summary>
    /// <param name="state" type="Object">A dictionary of state bits that will be added to the main state   to form the global state of the new history point.   The state must be a string dictionary. The application is responsible   for converting the state bits from and into the relevant types.</param>
    /// <param name="title" type="String" optional="true" mayBeNull="true">The title for the new history point.</param>
    var e = Function._validateParams(arguments, [
        {name: "state", type: Object},
        {name: "title", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    if (!this._enableHistory) throw Error.invalidOperation(Sys.Res.historyCannotAddHistoryPointWithHistoryDisabled);
    for (var n in state) {
        var v = state[n];
        var t = typeof(v);
        if ((v !== null) && ((t === 'object') || (t === 'function') || (t === 'undefined'))) {
            throw Error.argument('state', Sys.Res.stateMustBeStringDictionary);
        }
    }
    this._ensureHistory();
    var initialState = this._state;
    for (var key in state) {
        var value = state[key];
        if (value === null) {
            if (typeof(initialState[key]) !== 'undefined') {
                delete initialState[key];
            }
        }
        else {
            initialState[key] = value;
        }
    }
    var entry = this._serializeState(initialState);
    this._historyPointIsNew = true;
    this._setState(entry, title);
    this._raiseNavigate();
};

$prototype.setServerId = function _Application$setServerId(clientId, uniqueId) {
    /// <summary locid="M:J#Sys.Application.setServerId"></summary>
    /// <param name="clientId" type="String"></param>
    /// <param name="uniqueId" type="String"></param>
    var e = Function._validateParams(arguments, [
        {name: "clientId", type: String},
        {name: "uniqueId", type: String}
    ]);
    if (e) throw e;
    this._clientId = clientId;
    this._uniqueId = uniqueId;
};

$prototype.setServerState = function _Application$setServerState(value) {
    /// <summary locid="M:J#Sys.Application.setServerState"></summary>
    /// <param name="value" type="String"></param>
    var e = Function._validateParams(arguments, [
        {name: "value", type: String}
    ]);
    if (e) throw e;
    this._ensureHistory();
    this._state.__s = value;
    this._updateHiddenField(value);
};

$prototype._deserializeState = function _Application$_deserializeState(entry) {
    var result = {};
    entry = entry || '';
    var serverSeparator = entry.indexOf('&&');
    if ((serverSeparator !== -1) && (serverSeparator + 2 < entry.length)) {
        result.__s = entry.substr(serverSeparator + 2);
        entry = entry.substr(0, serverSeparator);
    }
    var tokens = entry.split('&');
    for (var i = 0, l = tokens.length; i < l; i++) {
        var token = tokens[i];
        var equal = token.indexOf('=');
        if ((equal !== -1) && (equal + 1 < token.length)) {
            var name = token.substr(0, equal);
            var value = token.substr(equal + 1);
            result[name] = decodeURIComponent(value);
        }
    }
    return result;
};

$prototype._enableHistoryInScriptManager = function _Application$_enableHistoryInScriptManager() {
    this._enableHistory = true;
    this._historyEnabledInScriptManager = true;
};

$prototype._ensureHistory = function _Application$_ensureHistory() {
    if (!this._historyInitialized && this._enableHistory) {
        if (isBrowser("InternetExplorer") && (Sys.Browser.documentMode < 8)) {
            this._historyFrame = Sys.get('#__historyFrame');
            if (!this._historyFrame) throw Error.invalidOperation(Sys.Res.historyMissingFrame);
            this._ignoreIFrame = true;
        }
        this._timerHandler = Function.createDelegate(this, this._onIdle);
        this._timerCookie = window.setTimeout(this._timerHandler, 100);
        
        var e;
        try {
            this._initialState = this._deserializeState(this.get_stateString());
        }
        catch(e) {}
        
        this._historyInitialized = true;
    }
};

$prototype._navigate = function _Application$_navigate(entry) {
    this._ensureHistory();

    var state = this._deserializeState(entry);
    
    if (this._uniqueId) {
        var oldServerEntry = this._state.__s || '';
        var newServerEntry = state.__s || '';
        if (newServerEntry !== oldServerEntry) {
            this._updateHiddenField(newServerEntry);
            __doPostBack(this._uniqueId, newServerEntry);
            this._state = state;
            return;
        }
    }
    this._setState(entry);
    this._state = state;
    this._raiseNavigate();
};

$prototype._onIdle = function _Application$_onIdle() {
    delete this._timerCookie;
    
    var entry = this.get_stateString();
    if (entry !== this._currentEntry) {
        if (!this._ignoreTimer) {
            this._historyPointIsNew = false;
            this._navigate(entry);
        }
    }
    else {
        this._ignoreTimer = false;
    }
    this._timerCookie = window.setTimeout(this._timerHandler, 100);
};

$prototype._onIFrameLoad = function _Application$_onIFrameLoad(entry) {
    this._ensureHistory();
    if (!this._ignoreIFrame) {
        this._historyPointIsNew = false;
        this._navigate(entry);
    }
    this._ignoreIFrame = false;
};

$prototype._onPageRequestManagerBeginRequest = function _Application$_onPageRequestManagerBeginRequest(sender, args) {
    this._ignoreTimer = true;
    this._originalTitle = document.title;
};

$prototype._onPageRequestManagerEndRequest = function _Application$_onPageRequestManagerEndRequest(sender, args) {
    var dataItem = args.get_dataItems()[this._clientId];
    var originalTitle = this._originalTitle;
    this._originalTitle = null;

    var eventTarget = Sys.get("#__EVENTTARGET");
    if (eventTarget && eventTarget.value === this._uniqueId) {
        eventTarget.value = '';
    }
    if (typeof(dataItem) !== 'undefined') {
        this.setServerState(dataItem);
        this._historyPointIsNew = true;
    }
    else {
        this._ignoreTimer = false;
    }
    var entry = this._serializeState(this._state);
    if (entry !== this._currentEntry) {
        this._ignoreTimer = true;
        if (typeof(originalTitle) === "string") {
            if (!isBrowser("InternetExplorer") || Sys.Browser.version > 7) {
                var newTitle = document.title;
                document.title = originalTitle;
                this._setState(entry);
                document.title = newTitle;
            }
            else {
                this._setState(entry);
            }
            this._raiseNavigate();
        }
        else {
            this._setState(entry);
            this._raiseNavigate();
        }
    }
};

$prototype._raiseNavigate = function _Application$_raiseNavigate() {
    var isNew = this._historyPointIsNew;
    var stateClone = {};
    for (var key in this._state) {
        if (key !== '__s') {
            stateClone[key] = this._state[key];
        }
    }
    var args = new Sys.HistoryEventArgs(stateClone);
    Sys.Observer.raiseEvent(this, "navigate", args);
    if (!isNew) {
        var err;
        try {
            if (isBrowser("Firefox") && window.location.hash &&
                (!window.frameElement || window.top.location.hash)) {
                (Sys.Browser.version < 3.5) ?
                    window.history.go(0) :
                    location.hash = this.get_stateString();
            }
        }
        catch(err) {
        }
    }
};

$prototype._serializeState = function _Application$_serializeState(state) {
    var serialized = [];
    for (var key in state) {
        var value = state[key];
        if (key === '__s') {
            var serverState = value;
        }
        else {
            if (key.indexOf('=') !== -1) throw Error.argument('state', Sys.Res.stateFieldNameInvalid);
            serialized.push(key + '=' + encodeURIComponent(value));
        }
    }
    return serialized.join('&') + (serverState ? '&&' + serverState : '');
};

$prototype._setState = function _Application$_setState(entry, title) {
    if (this._enableHistory) {
        entry = entry || '';
        if (entry !== this._currentEntry) {
            if (window.theForm) {
                var action = window.theForm.action;
                var hashIndex = action.indexOf('#');
                window.theForm.action = ((hashIndex !== -1) ? action.substring(0, hashIndex) : action) + '#' + entry;
            }
        
            if (this._historyFrame && this._historyPointIsNew) {
                this._ignoreIFrame = true;
                var frameDoc = this._historyFrame.contentWindow.document;
                frameDoc.open("javascript:'<html></html>'");
                frameDoc.write("<html><head><title>" + (title || document.title) +
                    "</title><scri" + "pt type=\"text/javascript\">parent.Sys.Application._onIFrameLoad(" + 
                    Sys.Serialization.JavaScriptSerializer.serialize(entry) +
                    ");</scri" + "pt></head><body></body></html>");
                frameDoc.close();
            }
            this._ignoreTimer = false;
            this._currentEntry = entry;
            if (this._historyFrame || this._historyPointIsNew) {
                var currentHash = this.get_stateString();
                if (entry !== currentHash) {
                    var loc = document.location;
                    if (loc.href.length - loc.hash.length + entry.length > 2048) {
                        throw Error.invalidOperation(String.format(Sys.Res.urlTooLong, 2048));
                    }
                    window.location.hash = entry;
                    this._currentEntry = this.get_stateString();
                    if ((typeof(title) !== 'undefined') && (title !== null)) {
                        document.title = title;
                    }
                }
            }
            this._historyPointIsNew = false;
        }
    }
};

$prototype._updateHiddenField = function _Application$_updateHiddenField(value) {
    if (this._clientId) {
        var serverStateField = document.getElementById(this._clientId);
        if (serverStateField) {
            serverStateField.value = value;
        }
    }
};

}

if (window.Sys && Sys.loader) {
	Sys.loader.registerScript("History", null, execute);
}
else {
	execute();
}

})();
�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.SelectButton=function(b){var a=this;Sys.Extended.UI.HTMLEditor.ToolbarButton.SelectButton.initializeBase(a,[b]);a._onclick_option$delegate=Function.createDelegate(a,a._onclick_option);a._onchange$delegate=Function.createDelegate(a,a._onchange)};Sys.Extended.UI.HTMLEditor.ToolbarButton.SelectButton.prototype={initialize:function(){var a=this,c=a.get_element().id;Sys.Extended.UI.HTMLEditor.ToolbarButton.SelectButton.callBaseMethod(a,"initialize");a._select=$get(c+"_select");$addHandler(a._select,"change",a._onchange$delegate);for(var b=0;b<a._select.options.length;b++){var d=a._select.options[b];$addHandler(d,"click",a._onclick_option$delegate)}},dispose:function(){var a=this;for(var b=0;b<a._select.options.length;b++){var c=a._select.options[b];$removeHandler(c,"click",a._onclick_option$delegate)}$removeHandler(a._select,"change",a._onchange$delegate);Sys.Extended.UI.HTMLEditor.ToolbarButton.SelectButton.callBaseMethod(a,"dispose")},isImage:function(){return false},callMethod:function(){return true},_onclick_option:function(b){if(!this.isEnable())return false;var a=b.target;a.parentNode.value=a.value;Sys.Extended.UI.HTMLEditor._stopEvent(b);if(!Sys.Extended.UI.HTMLEditor.isSafari)return false;this.callMethod(a.parentNode,b);return true},_onchange:function(a){if(!this.isEnable())return false;var b=a.target;Sys.Extended.UI.HTMLEditor._stopEvent(a);this.callMethod(b,a);return true}};Sys.Extended.UI.HTMLEditor.ToolbarButton.SelectButton.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.SelectButton",Sys.Extended.UI.HTMLEditor.ToolbarButton.CommonButton);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.Rtl = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.Rtl.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.Rtl.prototype = {
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.Rtl.callBaseMethod(this, "callMethod")) return false;
        this._designPanel._doc.body.style.direction=(!this.checkState())?"rtl":"";

        if(!Sys.Extended.UI.HTMLEditor.isIE) {
            var sel   = this._designPanel._getSelection();
            var range = this._designPanel._createRange(sel);

            this._designPanel._removeAllRanges(sel);

            this._designPanel._selectRange(sel,range);
            this._designPanel.focusEditor();
        }
        var button = this;
        setTimeout(function(){button._editPanel.updateToolbar();},0);
    },
    
    checkState : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.Rtl.callBaseMethod(this, "checkState")) return false;
        if(this._designPanel._doc.body.style.direction && this._designPanel._doc.body.style.direction=="rtl") return true;
        return false;
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.Rtl.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.Rtl", Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton);

 Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.Paste=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.Paste.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.Paste.prototype={canBeShown:function(){return Sys.Extended.UI.HTMLEditor.isIE},callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.Paste.callBaseMethod(this,"callMethod"))return false;var a=this._designPanel;if(Sys.Extended.UI.HTMLEditor.isIE){a._saveContent();a.openWait();setTimeout(function(){a._paste(true);a.closeWait()},0)}else{var b=a._getSelection(),c=a._createRange(b);a._removeAllRanges(b);alert(String.format(Sys.Extended.UI.Resources.HTMLEditor_toolbar_button_Use_verb,Sys.Extended.UI.HTMLEditor.isSafari&&navigator.userAgent.indexOf("mac")!=-1?"Apple-V":"Ctrl-V"));a._selectRange(b,c);a.isWord=false;a.isPlainText=false}}};Sys.Extended.UI.HTMLEditor.ToolbarButton.Paste.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.Paste",Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton.prototype={};Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton",Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeImageButton);�
Type.registerNamespace("Sys.Extended.UI.HTMLEditor");

Sys.Extended.UI.HTMLEditor.ModePanel = function(element) {
    Sys.Extended.UI.HTMLEditor.ModePanel.initializeBase(this, [element]);
    this._activated = false;
    this._isActivating = false;
    this._editPanel = null;
    this._cachedContent = null;
    this._onbeforeunload$delegate = Function.createDelegate(this, this._onbeforeunload);
}

Sys.Extended.UI.HTMLEditor.ModePanel.prototype = {
    set_editPanel: function(value) {
        this._editPanel = value;
    },

    get_content: function() {
        if (this._activated) {
            return this._getContent();
        } else {
            if (this._cachedContent != null) {
                return this._cachedContent;
            } else {
                return "";
            }
        }
    },
    set_content: function(value) {
        this._cachedContent = value;
        if (!this._activated && !this._isActivating) {
            this._activate(value);
        } else {
            if (!this._isActivating) {
                this._setContent(value);
            } else {
                var panel = this;
                setTimeout(function() { panel.set_content(value); }, 10);
                return false;
            }
        }
        return true;
    },

    _activate: function() {
        this.get_element().style.display = "";
        this._isActivating = true;
    },

    _activateFinished: function() {
        this._activated = true;
        this._isActivating = false;
        this._editPanel._setActive();
        if (this._editPanel.get_autofocus()) {
            this._focus();
        }
    },

    _deactivate: function() {
        this.get_element().style.display = "none";
        this._activated = false;
        this._isActivating = false;
    },

    initialize: function() {
        Sys.Extended.UI.HTMLEditor.ModePanel.callBaseMethod(this, "initialize");
        if (Sys.Extended.UI.HTMLEditor.isIE) {
            $addHandlers(window, { beforeunload: this._onbeforeunload$delegate });
        }
    },

    dispose: function() {
        if (Sys.Extended.UI.HTMLEditor.isIE) {
            $common.removeHandlers(window, { beforeunload: this._onbeforeunload$delegate });
        }
        if (this._activated) {
            if (Sys.Extended.UI.HTMLEditor.isIE) {
                this._onbeforeunload();
            }
            this._deactivate();
        }
        Sys.Extended.UI.HTMLEditor.ModePanel.callBaseMethod(this, "dispose");
    },

    _onbeforeunload: function() {
        if (this._activated) {
            if (!this._editPanel._contentPrepared) {
                this._editPanel._prepareContentForPostback(this.get_content());
                this._editPanel._contentPrepared = true;
            }
        }
    },

    _getContent: function() {
        if (this._cachedContent != null) {
            return this._cachedContent;
        } else {
            return "";
        }
    },

    _setContent: function(value) {
    },

    _focus: function() {
        this._focused();
    },

    _focused: function(prize) {
        this._editPanel._focused(prize);
        this._editPanel.set_autofocus(true);
    },

    _really_focused: function() {
        this._editPanel._really_focused();
        this._editPanel.set_autofocus(true);
    }
}

Sys.Extended.UI.HTMLEditor.ModePanel.registerClass("Sys.Extended.UI.HTMLEditor.ModePanel", Sys.UI.Control);

Type.registerNamespace("Sys.Extended.UI.HTMLEditor");

Sys.Extended.UI.HTMLEditor.HtmlPanel = function(element) {
    Sys.Extended.UI.HTMLEditor.HtmlPanel.initializeBase(this, [element]);
    this._onfocus$delegate = Function.createDelegate(this, this._onfocus);
    if(Sys.Extended.UI.HTMLEditor.isIE && document.compatMode != "BackCompat") {
        this._onresize$delegate = Function.createDelegate(this, this._onresize);
    }
}

Sys.Extended.UI.HTMLEditor.HtmlPanel.prototype = {
    _activate: function(value) {
        this._shouldResize = false;
        var element = this.get_element();
        if (Sys.Extended.UI.HTMLEditor.isIE && Sys.Browser.version > 6 && document.compatMode != "BackCompat" && element.parentNode.clientHeight > 0) {
            this._shouldResize = true;
        }
        Sys.Extended.UI.HTMLEditor.HtmlPanel.callBaseMethod(this, "_activate");

        if (Sys.Extended.UI.HTMLEditor.isIE) {
            element.value = "";
            var panel = this;
            setTimeout(function() { element.value = value; }, 0);
        } else {
            element.value = value;
        }

        $addHandlers(element, {
            focus: this._onfocus$delegate
        });
        if (this._shouldResize) {
            $addHandlers(element, {
                resize: this._onresize$delegate
            });
        }
        this._activateFinished();
    },

    _deactivate: function() {
        var element = this.get_element();
        if (this._shouldResize) {
            $common.removeHandlers(element, {
                resize: this._onresize$delegate
            });
        }
        this._shouldResize = false;

        $common.removeHandlers(element, {
            focus: this._onfocus$delegate
        });
        element.value = "";
        Sys.Extended.UI.HTMLEditor.HtmlPanel.callBaseMethod(this, "_deactivate");
    },

    _getContent: function() {
        return this.get_element().value;
    },

    _setContent: function(value) {
        this.get_element().value = value;
        if (Sys.Extended.UI.HTMLEditor.isReallyVisible(this.get_element().parentNode)) {
            try { // some browsers fail when invisible
                var textarea = this.get_element();
                textarea.focus();
                setTimeout(function() { try { Sys.Extended.UI.HTMLEditor.setSelectionRange(textarea, 0, 0); } catch (e) { } }, 0);
            } catch (e) { }
        }
    },

    _focus: function() {
        if (Sys.Extended.UI.HTMLEditor.isReallyVisible(this.get_element().parentNode)) {
            try { // some browsers fail when invisible
                var textarea = this.get_element();
                textarea.focus();
                setTimeout(function() { try { Sys.Extended.UI.HTMLEditor.setSelectionRange(textarea, 0, 0); } catch (e) { } }, 0);
            } catch (e) { }
        }
        var panel = this;
        setTimeout(function() { panel._focused(); }, 0);
    },

    _onfocus: function(e) {
        this._really_focused();
        var textarea = this.get_element();
        setTimeout(function() { textarea.focus(); }, 0);
        return true;
    },

    _onresize: function(e) {
        var element = this.get_element();
        var clientHeight = element.parentNode.clientHeight;
        if (clientHeight > 0) {
            element.style.height = clientHeight + "px";
        }
    }
}

Sys.Extended.UI.HTMLEditor.HtmlPanel.registerClass("Sys.Extended.UI.HTMLEditor.HtmlPanel",Sys.Extended.UI.HTMLEditor.ModePanel);
:�Type.registerNamespace("Sys.Extended.UI.HTMLEditor");Sys.Extended.UI.HTMLEditor.Trim=function(a){return a.replace(/[\x00-\x1F]+/g,"")};Sys.Extended.UI.HTMLEditor.TrimAll=function(a){return a.replace(/[\x00-\x1F]/g,"").replace(/^[\x20]+/g,"").replace(/[\x20]+$/g,"")};Sys.Extended.UI.HTMLEditor.isIE=Sys.Browser.agent==Sys.Browser.InternetExplorer;Sys.Extended.UI.HTMLEditor.isSafari=Sys.Browser.agent==Sys.Browser.Safari;Sys.Extended.UI.HTMLEditor.isOpera=Sys.Browser.agent==Sys.Browser.Opera;Sys.Extended.UI.HTMLEditor.tryReplaceRgb=function(c){var a=c,e=/(rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\))/ig;function b(a){return a<16?"0"+a.toString(16):a.toString(16)}function d(h,i,a,c,d){var g=parseInt(a),f=parseInt(c),e=parseInt(d);return"#"+b(g)+b(f)+b(e)}try{a=a.replace(e,d)}catch(f){}return a};Sys.Extended.UI.HTMLEditor._getScrollTop=function(c){var a=c.document,b=0;if(typeof c.pageYOffset=="number")b=c.pageYOffset;if(a.body&&a.body.scrollTop)b=a.body.scrollTop;else if(a.documentElement&&a.documentElement.scrollTop)b=a.documentElement.scrollTop;return b};Sys.Extended.UI.HTMLEditor._getScrollLeft=function(c){var a=c.document,b=0;if(typeof c.pageXOffset=="number")b=c.pageXOffset;else if(a.body&&a.body.scrollLeft)b=a.body.scrollLeft;else if(a.documentElement&&a.documentElement.scrollLeft)b=a.documentElement.scrollLeft;return b};Sys.Extended.UI.HTMLEditor.addFormOnSubmit=function(e,d){var b="undefined",a=null,c=window.theForm;if(window.theForm!=a&&typeof window.theForm!=b){if(c.HTMLEditor_editPanels==a||typeof c.HTMLEditor_editPanels==b){c.originalOnSubmit_HTMLEditor=window.theForm.onsubmit;c.HTMLEditor_editPanels=[];window.theForm.onsubmit=Sys.Extended.UI.HTMLEditor.EditPanelsOnSubmit;if(window.__doPostBack!=a&&typeof window.__doPostBack!=b)if(window.__doPostBack_HTMLEditor_original==a||typeof window.__doPostBack_HTMLEditor_original==b){window.__doPostBack_HTMLEditor_original=window.__doPostBack;window.__doPostBack=Sys.Extended.UI.HTMLEditor.EditPanelsOnPostBack}if(window.ValidatorGetValue!=a&&typeof window.ValidatorGetValue!=b)if(window.ValidatorGetValue_HTMLEditor_original==a||typeof window.ValidatorGetValue_HTMLEditor_original==b){window.ValidatorGetValue_HTMLEditor_original=window.ValidatorGetValue;window.ValidatorGetValue=Sys.Extended.UI.HTMLEditor.ValidatorGetValue}}c.HTMLEditor_editPanels.push({handler:e,editPanel:d})}};Sys.Extended.UI.HTMLEditor.removeFormOnSubmit=function(h){var c="undefined",b=null,a=window.theForm;if(window.theForm!=b&&typeof window.theForm!=c){var g=a.originalOnSubmit_HTMLEditor;if(a.HTMLEditor_editPanels!=b&&typeof a.HTMLEditor_editPanels!=c){for(var e=[],d=0;d<a.HTMLEditor_editPanels.length;d++){var f=a.HTMLEditor_editPanels[d];f.handler!=h&&e.push(f)}a.HTMLEditor_editPanels=e;if(a.HTMLEditor_editPanels.length==0){window.theForm.onsubmit=g;a.originalOnSubmit_HTMLEditor=b;a.HTMLEditor_editPanels=b;if(window.__doPostBack_HTMLEditor_original!=b&&typeof window.__doPostBack_HTMLEditor_original!=c){window.__doPostBack=window.__doPostBack_HTMLEditor_original;window.__doPostBack_HTMLEditor_original=b}if(window.ValidatorGetValue_HTMLEditor_original!=b&&typeof window.ValidatorGetValue_HTMLEditor_original!=c){window.ValidatorGetValue=window.ValidatorGetValue_HTMLEditor_original;window.ValidatorGetValue_HTMLEditor_original=b}}}}};Sys.Extended.UI.HTMLEditor.EditPanelsOnSubmit=function(d){for(var a=window.theForm,c=true,b=0;b<a.HTMLEditor_editPanels.length;b++){var c=a.HTMLEditor_editPanels[b].handler(d);if(!c)break}if(c&&a.originalOnSubmit_HTMLEditor!=null&&typeof a.originalOnSubmit_HTMLEditor!="undefined")c=a.originalOnSubmit_HTMLEditor(d);if(!c||!window.Page_IsValid)for(var b=0;b<a.HTMLEditor_editPanels.length;b++)a.HTMLEditor_editPanels[b].editPanel._contentPrepared=false;return c};Sys.Extended.UI.HTMLEditor.ValidatorGetValue=function(e){var c=null,a=$find(e);if(a!=c){var b=c;if(Sys.Extended.UI.HTMLEditor.Editor.isInstanceOfType(a))b=a.get_editPanel();else if(Sys.Extended.UI.HTMLEditor.EditPanel.isInstanceOfType(a))b=a;if(b!=c){var d=b._contentForValidation;if(d==c||typeof d=="undefined")d=b.get_content();return d}}return window.ValidatorGetValue_HTMLEditor_original(e)};Sys.Extended.UI.HTMLEditor.EditPanelsOnPostBack=function(d,c){for(var b=window.theForm,a=0;a<b.HTMLEditor_editPanels.length;a++){var e=b.HTMLEditor_editPanels[a].handler(null);if(!e)return false}return window.__doPostBack_HTMLEditor_original!=null&&typeof window.__doPostBack_HTMLEditor_original!="undefined"?window.__doPostBack_HTMLEditor_original(d,c):true};Sys.Extended.UI.HTMLEditor.getRealAttributeIE=function(e,f,g){var c="^(?:<[^>]*?",b=g,a="";function d(c,b){a=b}e.outerHTML.replace(new RegExp(c+f+'=")([^"]*?)"',"ig"),d);a==""&&e.outerHTML.replace(new RegExp(c+f+"=')([^']*?)'","ig"),d);a==""&&e.outerHTML.replace(new RegExp(c+f+"=)([^s>]*?)","ig"),d);if(b!=a&&a!=""){b=a;b=b.replace(/&amp;/g,"&")}return b};Sys.Extended.UI.HTMLEditor.getRealAttribute=function(d,b){var f=b.toLowerCase(),e=d.attributes,a="";for(i=0;i<e.length;++i){var c=e.item(i);if(!c.specified)continue;var b=c.name.toLowerCase();if(b==f){a=c.value;if(Sys.Extended.UI.HTMLEditor.isIE)a=Sys.Extended.UI.HTMLEditor.getRealAttributeIE(d,b,a);if(b=="src"||b=="href")a=a.replace(/(\(S\([A-Za-z0-9_]+\)\)\/)/,"");break}}return a};Sys.Extended.UI.HTMLEditor.enabledWordTags=["img","strong","p","b","i","u","a","h1","h2","h3","h4","h5","h6","table","tbody","tr","td","ul","ol","li","span","div","font","xml","del","ins","em","sub","sup","hr","br"];Sys.Extended.UI.HTMLEditor.cleanUp=function(f){var a="",c,b=Sys.Extended.UI.HTMLEditor.Trim(f.replace(/[\x00-\x1F]+/g," ")).replace(/^[^\u0000]+?<html(?:[^>]*?)>/gi,a).replace(/<\/html(?:[^>]*?)>[^\u0000]*$/gi,a).replace(/<head(?:[^>]*?)>[^\u0000]*?<\/head(?:[^>]*?)>/gi,a).replace(/<body[^>]*?>([^\u0000]*?)<\/body(?:[^>]*?)>/gi,"$1").replace(/<\/?html(?:[^>]*?)>/gi,a).replace(/<\/?head(?:[^>]*?)>/gi,a).replace(/<\/?body(?:[^>]*?)>/gi,a).replace(/<!--(\w|\W)+?-->/ig,a).replace(/(<[\/]?)(?:o|v|x|p|w|\?xml):(\w+)([^>]*?>)/ig,"$1$2$3").replace(/<(IMAGEDATA)([^>]*?)>/ig,"<img$2>").replace(/<p[^>]*><p>&nbsp;<\/p><\/p>/ig,"<br>").replace(/<p[^>]*?\/>/ig,a).replace(/<(p|div)[^>]*?>&nbsp;<\/(\1)[^>]*?>/ig,a).replace(/<(p|div)[^>]*?><\/(\1)[^>]*?>/ig,a);do{c=b;b=b.replace(/<([^>]*)(?:class|size|lang|face|start|type|border|[ovwxp]:\w+)=(?:\'[^\']*\'|\"[^\"]*\"|[^> ]+)([^>]*)>/ig,"<$1$2>")}while(b!=c);var d=document.createElement("div");d.innerHTML=b;function e(m){var h="solid",g="black",f="1px",d="height",c="width";for(var r=m.childNodes.length,i=0;i<m.childNodes.length;i++){var b=m.childNodes.item(i);if(b.nodeType==1)if(b.tagName.indexOf("/")>=0){i--;b.parentNode.removeChild(b)}else{for(var j=b.tagName.toLowerCase(),q=false,s=Sys.Extended.UI.HTMLEditor.enabledWordTags.length,n=0;n<s;n++)if(Sys.Extended.UI.HTMLEditor.enabledWordTags[n]==j){q=true;break}e(b);if(!q){i+=b.childNodes.length;while(b.firstChild)b.parentNode.insertBefore(b.firstChild,b);b.parentNode.removeChild(b);i--}else{var k=b.style.backgroundColor,l=b.style.color;b.style.cssText=a;b.removeAttribute("style");if(b.getAttribute(c)&&b.getAttribute(c).length>0)b.style.width=b.getAttribute(c);if(b.width&&b.width.length>0)b.style.width=b.width;b.width=a;try{b.removeAttribute(c)}catch(u){}if(b.getAttribute(d)&&b.getAttribute(d).length>0)b.style.height=b.getAttribute(d);if(b.height&&b.height.length>0)b.style.height=b.height;b.height=a;try{b.removeAttribute(d)}catch(u){}if(j=="table"){b.style.borderLeftWidth=f;b.style.borderLeftColor=g;b.style.borderLeftStyle=h;b.style.borderTopWidth=f;b.style.borderTopColor=g;b.style.borderTopStyle=h;b.style.backgroundColor=k;b.style.color=l}if(j=="td"){b.style.borderRightWidth=f;b.style.borderRightColor=g;b.style.borderRightStyle=h;b.style.borderBottomWidth=f;b.style.borderBottomColor=g;b.style.borderBottomStyle=h;b.style.backgroundColor=k;b.style.color=l}if(j=="font"||j=="span"){b.style.backgroundColor=k;b.style.color=l;for(var p=b.attributes,r=0,o=0;o<p.length;++o){var t=p.item(o);if(!t.specified)continue;r++}if(r==0&&b.style.cssText==a){i+=b.childNodes.length;while(b.firstChild)b.parentNode.insertBefore(b.firstChild,b);b.parentNode.removeChild(b);i--}}}}}}e(d);b=Sys.Extended.UI.HTMLEditor.Trim(d.innerHTML);delete d;b=b.replace(/<[\/]?(xml|del|ins)[^>]*?>/ig,a).replace(/<(p|div)[^>]*?>/ig,a).replace(/<\/(p|div)[^>]*?>/ig,"<br>");do{c=b;b=b.replace(/<b><\/b>/ig,a).replace(/<i><\/i>/ig,a).replace(/<u><\/u>/ig,a).replace(/<strong><\/strong>/ig,a).replace(/<em><\/em>/ig,a).replace(/<sub><\/sub>/ig,a).replace(/<sup><\/sup>/ig,a);b=b.replace(/<span[^>]*?><\/span>/ig,a).replace(/<span>([^<]+?)<\/span>/ig,"$1");b=b.replace(/<font[^>]*?><\/font>/ig,a).replace(/<font>([^<]+?)<\/font>/ig,"$1")}while(b!=c);b=b.replace(/&rsquo;/g,"'").replace(/&lsquo;/g,"'").replace(/&ndash;/g,"-").replace(/&mdash;/g,"-").replace(/&hellip;/g,"...").replace(/&quot;/g,'"').replace(/&ldquo;/g,'"').replace(/&rdquo;/g,'"').replace(//g,a).replace(/&bull;/g,a).replace(/[ \s]+/g," ").replace(/((&nbsp;)+)/g,"&nbsp;");if(document.all)b=b.replace(/^[\x00-\x1F]*&nbsp;/,a);return b};Sys.Extended.UI.HTMLEditor.spanJoiner=function(g,s,o,p,r){var l="SPAN",k="class",j=null,n="undefined",q=0,e=g.childNodes.length;if(typeof o!=n&&o!=j)q=o;if(typeof p!=n&&p!=j)e=p;for(var f=q;f<e&&f<g.childNodes.length;f++){var a=g.childNodes.item(f);if(a.parentNode!=g)continue;switch(a.nodeType){case 1:if(a.childNodes.length==0&&Sys.Extended.UI.HTMLEditor.isStyleTag(a.tagName)&&a.tagName.toUpperCase()!="A"&&!(a.className.length>0||a.getAttribute(k)&&a.getAttribute(k).length>0)&&!Sys.Extended.UI.HTMLEditor.isTempElement(a)){g.removeChild(a);f--;e--;continue}if(a.tagName.toUpperCase()==l){while(a.childNodes.length==1&&a.firstChild.nodeType==1){if(a.firstChild.tagName.toUpperCase()==l&&!Sys.Extended.UI.HTMLEditor.isTempElement(a.firstChild)){var h=Sys.Extended.UI.HTMLEditor.differAttr(a.firstChild,[]),d=Sys.Extended.UI.HTMLEditor.differStyle(a.firstChild),i=a.firstChild,w=i.childNodes;while(i.firstChild!=j)a.insertBefore(i.firstChild,i);for(var b=0;b<d.length;b++)if(d[b][1])try{if(a.style[d[b][0]])if(d[b][0].toLowerCase().indexOf("color")>=0)a.style[d[b][0]]=d[b][1];else try{var u=a.style[d[b][0]];a.style[d[b][0]]=a.style[d[b][0]]+" "+d[b][1];if(u==a.style[d[b][0]])a.style[d[b][0]]=d[b][1]}catch(y){a.style[d[b][0]]=d[b][1]}else a.style[d[b][0]]=d[b][1]}catch(x){}for(var b=0;b<h.length;b++)h[b][1]&&a.setAttribute(h[b][0],h[b][1]);a.removeChild(i);continue}else if(a.firstChild.tagName.toUpperCase()==l&&Sys.Extended.UI.HTMLEditor.isTempElement(a.firstChild)){var t=a.firstChild;a.parentNode.insertBefore(a.firstChild,a);a.parentNode.removeChild(a);a=t}break}var m=[],c=a.nextSibling;while(!Sys.Extended.UI.HTMLEditor.isTempElement(a)&&c&&f+1<e&&(c.nodeType==3||c.nodeType==1&&(c.tagName.toUpperCase()==l||c.tagName.toUpperCase()=="BR"&&typeof r==n)&&!Sys.Extended.UI.HTMLEditor.isTempElement(c)))if(c.nodeType==3)if((""+c.data+"").length==0){c.parentNode.removeChild(c);c=a.nextSibling;e--}else break;else if(c.tagName.toUpperCase()=="BR"){m.push(c);c=c.nextSibling}else{var h=Sys.Extended.UI.HTMLEditor.differAttr(a,[],c),d=Sys.Extended.UI.HTMLEditor.differStyle(a,c);if(h.length==0&&d.length==0&&a.className==c.className){for(var v=m.length,b=0;b<v;b++){a.appendChild(m[b]);e--}m=[];while(c.firstChild)a.appendChild(c.firstChild);c.parentNode.removeChild(c);c=a.nextSibling;e--}else break}if(!Sys.Extended.UI.HTMLEditor.isTempElement(a)&&a.className.length==0){var h=Sys.Extended.UI.HTMLEditor.differAttr(a,[]),d=Sys.Extended.UI.HTMLEditor.differStyle(a);if(h.length==0&&d.length==0){f--;e--;while(a.firstChild){a.parentNode.insertBefore(a.firstChild,a);e++}a.parentNode.removeChild(a);continue}}}if(a.parentNode!=j)if(a.childNodes.length==0&&Sys.Extended.UI.HTMLEditor.isStyleTag(a.tagName)&&a.tagName.toUpperCase()!="A"&&!(a.className.length>0||a.getAttribute(k)&&a.getAttribute(k).length>0)&&!Sys.Extended.UI.HTMLEditor.isTempElement(a)){g.removeChild(a);f--;e--;continue}else Sys.Extended.UI.HTMLEditor.spanJoiner(a,s)}}};Sys.Extended.UI.HTMLEditor._styleTags=["strong","em","u","strike","s","span","font","b","sub","sup","a","i"];Sys.Extended.UI.HTMLEditor.isStyleTag=function(b){if(!b)return false;for(var a=0;a<Sys.Extended.UI.HTMLEditor._styleTags.length;a++)if(Sys.Extended.UI.HTMLEditor._styleTags[a].toLowerCase()==b.toLowerCase())return true;return false};Sys.Extended.UI.HTMLEditor.smartClassName="MSIEparagraph";Sys.Extended.UI.HTMLEditor.noContextMenuAttribute="obout-no-contextmenu";Sys.Extended.UI.HTMLEditor.isTempElement=function(a){return a.id&&a.id.length>0&&a.id.indexOf(Sys.Extended.UI.HTMLEditor.smartClassName)>=0?true:false};Sys.Extended.UI.HTMLEditor.differAttr=function(c,j,h){var d=[],b=c.parentNode;if(typeof h!="undefined")b=h;if(!b||!b.tagName||!Sys.Extended.UI.HTMLEditor.isStyleTag(b.tagName))b=null;if(c.attributes)for(var f=0;f<c.attributes.length;f++){for(var a=c.attributes[f],i=false,g=0;g<j.length;g++)if(a.name.toUpperCase()==j[g].toUpperCase()){i=true;break}if(i)continue;if(a.name.toUpperCase()=="STYLE")continue;if(a.name.toUpperCase().substr(0,4)=="_MOZ")continue;if(a.specified)if(b&&b.attributes&&b.attributes[a.name]){var e=b.attributes[a.name];if(e)(a.name!=e.name||a.value!=e.value)&&d.push([a.name,a.value])}else{if(a.name.toUpperCase()=="CLASS"&&a.value=="")continue;d.push([a.name,a.value])}}return d};Sys.Extended.UI.HTMLEditor.differStyle=function(e,l){var i="length",h="csstext",g="accelerator",f="string",m="undefined",k=[],d=e.parentNode;if(typeof l!=m)d=l;if(!d||!d.tagName||!Sys.Extended.UI.HTMLEditor.isStyleTag(d.tagName))d=null;function j(b,a){a=""+a;if(b.toLowerCase()=="textdecoration")for(var d=a.split(" "),c=0;c<d.length;c++)k.push([b,Sys.Extended.UI.HTMLEditor.Trim(d[c])]);else k.push([b,a])}for(var b in e.style)if(b&&typeof b==f&&b!=g){var a=b;if(!isNaN(parseInt(b))){if(!Sys.Extended.UI.HTMLEditor.isSafari)continue;a=e.style[b]}var c=e.style[a];if(c&&typeof c==f&&c!=g)if(d&&d.style){var n=d.style[a];if(a.toLowerCase()!=h&&a.toLowerCase()!=i)c!=n&&j(a,c)}else a.toLowerCase()!=h&&a.toLowerCase()!=i&&j(a,c)}if(typeof l!=m)for(var b in d.style)if(b&&typeof b==f&&b!=g){var a=b;if(!isNaN(parseInt(b))){if(!Sys.Extended.UI.HTMLEditor.isSafari)continue;a=e.style[b]}var c=d.style[a];if(c&&typeof c==f&&c!=g){var n=e.style[a];if(b.toLowerCase()!=h&&a.toLowerCase()!=i)c!=n&&j(a,c)}}return k};Sys.Extended.UI.HTMLEditor.brXHTML=function(a){return a.replace(/<br>/ig,"<br/>")};Sys.Extended.UI.HTMLEditor._needsClosingTag=function(b){var a=" script style div span a del strong em u strike font b sub sup p iframe li ul ol placeholder textarea td tr ";return a.indexOf(" "+b.tagName.toLowerCase()+" ")!=-1};Sys.Extended.UI.HTMLEditor._encodeText_=function(a){return a.replace(/&/ig,"&amp;").replace(/</ig,"&lt;").replace(/>/ig,"&gt;").replace(/\"/ig,"&quot;").replace(/\xA0/ig,"&nbsp;")};Sys.Extended.UI.HTMLEditor._noNeedsClosingTag=function(b){var a=" hr br ";return a.indexOf(" "+b.tagName.toLowerCase()+" ")!=-1};Sys.Extended.UI.HTMLEditor.canBeInsideP=function(b,e){var d="TABLE";if(b&&b.style&&b.style.display&&b.style.display.toLowerCase()=="inline")return true;var c=b.tagName.toUpperCase();if(c.length==2)if(c.substr(0,1)=="H"&&parseInt(c.substr(1,1))>0)return false;switch(c){case"TBODY":case"TR":case"TD":if(typeof e!="undefined"){var a=b.parentNode;while(a&&a.tagName&&a.tagName.toUpperCase()!=d)a=a.parentNode;if(a.tagName.toUpperCase()==d&&a.style&&a.style.display&&a.style.display.toLowerCase()=="inline")return true}case"P":case"PRE":case d:case"OL":case"UL":case"LI":case"HR":case"DIV":case"BLOCKQUOTE":case"FORM":case"FIELDSET":case"LEGEND":return false;default:return true}};Sys.Extended.UI.HTMLEditor.convertAlign=function(b){var a,c;try{c=parseInt(b)-1}catch(d){return b}switch(c){case 1:a="left";break;case 2:a="right";break;case 3:a="texttop";break;case 4:a="absmiddle";break;case 5:a="baseline";break;case 6:a="absbottom";break;case 7:a="bottom";break;case 8:a="middle";break;case 9:a="top";break;default:a=b.replace(/\"/g,"&quot;")}return a};Sys.Extended.UI.HTMLEditor.getHTML=function(a,b,d){try{if(typeof d=="undefined")if(!b&&a.nodeType==1)return a.innerHTML;else if(b&&a.nodeType==1&&Sys.Extended.UI.HTMLEditor.isIE)return a.outerHTML}catch(e){}var c=new Sys.Extended.UI.HTMLEditor.jsDocument(true);Sys.Extended.UI.HTMLEditor._getHTML_(c,a,b);return c.toString()};Sys.Extended.UI.HTMLEditor._getHTML_=function(c,a,v){var f='"',g="&quot;",e="",j=null,s="embed";switch(a.nodeType){case 1:case 11:if(a.tagName&&a.tagName.indexOf("/")>=0){if(Sys.Extended.UI.HTMLEditor.isIE){var h=a.tagName.toLowerCase().substr(a.tagName.indexOf("/")+1),o=a.previousSibling;if(h==s)return;while(o!=j){if(o.nodeType==a.nodeType&&o.tagName&&o.tagName.toLowerCase()==h){c.append("</teo"+Sys.Extended.UI.HTMLEditor.smartClassName+":"+a.tagName.toLowerCase().substr(a.tagName.indexOf("/")+1)+">");return}o=o.previousSibling}}return}var l,r,i;if(v&&a.tagName.length>0){var h=a.tagName.toLowerCase();l=!(a.hasChildNodes()||Sys.Extended.UI.HTMLEditor._needsClosingTag(a));r=true;var u=e;if(Sys.Extended.UI.HTMLEditor.isIE&&a.scopeName&&typeof a.scopeName!="undefined")u=a.scopeName.toUpperCase()=="HTML"?e:a.scopeName+":";if(Sys.Extended.UI.HTMLEditor.isIE&&(l||h=="placeholder")&&!Sys.Extended.UI.HTMLEditor._noNeedsClosingTag(a)&&h!=s){var n=a.nextSibling;while(n!=j){if(n.nodeType==a.nodeType&&n.tagName){var t=n.tagName;if(t.indexOf("/")>=0)if(t.toLowerCase().substr(t.indexOf("/")+1)==h){l=false;r=false;break}}n=n.nextSibling}}!Sys.Extended.UI.HTMLEditor.canBeInsideP(a)&&c.append("\n");c.append("<"+(!l&&!r?"teo"+Sys.Extended.UI.HTMLEditor.smartClassName+":":u)+h);Sys.Extended.UI.HTMLEditor.isIE&&a.name&&a.name.length>0&&c.append(' name="'+a.name.replace(/\"/g,g)+f);Sys.Extended.UI.HTMLEditor.isIE&&a.value&&a.value.length>0&&h!="textarea"&&c.append(' value="'+a.value.replace(/\"/g,g)+f);Sys.Extended.UI.HTMLEditor.isIE&&a.className&&a.className.length>0&&c.append(' class="'+a.className.replace(/\"/g,g)+f);Sys.Extended.UI.HTMLEditor.isIE&&a.align&&a.align.length>0&&c.append(' align="'+a.align.replace(/\"/g,g)+f);Sys.Extended.UI.HTMLEditor.isIE&&a.color&&a.color.length>0&&c.append(' color="'+a.color.replace(/\"/g,g)+f);Sys.Extended.UI.HTMLEditor.isIE&&a.size&&a.size.length>0&&a.size!="+0"&&c.append(' size="'+a.size.replace(/\"/g,g)+f);Sys.Extended.UI.HTMLEditor.isIE&&a.shape&&a.shape.length>0&&c.write(' shape="'+a.shape.replace(/\"/g,g)+f);Sys.Extended.UI.HTMLEditor.isIE&&a.coords&&a.coords.length>0&&c.write(' coords="'+a.coords.replace(/\"/g,g)+f);var w=a.attributes,q=j;for(i=0;i<w.length;++i){var p=w.item(i);if(!p.specified)continue;var d=p.name.toLowerCase();if(d.substr(0,4)=="_moz")continue;if(d=="teoalign")continue;var b;if(d!="style")if(d=="width"){b=a.width;if(Sys.Extended.UI.HTMLEditor.isIE&&b==0){var k=0;a.outerHTML.replace(new RegExp("^(?:<[^>]*?width=)([\\d]+)","ig"),function(b,a){k=a});if(b!=k)b=k}}else if(d=="height"){b=a.height;if(Sys.Extended.UI.HTMLEditor.isIE&&b==0){var k=0;a.outerHTML.replace(new RegExp("^(?:<[^>]*?height=)([\\d]+)","ig"),function(b,a){k=a});if(b!=k)b=k}}else if(Sys.Extended.UI.HTMLEditor.isIE&&d=="name"&&a.name&&a.name.length>0)continue;else if(Sys.Extended.UI.HTMLEditor.isIE&&d=="value"&&a.value&&a.value.length>0)continue;else if(Sys.Extended.UI.HTMLEditor.isIE&&d=="align"&&a.align&&a.align.length>0)continue;else if(Sys.Extended.UI.HTMLEditor.isIE&&d=="class"&&a.className&&a.className.length>0)continue;else if(Sys.Extended.UI.HTMLEditor.isIE&&d=="color"&&a.color&&a.color.length>0)continue;else if(Sys.Extended.UI.HTMLEditor.isIE&&d=="size"&&a.size&&a.size.length>0)continue;else if(Sys.Extended.UI.HTMLEditor.isIE&&d=="shape"&&a.shape&&a.shape.length>0)continue;else if(Sys.Extended.UI.HTMLEditor.isIE&&d=="coords"&&a.coords&&a.coords.length>0)continue;else if(h==s&&d=="align"&&Sys.Extended.UI.HTMLEditor.isIE)b=Sys.Extended.UI.HTMLEditor.convertAlign(p.value);else{b=p.value;if(Sys.Extended.UI.HTMLEditor.isSafari&&d=="class")if(/apple-style/ig.test(b))continue;if(d=="src"||d=="href"){if(Sys.Extended.UI.HTMLEditor.isIE)b=Sys.Extended.UI.HTMLEditor.getRealAttributeIE(a,d,b);b=b.replace(/(\(S\([A-Za-z0-9_]+\)\)\/)/,e)}b=b.replace(/\"/g,g)}else{if(Sys.Extended.UI.HTMLEditor.isSafari)q=p.value;continue}var m=f;if((e+b+e).indexOf(f)>=0)m="'";d!=j&&c.append(" "+d+"="+m+b+m)}if(a.style.cssText.length>0||q!=j){var d="style",z=/(url\((?:[^\)]*)\))/ig,y=[];function C(b,a){y.push(a)}var b=(q!=j?q:a.style.cssText).toLowerCase();b.replace(z,C);var x=0;function D(){var a=y[x];x++;return a}b=Sys.Extended.UI.HTMLEditor.tryReplaceRgb(b.replace(z,D)).replace(/(font-weight\s*:\s*)(700)/ig,"$1bold").replace(/([\s]*-moz-[^;]*[;][\s]*)/ig,e).replace(/(-moz-.*)$/i,e).replace(/(background-position: 0% 0%[;]*[\s]*)/ig,e);if(Sys.Extended.UI.HTMLEditor.isSafari){function B(d,a,b,c){return a+b.replace(/(,)/g,e)+c}b=b.replace(/(text-decoration:)([^;$]+)([;$])/ig,B)}if(Sys.Extended.UI.HTMLEditor.isSafari||Sys.Extended.UI.HTMLEditor.isOpera){function A(d,a,b,c){return a+b.replace(/(['"])/g,e)+c}b=b.replace(/(font-family:)([^;]+)([;]*)/ig,A)}if(b.length>0){var m=f;if((e+b+e).indexOf(f)>=0)m="'";c.append(" "+d+"="+m+b+m)}}c.append(l?" />":">");h=="br"&&c.append("\n")}a.tagName&&a.tagName.toUpperCase()=="SCRIPT"&&c.append(a.text);if(a.tagName&&a.tagName.toUpperCase()=="STYLE")c.append(a.innerHTML);else for(i=a.firstChild;i;i=i.nextSibling)Sys.Extended.UI.HTMLEditor._getHTML_(c,i,true);v&&a.tagName.length>0&&!l&&r&&c.append("</"+u+a.tagName.toLowerCase()+">");break;case 3:c.append(Sys.Extended.UI.HTMLEditor._encodeText_(e+a.data+e));break;case 8:if(a.length>0)c.append("<!--"+a.data+"-->");else c.append("<!---->")}};Sys.Extended.UI.HTMLEditor.RemoveContextMenu=function(){var a=this,b=a._contextElement.parentNode.removeChild(a._contextElement);if(b)delete b;a._contextElement=null;a._contextTable=null;if(a.__saved_range__){a.__saved_range__.select();a.__saved_range__=null}};Sys.Extended.UI.HTMLEditor.contentEditable=function(a,f){var e="undefined",b=null;while(a!=b){try{var c=b;if(a.contentEditable!=b&&typeof a.contentEditable!=e&&!(Sys.Extended.UI.HTMLEditor.isSafari||Sys.Extended.UI.HTMLEditor.isOpera))if(!a.contentEditable||a.contentEditable=="false")c=false;else c=true;else{var d=a.getAttribute("contenteditable");if(typeof d=="boolean")c=d;else if(typeof d=="string"&&d.toLowerCase()=="false")c=false}if(c!=b&&typeof c=="boolean")if(!c)return a}catch(g){}if(typeof f!=e&&f)return b;if(a.tagName!=b&&typeof a.tagName!=e&&(a.tagName.toUpperCase()=="BODY"||a.tagName.toUpperCase()=="HTML"))break;a=a.parentNode}return b};Sys.Extended.UI.HTMLEditor.getSelParent=function(c){var d=c._getSelection(),b=c._createRange(d),a=null;if(Sys.Extended.UI.HTMLEditor.isIE)if(d.type.toLowerCase()=="control")a=b.item(0);else a=c._getParent(b);else{a=c._getParent(b);if(a.nodeType!=3&&b.startContainer==b.endContainer){var e=a;a=a.childNodes.item(b.startOffset);if(a==null)a=e}}return a};Sys.Extended.UI.HTMLEditor.__getIndex=function(b){var a=0;if(b.parentNode)for(;a<b.parentNode.childNodes.length;a++)if(b.parentNode.childNodes.item(a)==b)break;return a};Sys.Extended.UI.HTMLEditor.isInlineElement=function(a){var b=false;if(a.nodeType==3)return true;if(a.nodeType!=1)return b;if(!a.tagName||a.tagName.length==0)return b;if(a&&a.style&&a.style.display&&a.style.display.toLowerCase()=="inline")return true;var c=a.tagName.toUpperCase();if(c.length==2)if(c.substr(0,1)=="H"&&parseInt(c.substr(1,1))>0)return b;switch(c){case"BR":case"TBODY":case"TR":case"TD":case"P":case"PRE":case"TABLE":case"OL":case"UL":case"LI":case"HR":case"DIV":case"BLOCKQUOTE":case"FORM":case"FIELDSET":case"LEGEND":return b;default:return true}};Sys.Extended.UI.HTMLEditor.capLock=function(b){var a=b.charCode,c=b.shiftKey?b.shiftKey:a==16?true:false;return a>=65&&a<=90&&!c||a>=97&&a<=122&&c?true:false};Sys.Extended.UI.HTMLEditor.operateAnchors=function(e,i,k){for(var h=i.getElementsByTagName("A"),j=false,f=0;f<h.length;f++){var a=h[f];if(a.name&&a.name.length>0){for(var d=[],g=0;g<a.childNodes.length;g++){var b=a.childNodes.item(g);if(b.nodeType==1&&b.tagName&&b.tagName.toUpperCase()=="IMG"&&b.src==e._editPanel.get_imagePath_anchor()){d.push(b);j=true}}while(d.length>0)a.removeChild(d.pop());if(!k){var c=i.createElement("IMG");c.title=a.name;c.src=e._editPanel.get_imagePath_anchor();c.setAttribute(e.noContextMenuAttributeName(),"yes");a.appendChild(c)}}}return j};Sys.Extended.UI.HTMLEditor.operatePlaceHolders=function(q,h,r){var n="undefined",m="PLACEHOLDER",l="placeholder",k="dummytag",o=false;if(r){for(var g=h.getElementsByTagName("IMG"),c=[],b=0;b<g.length;b++)c.push(g[b]);for(var b=0;b<c.length;b++){var a=c[b],i=a.getAttribute(k);if(i&&i.length>0&&i.toLowerCase()==l){var j=h.createElement(m),d=a.title;if(d==null||typeof d==n)d=a.getAttribute("title");j.name=d;j.setAttribute("name",d);a.parentNode.insertBefore(j,a);a.parentNode.removeChild(a);o=true}}}else{for(var g=h.getElementsByTagName(m),c=[],b=0;b<g.length;b++)c.push(g[b]);for(var b=0;b<c.length;b++){var a=c[b],p=true;try{if(a.childNodes.length>0)p=false}catch(s){}if(p){var e=a.name;if(e==null||typeof e==n)e=a.getAttribute("name");var f=h.createElement("IMG");f.title=e;f.src=q._editPanel.get_imagePath_placeHolder();f.setAttribute(k,l);f.setAttribute("title",e);a.parentNode.insertBefore(f,a);a.parentNode.removeChild(a)}}}return o};Sys.Extended.UI.HTMLEditor.inspectForShadows=function(e){var d="draggesture",c="dragstart";for(var b=e.getElementsByTagName("IMG"),a=0;a<b.length;a++)if(b[a].getAttribute(Sys.Extended.UI.HTMLEditor.attachedIdAttribute)&&b[a].getAttribute(Sys.Extended.UI.HTMLEditor.attachedIdAttribute).length>0){try{if(Sys.Extended.UI.HTMLEditor.isIE)$removeHandler(b[a],c,Sys.Extended.UI.HTMLEditor.stopDrag);else $removeHandler(b[a],d,Sys.Extended.UI.HTMLEditor.stopDrag)}catch(f){}if(Sys.Extended.UI.HTMLEditor.isIE)$addHandler(b[a],c,Sys.Extended.UI.HTMLEditor.stopDrag);else $addHandler(b[a],d,Sys.Extended.UI.HTMLEditor.stopDrag)}};Sys.Extended.UI.HTMLEditor.attachedIdAttribute="obout-attached-id";Sys.Extended.UI.HTMLEditor.stopDrag=function(a){a&&a.stopPropagation();a.preventDefault();return false};Sys.Extended.UI.HTMLEditor.replacingRules=[["strong","font-weight","bold"],["b","font-weight","bold"],["strong","font-weight","700"],["em","font-style","italic"],["i","font-style","italic"],["u","text-decoration","underline"],["strike","text-decoration","line-through"]];Sys.Extended.UI.HTMLEditor.replaceOldTags=function(c,g){for(var j=c.innerHTML,k=false,d=0;d<Sys.Extended.UI.HTMLEditor.replacingRules.length;d++){var m=new RegExp("<"+Sys.Extended.UI.HTMLEditor.replacingRules[d][0]+"[s>]","ig");if(m.test(j)){k=true;break}}if(!k)if(!/<font[\s>]/ig.test(j))return;for(var h=0;h<c.childNodes.length;h++){var a=c.childNodes.item(h);if(a.nodeType==1){for(var e=null,i=a.tagName.toLowerCase(),d=0;d<Sys.Extended.UI.HTMLEditor.replacingRules.length;d++)if(Sys.Extended.UI.HTMLEditor.replacingRules[d][0].toLowerCase()==i){e=Sys.Extended.UI.HTMLEditor.replacingRules[d];break}if(e){var b=g._doc.createElement("SPAN");b.style.cssText=a.style.cssText;if(Sys.Extended.UI.HTMLEditor.isIE)b.style[e[1]]=e[2];else b.style[e[1].replace(/\-(\w)/g,function(b,a){return a.toUpperCase()})]=e[2];while(a.firstChild)b.appendChild(a.firstChild);c.insertBefore(b,a);c.removeChild(a);a=b}else if(i=="font"){var b=g._doc.createElement("SPAN"),l=a.size;b.style.cssText=a.style.cssText;if(a.color)b.style.color=a.color;if(a.face)b.style.fontFamily=a.face;while(a.firstChild)b.appendChild(a.firstChild);c.insertBefore(b,a);c.removeChild(a);if(l){var f=g._doc.createElement("FONT");f.size=l;c.insertBefore(f,b);if(b.style.cssText.length>0){f.appendChild(b);a=b}else{while(b.firstChild)f.appendChild(b.firstChild);c.removeChild(b);a=f}}else a=b}Sys.Extended.UI.HTMLEditor.replaceOldTags(a,g)}}};Sys.Extended.UI.HTMLEditor.getStyle=function(a,b){var c="";if(a.nodeType==1)if(a.ownerDocument&&a.ownerDocument.defaultView&&a.ownerDocument.defaultView.getComputedStyle)c=a.ownerDocument.defaultView.getComputedStyle(a,"").getPropertyValue(b);else if(a.currentStyle)try{b=b.replace(/\-(\w)/g,function(b,a){return a.toUpperCase()});c=a.currentStyle[b]}catch(d){c=a.style[b]}else c=a.style[b];return c};Sys.Extended.UI.HTMLEditor._Marker=function(c,d,f){var b=this;if(Sys.Extended.UI.HTMLEditor.isIE){b._nArr=Sys.Extended.UI.HTMLEditor.getNames(c._doc.body);b._save=c._doc.body.innerHTML;b._tree=null;if(f.type.toLowerCase()=="control")try{var a=d.item(0);b._tree=[];while(a&&(a.nodeType==3||!a.tagName||a.tagName.toUpperCase()!="BODY")){var e=0;while(a.previousSibling){e++;a=a.previousSibling}b._tree.push(e);a=a.parentNode}}catch(g){}else{b._offsetLeft=d.offsetLeft;b._offsetTop=d.offsetTop}}else{if(Sys.Extended.UI.HTMLEditor.isOpera)b._save=Sys.Extended.UI.HTMLEditor.Trim(c._doc.body.innerHTML);else b._save=c._doc.body.cloneNode(true);b._tree=[];b._offset=0;try{var a=d.startContainer;b._offset=d.startOffset;if(a&&a.nodeType==1&&a.tagName.toUpperCase()=="HTML"){a=c._doc.body;setTimeout(function(){try{f=c._getSelection();d=c._createRange();c._removeAllRanges(f);d.setStart(a,0);d.setEnd(a,0);c._selectRange(f,d)}catch(b){}},0)}while(a&&a.nodeType&&(a.nodeType==3||!a.tagName||a.tagName.toUpperCase()!="BODY")){var e=0;while(a.previousSibling){e++;if(Sys.Extended.UI.HTMLEditor.isOpera)if(a.nodeType==3&&a.previousSibling!=null&&a.previousSibling.nodeType==3)e--;a=a.previousSibling}b._tree.push(e);a=a.parentNode}}catch(g){}}};Sys.Extended.UI.HTMLEditor.__stackMaxSize=30;Sys.Extended.UI.HTMLEditor.getNames=function(i){for(var e=i.all,g=[],h=[],d=0;d<e.length;d++){var a=e[d];if(a.name&&a.name.length>0){for(var b=a.tagName,f=i.getElementsByTagName(b),j=0,c=0;c<f.length;c++)if(f[c]==a){j=c;break}h[b]=j;g.push([b,h[b],a.name])}}return g};Sys.Extended.UI.HTMLEditor.setNames=function(c,b){for(var a=0;a<b.length;a++)if(c.getElementsByTagName(b[a][0]).length>b[a][1])c.getElementsByTagName(b[a][0])[b[a][1]].name=b[a][2]};Sys.Extended.UI.HTMLEditor._lookChild=function(c,d){for(var a=0;a<c.childNodes.length;a++){var b=c.childNodes.item(a);if(b==d)return a;if(b.nodeType==1)if(Sys.Extended.UI.HTMLEditor._lookChild(b,d)>=0)return a}return-1};Sys.Extended.UI.HTMLEditor.getHrefsText=function(d){var a=[];function b(g,e,h,i,j,f){for(var d=e.replace(/^<([^\s>]+)/,"$1"),c=true,b=0;b<a.length;b++)if(a[b][0]==d){c=false;break}if(c)a[b]=[d];a[b].push(f)}var c=new RegExp("(<[^\\s><]+)([^><]*?)(href=)(\"|')([^\\4]*?)(\\4)((?:[^><]*?)>)","ig");d.replace(c,b);return a};Sys.Extended.UI.HTMLEditor.setHrefsText=function(g,d){for(var b=0;b<d.length;b++)for(var c=g.getElementsByTagName(d[b][0]),e=1,a=0;a<c.length;a++){if(!c[a].href)continue;if(d[b][e]&&d[b][e].length>0){var f;if(Sys.Extended.UI.HTMLEditor.isIE)f=c[a].innerHTML;c[a].href=d[b][e].replace(/&amp;/ig,"&");if(Sys.Extended.UI.HTMLEditor.isIE)c[a].innerHTML=f}e++}};Sys.Extended.UI.HTMLEditor.getImagesText=function(c){var a=[];function b(b,d,e,c){a.push(c);return b}c.replace(/(<img(?:.*?))(src=")(.*?)(")((?:.*?)>)/ig,b);return a};Sys.Extended.UI.HTMLEditor.setImagesText=function(e,d){for(var c=e.getElementsByTagName("IMG"),b=0,a=0;a<c.length;a++){if(!c[a].src)continue;if(d[b]&&d[b].length>0)c[a].src=d[b].replace(/&amp;/ig,"&");b++}};Sys.Extended.UI.HTMLEditor.canHaveChildren=function(a){return Sys.Extended.UI.HTMLEditor.isIE?a.canHaveChildren:!/^(area|base|basefont|col|frame|hr|img|br|input|isindex|link|meta|param)$/.test(a.tagName.toLowerCase())};Sys.Extended.UI.HTMLEditor._setCursor=function(j,a){var c=j;if(Sys.Extended.UI.HTMLEditor.isIE){var e=a._getSelection(),b=a._createRange(e);if(e.type.toLowerCase()=="control"){b.remove(0);e.empty();b=a._createRange()}var g=c.nodeType==3,d;if(g){d=a._doc.createElement("SPAN");d.innerHTML="&nbsp;";c.parentNode.insertBefore(d,c);c=d}var f=$common.getLocation(c),h=f.x,i=f.y;g&&d.parentNode.removeChild(d);try{b.moveToPoint(h,i)}catch(k){}b.select()}else{var e=a._getSelection(),b=a._createRange();b.setStart(c,0);b.setEnd(c,0);a._removeAllRanges(e);a._selectRange(e,b);a.focusEditor()}};Sys.Extended.UI.HTMLEditor.myClone=function(a,e,d){var b;if(Sys.Extended.UI.HTMLEditor.isIE&&a.tagName&&(a.tagName.toUpperCase()=="EMBED"||a.tagName.toUpperCase()=="OBJECT")){var c=e.createElement("DIV");try{c.innerHTML=a.outerHTML;b=c.firstChild}catch(f){b=a}delete c}else b=a.cloneNode(d);return b};Sys.Extended.UI.HTMLEditor.unStyle=function(a){var k="function",f=false,b=null,c=a.parentNode!=b&&typeof a.parentNode!="undefined"?a.parentNode:b;if(c){var d=b;while(c&&c.tagName&&c.tagName.toUpperCase()!="BODY"&&Sys.Extended.UI.HTMLEditor.isStyleTag(c.tagName)&&c.tagName.toUpperCase()!="A"){d=c;c=c.parentNode}if(d){function j(g,c,h,i,l){var a=h.cloneNode(f);if(g)if(g.push&&typeof g.push==k)for(var n=0;n<g.length;n++)a.appendChild(g[n]);else a.appendChild(g);if(l)a.appendChild(c);else while(c){var q=i?c.previousSibling:c.nextSibling;if(c.nodeType==1||c.nodeType==3&&Sys.Extended.UI.HTMLEditor.Trim(""+c.data+"").length>0){if(c.nodeType==1)if(c.tagName&&Sys.Extended.UI.HTMLEditor.isStyleTag(c.tagName)&&c.childNodes.length==0&&!Sys.Extended.UI.HTMLEditor.isTempElement(c))c=b;if(c)if(a.childNodes.length==0||!i)a.appendChild(c);else a.insertBefore(c,a.firstChild)}c=q}if(a.childNodes.length==0){delete a;a=b}else if(a.childNodes.length==1&&a.firstChild.nodeType==3&&(""+a.firstChild.data+"").length==0){delete a;a=b}else if(!l&&a.tagName&&Sys.Extended.UI.HTMLEditor.isStyleTag(a.tagName)&&a.tagName.toUpperCase()!="A"&&!Sys.Extended.UI.HTMLEditor.isTempElement(a)){for(var o=a.childNodes.length,m=0;m<a.childNodes.length;m++){var e=a.childNodes.item(m);if(e.nodeType==1&&e.tagName&&!Sys.Extended.UI.HTMLEditor.isStyleTag(e.tagName)&&(e.tagName.toUpperCase()=="BR"||e.tagName.toUpperCase()=="TABLE"||Sys.Extended.UI.HTMLEditor.isTempElement(e)))o--}if(o==0){var p=[];while(a.firstChild){var e=a.removeChild(a.firstChild);p.push(e)}a=p}}return h==d?a:!l?j(a,i?h.previousSibling:h.nextSibling,h.parentNode,i,l):j(b,a,h.parentNode,i,l)}c=a.parentNode;if(a.previousSibling==b&&a.nextSibling==b&&c&&c.tagName&&c.tagName.toUpperCase()!="BODY"&&Sys.Extended.UI.HTMLEditor.isStyleTag(c.tagName)&&Sys.Extended.UI.HTMLEditor.differAttr(c,["class","color","face","size"]).length>0)a=c;var h=j(b,a.previousSibling,a.parentNode,true,f),i=j(b,a.nextSibling,a.parentNode,f,f),e=d.parentNode;if(h)if(h.push&&typeof h.push==k)for(var g=0;g<h.length;g++)e.insertBefore(h[g],d);else e.insertBefore(h,d);if(a.nodeType==1&&a.tagName&&(a.tagName.toUpperCase()=="BR"||a.tagName.toUpperCase()=="TABLE"||Sys.Extended.UI.HTMLEditor.isTempElement(a)))e.insertBefore(a,d);else{var l=j(b,a,a.parentNode,f,true);e.insertBefore(l,d)}if(i)if(i.push&&typeof i.push==k)for(var g=0;g<i.length;g++)e.insertBefore(i[g],d);else e.insertBefore(i,d);e.removeChild(d)}}};Sys.Extended.UI.HTMLEditor.isTempElement=function(a){return a.id&&a.id.length>0&&a.id.indexOf(Sys.Extended.UI.HTMLEditor.smartClassName)>=0?true:false};Sys.Extended.UI.HTMLEditor._moveTagsUp=function(d,e){function b(a){if(!Sys.Extended.UI.HTMLEditor.isInlineElement(a)||a.nodeType==3)Sys.Extended.UI.HTMLEditor.unStyle(a);else if(a.tagName&&Sys.Extended.UI.HTMLEditor.isStyleTag(a.tagName)&&a.tagName.toUpperCase()!="A"&&!Sys.Extended.UI.HTMLEditor.isTempElement(a)){var c=a.firstChild;while(c!=null){var d=c.nextSibling;b(c);c=d}}}var a=d;while(a!=null&&a!=e){var c=a.nextSibling;b(a);a=c}};Sys.Extended.UI.HTMLEditor._commonTotalParent=function(e,g){var h=null,a=e.parentNode,f=e;while(a){if(a.tagName&&!Sys.Extended.UI.HTMLEditor.isStyleTag(a.tagName)){var d=Sys.Extended.UI.HTMLEditor._lookChild(a,g);if(d>=0){for(var c=0,b=0;b<a.childNodes.length;b++)if(a.childNodes.item(b)==f){c=b;break}return{parent:a,indexFirst:c,indexLast:d}}}f=a;a=a.parentNode}return h};Sys.Extended.UI.HTMLEditor._commonParent=function(e,g){var h=null,a=e.parentNode,f=e;while(a&&a.tagName.toUpperCase()!="BODY"&&Sys.Extended.UI.HTMLEditor.isStyleTag(a.tagName)){var d=Sys.Extended.UI.HTMLEditor._lookChild(a,g);if(d>=0){for(var c=0,b=0;b<a.childNodes.length;b++)if(a.childNodes.item(b)==f){c=b;break}return{parent:a,indexFirst:c,indexLast:d}}f=a;a=a.parentNode}return h};Sys.Extended.UI.HTMLEditor.positionInParagraph=function(b,e,c,a,f){while(true){var d=Sys.Extended.UI.HTMLEditor.positionInParagraphLevel(b,e,c,f);if(d!=null)return d;if(a.tagName&&Sys.Extended.UI.HTMLEditor.isStyleTag(a.tagName)&&a.tagName.toUpperCase()!="A"&&!Sys.Extended.UI.HTMLEditor.isTempElement(a)){e=c?a.previousSibling:a.nextSibling;a=a.parentNode}else{if(!c||a.firstChild==null)a.appendChild(b);else a.insertBefore(b,a.firstChild);return b}}};Sys.Extended.UI.HTMLEditor.positionInParagraphLevel=function(c,a,d,g){while(a){var j=d?a.previousSibling:a.nextSibling;if(!Sys.Extended.UI.HTMLEditor.isInlineElement(a)){var e=a.parentNode;if(!d)e.insertBefore(c,a);else if(a.nextSibling)e.insertBefore(c,a.nextSibling);else e.appendChild(c);return c}else if(typeof g=="function"&&a.nodeType==3){var b,f=""+a.data+"";if(d){for(b=f.length-1;b>=0;b--)if(g(f.substr(b,1)))break}else for(b=0;b<f.length;b++)if(g(f.substr(b,1)))break;if(b>=0&&b<f.length){var e=a.parentNode,h;if((b>0||d&&b==0)&&(b<f.length-1||!d&&b==f.length-1)){if(d)h=a.splitText(b+1);else h=a.splitText(b);e.insertBefore(c,h)}else if(!d)e.insertBefore(c,a);else if(a.nextSibling)e.insertBefore(c,a.nextSibling);else e.appendChild(c);return c}}a=d?a.lastChild:a.firstChild;if(a){var i=Sys.Extended.UI.HTMLEditor.positionInParagraphLevel(c,a,d,g);if(i!=null)return i}a=j}return null};Sys.Extended.UI.HTMLEditor._addEvent=function(a,b,c){if(a.attachEvent)a.attachEvent("on"+b,c);else a.addEventListener&&a.addEventListener(b,c,true)};Sys.Extended.UI.HTMLEditor._addEvents=function(d,b,c){for(var a=0;a<b.length;a++)Sys.Extended.UI.HTMLEditor._addEvent(d,b[a],c)};Sys.Extended.UI.HTMLEditor._removeEvent=function(a,b,c){if(a.detachEvent)a.detachEvent("on"+b,c);else a.removeEventListener&&a.removeEventListener(b,c,true)};Sys.Extended.UI.HTMLEditor._removeEvents=function(d,b,c){for(var a=0;a<b.length;a++)Sys.Extended.UI.HTMLEditor._removeEvent(d,b[a],c)};Sys.Extended.UI.HTMLEditor._stopEvent=function(a){if(a)if(Sys.Extended.UI.HTMLEditor.isIE){a.cancelBubble=true;a.returnValue=false}else{a.preventDefault();a.stopPropagation()}};Sys.Extended.UI.HTMLEditor.restrictedTags=["DIV","P","TD","TR","TABLE","TBODY","LI","OL","UL","FORM","INPUT"];Sys.Extended.UI.HTMLEditor.isRestricted=function(b){for(var c=b.tagName.toUpperCase(),a=0;a<Sys.Extended.UI.HTMLEditor.restrictedTags.length;a++)if(Sys.Extended.UI.HTMLEditor.restrictedTags[a].toUpperCase()==c)return true;return Sys.Extended.UI.HTMLEditor.isIE&&b.scopeName.toUpperCase()!="HTML"?true:false};Sys.Extended.UI.HTMLEditor.jsDocument=function(c){var a="\n",b=this;b.noExtraLf=typeof c!="undefined"&&c;b.text=[];b.write=function(c){var b=this;if(!b.noExtraLf||b.text.length==0&&c!=a||b.text.length>0&&(b.text[b.text.length-1]!=a||c!=a))b.text[b.text.length]=c};b.append=b.write;b.writeln=function(b){this.text[this.text.length]=b+a};b.toString=function(){return this.text.join("")};b.clear=function(){delete this.text;this.text=null;this.text=[]}};Sys.Extended.UI.HTMLEditor.isHeader=function(b){var a=b.tagName.toUpperCase();if(a.length==2)if(a.substr(0,1)=="H"&&parseInt(a.substr(1,1))>0)return true;return false};Sys.Extended.UI.HTMLEditor._getReallyFirst=function(a){var b="undefined";if(typeof a.firstChild!=b&&a.firstChild!=null)if(typeof a.firstChild.childNodes!=b&&a.firstChild.childNodes!=null)return Sys.Extended.UI.HTMLEditor._getReallyFirst(a.firstChild);return a};Sys.Extended.UI.HTMLEditor._getReallyLast=function(a){var b="undefined";if(typeof a.lastChild!=b&&a.lastChild!=null)if(typeof a.lastChild.childNodes!=b&&a.lastChild.childNodes!=null)return Sys.Extended.UI.HTMLEditor._getReallyLast(a.lastChild);return a};Sys.Extended.UI.HTMLEditor._reallyFirst=function(a,b){if(a.firstChild){if(a.firstChild==b)return true;if(a.firstChild.childNodes)if(Sys.Extended.UI.HTMLEditor._lookChild(a.firstChild,b)==0)return Sys.Extended.UI.HTMLEditor._reallyFirst(a.firstChild,b)}return false};Sys.Extended.UI.HTMLEditor._reallyLast=function(a,b){if(a.lastChild){if(a.lastChild==b)return true;if(a.lastChild.childNodes)if(Sys.Extended.UI.HTMLEditor._lookChild(a.lastChild,b)==a.lastChild.childNodes.length-1)return Sys.Extended.UI.HTMLEditor._reallyLast(a.lastChild,b)}return false};Sys.Extended.UI.HTMLEditor.getContainer=function(b,c){if(c==b)return b;if(b.nodeType==1)for(var d=0;d<b.childNodes.length;d++){var a=b.childNodes.item(d);if(c==a)return a;if(a.nodeType==1){var e=Sys.Extended.UI.HTMLEditor._lookChild(a,c);if(e>=0)return a.tagName&&Sys.Extended.UI.HTMLEditor.isStyleTag(a.tagName)&&a.tagName.toUpperCase()!="A"&&!Sys.Extended.UI.HTMLEditor.isTempElement(a)?Sys.Extended.UI.HTMLEditor.getContainer(a,c):a}}return null};Sys.Extended.UI.HTMLEditor._TryTransformFromPxToPt=function(h,f,g){var c=h.replace(/^(\d+)\.(\d+)px/i,"$1px");if(!Sys.Extended.UI.HTMLEditor.isIE)if(c&&c.length>0){var d=c.toLowerCase().split(",")[0];if(typeof g!="undefined"){var e=document.getElementById(g);if(e!=null){for(var a=0;a<e.options.length;a++){var i=Sys.Extended.UI.HTMLEditor.fontSizeSeek(e.options.item(a).value.toLowerCase().split(",")[0]);if(i==d)break}if(a==e.options.length){var b=f._doc.createElement("SPAN");f._doc.body.appendChild(b);for(a=1;a<100;a++){b.style.fontSize=a+"pt";if(Sys.Extended.UI.HTMLEditor.getStyle(b,"font-size").replace(/^(\d+)\.(\d+)px/i,"$1px")==d){d=a+"pt";break}}b.parentNode.removeChild(b)}}}c=d}return c};Sys.Extended.UI.HTMLEditor.fontSizeSeek=function(b){var a=b.toString();switch(a){case"1":a="8pt";break;case"2":a="10pt";break;case"3":a="12pt";break;case"4":a="14pt";break;case"5":a="18pt";break;case"6":a="24pt";break;case"7":a="36pt"}return a};Sys.Extended.UI.HTMLEditor.getOwnerDocument=function(a){return a.nodeType==9?a:a.ownerDocument||a.document};Sys.Extended.UI.HTMLEditor.getClientViewportElement=function(b){var a;if(b.nodeType==9)a=b;else a=Sys.Extended.UI.HTMLEditor.getOwnerDocument(b);return Sys.Extended.UI.HTMLEditor.isIE&&a.compatMode!="CSS1Compat"?a.body:a.documentElement};Sys.Extended.UI.HTMLEditor.isReallyVisible=function(c){var a=c,b=true;while(a){if(a.style&&Sys.Extended.UI.HTMLEditor.getStyle(a,"display")=="none"){b=false;break}a=a.parentNode}return b};Sys.Extended.UI.HTMLEditor.setSelectionRange=function(a,c,e){var d="character";a.focus();if(a.setSelectionRange)a.setSelectionRange(c,e);else if(a.createTextRange){var b=a.createTextRange();b.collapse(true);b.moveEnd(d,e);b.moveStart(d,c);b.select()}};Sys.Extended.UI.HTMLEditor.setElementVisibility=function(e){var d=[],a=e;while(a&&a.nodeType==1&&a.tagName.toUpperCase()!="BODY"){var c=a.style.display,b=a.style.visibility;if(a.style&&(c=="none"||b=="hidden")){d.push({element:a,display:c,visibility:b});a.style.display="";a.style.visibility="visible"}a=a.parentNode}return d};Sys.Extended.UI.HTMLEditor.restoreElementVisibility=function(d){for(var b=0;b<d.length;b++){var a=d[b],c=a.element.style;c.display=a.display;c.visibility=a.visibility}};if(!Sys.Extended.UI.HTMLEditor.isIE)try{Sys.Extended.UI.HTMLEditor.__MozillaGetInnerText=function(g,b){for(var d=g.childNodes,c=0;c<d.length;c++){var a=d[c];a.nodeType==3&&b.write(a.nodeValue.replace("\n",""));if(a.nodeType==1){var f=Sys.Extended.UI.HTMLEditor.getStyle(a,"display"),e=Sys.Extended.UI.HTMLEditor.getStyle(a,"visibility");Sys.Extended.UI.HTMLEditor.__needLineBreakBefore(a)&&b.write("\n");Sys.Extended.UI.HTMLEditor.__needTabBefore(a)&&b.write("\t");f!="none"&&e!="hidden"&&Sys.Extended.UI.HTMLEditor.__MozillaGetInnerText(a,b);Sys.Extended.UI.HTMLEditor.__needLineBreakAfter(a)&&b.write("\n")}}};Sys.Extended.UI.HTMLEditor.__needLineBreakBefore=function(b){var a=" div table p pre ol ul blockquote form fieldset ";return a.indexOf(" "+b.tagName.toLowerCase()+" ")!=-1};Sys.Extended.UI.HTMLEditor.__needLineBreakAfter=function(b){var a=" br div table tr p pre ol ul li hr blockquote form fieldset legend ";return a.indexOf(" "+b.tagName.toLowerCase()+" ")!=-1};Sys.Extended.UI.HTMLEditor.__needTabBefore=function(b){var a=" td li ";return a.indexOf(" "+b.tagName.toLowerCase()+" ")!=-1}}catch(ex){};6// (c) 2010 CodePlex Foundation
(function(){var b="HtmlEditorExtenderBehavior";function a(){var n="ToolbarButtons",m="BackColor",l="ForeColor",c="on",j="blur",k="select",h="button",f="input",e=true,d="unselectable",g="div",b=false,a=null;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.HtmlEditorExtenderBehavior=function(m){var j="ajax__html_editor_extender_button",i="px",c=this;Sys.Extended.UI.HtmlEditorExtenderBehavior.initializeBase(c,[m]);c._textbox=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(m);var l=c.get_id();c._backColor=a;c._foreColor=a;c._commandName=a;c.savedRange=a;c.isInFocus=a;_flag=b;c._ButtonWidth=23;c._ButtonHeight=21;c._containerTemplate={nodeName:g,properties:{id:l+"_ExtenderContainer"},cssClasses:[d,"ajax__html_editor_extender_container"]};c._editableTemplate={nodeName:g,properties:{id:l+"_ExtenderContentEditable",style:{height:"80%",overflow:"auto",clear:"both"},contentEditable:e},cssClasses:["ajax__html_editor_extender_texteditor"]};c._buttonTemplate={nodeName:f,properties:{type:h,style:{width:c._ButtonWidth+i,height:c._ButtonHeight+i}},cssClasses:[j]};c._textboxTemplate={nodeName:f,properties:{type:"text"}};c._dropDownTemplate={nodeName:k,properties:{style:{width:c._ButtonWidth+i,height:c._ButtonHeight+i}},cssClasses:[j]};c._topButtonContainerTemplate={nodeName:g,properties:{id:l+"_ExtenderButtonContainer"},cssClasses:["ajax__html_editor_extender_buttoncontainer"]};c._container=a;c._toolbarButtons=a;c._editableDiv=a;c._topButtonContainer=a;c._buttons=[];c._btnClickHandler=a;c._requested_buttons=[];c._colorPicker=a;c._txtBoxForColor=a;if(typeof WebForm_OnSubmit=="function"&&!Sys.Extended.UI.HtmlEditorExtenderBehavior._originalWebForm_OnSubmit){Sys.Extended.UI.HtmlEditorExtenderBehavior._originalWebForm_OnSubmit=WebForm_OnSubmit;WebForm_OnSubmit=Sys.Extended.UI.HtmlEditorExtenderBehavior.WebForm_OnSubmit}};Sys.Extended.UI.HtmlEditorExtenderBehavior.prototype={initialize:function(){var b=this;Sys.Extended.UI.HtmlEditorExtenderBehavior.callBaseMethod(b,"initialize");var h=0;b._button_list=[];b._createContainer();b._createTopButtonContainer();b._createEditableDiv();b._createButton();var c=b._textbox._element.parentNode;while(c!=a&&c.nodeName!="FORM")c=c.parentNode;if(c==a)throw"Missing Form tag";var f=Function.createDelegate(b,b._textBox_onblur),d=Function.createDelegate(b,b._editableDiv_onblur),g=Function.createDelegate(b,b._executeCommand);$addHandler(b._textbox._element,j,f,e);$addHandler(b._editableDiv,j,d,e);$addHandler(b._topButtonContainer,"click",g)},_dispose:function(){$removeHandler(this._textbox._element,j,delTextBox_onblur);$removeHandler(this._editableDiv,j,delEditableDiv_onblur);$removeHandler(_topButtonContainer,"click",btnClickHandler);Sys.Extended.UI.HtmlEditorExtenderBehavior.callBaseMethod(this,"dispose")},_createContainer:function(){var a=this,c=a.get_element();a._container=$common.createElementFromTemplate(a._containerTemplate,c.parentNode);var b=$common.getBounds(a._textbox._element);$common.setSize(a._container,{width:b.width,height:b.height});$common.wrapElement(a._textbox._element,a._container,a._container)},_createTopButtonContainer:function(){this._topButtonContainer=$common.createElementFromTemplate(this._topButtonContainerTemplate,this._container)},_createButton:function(){var s="ajax__html_editor_extender_button ajax__html_editor_extender_",r="21px",o="transparent",u="solid 1px #c2c2c2",q="Arial",p="11px",g="left",j="span",e=this,w=Sys.Browser.agent==Sys.Browser.InternetExplorer;for(i=0;i<e._toolbarButtons.length;i++){var n;if(e._toolbarButtons[i].CommandName=="HorizontalSeparator")n=$common.createElementFromTemplate({nodeName:j,cssClasses:["ajax__html_editor_extender_separator"]},e._topButtonContainer);else if(e._toolbarButtons[i].CommandName=="FontName"){n=$common.createElementFromTemplate({nodeName:"nobr",properties:{style:{"float":g,cssFloat:g,fontSize:p}},cssClasses:["fontnameclass"],children:[{nodeName:j,properties:{textContent:"Font ",innerText:"Font ",style:{paddingLeft:"5px",fontWeight:"bold"}}}]},e._topButtonContainer);_select=$common.createElementFromTemplate({nodeName:k,properties:{style:{fontSize:"9px",fontFamily:q,height:"20px",width:"90px"}},events:{change:function(){var a=this.options[this.selectedIndex].value;setTimeout(function(){document.execCommand("fontname",b,a)},200)}}},n);var v=[{Text:q,Value:"arial,helvetica,sans-serif"},{Text:"Courier New",Value:"courier new,courier,monospace"},{Text:"Georgia",Value:"georgia,times new roman,times,serif"},{Text:"Tahoma",Value:"tahoma,arial,helvetica,sans-serif"},{Text:"Times New Roman",Value:"times new roman,times,serif"},{Text:"Verdana",Value:"verdana,arial,helvetica,sans-serif"},{Text:"Impact",Value:"impact"},{Text:"WingDings",Value:"wingdings"}];for(x in v){var t=document.createElement("option");t.text=v[x].Text;t.value=v[x].Value;try{_select.add(t,a)}catch(z){_select.add(t)}}_select.setAttribute("id",e._id+e._toolbarButtons[i].CommandName);_select.setAttribute("name",e._toolbarButtons[i].CommandName);_select.setAttribute("title",e._toolbarButtons[i].Tooltip);_select.setAttribute(d,c)}else if(e._toolbarButtons[i].CommandName=="FontSize"){n=$common.createElementFromTemplate({nodeName:"nobr",properties:{style:{"float":g,cssFloat:g,fontSize:p}},cssClasses:["fontsizeclass"],children:[{nodeName:j,properties:{textContent:"Size ",innerText:"Size ",style:{paddingLeft:"5px",fontWeight:"bold"}}}]},e._topButtonContainer);_select=$common.createElementFromTemplate({nodeName:k,properties:{style:{fontSize:p,fontFamily:q,height:"20px",width:w?"30px":"50px"}},events:{change:function(){var a=this.options[this.selectedIndex].value;setTimeout(function(){document.execCommand("fontsize",b,a)},200)}}},n);var v=[{Text:"1",Value:"1"},{Text:"2",Value:"2"},{Text:"3",Value:"3"},{Text:"4",Value:"4"},{Text:"5",Value:"5"},{Text:"6",Value:"6"},{Text:"7",Value:"7"}];for(x in v){var t=document.createElement("option");t.text=v[x].Text;t.value=v[x].Value;try{_select.add(t,a)}catch(z){_select.add(t)}}_select.setAttribute("id",e._id+e._toolbarButtons[i].CommandName);_select.setAttribute("name",e._toolbarButtons[i].CommandName);_select.setAttribute("title",e._toolbarButtons[i].Tooltip);_select.setAttribute(d,c)}else if(e._toolbarButtons[i].CommandName==l){n=$common.createElementFromTemplate({nodeName:j,properties:{style:{backgroundColor:"#ff0000",border:u,display:"block","float":g,cssFloat:g}},cssClasses:["forecolorclass"]},e._topButtonContainer);n.setAttribute(d,c);e._foreColor=$common.createElementFromTemplate({nodeName:f,properties:{type:h,id:e._id+e._toolbarButtons[i].CommandName,name:e._toolbarButtons[i].CommandName,title:e._toolbarButtons[i].Tooltip,style:{backgroundColor:o,width:r,height:"19px",color:o}},cssClasses:[s+e._toolbarButtons[i].CommandName]},n);e._foreColor.setAttribute(d,c)}else if(e._toolbarButtons[i].CommandName==m){n=$common.createElementFromTemplate({nodeName:j,properties:{style:{backgroundColor:"#ff0000",border:u,display:"block","float":g,cssFloat:g}},cssClasses:["backcolorclass"]},e._topButtonContainer);n.setAttribute(d,c);e._backColor=$common.createElementFromTemplate({nodeName:f,properties:{type:h,id:e._id+e._toolbarButtons[i].CommandName,name:e._toolbarButtons[i].CommandName,title:e._toolbarButtons[i].Tooltip,style:{backgroundColor:o,width:r,height:"19px",color:o}},cssClasses:[s+e._toolbarButtons[i].CommandName]},n);e._backColor.setAttribute(d,c)}else{var y={Copy:1,Cut:1,Paste:1};if(!(Sys.Browser.agent!=Sys.Browser.InternetExplorer&&y[e._toolbarButtons[i].CommandName])){n=$common.createElementFromTemplate({nodeName:f,properties:{type:h,id:e._id+e._toolbarButtons[i].CommandName,name:e._toolbarButtons[i].CommandName,title:e._toolbarButtons[i].Tooltip,style:{width:"23px",height:r}},cssClasses:[s+e._toolbarButtons[i].CommandName]},e._topButtonContainer);n.setAttribute(d,c)}Array.add(e._buttons,n)}}},_createEditableDiv:function(){var a=this;a._editableDiv=$common.createElementFromTemplate(a._editableTemplate,a._container);a._editableDiv.innerHTML=a._textbox._element.value;$common.setVisible(a._textbox._element,b)},_editableDiv_onblur:function(){this._textbox._element.value=this._encodeHtml()},_textBox_onblur:function(){this._editableDiv.innerHTML=this._textbox._element.value},_attributes:{style:"st_yle_",size:"si_ze_",color:"co_lor_",face:"fa_ce_",align:"al_ign_"},_rgbToHex:function(b){var a=/rgb\s?\(\s?(\d+)\s?,\s?(\d+)\s?,\s?(\d+)\s?\)/.exec(b);return"#"+(parseInt(a[3],10)|parseInt(a[2],10)<<8|parseInt(a[1],10)<<16).toString(16)},_encodeHtml:function(){for(var e=Sys.Browser.agent==Sys.Browser.InternetExplorer,d=this._editableDiv.getElementsByTagName("*"),k=d.length,b,j,i,f=0;b=d[f];f++){try{b.className="";b.removeAttribute("class")}catch(l){}try{b.id="";b.removeAttribute("id")}catch(l){}try{b.removeAttribute("width")}catch(l){}e}var a=this._editableDiv.innerHTML;if(e){var g=/\<[^\>]+\>/g;a=a.replace(g,function(c){var b=/\=\'([^\'])*\'/g,a=/\=([^\"][^\s\/\>]*)/g;return c.replace(b,'="$1"').replace(a,'="$1"')})}var h=this._rgbToHex,c=function(){a=a.replace(/(\<[^\>]+)(rgb\s?\(\d{1,3}\s?\,\s?\d{1,3}\s?\,\s?\d{1,3}\s?\))([^\>]*\>)/gi,function(d,b,a,c){return(b||"")+(a&&h(a)||"")+(c||"")})};c();c();a=a.replace(/\sclass\=\"\"/gi,"").replace(/\sid\=\"\"/gi,"");a=a.replace(/\<(\/?)strong\>/gi,"<$1b>").replace(/\<(\/?)em\>/gi,"<$1i>");a=a.replace(/&/ig,"&amp;").replace(/\xA0/ig,"&nbsp;");a=a.replace(/</ig,"&lt;").replace(/>/ig,"&gt;").replace(/\'/ig,"&apos;").replace(/\"/ig,"&quot;");return a},_editableDiv_submit:function(){var c=this,d=3,b=a;c._editableDiv.focus();if(Sys.Browser.agent!=Sys.Browser.Firefox)if(document.selection){b=document.selection.createRange();b.moveStart("character",d);b.select()}else{b=window.getSelection();b.collapse(c._editableDiv.firstChild,d)}c._textbox._element.value=c._encodeHtml()},_executeCommand:function(f){var i="createLink",d=this;if(f.target.name==undefined)return;var o=Sys.Browser.agent==Sys.Browser.Firefox,k=Function.createDelegate(d,d._colorPicker_onchange);o&&document.execCommand("styleWithCSS",b,b);var r={JustifyRight:1,JustifyLeft:1,JustifyCenter:1,JustifyFull:1,Indent:1,Outdent:1};if(r[f.target.name])try{document.execCommand(f.target.name,b,a)}catch(t){if(t&&t.result==2147500037){var p=window.getSelection().getRangeAt(0),j=document.createElement(g),n=b;j.style.height="1px;";if(p.startContainer.contentEditable=="true"){window.getSelection().collapseToEnd();n=e}var h=window.getSelection().getRangeAt(0).startContainer;while(h&&h.contentEditable!="true")h=h.parentNode;if(!h)throw"Selected node is not editable!";h.insertBefore(j,h.childNodes[0]);document.execCommand(f.target.name,b,a);j.parentNode.removeChild(j);n&&window.getSelection().addRange(p)}else window.console&&window.console.log&&window.console.log(t)}else if(f.target.name==i){var q=prompt("Please insert  URL","");q&&document.execCommand(i,b,q)}else if(f.target.name==l){d._commandName=f.target.name;d.saveSelection();if(!d._foreColorPicker){d._foreColorPicker=$create(Sys.Extended.UI.ColorPickerBehavior,{unselectable:c},{},{},d._foreColor);d._foreColorPicker.set_sample(d._foreColor.parentNode);d._foreColorPicker.add_colorSelectionChanged(k)}d._foreColorPicker.show()}else if(f.target.name==m){d._commandName=f.target.name;d.saveSelection();if(!d._backColorPicker){d._backColorPicker=$create(Sys.Extended.UI.ColorPickerBehavior,{unselectable:c},{},{},d._backColor);d._backColorPicker.set_sample(d._backColor.parentNode);d._backColorPicker.add_colorSelectionChanged(k)}d._backColorPicker.show()}else if(f.target.name=="UnSelect")if(o){d._editableDiv.focus();var s=window.getSelection();s.collapse(d._editableDiv.firstChild,0)}else document.execCommand(f.target.name,b,a);else document.execCommand(f.target.name,b,a)},_colorPicker_onchange:function(c){var a="stylewithcss";this.restoreSelection();if(/backcolor/i.test(this._commandName)){var d=Sys.Browser.agent==Sys.Browser.Firefox;if(d){document.execCommand(a,b,e);document.execCommand("hilitecolor",b,"#"+c._selectedColor);document.execCommand(a,b,b)}else document.execCommand("backcolor",b,"#"+c._selectedColor)}else document.execCommand(this._commandName,b,"#"+c._selectedColor)},saveSelection:function(){if(window.getSelection)this.savedRange=window.getSelection().getRangeAt(0);else if(document.selection)this.savedRange=document.selection.createRange()},restoreSelection:function(){var b=this;b.isInFocus=e;if(b.savedRange!=a)if(window.getSelection){var c=window.getSelection();c.rangeCount>0&&c.removeAllRanges();c.addRange(b.savedRange)}else if(document.createRange)window.getSelection().addRange(b.savedRange);else document.selection&&b.savedRange.select()},get_ButtonWidth:function(){return this._ButtonWidth},set_ButtonWidth:function(a){if(this._ButtonWidth!=a){this._ButtonWidth=a;this.raisePropertyChanged("ButtonWidth")}},get_ButtonHeight:function(){return this._ButtonHeight},set_ButtonHeight:function(a){if(this._ButtonHeight!=a){this._ButtonHeight=a;this.raisePropertyChanged("ButtonHeight")}},get_ToolbarButtons:function(){return this._toolbarButtons},set_ToolbarButtons:function(a){if(this._toolbarButtons!=a){this._toolbarButtons=a;this.raisePropertyChanged(n)}}};Sys.Extended.UI.HtmlEditorExtenderBehavior.registerClass("Sys.Extended.UI.HtmlEditorExtenderBehavior",Sys.Extended.UI.BehaviorBase);Sys.registerComponent(Sys.Extended.UI.HtmlEditorExtenderBehavior,{name:"HtmlEditorExtender",parameters:[{name:n,type:"HtmlEditorExtenderButton[]"}]});Sys.Extended.UI.HtmlEditorExtenderBehavior.WebForm_OnSubmit=function(){var d=Sys.Extended.UI.HtmlEditorExtenderBehavior._originalWebForm_OnSubmit();if(d)for(var b=Sys.Application.getComponents(),a=0;a<b.length;a++){var c=b[a];Sys.Extended.UI.HtmlEditorExtenderBehavior.isInstanceOfType(c)&&c._editableDiv_submit()}return d}}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedBase","ExtendedCommon"],a);else a()})();�:// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />

(function() {
var scriptName = "ExtendedDynamicPopulate";

function execute() {

Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.DynamicPopulateBehavior = function(element) {
    /// <summary>
    /// The DynamicPopulateBehavior replaces the contents of an element with the result of a web service or page method call.  The method call returns a string of HTML that is inserted as the children of the target element.
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// DOM Element the behavior is associated with
    /// </param>
    Sys.Extended.UI.DynamicPopulateBehavior.initializeBase(this, [element]);
    
    this._servicePath = location.pathname;
    this._serviceMethod = null;
    this._contextKey = null;
    this._cacheDynamicResults = false;
    this._populateTriggerID = null;
    this._setUpdatingCssClass = null;
    this._clearDuringUpdate = true;
    this._customScript = null;
    
    this._clickHandler = null;
    
    this._callID = 0;
    this._currentCallID = -1;
    
    this._populated = false;
}
Sys.Extended.UI.DynamicPopulateBehavior.prototype = {
    initialize : function() {
        /// <summary>
        /// Initialize the behavior
        /// </summary>
        Sys.Extended.UI.DynamicPopulateBehavior.callBaseMethod(this, 'initialize');
        $common.prepareHiddenElementForATDeviceUpdate();        
    
        if (this._populateTriggerID) {
            var populateTrigger = $get(this._populateTriggerID);
            if (populateTrigger) {
                this._clickHandler = Function.createDelegate(this, this._onPopulateTriggerClick);
                $addHandler(populateTrigger, "click", this._clickHandler);
            }
        }
    },
    
    dispose : function() {
        /// <summary>
        /// Dispose the behavior
        /// </summary>

        if (this._populateTriggerID && this._clickHandler) {
            var populateTrigger = $get(this._populateTriggerID);
            if (populateTrigger) {
                $removeHandler(populateTrigger, "click", this._clickHandler);
            }
            this._populateTriggerID = null;
            this._clickHandler = null;
        }
       
        Sys.Extended.UI.DynamicPopulateBehavior.callBaseMethod(this, 'dispose');
    },
    
    populate : function(contextKey) {
        /// <summary>
        /// Get the dymanic content and use it to populate the target element
        /// </summary>
        /// <param name="contextKey" type="String" mayBeNull="true" optional="true">
        /// An arbitrary string value to be passed to the web method. For example, if the element to be
        /// populated is within a data-bound repeater, this could be the ID of the current row.
        /// </param>
        
        if (this._populated && this._cacheDynamicResults) {
            return;
        }

        if (this._currentCallID == -1) {
            var eventArgs = new Sys.CancelEventArgs();
            this.raisePopulating(eventArgs);
            if (eventArgs.get_cancel()) {
                return;
            }
            this._setUpdating(true);
        }
        
        if (this._customScript) {
            var scriptResult = eval(this._customScript);
            this._setTargetHtml(scriptResult); 
            this._setUpdating(false);
         } else {
             this._currentCallID = ++this._callID;
             if (this._servicePath && this._serviceMethod) {
                Sys.Net.WebServiceProxy.invoke(this._servicePath, this._serviceMethod, false,
                    { contextKey:(contextKey ? contextKey : this._contextKey) },
                    Function.createDelegate(this, this._onMethodComplete), Function.createDelegate(this, this._onMethodError),
                    this._currentCallID);
                $common.updateFormToRefreshATDeviceBuffer();
             }
        }
    },

    _onMethodComplete : function (result, userContext, methodName) {
        /// <summary>
        /// Callback used when the populating service returns successfully
        /// </summary>
        /// <param name="result" type="Object" mayBeNull="">
        /// The data returned from the Web service method call
        /// </param>
        /// <param name="userContext" type="Object">
        /// The context information that was passed when the Web service method was invoked
        /// </param>        
        /// <param name="methodName" type="String">
        /// The Web service method that was invoked
        /// </param>

        if (userContext != this._currentCallID) return;

        this._setTargetHtml(result);

        this._setUpdating(false);
    },

    _onMethodError : function(webServiceError, userContext, methodName) {
        /// <summary>
        /// Callback used when the populating service fails
        /// </summary>
        /// <param name="webServiceError" type="Sys.Net.WebServiceError">
        /// Web service error
        /// </param>
        /// <param name="userContext" type="Object">
        /// The context information that was passed when the Web service method was invoked
        /// </param>        
        /// <param name="methodName" type="String">
        /// The Web service method that was invoked
        /// </param>

        if (userContext != this._currentCallID) return;

        if (webServiceError.get_timedOut()) {
            this._setTargetHtml(Sys.Extended.UI.Resources.DynamicPopulate_WebServiceTimeout);
        } else {
            this._setTargetHtml(String.format(Sys.Extended.UI.Resources.DynamicPopulate_WebServiceError, webServiceError.get_statusCode()));
        }

        this._setUpdating(false);
    },

    _onPopulateTriggerClick : function() {
        /// <summary>
        /// Handler for the element described by PopulateTriggerID's click event
        /// </summary>

        this.populate(this._contextKey);
    },
    
    _setUpdating : function(updating) {
        /// <summary>
        /// Toggle the display elements to indicate if they are being updated or not
        /// </summary>
        /// <param name="updating" type="Boolean">
        /// Whether or not the display should indicated it is being updated
        /// </param>

        this.setStyle(updating);
        
        if (!updating) {
            this._currentCallID = -1;
            this._populated = true;
            this.raisePopulated(this, Sys.EventArgs.Empty);
        }
    },
    
    _setTargetHtml : function(value) {
        /// <summary>
        /// Populate the target element with the given value
        /// </summary>
        /// <param name="value" type="String">
        /// The data to populate the target element.
        /// </param>
        
        var e = this.get_element()
        if (e) {
            if (e.tagName == "INPUT") {
                e.value = value;
            } else {
                e.innerHTML = value;
            }
        }
    },
    
    setStyle : function(updating) {
        /// <summary>
        /// Set the style of the display
        /// </summary>
        /// <param name="updating" type="Boolean">
        /// Whether or not the display is being updated
        /// </param>
        
        var e = this.get_element();
        if (this._setUpdatingCssClass) {
            if (!updating) {
                e.className = this._oldCss;
                this._oldCss = null;
            } else {
                this._oldCss = e.className;
                e.className = this._setUpdatingCssClass;
            }
        }
        
        if (updating && this._clearDuringUpdate) {
            this._setTargetHtml("");
        }
    },
    
    get_ClearContentsDuringUpdate : function() {
        /// <value type="Boolean">
        /// Whether the contents of the target should be cleared when an update begins
        /// </value>
        return this._clearDuringUpdate;
    },
    set_ClearContentsDuringUpdate : function(value) {
        if (this._clearDuringUpdate != value) {
            this._clearDuringUpdate = value;
            this.raisePropertyChanged('ClearContentsDuringUpdate');
        }
    },
    
    get_ContextKey : function() {
        /// <value type="String">
        /// An arbitrary string value to be passed to the web method.
        /// For example, if the element to be populated is within a
        /// data-bound repeater, this could be the ID of the current row.
        /// </value>
        return this._contextKey;
    },
    set_ContextKey : function(value) {
        if (this._contextKey != value) {
            this._contextKey = value;
            this.raisePropertyChanged('ContextKey');
        }
    },
    
    get_PopulateTriggerID : function() {
        /// <value type="String" mayBeNull="true" optional="true">
        /// Name of an element that triggers the population of the target when clicked
        /// </value>
        return this._populateTriggerID;
    },
    set_PopulateTriggerID : function(value) {
        if (this._populateTriggerID != value) {
            this._populateTriggerID = value;
            this.raisePropertyChanged('PopulateTriggerID');
        }
    },
    
    get_ServicePath : function() {
        /// <value type="String" mayBeNull="true" optional="true">
        /// The URL of the web service to call.  If the ServicePath is not defined, then we will invoke a PageMethod instead of a web service.
        /// </value>
        return this._servicePath;
    },
    set_ServicePath : function(value) {
        if (this._servicePath != value) {
            this._servicePath = value;
            this.raisePropertyChanged('ServicePath');
        }
    },
    
    get_ServiceMethod : function() {
        /// <value type="String">
        /// The name of the method to call on the page or web service
        /// </value>
        /// <remarks>
        /// The signature of the method must exactly match the following:
        ///    [WebMethod]
        ///    string DynamicPopulateMethod(string contextKey)
        ///    {
        ///        ...
        ///    }
        /// </remarks>
        return this._serviceMethod;
    },
    set_ServiceMethod : function(value) {
        if (this._serviceMethod != value) {
            this._serviceMethod = value;
            this.raisePropertyChanged('ServiceMethod');
        }
    },
    
    get_cacheDynamicResults : function() {
        /// <value type="Boolean" mayBeNull="false">
        /// Whether the results of the dynamic population should be cached and
        /// not fetched again after the first load
        /// </value>
        return this._cacheDynamicResults;
    },
    set_cacheDynamicResults : function(value) {
        if (this._cacheDynamicResults != value) {
            this._cacheDynamicResults = value;
            this.raisePropertyChanged('cacheDynamicResults');
        }
    },
    
    get_UpdatingCssClass : function() {
        /// <value type="String">
        /// The CSS class to apply to the target during asynchronous calls
        /// </value>
        return this._setUpdatingCssClass;
    },
    set_UpdatingCssClass : function(value) {
        if (this._setUpdatingCssClass != value) {
            this._setUpdatingCssClass = value;
            this.raisePropertyChanged('UpdatingCssClass');
        }
    },
    
    get_CustomScript : function() {
        /// <value type="String">
        /// The script to invoke instead of calling a Web or Page method. This script must evaluate to a string value.
        /// </value>
        return this._customScript;
    },   
    set_CustomScript : function(value) {
        if (this._customScript != value) {
            this._customScript = value;
            this.raisePropertyChanged('CustomScript');
        }
    },
    
    add_populating : function(handler) {
        /// <summary>
        /// Add an event handler for the populating event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('populating', handler);
    },
    remove_populating : function(handler) {
        /// <summary>
        /// Remove an event handler from the populating event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('populating', handler);
    },
    raisePopulating : function(eventArgs) {
        /// <summary>
        /// Raise the populating event
        /// </summary>
        /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
        /// Event arguments for the populating event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('populating');
        if (handler) {
            handler(this, eventArgs);
        }
    },
    
    add_populated : function(handler) {
        /// <summary>
        /// Add an event handler for the populated event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('populated', handler);
    },
    remove_populated : function(handler) {
        /// <summary>
        /// Remove an event handler from the populated event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('populated', handler);
    },
    raisePopulated : function(eventArgs) {
        /// <summary>
        /// Raise the populated event
        /// </summary>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="false">
        /// Event arguments for the populated event
        /// </param>
        /// <returns />
         
        var handler = this.get_events().getHandler('populated');
        if (handler) {
            handler(this, eventArgs);
        }
    }
}
Sys.Extended.UI.DynamicPopulateBehavior.registerClass('Sys.Extended.UI.DynamicPopulateBehavior', Sys.Extended.UI.BehaviorBase);
Sys.registerComponent(Sys.Extended.UI.DynamicPopulateBehavior, { name: "dynamicPopulate" });

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedBase", "ExtendedCommon", "Network"], execute);
}
else {
    execute();
}

})();
wp// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../../Common/Common.js" />
/// <reference path="../Timer/Timer.js" />

(function() {
var scriptName = "ExtendedDragDrop";

function execute() {

///////////////////////////////////////////////////////////////////////////////

Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.IDragSource = function() {
}
Sys.Extended.UI.IDragSource.prototype = {
    get_dragDataType: function() { throw Error.notImplemented(); },
    getDragData: function() { throw Error.notImplemented(); },
    get_dragMode: function() { throw Error.notImplemented(); },
    onDragStart: function() { throw Error.notImplemented(); },
    onDrag: function() { throw Error.notImplemented(); },
    onDragEnd: function() { throw Error.notImplemented(); }
}
Sys.Extended.UI.IDragSource.registerInterface('Sys.Extended.UI.IDragSource');

///////////////////////////////////////////////////////////////////////////////
Sys.Extended.UI.IDropTarget = function() {
}
Sys.Extended.UI.IDropTarget.prototype = {
    get_dropTargetElement: function() { throw Error.notImplemented(); },
    canDrop: function() { throw Error.notImplemented(); },
    drop: function() { throw Error.notImplemented(); },
    onDragEnterTarget: function() { throw Error.notImplemented(); },
    onDragLeaveTarget: function() { throw Error.notImplemented(); },
    onDragInTarget: function() { throw Error.notImplemented(); }
}
Sys.Extended.UI.IDropTarget.registerInterface('Sys.Extended.UI.IDropTarget');

///////////////////////////////////////////////

Sys.Extended.UI.DragMode = function() {
    throw Error.invalidOperation();
}
Sys.Extended.UI.DragMode.prototype = {
    Copy: 0,
    Move: 1
}
Sys.Extended.UI.DragMode.registerEnum('Sys.Extended.UI.DragMode');

////////////////////////////////////////////////////////////////////

Sys.Extended.UI.DragDropEventArgs = function(dragMode, dragDataType, dragData) {
    this._dragMode = dragMode;
    this._dataType = dragDataType;
    this._data = dragData;
}
Sys.Extended.UI.DragDropEventArgs.prototype = {
    get_dragMode: function() {
        return this._dragMode || null;
    },
    get_dragDataType: function() {
        return this._dataType || null;
    },
    get_dragData: function() {
        return this._data || null;
    }
}
Sys.Extended.UI.DragDropEventArgs.registerClass('Sys.Extended.UI.DragDropEventArgs');


Sys.Extended.UI._DragDropManager = function() {
    this._instance = null;
    this._events =  null;
}
Sys.Extended.UI._DragDropManager.prototype = {

    add_dragStart: function(handler) {
        this.get_events().addHandler('dragStart', handler);
    },
    remove_dragStart: function(handler) {
        this.get_events().removeHandler('dragStart', handler);
    },

    get_events: function() {
        if (!this._events) {
            this._events = new Sys.EventHandlerList();
        }
        return this._events;
    },

    add_dragStop: function(handler) {
        this.get_events().addHandler('dragStop', handler);
    },
    remove_dragStop: function(handler) {
        this.get_events().removeHandler('dragStop', handler);
    },

    _getInstance: function() {
        if (!this._instance) {
            if (Sys.Browser.agent === Sys.Browser.InternetExplorer) {
                this._instance = new Sys.Extended.UI.IEDragDropManager();
            }
            else {
                this._instance = new Sys.Extended.UI.GenericDragDropManager();
            }
            this._instance.initialize();
            this._instance.add_dragStart(Function.createDelegate(this, this._raiseDragStart));
            this._instance.add_dragStop(Function.createDelegate(this, this._raiseDragStop));
        }
        return this._instance;
    },

    startDragDrop: function(dragSource, dragVisual, context, useBuiltInDragAndDropFunctions) {
        this._getInstance().startDragDrop(dragSource, dragVisual, context, useBuiltInDragAndDropFunctions);
    },

    registerDropTarget: function(target) {
        this._getInstance().registerDropTarget(target);
    },

    unregisterDropTarget: function(target) {
        this._getInstance().unregisterDropTarget(target);
    },

    dispose: function() {
        delete this._events;
        Sys.Application.unregisterDisposableObject(this);
        Sys.Application.removeComponent(this);
    },

    _raiseDragStart: function(sender, eventArgs) {
        var handler = this.get_events().getHandler('dragStart');
        if (handler) {
            handler(this, eventArgs);
        }
    },

    _raiseDragStop: function(sender, eventArgs) {
        var handler = this.get_events().getHandler('dragStop');
        if (handler) {
            handler(this, eventArgs);
        }
    }
}
Sys.Extended.UI._DragDropManager.registerClass('Sys.Extended.UI._DragDropManager');
Sys.Extended.UI.DragDropManager = new Sys.Extended.UI._DragDropManager();


Sys.Extended.UI.IEDragDropManager = function() {
    Sys.Extended.UI.IEDragDropManager.initializeBase(this);
    
    this._dropTargets = null;
    this._radius = 10;
    this._useBuiltInDragAndDropFunctions = true;
    this._activeDragVisual = null;
    this._activeContext = null;
    this._activeDragSource = null;
    this._underlyingTarget = null;
    this._oldOffset = null;
    this._potentialTarget = null;
    this._isDragging = false;
    this._mouseUpHandler = null;
    this._documentMouseMoveHandler = null;
    this._documentDragOverHandler = null;
    this._dragStartHandler = null;
    this._mouseMoveHandler = null;
    this._dragEnterHandler = null;
    this._dragLeaveHandler = null;
    this._dragOverHandler = null;
    this._dropHandler = null;
}
Sys.Extended.UI.IEDragDropManager.prototype = {

    add_dragStart: function(handler) {
        this.get_events().addHandler("dragStart", handler);
    },

    remove_dragStart: function(handler) {
        this.get_events().removeHandler("dragStart", handler);
    },

    add_dragStop: function(handler) {
        this.get_events().addHandler("dragStop", handler);
    },

    remove_dragStop: function(handler) {
        this.get_events().removeHandler("dragStop", handler);
    },

    initialize: function() {
        Sys.Extended.UI.IEDragDropManager.callBaseMethod(this, 'initialize');
        this._mouseUpHandler = Function.createDelegate(this, this._onMouseUp);
        this._documentMouseMoveHandler = Function.createDelegate(this, this._onDocumentMouseMove);
        this._documentDragOverHandler = Function.createDelegate(this, this._onDocumentDragOver);
        this._dragStartHandler = Function.createDelegate(this, this._onDragStart);
        this._mouseMoveHandler = Function.createDelegate(this, this._onMouseMove);
        this._dragEnterHandler = Function.createDelegate(this, this._onDragEnter);
        this._dragLeaveHandler = Function.createDelegate(this, this._onDragLeave);
        this._dragOverHandler = Function.createDelegate(this, this._onDragOver);
        this._dropHandler = Function.createDelegate(this, this._onDrop);
    },


    dispose: function() {
        if (this._dropTargets) {
            for (var i = 0; i < this._dropTargets; i++) {
                this.unregisterDropTarget(this._dropTargets[i]);
            }
            this._dropTargets = null;
        }

        Sys.Extended.UI.IEDragDropManager.callBaseMethod(this, 'dispose');
    },


    startDragDrop: function(dragSource, dragVisual, context, useBuiltInDragAndDropFunctions) {
        var ev = window._event;

        if (this._isDragging) {
            return;
        }

        this._underlyingTarget = null;
        this._activeDragSource = dragSource;
        this._activeDragVisual = dragVisual;
        this._activeContext = context;
        this._useBuiltInDragAndDropFunctions = typeof (useBuiltInDragAndDropFunctions) != 'undefined' ? useBuiltInDragAndDropFunctions : true;

        var mousePosition = { x: ev.clientX, y: ev.clientY };

        dragVisual.originalPosition = dragVisual.style.position;
        dragVisual.style.position = "absolute";

        document._lastPosition = mousePosition;
        dragVisual.startingPoint = mousePosition;
        var scrollOffset = this.getScrollOffset(dragVisual, /* recursive */true);

        dragVisual.startingPoint = this.addPoints(dragVisual.startingPoint, scrollOffset);

        var left = parseInt(dragVisual.style.left);
        var top = parseInt(dragVisual.style.top);
        if (isNaN(left)) left = "0";
        if (isNaN(top)) top = "0";

        dragVisual.startingPoint = this.subtractPoints(dragVisual.startingPoint, { x: left, y: top });

        this._prepareForDomChanges();
        dragSource.onDragStart();
        var eventArgs = new Sys.Extended.UI.DragDropEventArgs(
            dragSource.get_dragMode(),
            dragSource.get_dragDataType(),
            dragSource.getDragData(context));
        var handler = this.get_events().getHandler('dragStart');
        if (handler) handler(this, eventArgs);
        this._recoverFromDomChanges();

        this._wireEvents();

        this._drag(/* isInitialDrag */true);
    },


    _stopDragDrop: function(cancelled) {
        var ev = window._event;
        if (this._activeDragSource != null) {
            this._unwireEvents();

            if (!cancelled) {
                cancelled = (this._underlyingTarget == null);
            }

            if (!cancelled && this._underlyingTarget != null) {
                this._underlyingTarget.drop(this._activeDragSource.get_dragMode(), this._activeDragSource.get_dragDataType(),
                    this._activeDragSource.getDragData(this._activeContext));
            }

            this._activeDragSource.onDragEnd(cancelled);
            var handler = this.get_events().getHandler('dragStop');
            if (handler) handler(this, Sys.EventArgs.Empty);

            this._activeDragVisual.style.position = this._activeDragVisual.originalPosition;

            this._activeDragSource = null;
            this._activeContext = null;
            this._activeDragVisual = null;
            this._isDragging = false;
            this._potentialTarget = null;
            ev.preventDefault();
        }
    },

    _drag: function(isInitialDrag) {
        var ev = window._event;
        var mousePosition = { x: ev.clientX, y: ev.clientY };

        document._lastPosition = mousePosition;

        var scrollOffset = this.getScrollOffset(this._activeDragVisual, /* recursive */true);
        var position = this.addPoints(this.subtractPoints(mousePosition, this._activeDragVisual.startingPoint), scrollOffset);

        if (!isInitialDrag && parseInt(this._activeDragVisual.style.left) == position.x && parseInt(this._activeDragVisual.style.top) == position.y) {
            return;
        }

        $common.setLocation(this._activeDragVisual, position);

        this._prepareForDomChanges();
        this._activeDragSource.onDrag();
        this._recoverFromDomChanges();

        this._potentialTarget = this._findPotentialTarget(this._activeDragSource, this._activeDragVisual);

        var movedToOtherTarget = (this._potentialTarget != this._underlyingTarget || this._potentialTarget == null);
        if (movedToOtherTarget && this._underlyingTarget != null) {
            this._leaveTarget(this._activeDragSource, this._underlyingTarget);
        }

        if (this._potentialTarget != null) {
            if (movedToOtherTarget) {
                this._underlyingTarget = this._potentialTarget;

                this._enterTarget(this._activeDragSource, this._underlyingTarget);
            }
            else {
                this._moveInTarget(this._activeDragSource, this._underlyingTarget);
            }
        }
        else {
            this._underlyingTarget = null;
        }
    },


    _wireEvents: function() {
        if (this._useBuiltInDragAndDropFunctions) {
            $addHandler(document, "mouseup", this._mouseUpHandler);
            $addHandler(document, "mousemove", this._documentMouseMoveHandler);
            $addHandler(document.body, "dragover", this._documentDragOverHandler);

            $addHandler(this._activeDragVisual, "dragstart", this._dragStartHandler);
            $addHandler(this._activeDragVisual, "dragend", this._mouseUpHandler);
            $addHandler(this._activeDragVisual, "drag", this._mouseMoveHandler);
        } else {
            $addHandler(document, "mouseup", this._mouseUpHandler);
            $addHandler(document, "mousemove", this._mouseMoveHandler);
        }
    },


    _unwireEvents: function() {
        if (this._useBuiltInDragAndDropFunctions) {
            $removeHandler(this._activeDragVisual, "drag", this._mouseMoveHandler);
            $removeHandler(this._activeDragVisual, "dragend", this._mouseUpHandler);
            $removeHandler(this._activeDragVisual, "dragstart", this._dragStartHandler);

            $removeHandler(document.body, "dragover", this._documentDragOverHandler);
            $removeHandler(document, "mousemove", this._documentMouseMoveHandler);
            $removeHandler(document, "mouseup", this._mouseUpHandler);
        } else {
            $removeHandler(document, "mousemove", this._mouseMoveHandler);
            $removeHandler(document, "mouseup", this._mouseUpHandler);
        }
    },


    registerDropTarget: function(dropTarget) {
        if (this._dropTargets == null) {
            this._dropTargets = [];
        }
        Array.add(this._dropTargets, dropTarget);

        this._wireDropTargetEvents(dropTarget);
    },


    unregisterDropTarget: function(dropTarget) {
        this._unwireDropTargetEvents(dropTarget);
        if (this._dropTargets) {
            Array.remove(this._dropTargets, dropTarget);
        }
    },


    _wireDropTargetEvents: function(dropTarget) {
        var associatedElement = dropTarget.get_dropTargetElement();
        associatedElement._dropTarget = dropTarget;
        $addHandler(associatedElement, "dragenter", this._dragEnterHandler);
        $addHandler(associatedElement, "dragleave", this._dragLeaveHandler);
        $addHandler(associatedElement, "dragover", this._dragOverHandler);
        $addHandler(associatedElement, "drop", this._dropHandler);
    },


    _unwireDropTargetEvents: function(dropTarget) {
        var associatedElement = dropTarget.get_dropTargetElement();
        if (associatedElement._dropTarget) {
            associatedElement._dropTarget = null;
            $removeHandler(associatedElement, "dragenter", this._dragEnterHandler);
            $removeHandler(associatedElement, "dragleave", this._dragLeaveHandler);
            $removeHandler(associatedElement, "dragover", this._dragOverHandler);
            $removeHandler(associatedElement, "drop", this._dropHandler);
        }
    },


    _onDragStart: function(ev) {
        window._event = ev;
        document.selection.empty();

        var dt = ev.dataTransfer;
        if (!dt && ev.rawEvent) dt = ev.rawEvent.dataTransfer;

        var dataType = this._activeDragSource.get_dragDataType().toLowerCase();
        var data = this._activeDragSource.getDragData(this._activeContext);

        if (data) {
            if (dataType != "text" && dataType != "url") {
                dataType = "text";

                if (data.innerHTML != null) {
                    data = data.innerHTML;
                }
            }

            dt.effectAllowed = "move";
            dt.setData(dataType, data.toString());
        }
    },

    _onMouseUp: function(ev) {
        window._event = ev;
        this._stopDragDrop(false);
    },

    _onDocumentMouseMove: function(ev) {
        window._event = ev;
        this._dragDrop();
    },

    _onDocumentDragOver: function(ev) {
        window._event = ev;
        if (this._potentialTarget) ev.preventDefault();
    },

    _onMouseMove: function(ev) {
        window._event = ev;
        this._drag();
    },

    _onDragEnter: function(ev) {
        window._event = ev;
        if (this._isDragging) {
            ev.preventDefault();
        }
        else {
            var dataObjects = Sys.Extended.UI.IEDragDropManager._getDataObjectsForDropTarget(this._getDropTarget(ev.target));
            for (var i = 0; i < dataObjects.length; i++) {
                this._dropTarget.onDragEnterTarget(Sys.Extended.UI.DragMode.Copy, dataObjects[i].type, dataObjects[i].value);
            }
        }
    },

    _onDragLeave: function(ev) {
        window._event = ev;
        if (this._isDragging) {
            ev.preventDefault();
        }
        else {
            var dataObjects = Sys.Extended.UI.IEDragDropManager._getDataObjectsForDropTarget(this._getDropTarget(ev.target));
            for (var i = 0; i < dataObjects.length; i++) {
                this._dropTarget.onDragLeaveTarget(Sys.Extended.UI.DragMode.Copy, dataObjects[i].type, dataObjects[i].value);
            }
        }
    },

    _onDragOver: function(ev) {
        window._event = ev;
        if (this._isDragging) {
            ev.preventDefault();
        }
        else {
            var dataObjects = Sys.Extended.UI.IEDragDropManager._getDataObjectsForDropTarget(this._getDropTarget(ev.target));
            for (var i = 0; i < dataObjects.length; i++) {
                this._dropTarget.onDragInTarget(Sys.Extended.UI.DragMode.Copy, dataObjects[i].type, dataObjects[i].value);
            }
        }
    },

    _onDrop: function(ev) {
        window._event = ev;
        if (!this._isDragging) {
            var dataObjects = Sys.Extended.UI.IEDragDropManager._getDataObjectsForDropTarget(this._getDropTarget(ev.target));
            for (var i = 0; i < dataObjects.length; i++) {
                this._dropTarget.drop(Sys.Extended.UI.DragMode.Copy, dataObjects[i].type, dataObjects[i].value);
            }
        }
        ev.preventDefault();
    },

    _getDropTarget: function(element) {
        while (element) {
            if (element._dropTarget != null) {
                return element._dropTarget;
            }
            element = element.parentNode;
        }
        return null;
    },

    _dragDrop: function() {
        if (this._isDragging) {
            return;
        }

        this._isDragging = true;
        this._activeDragVisual.dragDrop();
        document.selection.empty();
    },

    _moveInTarget: function(dragSource, dropTarget) {
        this._prepareForDomChanges();
        dropTarget.onDragInTarget(dragSource.get_dragMode(), dragSource.get_dragDataType(), dragSource.getDragData(this._activeContext));
        this._recoverFromDomChanges();
    },

    _enterTarget: function(dragSource, dropTarget) {
        this._prepareForDomChanges();
        dropTarget.onDragEnterTarget(dragSource.get_dragMode(), dragSource.get_dragDataType(), dragSource.getDragData(this._activeContext));
        this._recoverFromDomChanges();
    },

    _leaveTarget: function(dragSource, dropTarget) {
        this._prepareForDomChanges();
        dropTarget.onDragLeaveTarget(dragSource.get_dragMode(), dragSource.get_dragDataType(), dragSource.getDragData(this._activeContext));
        this._recoverFromDomChanges();
    },

    _findPotentialTarget: function(dragSource, dragVisual) {
        var ev = window._event;

        if (this._dropTargets == null) {
            return null;
        }

        var type = dragSource.get_dragDataType();
        var mode = dragSource.get_dragMode();
        var data = dragSource.getDragData(this._activeContext);

        var scrollOffset = this.getScrollOffset(document.body, /* recursive */true);
        var x = ev.clientX + scrollOffset.x;
        var y = ev.clientY + scrollOffset.y;
        var cursorRect = { x: x - this._radius, y: y - this._radius, width: this._radius * 2, height: this._radius * 2 };

        var targetRect;
        for (var i = 0; i < this._dropTargets.length; i++) {
            targetRect = $common.getBounds(this._dropTargets[i].get_dropTargetElement());
            if ($common.overlaps(cursorRect, targetRect) && this._dropTargets[i].canDrop(mode, type, data)) {
                return this._dropTargets[i];
            }
        }

        return null;
    },

    _prepareForDomChanges: function() {
        this._oldOffset = $common.getLocation(this._activeDragVisual);
    },

    _recoverFromDomChanges: function() {
        var newOffset = $common.getLocation(this._activeDragVisual);
        if (this._oldOffset.x != newOffset.x || this._oldOffset.y != newOffset.y) {
            this._activeDragVisual.startingPoint = this.subtractPoints(this._activeDragVisual.startingPoint, this.subtractPoints(this._oldOffset, newOffset));
            scrollOffset = this.getScrollOffset(this._activeDragVisual, /* recursive */true);
            var position = this.addPoints(this.subtractPoints(document._lastPosition, this._activeDragVisual.startingPoint), scrollOffset);
            $common.setLocation(this._activeDragVisual, position);
        }
    },

    addPoints: function(p1, p2) {
        return { x: p1.x + p2.x, y: p1.y + p2.y };
    },

    subtractPoints: function(p1, p2) {
        return { x: p1.x - p2.x, y: p1.y - p2.y };
    },

    getScrollOffset: function(element, recursive) {
        var left = element.scrollLeft;
        var top = element.scrollTop;
        if (recursive) {
            var parent = element.parentNode;
            while (parent != null && parent.scrollLeft != null) {
                left += parent.scrollLeft;
                top += parent.scrollTop;
                if (parent == document.body && (left != 0 && top != 0))
                    break;
                parent = parent.parentNode;
            }
        }
        return { x: left, y: top };
    },

    getBrowserRectangle: function() {
        var width = window.innerWidth;
        var height = window.innerHeight;
        if (width == null) {
            width = document.documentElement.clientWidth;
        }
        if (height == null) {
            height = document.documentElement.clientHeight;
        }

        return { x: 0, y: 0, width: width, height: height };
    },

    getNextSibling: function(item) {
        for (item = item.nextSibling; item != null; item = item.nextSibling) {
            if (item.innerHTML != null) {
                return item;
            }
        }
        return null;
    },

    hasParent: function(element) {
        return (element.parentNode != null && element.parentNode.tagName != null);
    }
}
Sys.Extended.UI.IEDragDropManager.registerClass('Sys.Extended.UI.IEDragDropManager', Sys.Component);

Sys.Extended.UI.IEDragDropManager._getDataObjectsForDropTarget = function(dropTarget) {
    if (dropTarget == null) {
        return [];
    }
    var ev = window._event;
    var dataObjects = [];
    var dataTypes = [ "URL", "Text" ];
    var data;
    for (var i = 0; i < dataTypes.length; i++) {
        var dt = ev.dataTransfer;
        if(!dt && ev.rawEvent) dt = ev.rawEvent.dataTransfer;
        data = dt.getData(dataTypes[i]);
        if (dropTarget.canDrop(Sys.Extended.UI.DragMode.Copy, dataTypes[i], data)) {
            if (data) {
                Array.add(dataObjects, { type : dataTypes[i], value : data });
            }
        }
    }

    return dataObjects;
}


Sys.Extended.UI.GenericDragDropManager = function() {
    Sys.Extended.UI.GenericDragDropManager.initializeBase(this);
    
    this._dropTargets = null;
    this._scrollEdgeConst = 40;
    this._scrollByConst = 10;
    this._scroller = null;
    this._scrollDeltaX = 0;
    this._scrollDeltaY = 0;
    this._activeDragVisual = null;
    this._activeContext = null;
    this._activeDragSource = null;
    this._oldOffset = null;
    this._potentialTarget = null;
    this._mouseUpHandler = null;
    this._mouseMoveHandler = null;
    this._keyPressHandler = null;
    this._scrollerTickHandler = null;
}
Sys.Extended.UI.GenericDragDropManager.prototype = {
   
    initialize : function() {
        Sys.Extended.UI.GenericDragDropManager.callBaseMethod(this, "initialize");
        this._mouseUpHandler = Function.createDelegate(this, this._onMouseUp);
        this._mouseMoveHandler = Function.createDelegate(this, this._onMouseMove);
        this._keyPressHandler = Function.createDelegate(this, this._onKeyPress);
        this._scrollerTickHandler = Function.createDelegate(this, this._onScrollerTick);
        this._scroller = new Sys.Timer();
        this._scroller.set_interval(10);
        this._scroller.add_tick(this._scrollerTickHandler);
    },

    startDragDrop : function(dragSource, dragVisual, context) {
        this._activeDragSource = dragSource;
        this._activeDragVisual = dragVisual;
        this._activeContext = context;
        
        Sys.Extended.UI.GenericDragDropManager.callBaseMethod(this, "startDragDrop", [dragSource, dragVisual, context]);
    },
    
    _stopDragDrop : function(cancelled) {
        this._scroller.set_enabled(false);
        
        Sys.Extended.UI.GenericDragDropManager.callBaseMethod(this, "_stopDragDrop", [cancelled]);
    },
    
    _drag : function(isInitialDrag) {
        Sys.Extended.UI.GenericDragDropManager.callBaseMethod(this, "_drag", [isInitialDrag]);
        
        this._autoScroll();
    },
    
    _wireEvents : function() {
        $addHandler(document, "mouseup", this._mouseUpHandler);
        $addHandler(document, "mousemove", this._mouseMoveHandler);
        $addHandler(document, "keypress", this._keyPressHandler);
    },
    
    _unwireEvents : function() {
        $removeHandler(document, "keypress", this._keyPressHandler);
        $removeHandler(document, "mousemove", this._mouseMoveHandler);
        $removeHandler(document, "mouseup", this._mouseUpHandler);
    },
    
    _wireDropTargetEvents : function(dropTarget) {
    },
    
    _unwireDropTargetEvents : function(dropTarget) {
    },
    
    _onMouseUp : function(e) {
        window._event = e;
        this._stopDragDrop(false);
    },
    
    _onMouseMove : function(e) {
        window._event = e;
        this._drag();
    },
    
    _onKeyPress : function(e) {
        window._event = e;
        var k = e.keyCode ? e.keyCode : e.rawEvent.keyCode;
        if (k == 27) {
            this._stopDragDrop(/* cancel */ true);
        }
    },
    
    _autoScroll : function() {
        var ev = window._event;
        var browserRect = this.getBrowserRectangle();
        if (browserRect.width > 0) {
            this._scrollDeltaX = this._scrollDeltaY = 0;
            if (ev.clientX < browserRect.x + this._scrollEdgeConst) this._scrollDeltaX = -this._scrollByConst;
            else if (ev.clientX > browserRect.width - this._scrollEdgeConst) this._scrollDeltaX = this._scrollByConst;
            if (ev.clientY < browserRect.y + this._scrollEdgeConst) this._scrollDeltaY = -this._scrollByConst;
            else if (ev.clientY > browserRect.height - this._scrollEdgeConst) this._scrollDeltaY = this._scrollByConst;
            if (this._scrollDeltaX != 0 || this._scrollDeltaY != 0) {
                this._scroller.set_enabled(true);
            }
            else {
                this._scroller.set_enabled(false);
            }
        }
    },
    
    _onScrollerTick : function() {
        var oldLeft = document.body.scrollLeft;
        var oldTop = document.body.scrollTop;
        window.scrollBy(this._scrollDeltaX, this._scrollDeltaY);
        var newLeft = document.body.scrollLeft;
        var newTop = document.body.scrollTop;
        
        var dragVisual = this._activeDragVisual;
        var position = { x: parseInt(dragVisual.style.left) + (newLeft - oldLeft), y: parseInt(dragVisual.style.top) + (newTop - oldTop) };
        $common.setLocation(dragVisual, position);
    }
}
Sys.Extended.UI.GenericDragDropManager.registerClass('Sys.Extended.UI.GenericDragDropManager', Sys.Extended.UI.IEDragDropManager);

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedTimer", "ExtendedCommon"], execute);
}
else {
    execute();
}

})();
6   �& h�( @ �����lZ��jX��hV��gT�~dR�|cP�zbO�y`M�w^J�v]I�t[G�sYE�qXD�pVB�oT@�nS?�mR=�kQ=�jO;�iN9�hM8�cI3�cH3������������Ǿ��Ļ��¹�ѿ��м��λ��̸��ʶ��ɴ��Dz��ư��ĭ��ì������������������������������cH4�������������������������������������������������������������jO;��������������������������������������������������������������kR=�������������������������������p^��jY�~fS�y`M�t[H�kQ<�kQ<�kQ<�kQ<�kQ<�kQ<�lR>�hN9�eK6�cH3�cH3��S'����������������������������������������������������������������������������������cH3��L ��f4����������������������P+�廦�������������������������������������������������������������eJ5��P%��`/��h4�ֆ4���������������������U,��m@�꾫����ª���������������������������������������������������������kQ<��S%��oB��wE��k6��a2��k6��a2��a2��[.��c3��o7��vE����ê�����������������������������������������������������������kQ<��lA��uI��e��`��e��`��`��_��s:���Y������k�Ӯ�����������������������������������������������������������kQ<��L �e:��Y��S��Y��S��S��V��]������k��ҿ�ª�������������������������������������������������������������kQ<����������������wF��f��������ů�������������������������������������������������������������nU@����������������������z������������ɴ��������������������������������������������������������������sXD�������������������������������������ͺ��ɴ��ɴ��Ȳ��ů��«����������������������������������������{���u������������������������������������������������������������������������Ǿ��iW�������������������������������������������������������������������������lZ�ёr�ёr�ёr�Ќk�Іa��~U��uI��m=��d1��]'��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y �ёr���������������������������������������������������}���z���w���t���q���o��m��j��h��e��Y �ёr���������������������������������������������������~���z���w���t���q���n��m��j��h��e��Y �ёr���������������������������������������������������}���z���w���u���q���o��l��j��h��e��Y �ёr�ёr�ёr�Ќk�Іa��~U��uI��m=��d1��]'��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ������������������������������������������������������������������(  ����cI5�cI5�cI5�cI5�cI5�cI5�cI5�cI5�cI5�cI5�cI5����������������������Ȼ��ó�ۿ��ۻ��ϴ��cI5��U)������������������������������ϴ��cI5��Q#��f2X���������mG����������~fS�t[H�pVB�lR>�hN9�eK6�cH3�cH3��V)z�mG�ʏg�����mG��g3�출����������������������������kQ<��U(�pE��mG��mG��|F���d��mG�����������������������������nU@��R(	������S��~��Ͼ������������������������������sXD�Ȳ������밐��������Ž���������������������������{���u�̶���������������������������������������cI5�ꪋ�ꪋ�ꪋ�饄��z��n��b��V��}J��v@��r9��b/�ꪋ��¢���������������������������}���w��e��e1�ꪋ�ꪋ�ꪋ�ꪋ�ꦆ����v��l��b��X��v>��r9�������@���������������6   �& h�( @ ����r�����q�����o�����n����~l����{j����yh����we����tc����ra����o^����n]����l[����jY����iW����hW���q������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������iY���s�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������kZ���v������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������m[���x�������������ƻ��i3������������������������������������������������������������������������������������������������������������������xa��rI�i3����������uc��uc��sa��q_��n\��kY��hU�}cQ�y`M�v\I�sXE�oUB�mR?�jO;�hM9�fK7����������������������o]���{�������������ƻ���xa�ƻ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������q`���~�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������sb��������������������������������������������������������������������������������������������������������������������������������ü�z;������������������������������������������������������������������������������������������ve�����������������‹p��U�z;��������uc��uc��sa��q_��n\��kY��gU�}cQ�z`M�v\I�rXE�pUB�lR?�jO;�hM9�fK7��������������������������������������ü�‹p��ü�����������������������������������������������������������������������������������xg�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������{i������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������}k��������������ü�z;������������������������������������������������������������������������������������������‹p��U�z;�������uc��uc��sa��q_��n\��kX��gT�}cQ�y`M�v\I�sXE�oUB�lR>�jO;�gM9�fK7���������������������n��������������ü�‹p��ü����������������������������������������������������������������������������������������������������������������������������������������������������������o�������������������������������������������������������������������������������������������������������������������������������������������������������������������q���������������������������������������������������������������������������������������������������������������������������������������������������������������r���������������������������������������������������������������������������}�����{�����y�����w�����������(  ����r�����q�����n����|j����wf����q`����m[����iX���s��������������������������������������������������������������������������V9����������sc��sc�sZB�sZB�kR9�kJ9����������iY���z��������’}��vU���������������������������������������������������������������������������������������������������n]������������������������������������������������������������������Ĺ���r��������{k��sZ�{cJ�sRB�sRB�kJ9����������td�����������ך~��tJ����������������������������������������������������������������������������������|k���������������������������������������������������Л}��^6������sc��sZ�sZB�sZB�kR9�kR9���������p���������߻��֟������������������������������������������������������������������r��������������������������������������{�����w�����x��������������������������������6   �& h�( @ �Y �t<�t<�t<�t<�t<�t<�t<�t<�t<�t<�t<�t<�t<�t<�t<�t<�t<��]&���������������������������������������������Ⱦ��Ⱦ�t<����=���������d.����������������������������������������������t<������KKK������j7�����������������������������������������������t<����ittt��������6�rB������������������������������������������������t<����������000������zN����������a+��a+��_)��\%��X!��U��P��M��H��D
�A�y>�������t<�������������SSS��������ԃY�����������������������������������������������������t<����???����}���$$$�)))�����֌f�������������������������������������������������������t<�����ddd�OOO�������=���D���Pٕs����������a+��a+��_)��\%��X!��U��P��M��H��D
�A�y>�������t<������������������������۞������������������������������������������������������t<����������������ަ��������������������������������������������������������t<���������������߮�����������a+��a+��_)��\&��X"��U��P��L��I��D	��A�y>�������t<�������������������


�����������������ⵟ���������������������������������������������������������������t<���������������������������������������������㻧����������������������������������������������������������������t<������������������������������������������������俭�����������������������������������������������������������������t<���������������������������������������������������俭�仨�⸢�Ლ�߫��ަ��۞��ڗv�אl�Ոa�ԁW��yM��sC��l;��f2��a+��\%��Y ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������a+��a+��_)��\&��X"��U��P��L��I��D	��A�y>��A��A������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������|���x���t���p��l�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������(  ������������������cH4�cH4�cH4�cH4�cH4�cH4�cH4�cH4����������_����hhh�Ҵ����������������������Ⱦ��Ⱦ�cH4����m���s������ܵ%%%�޶�������������������������cH4������������TTT�����ڧ�������a+��[%��S��J��A�������cH4�����JJJ�~~~�:::�����֞��������������������������cH4�����===���JJJ�ՠ�������a+��[$��S��J��B�������cH4�������AAA�������ء������������������������������cH4��������999���������߲�����������������������������x^F��������@@@������������ғt�ёr�Ќk�υa��}V��uI��m<��d1��^'��Y �����������������������������������������������j7��c.��[$��T��N��I��E	���������������������������������������������������������������������������������������������������������������������������u��l����������������������������������������������������������������������������������������������������������������������������0���N���:GIF89a������������������������������������!�,8Р�A$@p�@;lGIF89a��1�<��8��9��<ݡS�����Ǝ���!�,0��@���R2��)�c��gk��kD;2GIF89a�����������!��,(P�*;�GIF89a����:���������������������������������������������������������������������������������������������������������������������������)^����!�?,���pH,��̆�l:�Ma'D*Y���U(B�\�x�Z2�`Mh��o�@F���Zo���B.8w>>����B26	::�����B9;������<w<����B0	�	}�	�B
���B�!! BS%(*)(&#!��BSw.0�.,($"�B%)�էĈB<���P
�
P!�Ċh,‘�6j�(@`��BTĠq�#"��d
�����-
@�޺S摣H�;�GIF89a����:�I�J�T������������������������������������������������������������������������������������������������������������������������������������������������/a�9j�;k�V��R{�y����Ǒ�ϒ�Ϫ����R�+]�2c�3d�6f�Dr�Fr�S}�]��h��y�����������������������!�j,��j������!#%&������'*./������+157������06;������
;>?������7B������;@EESOI�PP��тCG�\]GQWdh����H�FW]VaiJ���9
�RV`iD���Q��AÆ�d�B%�6hАA.l���&f�laq��8D� 肆�'�`Sf��/1Z�@ `D��6���B��3:r�8SEAR�8QB��E?��k�9�E��P�P�C��F��h�c�W6j(�!�E
p	"d�!A�`����h��Ax��~
1�xnA8|yp/�i�1;Ěu ;r.ajax__slider_h_rail {position:relative;background:url(images/slider_h_rail.gif) repeat-x;height:22px;width:150px;}
.ajax__slider_h_handle {position:absolute;height:22px;width:10px;}
.ajax__slider_v_rail {position:relative;background:url(images/slider_v_rail.gif) repeat-y;width:22px;height:150px;}
.ajax__slider_v_handle {position:absolute;height:10px;width:22px;}
q@charset "utf-8";
/* CSS Document */

.ajax__balloon_popup .cloud {
	background-image:url(<%=WebResource("BalloonPopup.Cloud.sprite.png")%>) !important;
	background-image:url(<%=WebResource("BalloonPopup.Cloud.sprite.gif")%>);
}

/* SMALL SIZE */
.ajax__balloon_popup .cloud .small {
	width:200px;
	height:150px;
}

.ajax__balloon_popup .cloud .small .bottom_right {
	background-position: 0 0;
}
.ajax__balloon_popup .cloud .small .bottom_right .ajax__content {
	padding: 33px 25px 33px 35px;
}
*html .ajax__balloon_popup .cloud .small .bottom_right_shadow {
    background: none;
}
.ajax__balloon_popup .cloud .small .bottom_right_shadow {
	background-position: -950px 0;
}

.ajax__balloon_popup .cloud .small .bottom_left {
	background-position: 0 -150px;
}
.ajax__balloon_popup .cloud .small .bottom_left .ajax__content {
	padding: 33px 25px 33px 35px;
}
*html .ajax__balloon_popup .cloud .small .bottom_left_shadow {
	background: none;
}
.ajax__balloon_popup .cloud .small .bottom_left_shadow {
	background-position: -950px -150px;
}


.ajax__balloon_popup .cloud .small .top_right {
	background-position: 0 -300px;
}
.ajax__balloon_popup .cloud .small .top_right .ajax__content {
	padding: 33px 25px 33px 35px;
}
*html .ajax__balloon_popup .cloud .small .top_right_shadow {
	background: none;
}
.ajax__balloon_popup .cloud .small .top_right_shadow {
	background-position: -950px -300px;
}

.ajax__balloon_popup .cloud .small .top_left {
	background-position: 0 -450px;
}
.ajax__balloon_popup .cloud .small .top_left .ajax__content {
	padding: 33px 25px 33px 35px;
}
*html .ajax__balloon_popup .cloud .small .top_left_shadow {
	background: none;
}
.ajax__balloon_popup .cloud .small .top_left_shadow {
	background-position: -950px -450px;
}
/* END OF - SMALL SIZE */

/* MEDIUM SIZE */
.ajax__balloon_popup .cloud .medium {
	width:250px;
	height:200px;
}

.ajax__balloon_popup .cloud .medium .bottom_right {
	background-position: -200px 0;
}
.ajax__balloon_popup .cloud .medium .bottom_right .ajax__content {
	padding: 40px;
}
*html .ajax__balloon_popup .cloud .medium .bottom_right_shadow {
	background: none;
}
.ajax__balloon_popup .cloud .medium .bottom_right_shadow {
	background-position: -1150px 0;
}

.ajax__balloon_popup .cloud .medium .bottom_left {
	background-position: -200px -200px;
}
.ajax__balloon_popup .cloud .medium .bottom_left .ajax__content {
	padding: 40px;
}
*html .ajax__balloon_popup .cloud .medium .bottom_left_shadow {
	background: none;
}
.ajax__balloon_popup .cloud .medium .bottom_left_shadow {
	background-position: -1150px -200px;
}

.ajax__balloon_popup .cloud .medium .top_right {
	background-position: -200px -400px;
}
.ajax__balloon_popup .cloud .medium .top_right .ajax__content {
	padding: 40px;
}
*html .ajax__balloon_popup .cloud .medium .top_right_shadow {
	background: none;
}
.ajax__balloon_popup .cloud .medium .top_right_shadow {
	background-position: -1150px -400px;
}

.ajax__balloon_popup .cloud .medium .top_left {
	background-position: -200px -600px;
}
.ajax__balloon_popup .cloud .medium .top_left .ajax__content {
	padding: 40px;
}
*html .ajax__balloon_popup .cloud .medium .top_left_shadow {
	background: none;
}
.ajax__balloon_popup .cloud .medium .top_left_shadow {
	background-position: -1150px -600px;
}
/* END OF - MEDIUM SIZE */

/* LARGE SIZE */
.ajax__balloon_popup .cloud .large {
	width:500px;
	height:300px;
}

.ajax__balloon_popup .cloud .large .bottom_right {
	background-position: -450px 0;
}
.ajax__balloon_popup .cloud .large .bottom_right .ajax__content {
	padding: 50px;
}
*html .ajax__balloon_popup .cloud .large .bottom_right_shadow {
	background: none;
}
.ajax__balloon_popup .cloud .large .bottom_right_shadow {
	background-position: -1400px 0;
}

.ajax__balloon_popup .cloud .large .bottom_left {
	background-position: -450px -300px;
}
.ajax__balloon_popup .cloud .large .bottom_left .ajax__content {
	padding: 50px;
}
*html .ajax__balloon_popup .cloud .large .bottom_left_shadow {
	background: none;
}
.ajax__balloon_popup .cloud .large .bottom_left_shadow {
	background-position: -1400px -300px;
}

.ajax__balloon_popup .cloud .large .top_right {
	background-position: -450px -600px;
}
.ajax__balloon_popup .cloud .large .top_right .ajax__content {
	padding: 50px;
}
*html .ajax__balloon_popup .cloud .large .top_right_shadow {
	background: none;
}
.ajax__balloon_popup .cloud .large .top_right_shadow {
	background-position: -1400px -600px;
}

.ajax__balloon_popup .cloud .large .top_left {
	background-position: -450px -900px;
}
.ajax__balloon_popup .cloud .large .top_left .ajax__content {
	padding: 50px;
}
*html .ajax__balloon_popup .cloud .large .top_left_shadow {
	background: none;
}
.ajax__balloon_popup .cloud .large .top_left_shadow {
	background-position: -1400px -900px;
}
/* END OF - LARGE SIZE */�PNG


IHDR#"Յ`�	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�F	=IDATxڬ�kl���޹�ڗ��g�5'ıIJ�D
E!�$P)RU��E�@�JU?Ԃ�oi�h?E*ʇ�B��R�E��@�4�#�1�$vl�I쬟�~���~��2^/iU:��̎f��s�9�K���:!��ߓ_�R)�*B�ΦiB��NV�-��]���m�z��Y�L����^�� x������f��
���B��{��
�߿�նm�.9y�d�������&b�� gffd=���	�!��<��s�}3�L�yV�kf�r\�/kMޕ�(�u�ҥ�C��?u�T��966V���oa>���O&�}���Mu�g�ޅ���bȳ=I!LSH�����ӛ��v��W�g�;|������J*l� ϟ?/�رcǗ0�g�Ճh'N�عs��c��㮛##w�f���)z�q%�D(�H�P����7��������_{��w<x@ч��@��ܳgϗ9�8N5v��h��û{��`����l,Z��z�+�ν���Q0	A��9�K��
�,�d����K�-{w?��^08�a`�����bQ�ʙ|>�h4Z��@?z�h�������|�ֹ+&�e�E�n���S�ʨ�+$�����J�s�e9�$��U�n�h�v}�W^�����E9�K�����yƲ,��h�:w��}s#ca�-;ɐ�u�
�kP4�Q�J(�^E
'cI�����dD�#Iy�d�#c�m������n98�%��T*��%��;�+7����˝X.z�8�q���2��ō�a��lDw�hoz��ƌȖ���s���F�F)�T��]mI*�=O<�Ľ"t��ip`@2�.hjww�ι/F�n��%"��i4�V~{bR{�O�|���$?qn�xc��{
-�=�͞0W�4JT��R�&�����M�6�
 ��PB�g5�駟�*�Ln+ͦbF�	�#�q�#��&�CUU>z�n���*���p�^`�����ý!EmV�+�0Je��[�p�lX�Q�IM�@(������t�\.�&�UFxX�z[�]��*8�`��`8rl�Ɨx|W��*z��(�B=HJf�zzzz�~��0�/SU�={�z�4vU&Zs��&�hm;�E�*�J)c�m)%<��'������0����5W��tA�[:C��5�|�j���&���fVQ��%8�,�.^��&/��o�\��a455�����q�E���<>8;�~��Ɏ�\{�HD4JLY�=���@�W��B� L�HH�I�G��貱��~��S�?���{�!����|�~߆^����g�0Ӣj��̐�(.��"T��U;�N��B�j�ԴՔP#.���K_���a|�m+_�u�v?dRl�֐j��e]J���fN.�s�[?�$�J��3�N�6P�M5fB+p��5�ի��bm��2�f=��M�HR#��Ȥ��Bp��6a�`��>�*�)=�D�#jTm���.������J��J�>�&J�#�	Ԉ2�m"����J�R�~����Q���ٳ����ѝ[zv�q΀��«�V�aa�Ƌ�\���+QyDF��F�}}����S�\n1�JT��U0�vњ�������6$�K%Ȑ�-�����]PL ^ق�m��<r7(W!]�[���`܃���m�‹�?Y\\�
�6V�;J�0��3gΌ0���]?�8�U���a.4�}�
�W�����FB!���l�%� ��a�L�|�/,//O(�@Ֆtu�<��A��*����y�텮���
�e������."���^�Y��ҀS�Q3�|�@��/�����0ծ���?��yc(OMM]�:}�#s�g:�#�nh%� @<�z�V~X/�E�Hul���ߘ]�,���S�=#�+u0�'%~<K�����Ew��o�����ݷ�m��p���4\R�dފ@<.M�Zd��yk�]~�7�:�͗.��;`�L���jz���
��<����_�	 �K���z�"�x�ǽ��$��1Tʐ�a�M�,K#ם�_������Tb�J>��nC���>!0>>�(�/h�0��4a�=��"�hN�Ź�Z�Xo���y^A�B���~���ǪY
s�w����l�B�>��{�j:!$@�Rz�`n@'�Vn$U�K����Ur3����Y�Z�T�>�[���N��
V�U5���ֈ�J��H�V�x@i�km�N�zA%�d���@�V��@�ZWRD���-��XM��n/�6["k�pK�vk6p���/��5J�[��{IEND�B`�:�PNG


IHDR2�
�YtEXtSoftwareAdobe ImageReadyq�e<�IDATx�ԘADCq�_/bDDt1ƈ���i��b��bS��S�!�Ôѩ�2:E]�S�4QJ�i׈�F���^{���ˇ��{�������&
�x_��1�+����|�]p�@LW�x)��AHG�X��1P/`^7�9�&NIX'������X�ni!"���c�8(�t�l���+�T�ɠ���z��缁� �H�A�ϳ�#���UDR�6ޑ��)�.N�	�l�g�UM��B�D$��3v#����� ��XŜf��S�6�T�_�&ę��� �{SI\���H�9L%9���a�X�aN3���K�jSI�2;n����0��޳��[���4Ӡ.@�/�����fX�7Tz���������i��wƫDx��<z���+m��d�'H���9L��TY�^�2��$N�*�\tSI��-禈[s�J�q��%����4{O�G��"]�wL�IEND�B`���PNG


IHDRd;ܨ�gAMA���aPLTE			


   ,,,---111322:::3_.Lq6AjCCCEDDFFFIIILKKLLLNNNOOOPPPQQQ]\\Sa}`__```aaaeddeeeiiikkklllooopppqqquuuwwwyyyzzz|||~}}~~~$P�"W�+x�-z�,y�7y�:�Ys�=��>��y��v��F��\��T��T��Y��l��s��y��h��l��j��z�������������������������������������������������������������������������������������������������������������������������������������������������������������������������φ�ᐾ檲Ȁ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������3w�tRNS���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������S�%tEXtSoftwarePaint.NET v3.350@IDATHK���WA�G��(�ް��+����7,��)�6FqY��!nb2F�hHL1"��ĝ�7k8G���~�~����d�ɠH��ˊ�4b����0}u�"�R�5(�b��:\�Xn~G�,�g��8C!���i
��u��T��.�jr���3W��ެy��|�_����7<��Kr9��ܼ�>�����2K^��0|��]�����*z�+�d̹�r��;"ES������_�ˡ�"]B�^׫�䧺���Z2w�e�V��#�͖��T�
�U�{kMk��`���blKϾ>�����]<G��mǸ���!R��J��EOC���f'��R�zu_<c���$$�!�N�Gw��2~-C���d���%�VKvIG�kg6�=}�NBp}&s�!�C��:(S��Td����l��,T���w.8v��~,Z���(=&�𐦍�����c�*W5B�-��&l�n���fI�ۈ�Z��k��`�"֍�$��hTU#t��	%n���'|��<���:�k1P�ހ1�c��kk�3��;�Y��Qމ�}Gz%)��t��'��C;��Ϩg� tqJA2��:��3(u둊R\R�ίK��T�A��Cf�Z���V5B�2X"��N��/�����)tJ��
I�G
�_H$@7h��iv^I"�A�j�Z>Xƒ��M�8�mϕ,��P�L~m�q�����uM�y�CgHh԰7�Ol�D�J>�j�a�s���)7�4�9\a!�~�%FP�^����q��z�.�����&R���y6�>�oo��<n=k\7S�%�JS6��g|$��XI�_����$enBmIEND�B`��// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedWatermark";function a(){var f="WatermarkCssClass",e="WatermarkText",c=true,d="keypress",b=false,a=null;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.TextBoxWatermarkBehavior=function(c){var b=this;Sys.Extended.UI.TextBoxWatermarkBehavior.initializeBase(b,[c]);b._watermarkText=a;b._watermarkCssClass=a;b._focusHandler=a;b._blurHandler=a;b._keyPressHandler=a;b._propertyChangedHandler=a;b._watermarkChangedHandler=a;b._oldClassName=a;b._clearedForSubmit=a;b._maxLength=a;if(typeof WebForm_OnSubmit=="function"&&!Sys.Extended.UI.TextBoxWatermarkBehavior._originalWebForm_OnSubmit){Sys.Extended.UI.TextBoxWatermarkBehavior._originalWebForm_OnSubmit=WebForm_OnSubmit;WebForm_OnSubmit=Sys.Extended.UI.TextBoxWatermarkBehavior.WebForm_OnSubmit}};Sys.Extended.UI.TextBoxWatermarkBehavior.prototype={initialize:function(){var e=this;Sys.Extended.UI.TextBoxWatermarkBehavior.callBaseMethod(e,"initialize");var f=e.get_element(),i=b,g=Sys.Extended.UI.TextBoxWatermarkBehavior.callBaseMethod(e,"get_ClientState");if(g!=a&&g!=""){i=g=="Focused";Sys.Extended.UI.TextBoxWatermarkBehavior.callBaseMethod(e,"set_ClientState",a)}e._oldClassName=f.className;e._focusHandler=Function.createDelegate(e,e._onFocus);e._blurHandler=Function.createDelegate(e,e._onBlur);e._keyPressHandler=Function.createDelegate(e,e._onKeyPress);$addHandler(f,"focus",e._focusHandler);$addHandler(f,"blur",e._blurHandler);$addHandler(f,d,e._keyPressHandler);e.registerPropertyChanged();var j=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(e.get_element()).get_Current(),h=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(e.get_element());if(""==j||e._watermarkText==j){h.set_Watermark(e._watermarkText);h.set_IsWatermarked(c)}if(i)e._onFocus();else{f.blur();e._onBlur()}e._clearedForSubmit=b;e.registerPartialUpdateEvents();e._watermarkChangedHandler=Function.createDelegate(e,e._onWatermarkChanged);h.add_WatermarkChanged(e._watermarkChangedHandler)},dispose:function(){var c=this,e=c.get_element();if(c._watermarkChangedHandler){Sys.Extended.UI.TextBoxWrapper.get_Wrapper(c.get_element()).remove_WatermarkChanged(c._watermarkChangedHandler);c._watermarkChangedHandler=a}if(e.control&&c._propertyChangedHandler){e.control.remove_propertyChanged(c._propertyChangedHandler);c._propertyChangedHandler=a}if(c._focusHandler){$removeHandler(e,"focus",c._focusHandler);c._focusHandler=a}if(c._blurHandler){$removeHandler(e,"blur",c._blurHandler);c._blurHandler=a}if(c._keyPressHandler){$removeHandler(e,d,c._keyPressHandler);c._keyPressHandler=a}Sys.Extended.UI.TextBoxWrapper.get_Wrapper(c.get_element()).get_IsWatermarked()&&c.clearText(b);Sys.Extended.UI.TextBoxWatermarkBehavior.callBaseMethod(c,"dispose")},_onWatermarkChanged:function(){if(Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element()).get_IsWatermarked())this._onBlur();else this._onFocus()},clearText:function(d){var a=this.get_element(),c=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(a);c.set_Value("");c.set_IsWatermarked(b);if(d){a.setAttribute("autocomplete","off");a.select()}},_onFocus:function(f){var d=this,e=d.get_element();Sys.Extended.UI.TextBoxWrapper.get_Wrapper(e).get_IsWatermarked()&&d.clearText(f?c:b);e.className=d._oldClassName;if(d._maxLength>0){d.get_element().maxLength=d._maxLength;d._maxLength=a}},_onBlur:function(){var a=this,b=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(a.get_element());if(""==b.get_Current()||b.get_IsWatermarked()){if(a.get_element().maxLength>0&&a._watermarkText.length>a.get_element().maxLength){a._maxLength=a.get_element().maxLength;a.get_element().maxLength=a._watermarkText.length}a._applyWatermark()}},_applyWatermark:function(){var a=this,b=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(a.get_element());b.set_Watermark(a._watermarkText);b.set_IsWatermarked(c);if(a._watermarkCssClass)a.get_element().className=a._watermarkCssClass},_onKeyPress:function(){Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element()).set_IsWatermarked(b)},registerPropertyChanged:function(){var a=this,b=a.get_element();if(b.control&&!a._propertyChangedHandler){a._propertyChangedHandler=Function.createDelegate(a,a._onPropertyChanged);b.control.add_propertyChanged(a._propertyChangedHandler)}},_onPropertyChanged:function(b,a){"text"==a.get_propertyName()&&this.set_Text(Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element()).get_Current())},_onSubmit:function(){if(Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element()).get_IsWatermarked()){this.clearText(b);this._clearedForSubmit=c}},_partialUpdateEndRequest:function(d,c){var a=this;Sys.Extended.UI.TextBoxWatermarkBehavior.callBaseMethod(a,"_partialUpdateEndRequest",[d,c]);if(a.get_element()&&a._clearedForSubmit){a.get_element().blur();a._onBlur();a._clearedForSubmit=b}},get_WatermarkText:function(){return this._watermarkText},set_WatermarkText:function(b){var a=this;if(a._watermarkText!=b){a._watermarkText=b;Sys.Extended.UI.TextBoxWrapper.get_Wrapper(a.get_element()).get_IsWatermarked()&&a._applyWatermark();a.raisePropertyChanged(e)}},get_WatermarkCssClass:function(){return this._watermarkCssClass},set_WatermarkCssClass:function(b){var a=this;if(a._watermarkCssClass!=b){a._watermarkCssClass=b;Sys.Extended.UI.TextBoxWrapper.get_Wrapper(a.get_element()).get_IsWatermarked()&&a._applyWatermark();a.raisePropertyChanged(f)}},get_Text:function(){return Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element()).get_Value()},set_Text:function(b){var a=this;if(""==b){Sys.Extended.UI.TextBoxWrapper.get_Wrapper(a.get_element()).set_Current("");a.get_element().blur();a._onBlur()}else{a._onFocus();Sys.Extended.UI.TextBoxWrapper.get_Wrapper(a.get_element()).set_Current(b)}}};Sys.Extended.UI.TextBoxWatermarkBehavior.registerClass("Sys.Extended.UI.TextBoxWatermarkBehavior",Sys.Extended.UI.BehaviorBase);Sys.registerComponent(Sys.Extended.UI.TextBoxWatermarkBehavior,{name:"watermark",parameters:[{name:e,type:"String"},{name:f,type:"String"}]});Sys.Extended.UI.TextBoxWatermarkBehavior.WebForm_OnSubmit=function(){var d=Sys.Extended.UI.TextBoxWatermarkBehavior._originalWebForm_OnSubmit();if(d)for(var b=Sys.Application.getComponents(),a=0;a<b.length;a++){var c=b[a];Sys.Extended.UI.TextBoxWatermarkBehavior.isInstanceOfType(c)&&c._onSubmit()}return d}}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedBase","ExtendedCommon"],a);else a()})();// (c) 2010 CodePlex Foundation
Type.registerNamespace("Sys.Extended.UI.Seadragon");Sys.Extended.UI.Seadragon.Rect=function(e,f,d,c){var a="number",b=this;b.x=typeof e==a?e:0;b.y=typeof f==a?f:0;b.width=typeof d==a?d:0;b.height=typeof c==a?c:0};Sys.Extended.UI.Seadragon.Rect.prototype={getAspectRatio:function(){return this.width/this.height},getTopLeft:function(){return new Sys.Extended.UI.Seadragon.Point(this.x,this.y)},getBottomRight:function(){var a=this;return new Sys.Extended.UI.Seadragon.Point(a.x+a.width,a.y+a.height)},getCenter:function(){var a=this;return new Sys.Extended.UI.Seadragon.Point(a.x+a.width/2,a.y+a.height/2)},getSize:function(){return new Sys.Extended.UI.Seadragon.Point(this.width,this.height)},equals:function(a){var b=this;return a instanceof Seadragon.Rect&&b.x===a.x&&b.y===a.y&&b.width===a.width&&b.height===a.height},toString:function(){var a=this;return"["+a.x+","+a.y+","+a.width+"x"+a.height+"]"}};Sys.Extended.UI.Seadragon.Rect.registerClass("Sys.Extended.UI.Seadragon.Rect",null,Sys.IDisposable);,#// (c) 2010 CodePlex Foundation
Type.registerNamespace('Sys.Extended.UI.Seadragon');

Sys.Extended.UI.Seadragon.DziError = function(message) {
    Sys.Extended.UI.Seadragon.DziError.initializeBase(this, [message]);
    this.message = message;
}
Sys.Extended.UI.Seadragon.DziError.registerClass('Sys.Extended.UI.Seadragon.DziError', Error);

Sys.Extended.UI.Seadragon.DziTileSource = function(width, height, tileSize, tileOverlap, tilesUrl, fileFormat, displayRects) {
    Sys.Extended.UI.Seadragon.DziTileSource.initializeBase(this, [width, height, tileSize, tileOverlap, null, null]);
    this._levelRects = {};
    this.tilesUrl = tilesUrl;

    this.fileFormat = fileFormat;
    this.displayRects = displayRects;
    this._init();
}
Sys.Extended.UI.Seadragon.DziTileSource.prototype = {
    _init: function() {
        if (!this.displayRects) {
            return;
        }

        for (var i = this.displayRects.length - 1; i >= 0; i--) {
            var rect = this.displayRects[i];
            for (var level = rect.minLevel; level <= rect.maxLevel; level++) {
                if (!this._levelRects[level]) {
                    this._levelRects[level] = [];
                }
                this._levelRects[level].push(rect);
            }
        }
    },
    getTileUrl: function(level, x, y) {
        return [this.tilesUrl, level, '/', x, '_', y, '.', this.fileFormat].join('');
    },

    tileExists: function(level, x, y) {
        var rects = this._levelRects[level];

        if (!rects || !rects.length) {
            return true;
        }

        for (var i = rects.length - 1; i >= 0; i--) {
            var rect = rects[i];

            if (level < rect.minLevel || level > rect.maxLevel) {
                continue;
            }

            var scale = this.getLevelScale(level);
            var xMin = rect.x * scale;
            var yMin = rect.y * scale;
            var xMax = xMin + rect.width * scale;
            var yMax = yMin + rect.height * scale;

            xMin = Math.floor(xMin / this.tileSize);
            yMin = Math.floor(yMin / this.tileSize);
            xMax = Math.ceil(xMax / this.tileSize);
            yMax = Math.ceil(yMax / this.tileSize);

            if (xMin <= x && x < xMax && yMin <= y && y < yMax) {
                return true;
            }
        }

        return false;
    }
}
Sys.Extended.UI.Seadragon.DziTileSource.registerClass('Sys.Extended.UI.Seadragon.DziTileSource', Sys.Extended.UI.Seadragon.TileSource);
Sys.Extended.UI.Seadragon._DziTileSourceHelper = function() {

}
Sys.Extended.UI.Seadragon._DziTileSourceHelper.prototype = {
    createFromXml: function(xmlUrl, xmlString, callback) {
        var async = typeof (callback) == "function";
        var error = null;

        if (!xmlUrl) {
            this.error = Seadragon.Strings.getString("Errors.Empty");
            if (async) {
                window.setTimeout(function() {
                    callback(null, error);
                }, 1);
                return null;
            }
            throw new Sys.Extended.UI.Seadragon.DziError(error);
        }

        var urlParts = xmlUrl.split('/');
        var filename = urlParts[urlParts.length - 1];
        var lastDot = filename.lastIndexOf('.');

        if (lastDot > -1) {
            urlParts[urlParts.length - 1] = filename.slice(0, lastDot);
        }

        var tilesUrl = urlParts.join('/') + "_files/";
        function finish(func, obj) {
            try {
                return func(obj, tilesUrl);
            } catch (e) {
                if (async) {
                    error = this.getError(e).message;
                    return null;
                } else {
                    throw this.getError(e);
                }
            }
        }
        if (async) {
            if (xmlString) {
                var handler = Function.createDelegate(this, this.processResponse);
                window.setTimeout(function() {
                    var source = finish(handler, Seadragon.Utils.parseXml(xmlString));
                    callback(source, error);    // call after finish sets error
                }, 1);
            } else {
                var handler = Function.createDelegate(this, this.processResponse);
                Seadragon.Utils.makeAjaxRequest(xmlUrl, function(xhr) {
                    var source = finish(handler, xhr);
                    callback(source, error);    // call after finish sets error
                });
            }

            return null;
        }

        if (xmlString) {
            return finish(Function.createDelegate(this, this.processXml), Seadragon.Utils.parseXml(xmlString));
        } else {
            return finish(Function.createDelegate(this, this.processResponse), Seadragon.Utils.makeAjaxRequest(xmlUrl));
        }
    },
    processResponse: function(xhr, tilesUrl) {
        if (!xhr) {
            throw new Sys.Extended.UI.Seadragon.DziError(Seadragon.Strings.getString("Errors.Security"));
        } else if (xhr.status !== 200 && xhr.status !== 0) {
            var status = xhr.status;
            var statusText = (status == 404) ? "Not Found" : xhr.statusText;
            throw new Sys.Extended.UI.Seadragon.DziError(Seadragon.Strings.getString("Errors.Status", status, statusText));
        }

        var doc = null;

        if (xhr.responseXML && xhr.responseXML.documentElement) {
            doc = xhr.responseXML;
        } else if (xhr.responseText) {
            doc = Seadragon.Utils.parseXml(xhr.responseText);
        }

        return this.processXml(doc, tilesUrl);
    },

    processXml: function(xmlDoc, tilesUrl) {
        if (!xmlDoc || !xmlDoc.documentElement) {
            throw new Sys.Extended.UI.Seadragon.DziError(Seadragon.Strings.getString("Errors.Xml"));
        }

        var root = xmlDoc.documentElement;
        var rootName = root.tagName;

        if (rootName == "Image") {
            try {
                return this.processDzi(root, tilesUrl);
            } catch (e) {
                var defMsg = Seadragon.Strings.getString("Errors.Dzi");
                throw (e instanceof Sys.Extended.UI.Seadragon.DziError) ? e : new Sys.Extended.UI.Seadragon.DziError(defMsg);
            }
        } else if (rootName == "Collection") {
            throw new Sys.Extended.UI.Seadragon.DziError(Seadragon.Strings.getString("Errors.Dzc"));
        } else if (rootName == "Error") {
            return this.processError(root);
        }

        throw new Sys.Extended.UI.Seadragon.DziError(Seadragon.Strings.getString("Errors.Dzi"));
    },

    processDzi: function(imageNode, tilesUrl) {
        var fileFormat = imageNode.getAttribute("Format");

        if (!Seadragon.Utils.imageFormatSupported(fileFormat)) {
            throw new Sys.Extended.UI.Seadragon.DziError(Seadragon.Strings.getString("Errors.ImageFormat",
                    fileFormat.toUpperCase()));
        }

        var sizeNode = imageNode.getElementsByTagName("Size")[0];
        var dispRectNodes = imageNode.getElementsByTagName("DisplayRect");

        var width = parseInt(sizeNode.getAttribute("Width"), 10);
        var height = parseInt(sizeNode.getAttribute("Height"), 10);
        var tileSize = parseInt(imageNode.getAttribute("TileSize"));
        var tileOverlap = parseInt(imageNode.getAttribute("Overlap"));
        var dispRects = [];

        for (var i = 0; i < dispRectNodes.length; i++) {
            var dispRectNode = dispRectNodes[i];
            var rectNode = dispRectNode.getElementsByTagName("Rect")[0];

            dispRects.push(new Seadragon.DisplayRect(
                parseInt(rectNode.getAttribute("X"), 10),
                parseInt(rectNode.getAttribute("Y"), 10),
                parseInt(rectNode.getAttribute("Width"), 10),
                parseInt(rectNode.getAttribute("Height"), 10),
                0,  // ignore MinLevel attribute, bug in Deep Zoom Composer
                parseInt(dispRectNode.getAttribute("MaxLevel"), 10)
            ));
        }
        return new Sys.Extended.UI.Seadragon.DziTileSource(width, height, tileSize, tileOverlap,
                tilesUrl, fileFormat, dispRects);
    },

    processError: function(errorNode) {
        var messageNode = errorNode.getElementsByTagName("Message")[0];
        var message = messageNode.firstChild.nodeValue;

        throw new Sys.Extended.UI.Seadragon.DziError(message);
    },
    getError: function(e) {
        if (!(e instanceof DziError)) {
            Seadragon.Debug.error(e.name + " while creating DZI from XML: " + e.message);
            e = new Sys.Extended.UI.Seadragon.DziError(Seadragon.Strings.getString("Errors.Unknown"));
        }

    }
}
Sys.Extended.UI.Seadragon.DziTileSourceHelper = new Sys.Extended.UI.Seadragon._DziTileSourceHelper();
K0// (c) 2010 CodePlex Foundation
Type.registerNamespace('Sys.Extended.UI.Seadragon');
Type.registerNamespace('Seadragon');

Sys.Extended.UI.Seadragon.ButtonState = function() {
	throw Error.invalidOperation();
}
Sys.Extended.UI.Seadragon.ButtonState.prototype = {
	REST: 0,
	GROUP: 1,
	HOVER: 2,
	DOWN: 3
}
Sys.Extended.UI.Seadragon.ButtonState.registerEnum("Sys.Extended.UI.Seadragon.ButtonState", false);

Sys.Extended.UI.Seadragon.Button = function() {
	Sys.Extended.UI.Seadragon.Button.initializeBase(this);

	this._tooltip = null;
	this._srcRest = null;
	this._srcGroup = null;
	this._srcHover = null;
	this._srcDown = null;
	this._button = null;
	this.config = null;

}
Sys.Extended.UI.Seadragon.Button.prototype = {
    initialize: function() {
        Sys.Extended.UI.Seadragon.Button.callBaseMethod(this, 'initialize');

        this._button = Seadragon.Utils.makeNeutralElement("span");
        this._currentState = Sys.Extended.UI.Seadragon.ButtonState.GROUP;
        this._tracker = new Seadragon.MouseTracker(this._button, this.config.clickTimeThreshold, this.config.clickDistThreshold);
        this._imgRest = Seadragon.Utils.makeTransparentImage(this._srcRest);
        this._imgGroup = Seadragon.Utils.makeTransparentImage(this._srcGroup);
        this._imgHover = Seadragon.Utils.makeTransparentImage(this._srcHover);
        this._imgDown = Seadragon.Utils.makeTransparentImage(this._srcDown);

        this._fadeDelay = 0;      // begin fading immediately
        this._fadeLength = 2000;  // fade over a period of 2 seconds
        this._fadeBeginTime = null;
        this._shouldFade = false;

        this._button.style.display = "inline-block";
        this._button.style.position = "relative";
        this._button.title = this._tooltip;

        this._button.appendChild(this._imgRest);
        this._button.appendChild(this._imgGroup);
        this._button.appendChild(this._imgHover);
        this._button.appendChild(this._imgDown);

        var styleRest = this._imgRest.style;
        var styleGroup = this._imgGroup.style;
        var styleHover = this._imgHover.style;
        var styleDown = this._imgDown.style;

        styleGroup.position = styleHover.position = styleDown.position = "absolute";
        styleGroup.top = styleHover.top = styleDown.top = "0px";
        styleGroup.left = styleHover.left = styleDown.left = "0px";
        styleHover.visibility = styleDown.visibility = "hidden";

        if (Seadragon.Utils.getBrowser() == Seadragon.Browser.FIREFOX &&
                    Seadragon.Utils.getBrowserVersion() < 3) {
            styleGroup.top = styleHover.top = styleDown.top = "";
        }

        this._tracker.enterHandler = Function.createDelegate(this, this._enterHandler);
        this._tracker.exitHandler = Function.createDelegate(this, this._exitHandler);
        this._tracker.pressHandler = Function.createDelegate(this, this._pressHandler);
        this._tracker.releaseHandler = Function.createDelegate(this, this._releaseHandler);
        this._tracker.clickHandler = Function.createDelegate(this, this._clickHandler);

        this._tracker.setTracking(true);
        this._outTo(Sys.Extended.UI.Seadragon.ButtonState.REST);
    },
    dispose: function() {
    },
    _scheduleFade: function() {
        window.setTimeout(Function.createDelegate(this, this._updateFade), 20);
    },
    _updateFade: function() {
        if (this._shouldFade) {
            var currentTime = new Date().getTime();
            var deltaTime = currentTime - this._fadeBeginTime;
            var opacity = 1.0 - deltaTime / this._fadeLength;

            opacity = Math.min(1.0, opacity);
            opacity = Math.max(0.0, opacity);

            Seadragon.Utils.setElementOpacity(this._imgGroup, opacity, true);
            if (opacity > 0) {
                this._scheduleFade();    // fade again
            }
        }
    },
    _beginFading: function() {
        this._shouldFade = true;
        this._fadeBeginTime = new Date().getTime() + this._fadeDelay;
        window.setTimeout(Function.createDelegate(this, this._scheduleFade), this._fadeDelay);
    },
    _stopFading: function() {
        this._shouldFade = false;
        Seadragon.Utils.setElementOpacity(this._imgGroup, 1.0, true);
    },
    _inTo: function(newState) {
        if (newState >= Sys.Extended.UI.Seadragon.ButtonState.GROUP && this._currentState == Sys.Extended.UI.Seadragon.ButtonState.REST) {
            this._stopFading();
            this._currentState = Sys.Extended.UI.Seadragon.ButtonState.GROUP;
        }

        if (newState >= Sys.Extended.UI.Seadragon.ButtonState.HOVER && this._currentState == Sys.Extended.UI.Seadragon.ButtonState.GROUP) {
            this._imgHover.style.visibility = "";
            this._currentState = Sys.Extended.UI.Seadragon.ButtonState.HOVER;
        }

        if (newState >= Sys.Extended.UI.Seadragon.ButtonState.DOWN && this._currentState == Sys.Extended.UI.Seadragon.ButtonState.HOVER) {
            this._imgDown.style.visibility = "";
            this._currentState = Sys.Extended.UI.Seadragon.ButtonState.DOWN;
        }
    },
    _outTo: function(newState) {
        if (newState <= Sys.Extended.UI.Seadragon.ButtonState.HOVER && this._currentState == Sys.Extended.UI.Seadragon.ButtonState.DOWN) {
            this._imgDown.style.visibility = "hidden";
            this._currentState = Sys.Extended.UI.Seadragon.ButtonState.HOVER;
        }

        if (newState <= Sys.Extended.UI.Seadragon.ButtonState.GROUP && this._currentState == Sys.Extended.UI.Seadragon.ButtonState.HOVER) {
            this._imgHover.style.visibility = "hidden";
            this._currentState = Sys.Extended.UI.Seadragon.ButtonState.GROUP;
        }

        if (this._newState <= Sys.Extended.UI.Seadragon.ButtonState.REST && this._currentState == Sys.Extended.UI.Seadragon.ButtonState.GROUP) {
            this._beginFading();
            this._currentState = Sys.Extended.UI.Seadragon.ButtonState.REST;
        }
    },
    _enterHandler: function(tracker, position, buttonDownElmt, buttonDownAny) {
        if (buttonDownElmt) {
            this._inTo(Sys.Extended.UI.Seadragon.ButtonState.DOWN);
            this._raiseEvent("onEnter", this);
        } else if (!buttonDownAny) {
            this._inTo(Sys.Extended.UI.Seadragon.ButtonState.HOVER);
        }
    },
    _exitHandler: function(tracker, position, buttonDownElmt, buttonDownAny) {
        this._outTo(Sys.Extended.UI.Seadragon.ButtonState.GROUP);
        if (buttonDownElmt) {
            this._raiseEvent("onExit", this);
        }
    },
    _pressHandler: function(tracker, position) {
        this._inTo(Sys.Extended.UI.Seadragon.ButtonState.DOWN);
        this._raiseEvent("onPress", this);
    },
    _releaseHandler: function(tracker, position, insideElmtPress, insideElmtRelease) {
        if (insideElmtPress && insideElmtRelease) {
            this._outTo(Sys.Extended.UI.Seadragon.ButtonState.HOVER);
            this._raiseEvent("onRelease", this);
        } else if (insideElmtPress) {
            this._outTo(Sys.Extended.UI.Seadragon.ButtonState.GROUP);
        } else {
            this._inTo(Sys.Extended.UI.Seadragon.ButtonState.HOVER);
        }
    },
    _clickHandler: function(tracker, position, quick, shift) {        
        if (quick) {
            this._raiseEvent("onClick", this);
        }
    },
    _raiseEvent: function(eventName, eventArgs) {
        var handler = this.get_events().getHandler(eventName);

        if (handler) {
            if (!eventArgs) {
                eventArgs = Sys.EventArgs.Empty;
            }

            handler(this, eventArgs);
        }
    },
    get_element: function() {
        return this._button;
    },
    get_tooltip: function() {
        return this._tooltip;
    },
    set_tooltip: function(value) {
        this._tooltip = value;
    },
    get_config: function() {
        return this.config;
    },
    set_config: function(value) {
        this.config = value;
    },
    get_srcRest: function() {
        return this._srcRest;
    },
    set_srcRest: function(value) {
        this._srcRest = value;
    },
    get_srcGroup: function() {
        return this._srcGroup;
    },
    set_srcGroup: function(value) {
        this._srcGroup = value;
    },
    get_srcHover: function() {
        return this._srcHover;
    },
    set_srcHover: function(value) {
        this._srcHover = value;
    },
    get_srcDown: function() {
        return this._srcDown;
    },
    set_srcDown: function(value) {
        this._srcDown = value;
    },
    add_onPress: function(handler) {
        this.get_events().addHandler("onPress", handler);
    },
    remove_onPress: function(handler) {
        this.get_events().removeHandler("onPress", handler);
    },
    add_onClick: function(handler) {
        this.get_events().addHandler("onClick", handler);
    },
    remove_onClick: function(handler) {
        this.get_events().removeHandler("onClick", handler);
    },
    add_onEnter: function(handler) {
        this.get_events().addHandler("onEnter", handler);
    },
    remove_onEnter: function(handler) {
        this.get_events().removeHandler("onEnter", handler);
    },
    add_onRelease: function(handler) {
        this.get_events().addHandler("onRelease", handler);
    },
    remove_onRelease: function(handler) {
        this.get_events().removeHandler("onRelease", handler);
    },
    add_onExit: function(handler) {
        this.get_events().addHandler("onExit", handler);
    },
    remove_onExit: function(handler) {
        this.get_events().removeHandler("onExit", handler);
    },
    notifyGroupEnter: function() {
        this._inTo(Sys.Extended.UI.Seadragon.ButtonState.GROUP);
    },
    notifyGroupExit: function() {
        this._outTo(Sys.Extended.UI.Seadragon.ButtonState.REST);
    }
}
Sys.Extended.UI.Seadragon.Button.registerClass('Sys.Extended.UI.Seadragon.Button', Sys.Component);

Sys.Extended.UI.Seadragon.ButtonGroup = function() {
	Sys.Extended.UI.Seadragon.ButtonGroup.initializeBase(this);

	this._buttons = null;
	this._group = null;
	this.config = null;
}
Sys.Extended.UI.Seadragon.ButtonGroup.prototype = {
	initialize: function() {
		Sys.Extended.UI.Seadragon.ButtonGroup.callBaseMethod(this, 'initialize');

		this._group = Seadragon.Utils.makeNeutralElement("span");
		var buttons = this._buttons.concat([]);   // copy
		var tracker = new Seadragon.MouseTracker(this._group, this.config.clickTimeThreshold, this.config.clickDistThreshold);
		this._group.style.display = "inline-block";

		for (var i = 0; i < buttons.length; i++) {
			this._group.appendChild(buttons[i].get_element());
		}

		tracker.enterHandler = Function.createDelegate(this, this._enterHandler);
		tracker.exitHandler = Function.createDelegate(this, this._exitHandler);
		tracker.releaseHandler = Function.createDelegate(this, this._releaseHandler);

		tracker.setTracking(true);
	},
	dispose: function() {
	},
	get_buttons: function() {
		return this._buttons;
	},
	set_buttons: function(value) {
		this._buttons = value;
	},
	get_element: function() {
		return this._group;
	},
	get_config: function() {
		return this.config;
	},
	set_config: function(value) {
		this.config = value;
	},
	_enterHandler: function(tracker, position, buttonDownElmt, buttonDownAny) {
		for (var i = 0; i < this._buttons.length; i++) {
			this._buttons[i].notifyGroupEnter();
		}
	},
	_exitHandler: function(tracker, position, buttonDownElmt, buttonDownAny) {
		if (!buttonDownElmt) {
			for (var i = 0; i < this._buttons.length; i++) {
				this._buttons[i].notifyGroupExit();
			}
		}
	},
	_releaseHandler: function(tracker, position, insideElmtPress, insideElmtRelease) {

		if (!insideElmtRelease) {
			for (var i = 0; i < this._buttons.length; i++) {
				this._buttons[i].notifyGroupExit();
			}
		}
	},
	emulateEnter: function() {
		this._enterHandler();
	},

	emulateExit: function() {
		this._exitHandler();
	}
}
Sys.Extended.UI.Seadragon.ButtonGroup.registerClass('Sys.Extended.UI.Seadragon.ButtonGroup', Sys.Component);
�[// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />

(function() {
var scriptName = "ExtendedUpDown";

function execute() {

Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.NumericUpDownBehavior = function(element) {
    /// <summary>
    /// The NumericUpDownBehavior is used add up/down buttons to any textbox
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// DOM Element the behavior is associated with
    /// </param>
    Sys.Extended.UI.NumericUpDownBehavior.initializeBase(this, [element]);

    this._currentValue = null;
    this._widthValue = null;
    this._targetButtonUpIDValue = null;
    this._targetButtonDownIDValue = null;
    this._serviceUpPathValue = location.pathname;
    this._serviceUpMethodValue = null;
    this._serviceDownPathValue = location.pathname;
    this._serviceDownMethodValue = null;
    this._refValuesValue = null;
    this._tagValue = null;
    this._elementTextBox = null;
    this._step = 1.0;
    this._min = -Number.MAX_VALUE;
    this._max = Number.MAX_VALUE;

    this._bUp = null;
    this._bDown = null;
    this._stepPrecision = 0;
    this._valuePrecision = 0;

    this._clickUpHandler = null;
    this._clickDownHandler = null;
    this._changeHandler = null;
}
Sys.Extended.UI.NumericUpDownBehavior.prototype = {
    initialize: function() {
        /// <summary>
        /// Initialize the behavior
        /// </summary>
        Sys.Extended.UI.NumericUpDownBehavior.callBaseMethod(this, 'initialize');
        $common.prepareHiddenElementForATDeviceUpdate();

        var e = this.get_element();
        this._elementTextBox = e;
        if ((this._refValuesValue) || (this._serviceUpMethodValue) || (this._serviceDownMethodValue)) {
            this._elementTextBox.readOnly = true;
        } else {
            this._elementTextBox.readOnly = false;
        }
        this.readValue();

        this._changeHandler = Function.createDelegate(this, this._onChange);
        $addHandler(e, 'blur', this._changeHandler);

        if (!this._targetButtonUpIDValue || !this._targetButtonDownIDValue) {
            this._widthValue = Math.max(this._widthValue, 24);
            e.style.width = (this._widthValue - 24) + 'px';
            e.style.textAlign = 'center';

            var _divContent = document.createElement('DIV');
            _divContent.style.position = 'relative';
            _divContent.style.width = this._widthValue + 'px';
            _divContent.style.fontSize = e.clientHeight + 'px';
            _divContent.style.height = e.clientHeight + 'px';
            _divContent.style.paddingRight = '24px';
            if (!(Sys.Browser.agent == Sys.Browser.Firefox || Sys.Browser.agent == Sys.Browser.Safari)) {
                _divContent.style.display = 'inline';
            } else {
                _divContent.style.display = 'inline-block';
            }
            e.parentNode.insertBefore(_divContent, e);

            var _innerTable = document.createElement('TABLE');
            var _innerTbody = document.createElement('TBODY');
            var _innerRow1 = document.createElement('TR');
            var _innerRow2 = document.createElement('TR');
            var _textboxCell = document.createElement('TD');
            var _upButtonCell = document.createElement('TD');
            var _downButtonCell = document.createElement('TD');

            _textboxCell.rowSpan = '2';

            _textboxCell.style.verticalAlign = 'middle';
            _upButtonCell.style.verticalAlign = 'middle';
            _downButtonCell.style.verticalAlign = 'middle';

            _innerRow1.appendChild(_textboxCell);
            _innerRow1.appendChild(_upButtonCell);
            _innerRow2.appendChild(_downButtonCell);
            _innerTbody.appendChild(_innerRow1);
            _innerTbody.appendChild(_innerRow2);
            _innerTable.appendChild(_innerTbody);
            _divContent.appendChild(_innerTable);

            e.parentNode.removeChild(e);
            _textboxCell.appendChild(e);

            _innerTable.style.borderCollapse = 'collapse';
            _innerTable.cellSpacing = '0';
            _innerTable.cellPadding = '0';

            _innerTable.style.display = 'inline';
            _innerTable.style.position = 'relative';

            _textboxCell.style.padding = '0';
            _upButtonCell.style.padding = '0';
            _downButtonCell.style.padding = '0';
            _textboxCell.style.margin = '0';
            _upButtonCell.style.margin = '0';
            _downButtonCell.style.margin = '0';
        }


        if (!this._targetButtonUpIDValue) {
            this._bUp = document.createElement('input');
            this._bUp.type = 'button';
            this._bUp.id = e.id + '_bUp';
            this._bUp.style.border = 'outset 1px';
            if (Sys.Browser.agent == Sys.Browser.InternetExplorer) {
                this._bUp.style.fontFamily = 'Webdings';
                this._bUp.style.fontSize = '9pt';
                this._bUp.value = '5';
            } else {
                this._bUp.style.fontFamily = 'Tahoma, Arial, sans-serif';
                this._bUp.style.fontSize = '5pt';
                this._bUp.value = '\u25B2';
                this._bUp.style.fontWeight = 'bold';
                this._bUp.style.lineHeight = '3pt';
            }
            this._bUp.style.height = '12px';
            this._bUp.style.width = '24px';
            this._bUp.style.overflow = 'hidden';
            this._bUp.style.lineHeight = '1em';
            _upButtonCell.appendChild(this._bUp);
        }

        if (!this._targetButtonDownIDValue) {
            this._bDown = document.createElement('input');
            this._bDown.type = 'button';
            this._bDown.id = e.id + '_bDown';
            this._bDown.style.border = 'outset 1px';
            if (Sys.Browser.agent == Sys.Browser.InternetExplorer) {
                this._bDown.value = '6';
                this._bDown.style.fontFamily = 'Webdings';
                this._bDown.style.fontSize = '9pt';
            } else {
                this._bDown.value = '\u25BC';
                this._bDown.style.fontFamily = 'Tahoma, Arial, sans-serif';
                this._bDown.style.fontSize = '5pt';
                this._bDown.style.fontWeight = 'bold';
            }
            this._bDown.style.height = '12px';
            this._bDown.style.lineHeight = '3pt';
            this._bDown.style.width = '24px';
            this._bDown.style.overflow = 'hidden';
            _downButtonCell.appendChild(this._bDown);
        }

        if (this._bUp == null) {
            this._bUp = document.getElementById(this._targetButtonUpIDValue);
        }
        if (this._bUp) {
            this._clickUpHandler = Function.createDelegate(this, this._clickUp);
            $addHandler(this._bUp, 'click', this._clickUpHandler);
        }
        if (this._bDown == null) {
            this._bDown = document.getElementById(this._targetButtonDownIDValue);
        }
        if (this._bDown) {
            this._clickDownHandler = Function.createDelegate(this, this._clickDown);
            $addHandler(this._bDown, 'click', this._clickDownHandler);
        }
    },

    dispose: function() {
        /// <summary>
        /// Dispose the behavior
        /// </summary>

        if (this._changeHandler) {
            $removeHandler(this.get_element(), 'blur', this._changeHandler);
            this._changeHandler = null;
        }

        if (this._clickUpHandler) {
            if (this._bUp) {
                $removeHandler(this._bUp, 'click', this._clickUpHandler);
                this._clickUpHandler = null;
            }
        }

        if (this._clickDownHandler) {
            if (this._bDown) {
                $removeHandler(this._bDown, 'click', this._clickDownHandler);
                this._clickDownHandler = null;
            }
        }

        Sys.Extended.UI.NumericUpDownBehavior.callBaseMethod(this, 'dispose');
    },

    add_currentChanged: function(handler) {
        /// <summary>
        /// Add a handler to the currentChanged event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        this.get_events().addHandler('currentChanged', handler);
    },
    remove_currentChanged: function(handler) {
        /// <summary>
        /// Remove a handler from the currentChanged event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        this.get_events().removeHandler('currentChanged', handler);
    },
    raiseCurrentChanged: function(eventArgs) {
        /// <summary>
        /// Raise the currentChanged event
        /// </summary>
        /// <param name="eventArgs" type="Sys.EventArgs">
        /// Event arguments
        /// </param>
        var handler = this.get_events().getHandler('currentChanged');
        if (handler) {
            if (!eventArgs) {
                eventArgs = Sys.EventArgs.Empty;
            }
            handler(this, eventArgs);
        }
    },

    _onChange: function() {
        /// <summary>
        /// Handler for the textbox's change event
        /// </summary>

        this.readValue();

        if (this._refValuesValue) {
            this.setCurrentToTextBox(this._refValuesValue[this._currentValue]);
            if (this._elementTextBox) {
                this._elementTextBox.readOnly = true;
            }
        } else {
            this.setCurrentToTextBox(this._currentValue);
            if (this._elementTextBox) {
                this._elementTextBox.readOnly = this._serviceUpMethodValue || this._serviceDownMethodValue;
            }
        }
    },

    readValue: function() {
        /// <summary>
        /// Parse value of textbox and this._currentValue to be that value.
        /// this._currentValue = this._min if some there is an exception
        /// when attempting to parse.
        /// Parse int or string element of RefValues
        /// </summary>

        if (this._elementTextBox) {
            var v = this._elementTextBox.value;
            if (!this._refValuesValue) {
                if (!v) {
                    this._currentValue = this._min;
                } else {
                    try {
                        this._currentValue = parseFloat(v);
                    } catch (ex) {
                        this._currentValue = this._min;
                    }
                }
                if (isNaN(this._currentValue)) {
                    this._currentValue = this._min;
                }
                this.setCurrentToTextBox(this._currentValue);
                this._valuePrecision = this._computePrecision(this._currentValue);
            } else {
                if (!v) {
                    this._currentValue = 0;
                } else {
                    var find = 0;
                    for (var i = 0; i < this._refValuesValue.length; i++) {
                        if (v.toLowerCase() == this._refValuesValue[i].toLowerCase()) {
                            find = i;
                        }
                    }
                    this._currentValue = find;
                }
                this.setCurrentToTextBox(this._refValuesValue[this._currentValue]);
            }
        }
    },

    setCurrentToTextBox: function(value) {
        /// <summary>
        /// Set the value of the textbox
        /// </summary>
        /// <param name="value" type="String">
        /// Value
        /// </param>
        if (this._elementTextBox) {
            this._elementTextBox.value = value;
            this.raiseCurrentChanged(value);

            if (document.createEvent) {
                var onchangeEvent = document.createEvent('HTMLEvents');
                onchangeEvent.initEvent('change', true, false);
                this._elementTextBox.dispatchEvent(onchangeEvent);
            } else if (document.createEventObject) {
                this._elementTextBox.fireEvent('onchange');
            }
        }
    },

    _incrementValue: function(step) {
        /// <summary>
        /// Increment the current value by the given amount
        /// </summary>
        /// <param name="step" type="Number">
        /// Amount to increment (or decrement if negative) the current value
        /// </param>
        /// <returns />

        var tmp = parseFloat((this._currentValue + step).toFixed(Math.max(this._stepPrecision, this._valuePrecision)));
        if (step > 0) {
            this._currentValue = Math.max(Math.min(tmp, this._max), this._min);
        } else {
            this._currentValue = Math.min(Math.max(tmp, this._min), this._max);
        }
    },

    _computePrecision: function(value) {
        /// <summary>
        /// Compute the precision of the value by counting the number
        /// of digits in the fractional part of its string representation
        /// </summary>
        /// <param name="value" type="Number">Value</param>
        /// <returns type="Number" integer="true">
        /// Fractional precision of the number
        /// </returns>

        if (value == Number.Nan) {
            return this._min;
        }

        var str = value.toString();
        if (str) {
            var fractionalPart = /\.(\d*)$/;
            var matches = str.match(fractionalPart);
            if (matches && matches.length == 2 && matches[1]) {
                return matches[1].length;
            }
        }

        return this._min;
    },

    get_Width: function() {
        /// <value type="Number" integer="true">
        /// Combined size of the TextBox and Up/Down buttons (min value 25).
        /// This property is not used if you provide custom buttons.
        /// </value>
        return this._widthValue;
    },
    set_Width: function(value) {
        if (this._widthValue != value) {
            this._widthValue = value;
            this.raisePropertyChanged('Width');
        }
    },

    get_Tag: function() {
        /// <value type="String">
        /// Specifies a custom parameter to pass to the Web Service
        /// </value>
        return this._tagValue;
    },
    set_Tag: function(value) {
        if (this._tagValue != value) {
            this._tagValue = value;
            this.raisePropertyChanged('Tag');
        }
    },

    get_TargetButtonUpID: function() {
        /// <value type="String">
        /// Reference to a custom Up button
        /// </value>
        return this._targetButtonUpIDValue;
    },
    set_TargetButtonUpID: function(value) {
        if (this._targetButtonUpIDValue != value) {
            this._targetButtonUpIDValue = value;
            this.raisePropertyChanged('TargetButtonUpID');
        }
    },

    get_TargetButtonDownID: function() {
        /// <value type="String">
        /// Reference to a custom Down button
        /// </value>
        return this._targetButtonDownIDValue;
    },
    set_TargetButtonDownID: function(value) {
        if (this._targetButtonDownIDValue != value) {
            this._targetButtonDownIDValue = value;
            this.raisePropertyChanged('TargetButtonDownID');
        }
    },

    get_ServiceUpPath: function() {
        /// <value type="String">
        /// Path to a web service that returns the data used to get the next value.
        /// If empty, a PageMethod will be used instead of a web service.
        /// </value>
        return this._serviceUpPathValue;
    },
    set_ServiceUpPath: function(value) {
        if (this._serviceUpPathValue != value) {
            this._serviceUpPathValue = value;
            this.raisePropertyChanged('ServiceUpPath');
        }
    },

    get_ServiceUpMethod: function() {
        /// <value type="String">
        /// Name of the method to call on the web service (or the name of a PageMethod) to get the next value
        /// </value>
        /// <remarks>
        /// The signature of the web method must be of the form:
        ///     [WebMethod]
        ///     public int MethodName(int current, string tag)
        ///     {
        ///         ...
        ///     }
        /// </remarks>
        return this._serviceUpMethodValue;
    },
    set_ServiceUpMethod: function(value) {
        if (this._serviceUpMethodValue != value) {
            this._serviceUpMethodValue = value;
            this.raisePropertyChanged('ServiceUpMethod');
            if (this._elementTextBox)
                this._elementTextBox.readOnly = true;
        }
    },

    get_ServiceDownPath: function() {
        /// <value type="String">
        /// Path to a web service that returns the data used to get the previous value.
        /// If empty, a PageMethod will be used instead of a web service.
        /// </value>
        return this._serviceDownPathValue;
    },
    set_ServiceDownPath: function(value) {
        if (this._serviceDownPathValue != value) {
            this._serviceDownPathValue = value;
            this.raisePropertyChanged('ServiceDownPath');
        }
    },

    get_ServiceDownMethod: function() {
        /// <value type="String">
        /// Name of the method to call on the web service (or the name of a PageMethod) to get the previous value
        /// </value>
        /// <remarks>
        /// The signature of the web method must be of the form:
        ///     [WebMethod]
        ///     public int MethodName(int current, string tag)
        ///     {
        ///         ...
        ///     }
        /// </remarks>
        return this._serviceDownMethodValue;
    },
    set_ServiceDownMethod: function(value) {
        if (this._serviceDownMethodValue != value) {
            this._serviceDownMethodValue = value;
            this.raisePropertyChanged('ServiceDownMethod');
            if (this._elementTextBox)
                this._elementTextBox.readOnly = true;
        }
    },

    get_RefValues: function() {
        /// <value type="String">
        /// A list of strings separated by semicolons (;) to be used as an enumeration
        /// </value>
        return this._refValuesValue ? this._refValuesValue.join(";") : "";
    },
    set_RefValues: function(value) {
        if (value != '') {
            this._refValuesValue = value.split(';');
            this._onChange();
            if (this._elementTextBox) {
                this._elementTextBox.readOnly = true;
            }
        } else {
            this._refValuesValue = null;
            if (this._elementTextBox) {
                this._elementTextBox.readOnly = false;
            }
        }
        this.raisePropertyChanged('RefValues');
    },

    get_Step: function() {
        /// <value type="Number">
        /// Step used for simple numeric incrementing and decrementing
        /// </value>
        return this._step;
    },
    set_Step: function(value) {
        if (value != this._step) {
            this._step = value;
            this._stepPrecision = this._computePrecision(value);
            this.raisePropertyChanged('Step');
        }
    },

    get_Minimum: function() {
        /// <value type="Number">
        /// Minimum Value
        /// </value>
        return this._min;
    },
    set_Minimum: function(value) {
        if (value != this._min) {
            this._min = value;
            this.raisePropertyChanged('Minimum');
        }
    },

    get_Maximum: function() {
        /// <value type="Number">
        /// Maximum Value
        /// </value>
        return this._max;
    },
    set_Maximum: function(value) {
        if (value != this._max) {
            this._max = value;
            this.raisePropertyChanged('Maximum');
        }
    },

    _clickUp: function(evt) {
        /// <summary>
        /// Handler for the Up button's click event
        /// </summary>
        /// <param name="evt" type="Sys.UI.DomEvent" mayBeNull="true" >
        /// Event info
        /// </param>

        this.readValue();
        if (this._serviceUpPathValue && this._serviceUpMethodValue) {
            Sys.Net.WebServiceProxy.invoke(this._serviceUpPathValue, this._serviceUpMethodValue, false,
                { current: this._currentValue, tag: this._tagValue },
                Function.createDelegate(this, this._onMethodUpDownComplete));
            $common.updateFormToRefreshATDeviceBuffer();
        } else {
            if (this._refValuesValue) {
                if ((this._currentValue + 1) < this._refValuesValue.length) {
                    this._currentValue = this._currentValue + 1;
                    this.setCurrentToTextBox(this._refValuesValue[this._currentValue]);
                }
            } else {
                this._incrementValue(this._step);
                this.setCurrentToTextBox(this._currentValue);
            }
        }
        if (evt) {
            evt.preventDefault();
        }
        return false;
    },

    _clickDown: function(evt) {
        /// <summary>
        /// Handler for the Down button's click event
        /// </summary>
        /// <param name="evt" type="Sys.UI.DomEvent" mayBeNull="true">
        /// Event info
        /// </param>

        this.readValue();
        if (this._serviceDownPathValue && this._serviceDownMethodValue) {
            Sys.Net.WebServiceProxy.invoke(this._serviceDownPathValue, this._serviceDownMethodValue, false,
                { current: this._currentValue, tag: this._tagValue },
                Function.createDelegate(this, this._onMethodUpDownComplete));
            $common.updateFormToRefreshATDeviceBuffer();
        } else {
            if (this._refValuesValue) {
                if ((this._currentValue - 1) >= 0) {
                    this._currentValue = this._currentValue - 1;
                    this.setCurrentToTextBox(this._refValuesValue[this._currentValue]);
                }
            } else {
                this._incrementValue(-this._step);
                this.setCurrentToTextBox(this._currentValue);
            }
        }
        if (evt) {
            evt.preventDefault();
        }
        return false;
    },

    _onMethodUpDownComplete: function(result, userContext, methodName) {
        this._currentValue = result;
        this.setCurrentToTextBox(this._currentValue);
    }
}
Sys.Extended.UI.NumericUpDownBehavior.registerClass('Sys.Extended.UI.NumericUpDownBehavior', Sys.Extended.UI.BehaviorBase);
Sys.registerComponent(Sys.Extended.UI.NumericUpDownBehavior, { name: "upDown", parameters: ["Minimum", "Maximum", "Width"] });

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedCommon", "ExtendedBase", "WebServices"], execute);
}
else {
    execute();
}

})();
�// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedMaskedEdit";function a(){var u="string",o="undefined",B="YDM",A="YMD",z="MYD",y="DYM",n="Y",m="D",x="DMY",E="9999",l="M",e=" ",f=10,k="g",i=")",j="(\\",w="px",t="DivMaskedEditTip_",h="0",r="+-",q="-",D="change",C="focus",p="keypress",s="keydown",H="mouseover",G="mousemove",F="mouseout",g=null,c=-1,v="MDY",b=false,d=true,a="";Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.MaskedEditBehavior=function(h){var e=this;Sys.Extended.UI.MaskedEditBehavior.initializeBase(e,[h]);e._Mask=a;e._MaskType=Sys.Extended.UI.MaskedEditType.None;e._Filtered=a;e._PromptChar="_";e._InputDirection=Sys.Extended.UI.MaskedEditInputDirections.LeftToRight;e._MessageValidatorTip=d;e._ShowMessageErrorFloat=b;e._CssMessageErrorFloat=a;e._AutoComplete=d;e._AutoCompleteValue=a;e._ClearTextOnInvalid=b;e._ClearMaskOnLostfocus=d;e._AcceptAmPm=Sys.Extended.UI.MaskedEditShowSymbol.None;e._AcceptNegative=Sys.Extended.UI.MaskedEditShowSymbol.None;e._DisplayMoney=Sys.Extended.UI.MaskedEditShowSymbol.None;e._OnFocusCssClass="MaskedEditFocus";e._OnInvalidCssClass="MaskedEditError";e._OnFocusCssNegative="MaskedEditFocusNegative";e._OnBlurCssNegative="MaskedEditBlurNegative";e._CultureName=Sys.CultureInfo.CurrentCulture.name;e._UserDateFormat=Sys.Extended.UI.MaskedEditUserDateFormat.None;e._UserTimeFormat=Sys.Extended.UI.MaskedEditUserTimeFormat.None;e._CultureDatePlaceholder=Sys.CultureInfo.CurrentCulture.dateTimeFormat.DateSeparator;e._CultureTimePlaceholder=Sys.CultureInfo.CurrentCulture.dateTimeFormat.TimeSeparator;e._CultureDecimalPlaceholder=Sys.CultureInfo.CurrentCulture.numberFormat.NumberDecimalSeparator;e._CultureThousandsPlaceholder=Sys.CultureInfo.CurrentCulture.numberFormat.NumberGroupSeparator;e._CultureDateFormat=v;var f=Sys.CultureInfo.CurrentCulture.dateTimeFormat.ShortDatePattern.split(e._CultureDatePlaceholder);if(f.length>=3)e._CultureDateFormat=f[0].substr(0,1).toUpperCase()+f[1].substr(0,1).toUpperCase()+f[2].substr(0,1).toUpperCase();e._CultureCurrencySymbolPlaceholder=Sys.CultureInfo.CurrentCulture.numberFormat.CurrencySymbol;e._CultureAMPMPlaceholder=Sys.CultureInfo.CurrentCulture.dateTimeFormat.PMDesignator+";"+Sys.CultureInfo.CurrentCulture.dateTimeFormat.PMDesignator;e._AMPMPlaceholderSeparator=";";e._Century=1900;e._AllowCopyPaste=d;e._ClipboardText=Sys.Extended.UI.Resources&&Sys.Extended.UI.Resources.Shared_BrowserSecurityPreventsPaste||"Your browser security settings don't permit the automatic execution of paste operations. Please use the keyboard shortcut Ctrl+V instead.";e._CharsEditMask="9L$CAN?";e._CharsSpecialMask="/:.,";e._MaskConv=a;e._EmptyMask=a;e._maskvalid=a;e._DirectSelText=a;e._initialvalue=a;e._LogicSymbol=a;e._LogicTextMask=a;e._LogicMask=a;e._LogicMaskConv=a;e._LogicPrompt=String.fromCharCode(1);e._LogicEscape=String.fromCharCode(2);e._LogicFirstPos=c;e._LogicLastPos=c;e._LogicLastInt=c;e._LogicDateTimeSepPos=c;e._QtdValidInput=0;e._InLostfocus=b;e._ExternalMessageError=a;e._CurrentMessageError=a;e._FiringOnChange=b;e._ErroOnEnter=b;e._charLetters="ABCDEFGHIJKLMNOPQRSTUVWXYZ";e._charNumbers="0123456789";e._charEscape="\\";e._DelimitStartDup="{";e._DelimitEndDup="}";e._focusHandler=g;e._keypressdown=g;e._keypressHandler=g;e._blurHandler=g;e._mouseOutHandler=g;e._mouseOutHandler=g;e._mouseMoveHandler=g;e._mouseEnterHandler=g;e._changeHandler=g;e._timer=g;e._timerHandler=g;e._SaveSymb=a;e._SaveText=a;e._SavePosi=c;e._SaveMask=a;e._SaveKeyDown=0};Sys.Extended.UI.MaskedEditBehavior.prototype={initialize:function(){var e=this,f=e.get_element();e._InLostfocus=d;Sys.Extended.UI.MaskedEditBehavior.callBaseMethod(e,"initialize");e._createMask();var h=b,i=e.get_ClientState();if(i!=g&&i!=a){h=i=="Focused";e.set_ClientState(g)}try{if(f===document.activeElement)h=d}catch(l){}if(e._ShowMessageErrorFloat){e._mouseOutHandler=Function.createDelegate(e,e._onMouseOut);$addHandler(f,F,e._mouseOutHandler);e._mouseMoveHandler=Function.createDelegate(e,e._onMouseMove);$addHandler(f,G,e._mouseMoveHandler);e._mouseEnterHandler=Function.createDelegate(e,e._onMouseover);$addHandler(f,H,e._mouseEnterHandler)}if(!f.readOnly){e._keypressdown=Function.createDelegate(e,e._onKeyPressdown);$addHandler(f,s,e._keypressdown);e._keypressHandler=Function.createDelegate(e,e._onKeyPress);$addHandler(f,p,e._keypressHandler)}e._focusHandler=Function.createDelegate(e,e._onFocus);$addHandler(f,C,e._focusHandler);e._blurHandler=Function.createDelegate(e,e._onBlur);$addHandler(f,"blur",e._blurHandler);e._changeHandler=Function.createDelegate(e,e._onChange);$addHandler(f,D,e._changeHandler);if(Sys.Browser.agent==Sys.Browser.Opera){e._timerHandler=Function.createDelegate(e,e._OnTimerTicket);e._timer=new Sys.Timer;e._timer.set_enabled(b);e._timer.set_interval(100);e._timer.add_tick(e._timerHandler);e._SaveText=a;e._SavePosi=c;e._timer.set_enabled(d)}var j=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(f);e._InitValue(j.get_Value(),d);if(h)e._onFocus();else{e._ClearMaskOnLostfocus&&j.set_Value(e._getClearMask(j.get_Value()));var k=e._CaptureServerValidators();if(!k)e._OnInvalidCssClass!=a&&e.AddCssClassMaskedEdit(e._OnInvalidCssClass)}},dispose:function(){var a=this,c=a.get_element();if(a._mouseOutHandler){$removeHandler(c,F,a._mouseOutHandler);a._mouseOutHandler=g}if(a._mouseMoveHandler){$removeHandler(c,G,a._mouseMoveHandler);a._mouseMoveHandler=g}if(a._mouseEnterHandler){$removeHandler(c,H,a._mouseEnterHandler);a._mouseEnterHandler=g}if(a._focusHandler){$removeHandler(c,C,a._focusHandler);a._focusHandler=g}if(a._focusHandler){$removeHandler(c,C,a._focusHandler);a._focusHandler=g}if(a._blurHandler){$removeHandler(c,"blur",a._blurHandler);a._blurHandler=g}if(a._changeHandler){$removeHandler(c,D,a._changeHandler);a._changeHandler=g}if(a._keypressdown){$removeHandler(c,s,a._keypressdown);a._keypressdown=g}if(a._keypressHandler){$removeHandler(c,p,a._keypressHandler);a._keypressHandler=g}if(a._timerHandler){a._timer.set_enabled(b);a._timerHandler=g;a._timer.dispose();a._timer=g}Sys.Extended.UI.MaskedEditBehavior.callBaseMethod(a,"dispose")},_OnTimerTicket:function(){var e=this;e._SaveSymb=a;if(e._InLostfocus)return;e._timer.set_enabled(b);var f=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(e.get_element());if(e._SaveText!=a){f.set_Value(e._SaveText);e.setSelectionRange(e._SavePosi,e._SavePosi);e._SaveText=a;e._SavePosi=c;e._SaveMask=f.get_Value()}else{f.get_Value().length!=e._EmptyMask.length&&f.set_Value(e._SaveMask);e._timer.get_interval()!=100&&e._timer.set_interval(100)}e._timer.set_enabled(d)},_onChange:function(){!this._FiringOnChange&&this._onFocus()},_onFocus:function(){var e=this,f=e.get_element();if(f.readOnly||f.disabled)return;if(!e._keypressdown){e._keypressdown=Function.createDelegate(e,e._onKeyPressdown);$addHandler(f,s,e._keypressdown)}if(!e._keypressHandler){e._keypressHandler=Function.createDelegate(e,e._onKeyPress);$addHandler(f,p,e._keypressHandler)}e._InLostfocus=b;e._RemoveDivToolTip();e._OnFocusCssClass!=a&&e.AddCssClassMaskedEdit(e._OnFocusCssClass);var h=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(f);e._initialvalue=h.get_Value();e._InitValue(h.get_Value(),b);var g=e._getClearMask(),i=b;if(e._MessageValidatorTip&&g==a)i=d;if((e._MaskType==Sys.Extended.UI.MaskedEditType.Time||e._MaskType==Sys.Extended.UI.MaskedEditType.DateTime)&&e.get_CultureAMPMPlaceholder()!=a&&g==a)e._AcceptAmPm&&e.InsertAMPM(e.get_CultureAMPMPlaceholder().substring(0,1));else if(e._MaskType==Sys.Extended.UI.MaskedEditType.Number&&g!=a)e._LogicSymbol==q&&e._OnFocusCssNegative!=a&&e.AddCssClassMaskedEdit(e._OnFocusCssNegative);if(e._InputDirection==Sys.Extended.UI.MaskedEditInputDirections.RightToLeft)if(e._LogicLastInt!=c)e.setSelectionRange(e._LogicLastInt,e._LogicLastInt);else e.setSelectionRange(e._LogicLastPos+1,e._LogicLastPos+1);else if(e._MaskType==Sys.Extended.UI.MaskedEditType.Number&&g!=a){var j=e._getLastEmptyPosition()+1;e.setSelectionRange(j,j)}else e.setSelectionRange(e._LogicFirstPos,e._LogicFirstPos);e.ShowTooltipMessage(b);i&&e.ShowTooltipMessage(d)},_PeforformValidLostFocus:function(g){var c=this,e=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(c.get_element()),d=c._getClearMask(e.get_Value());d==a&&c._MaskType==Sys.Extended.UI.MaskedEditType.Number&&c._LogicSymbol==q&&c.InsertSignal("+");if(d!=a&&c._AutoComplete&&c._MaskType==Sys.Extended.UI.MaskedEditType.Date)c.AutoFormatDate();else if(d!=a&&c._AutoComplete&&c._MaskType==Sys.Extended.UI.MaskedEditType.Time)c.AutoFormatTime();else if(d!=a&&c._AutoComplete&&c._MaskType==Sys.Extended.UI.MaskedEditType.DateTime)c.AutoFormatDateTime();else d!=a&&c._AutoComplete&&c._MaskType==Sys.Extended.UI.MaskedEditType.Number&&c.AutoFormatNumber();(c._ClearMaskOnLostfocus&&d!=a||g&&c._ClearMaskOnLostfocus)&&e.set_Value(c._getClearMask(e.get_Value()));c.AddCssClassMaskedEdit(a);c._MaskType==Sys.Extended.UI.MaskedEditType.Number&&c._LogicSymbol==q&&c._OnBlurCssNegative!=a&&c.AddCssClassMaskedEdit(c._OnBlurCssNegative);c.ShowTooltipMessage(b);c._RemoveDivToolTip();var f=c._CaptureClientsValidators();if(!f){c._OnInvalidCssClass!=a&&c.AddCssClassMaskedEdit(c._OnInvalidCssClass);if(c._ClearTextOnInvalid){c._createMask();e.set_Value(c._EmptyMask)}}return f},_onBlur:function(e){var a=this;a._InLostfocus=d;var b=a._PeforformValidLostFocus(d);if(b){var c=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(a.get_element());!a.get_element().readOnly&&a._initialvalue!=c.get_Value()&&e&&a._fireChanged()}},_fireChanged:function(){this._FiringOnChange=d;var a=this.get_element();if(document.createEventObject)a.fireEvent("onchange");else if(document.createEvent){var c=document.createEvent("HTMLEvents");c.initEvent(D,d,d);a.dispatchEvent(c)}this._FiringOnChange=b},_onKeyPress:function(l){var e=this,j=e._KeyCode(l);if(j==9)return d;if(j==13){var m=e._PeforformValidLostFocus(b);e._ErroOnEnter=b;if(!m)e._ErroOnEnter=d;if(Sys.Browser.agent==Sys.Browser.Opera){var n=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(e.get_element());e._SaveText=n.get_Value();e._SavePosi=e._getCurrentPosition();e._timer.set_enabled(b);e._timer.set_interval(1);e._timer.set_enabled(d)}return m}e._OnFocusCssClass!=a&&e._ErroOnEnter&&e.AddCssClassMaskedEdit(e._OnFocusCssClass);e._ErroOnEnter=b;if(!e._isNormalChar(l,j)){e._ExecuteNav(l,j);return b}var f=e._deleteTextSelection();if(f==c)f=e._getCurrentPosition();var g=String.fromCharCode(j);if(e._MaskType==Sys.Extended.UI.MaskedEditType.Date&&g==e.get_CultureDatePlaceholder())e._AdjustElementDate();else if(e._MaskType==Sys.Extended.UI.MaskedEditType.Time&&g==e.get_CultureTimePlaceholder())e._AdjustElementTime();else if(e._MaskType==Sys.Extended.UI.MaskedEditType.DateTime&&(g==e.get_CultureTimePlaceholder()||g==e.get_CultureDatePlaceholder()))e._AdjustElementDateTime(g);else if(e._MaskType==Sys.Extended.UI.MaskedEditType.Number&&e._InputDirection==Sys.Extended.UI.MaskedEditInputDirections.LeftToRight&&g==e.get_CultureDecimalPlaceholder()&&f==e._LogicLastInt)e._AdjustElementDecimalLTR();else if(e._MaskType==Sys.Extended.UI.MaskedEditType.Number&&e._InputDirection==Sys.Extended.UI.MaskedEditInputDirections.RightToLeft&&g==e.get_CultureDecimalPlaceholder()&&f==e._LogicLastInt)e._AdjustElementDecimalRTL();else if(e._MaskType==Sys.Extended.UI.MaskedEditType.Number&&g==e.get_CultureDecimalPlaceholder()&&f!=e._LogicLastInt)e._MoveDecimalPos();else if(e._MaskType==Sys.Extended.UI.MaskedEditType.Number&&e._InputDirection==Sys.Extended.UI.MaskedEditInputDirections.LeftToRight&&g==e.get_CultureThousandsPlaceholder())e._MoveThousandLTR();else if(e._MaskType==Sys.Extended.UI.MaskedEditType.Number&&e._InputDirection==Sys.Extended.UI.MaskedEditInputDirections.RightToLeft&&g==e.get_CultureThousandsPlaceholder())e._MoveThousandRTL();else if((e._MaskType==Sys.Extended.UI.MaskedEditType.Time||e._MaskType==Sys.Extended.UI.MaskedEditType.DateTime)&&e.get_CultureFirstLettersAMPM().toUpperCase().indexOf(g.toUpperCase())!=c){if(e._AcceptAmPm){e.InsertAMPM(g);e.setSelectionRange(f,f)}}else if(e._MaskType==Sys.Extended.UI.MaskedEditType.Number&&e._AcceptNegative!=Sys.Extended.UI.MaskedEditShowSymbol.None&&r.indexOf(g)!=c)if(Sys.Browser.agent!=Sys.Browser.Opera){e.InsertSignal(g);e.setSelectionRange(f,f)}else if(e._SaveSymb==a){e.InsertSignal(g);e.setSelectionRange(f,f);e._SaveSymb=g;e._timer.set_enabled(b);e._timer.set_interval(1);e._timer.set_enabled(d)}else e._SaveSymb=a;else{var p=f;f=e._getNextPosition(f);var i=f;if(e._LogicLastInt!=c&&e._InputDirection==Sys.Extended.UI.MaskedEditInputDirections.RightToLeft){if(p==e._LogicLastInt)i=e._getLastEmptyPosition()}else if(f>=e._LogicLastPos+1&&e._InputDirection==Sys.Extended.UI.MaskedEditInputDirections.RightToLeft)i=e._getLastEmptyPosition();if(e._processKey(i,g)){e._MessageValidatorTip&&e.ShowTooltipMessage(b);if(e._InputDirection==Sys.Extended.UI.MaskedEditInputDirections.LeftToRight){e._insertContent(g,i);f=e._getNextPosition(i+1)}else if(e._InputDirection==Sys.Extended.UI.MaskedEditInputDirections.RightToLeft)if(e._LogicLastInt==c)if(f<e._LogicLastPos+1){e._insertContent(g,i);f=e._getNextPosition(i+1)}else{e._insertContentRight(g);f=e._LogicLastPos+1}else if(p!=e._LogicLastInt){e._insertContent(g,i);f=e._getNextPosition(i+1)}else{var n=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(e.get_element()),k=e._getClearMask(n.get_Value());if(k!=a){var q=k.indexOf(e.get_CultureDecimalPlaceholder());if(q!=c){var o=k.substring(0,q);if(o==h||o=="-0"){e.setSelectionRange(e._LogicLastInt-1,e._LogicLastInt);e._deleteTextSelection();f=e._LogicLastInt;e.setSelectionRange(f,f)}}}if(k==a&&g==h)f=e._LogicLastInt;else{e._insertContentRight(g);f=e._LogicLastInt}}e.setSelectionRange(f,f)}}e._SetCancelEvent(l);return b},_onKeyPressdown:function(c){var a=this;a._InLostfocus&&a._onFocus(c);var e=a._KeyCode(c);if(e==9)return d;if(e==13)return d;if(!a._isNormalChar(c,e))a._ExecuteNav(c,e);else if(Sys.Browser.agent==Sys.Browser.Opera)if(c.rawEvent.shiftKey&&!c.rawEvent.ctrlKey&&!c.rawEvent.altKey&&c.rawEvent.keyCode==45){var f=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(a.get_element());a._SaveText=f.get_Value();a._SavePosi=a._getCurrentPosition();a._timer.set_enabled(b);a._timer.set_interval(1);a._timer.set_enabled(d)}},_onMouseOut:function(){this._RemoveDivToolTip()},_onMouseMove:function(c){var b=this;(b._InLostfocus||b._ErroOnEnter)&&b._ExternalMessageError!=a&&b._ShowDivToolTip(c)},_onMouseover:function(c){var b=this;!$get(t+b.get_element().id)&&b._CaptureServerValidators();(b._InLostfocus||b._ErroOnEnter)&&b._ExternalMessageError!=a&&b._createDivToolTip(c,b._ExternalMessageError)},_ShowDivToolTip:function(d){var a=this,b=$get(t+a.get_element().id);if(!b){a._createDivToolTip(d,a._ExternalMessageError);b=$get(t+a.get_element().id)}var c=a._GetMousePos(d);b.style.left=c.x+1+w;b.style.top=c.y+1+w},_GetMousePos:function(b){var a="number",c=0,d=0;if(typeof window.pageYOffset==a){d=window.pageYOffset;c=window.pageXOffset}else if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){d=document.body.scrollTop;c=document.body.scrollLeft}else if(document.documentElement&&(document.documentElement.scrollLeft||document.documentElement.scrollTop)){d=document.documentElement.scrollTop;c=document.documentElement.scrollLeft}var e=0,f=0;if(typeof b.pageX==a){e=b.pageX;f=b.pageY}else if(typeof b.clientX==a){e=b.clientX;f=b.clientY}return{x:e+c,y:f+d}},_RemoveDivToolTip:function(){var a=$get(t+this.get_element().id);a&&document.body.removeChild(a)},_createDivToolTip:function(e,f){var c=this,g=$get(t+c.get_element().id);if(!g){var b,d=c._GetMousePos(e);b=document.createElement("div");b.id=t+c.get_element().id;b.style.position="absolute";b.style.left=d.x+2+w;b.style.top=d.y+2+w;b.style.zIndex=99999;if(c._CssMessageErrorFloat==a){b.style.padding="3px 3px 3px 3px";b.style.border="Solid 1px #000000";b.style.backgroundColor="#FFFFEA";b.style.fontWeight="normal";b.style.fontSize="12px";b.style.fontFamily="Arial"}else b.className=c._CssMessageErrorFloat;b.innerHTML=f;b=document.body.insertBefore(b,document.body.firstChild)}},_ExecuteNav:function(g,h){var e=this;if(g.type==s)if(Sys.Browser.agent==Sys.Browser.InternetExplorer){if((h==86||h==118)&&!g.shiftKey&&g.ctrlKey&&!g.altKey){e._SetCancelEvent(g);e._PasteFromClipBoard();return}if(g.shiftKey&&!g.ctrlKey&&!g.altKey&&g.keyCode==45){e._SetCancelEvent(g);e._PasteFromClipBoard();return}}if(Sys.Browser.agent!=Sys.Browser.InternetExplorer||g.type==p){if(g.rawEvent.shiftKey&&!g.rawEvent.ctrlKey&&!g.rawEvent.altKey&&g.rawEvent.keyCode==45){e._SetCancelEvent(g);e._PasteFromClipBoard();return}if(g.type==p&&(h==86||h==118)&&!g.shiftKey&&g.ctrlKey&&!g.altKey){e._SetCancelEvent(g);e._PasteFromClipBoard();return}}var f;if(Sys.Browser.agent==Sys.Browser.InternetExplorer||g.type==p)if(h==8){e._SetCancelEvent(g);f=e._deleteTextSelection();if(f!=c)e.setSelectionRange(f,f);else{f=e._getCurrentPosition();e._backspace(f);f=e._getPreviousPosition(f-1);e.setSelectionRange(f,f)}var n=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(e.get_element());e._MessageValidatorTip&&n.get_Value()==e._EmptyMask&&e.ShowTooltipMessage(d);if(Sys.Browser.agent==Sys.Browser.Opera){e._SaveText=n.get_Value();e._SavePosi=f;e._timer.set_enabled(b);e._timer.set_interval(1);e._timer.set_enabled(d)}}else if(h==46||h==127){e._SetCancelEvent(g);var n=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(e.get_element());f=e._deleteTextSelection();if(f==c){f=e._getCurrentPosition();if(!e._isValidMaskedEditPosition(f))if(f!=e._LogicLastInt&&e._InputDirection!=Sys.Extended.UI.MaskedEditInputDirections.RightToLeft)f=e._getNextPosition(f);e._deleteAtPosition(f,b)}else if(e._InputDirection==Sys.Extended.UI.MaskedEditInputDirections.RightToLeft){var l=e._getClearMask(n.get_Value());if(l!=a){l=l.replace(new RegExp(j+e.get_CultureThousandsPlaceholder()+i,k),a)+a;if(l.substring(l.length-1,l.length)==e.get_CultureDecimalPlaceholder()){l=l.substring(0,l.length-1);e.loadValue(l,e._LogicLastInt)}else e.loadValue(l,e._LogicLastPos)}}e.setSelectionRange(f,f);e._MessageValidatorTip&&n.get_Value()==e._EmptyMask&&e.ShowTooltipMessage(d);if(Sys.Browser.agent==Sys.Browser.Opera){e._SaveText=n.get_Value();e._SavePosi=f;e._timer.set_enabled(b);e._timer.set_interval(1);e._timer.set_enabled(d)}}else if(g.ctrlKey){if(h==39||h==35||h==34){e._DirectSelText="R";if(Sys.Browser.agent==Sys.Browser.Opera)return;e._SetCancelEvent(g);f=e._getCurrentPosition();e.setSelectionRange(f,e._LogicLastPos+1)}else if(h==37||h==36||h==33){e._DirectSelText="L";if(Sys.Browser.agent==Sys.Browser.Opera)return;e._SetCancelEvent(g);f=e._getCurrentPosition();e.setSelectionRange(e._LogicFirstPos,f)}}else if(h==35||h==34){e._DirectSelText="R";if(Sys.Browser.agent==Sys.Browser.Opera)return;e._SetCancelEvent(g);if(g.shiftKey){f=e._getCurrentPosition();e.setSelectionRange(f,e._LogicLastPos+1)}else e.setSelectionRange(e._LogicLastPos+1,e._LogicLastPos+1)}else if(h==36||h==33){e._DirectSelText="L";if(Sys.Browser.agent==Sys.Browser.Opera)return;e._SetCancelEvent(g);if(g.shiftKey){f=e._getCurrentPosition();e.setSelectionRange(e._LogicFirstPos,f)}else e.setSelectionRange(e._LogicFirstPos,e._LogicFirstPos)}else if(h==37){e._DirectSelText="L";if(Sys.Browser.agent==Sys.Browser.Opera)return;e._SetCancelEvent(g);if(g.shiftKey){var m=e._GetBoundSelection();if(m){if(m.left>e._LogicFirstPos)m.left--;e.setSelectionRange(m.left,m.right)}else{var o=e._getCurrentPosition();o>e._LogicFirstPos&&e.setSelectionRange(o-1,o)}}else{f=e._getCurrentPosition()-1;if(f<e._LogicFirstPos)f=e._LogicFirstPos;e.setSelectionRange(f,f)}if(Sys.Browser.agent==Sys.Browser.Opera){var n=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(e.get_element());e._SaveText=n.get_Value();e._SavePosi=f;e._timer.set_enabled(b);e._timer.set_interval(1);e._timer.set_enabled(d)}}else if(h==39){e._DirectSelText="R";if(Sys.Browser.agent==Sys.Browser.Opera)return;e._SetCancelEvent(g);if(g.shiftKey){var m=e._GetBoundSelection();if(m){if(m.right<e._LogicLastPos+1)m.right++;e.setSelectionRange(m.left,m.right)}else{o=e._getCurrentPosition();o<e._LogicLastPos+1&&e.setSelectionRange(o,o+1)}}else{f=e._getCurrentPosition()+1;if(f>e._LogicLastPos+1)f=e._LogicLastPos+1;e.setSelectionRange(f,f)}if(Sys.Browser.agent==Sys.Browser.Opera){var n=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(e.get_element());e._SaveText=n.get_Value();e._SavePosi=f;e._timer.set_enabled(b);e._timer.set_interval(1);e._timer.set_enabled(d)}}else if(h==27){e._SetCancelEvent(g);var n=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(e.get_element());if(e._EmptyMask==e._initialvalue)n.set_Value(a);else n.set_Value(e._initialvalue);e._onFocus()}e._SetCancelEvent(g)},_backspace:function(a){var c=this,e=b;if(a>c._LogicFirstPos){var f=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(c.get_element()),g=f.get_Value();a=c._getPreviousPosition(a-1);c._deleteAtPosition(a,d);e=d}return e},_deleteAtPosition:function(p,D){var g=this,y=b,x=g._LogicLastPos+1;if(g._LogicLastInt!=c&&g._InputDirection==Sys.Extended.UI.MaskedEditInputDirections.RightToLeft)x=g._LogicLastInt;var t=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(g.get_element());if(D==b&&g._InputDirection==Sys.Extended.UI.MaskedEditInputDirections.RightToLeft&&p==x){var l=g._getClearMask(t.get_Value());if(l!=a){y=d;l=l.replace(new RegExp(j+g.get_CultureThousandsPlaceholder()+i,k),a)+a;if(l.substring(l.length-1,l.length)==g.get_CultureDecimalPlaceholder())l=l.substring(0,l.length-1);var r=l.split(g.get_CultureDecimalPlaceholder());if(g._LogicLastInt!=c&&r[0]!=a){r[0]=r[0].substring(0,r[0].length-1);l=r[0];if(r.length=2)l+=g.get_CultureDecimalPlaceholder()+r[1]}else l=l.substring(0,l.length-1);l+=g._LogicSymbol;g.loadValue(l,x)}}else{var h=t.get_Value().substring(g._LogicFirstPos,g._LogicLastPos+1),m=g._LogicTextMask.substring(g._LogicFirstPos,g._LogicLastPos+1),q=0,u=p-g._LogicFirstPos;if(g._isValidMaskedEditPosition(p)){y=d;if(g._MaskType==Sys.Extended.UI.MaskedEditType.DateTime){var o=g._SplitDateTime(h),B=p-g._LogicFirstPos;if(B>o[0].length){h=o[1];q=o[0].length+1;m=m.substring(q);u-=q}else{h=o[0];m=m.substring(0,o[0].length)}}var v=h.substring(u+1),w=m.substring(u+1);h=h.substring(0,u)+g._PromptChar;m=m.substring(0,u)+g._LogicPrompt;for(var n=0;n<parseInt(v.length,f);n++)if(g._isValidMaskedEditPosition(p+1+n)){h+=g._PromptChar;m+=g._LogicPrompt}else{h+=v.substring(n,n+1);m+=w.substring(n,n+1)}var s=g._getNextPosition(p);for(n=0;n<parseInt(v.length,f);n++)if(g._isValidMaskedEditPosition(p+1+n)&&w.substring(n,n+1)!=g._LogicPrompt){h=h.substring(0,s-g._LogicFirstPos-q)+v.substring(n,n+1)+h.substring(s+1-g._LogicFirstPos-q);m=m.substring(0,s-g._LogicFirstPos-q)+w.substring(n,n+1)+m.substring(s+1-g._LogicFirstPos-q);s=g._getNextPosition(s+1)}if(g._MaskType==Sys.Extended.UI.MaskedEditType.DateTime){var C=t.get_Value().substring(g._LogicFirstPos,g._LogicLastPos+1),A=g._LogicTextMask.substring(g._LogicFirstPos,g._LogicLastPos+1),o=g._SplitDateTime(C),B=p-g._LogicFirstPos;if(B>o[0].length){h=o[0]+e+h;m=A.substring(0,q)+m}else{h=h+e+o[1];m=m+A.substring(o[0].length)}}var z=t.get_Value();h=z.substring(0,g._LogicFirstPos)+h+z.substring(g._LogicLastPos+1);g._LogicTextMask=g._LogicTextMask.substring(0,g._LogicFirstPos)+m+g._LogicTextMask.substring(g._LogicLastPos+1);t.set_Value(h)}}return y},_SplitDateTime:function(a){var b=this,c=[];if(a.charAt(b._LogicDateTimeSepPos)==e){c[0]=a.substring(b._LogicFirstPos,b._LogicDateTimeSepPos);c[1]=a.substring(b._LogicDateTimeSepPos+1)}else c[0]=a;return c},_ShowModalClipBoardInput:function(){return prompt(this._ClipboardText,a)},_PasteFromClipBoard:function(){var e=this,j=g,f,v=c,u=c;if(Sys.Browser.agent==Sys.Browser.InternetExplorer)j=window.clipboardData.getData("Text");else{var n=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(e.get_element()),p=n.get_Value(),k=e._GetBoundSelection(),f=e._getCurrentPosition(),q=e._AutoComplete,t=e._ClearTextOnInvalid,s=e._ClearMaskOnLostfocus,w=e._DirectSelText;e._AutoComplete=b;e._ClearTextOnInvalid=b;e._ClearMaskOnLostfocus=b;j=e._ShowModalClipBoardInput();e._AutoComplete=q;e._ClearTextOnInvalid=t;e._ClearMaskOnLostfocus=s;n.set_Value(p);if(k)e.setSelectionRange(k.left,k.right);else e.setSelectionRange(f,f)}if(j==g||j==a)return;if(j.length>e._maskvalid.length)j=j.substring(0,e._maskvalid.length);f=e._deleteTextSelection();if(f==c){f=e._getCurrentPosition();if(k)f=k.left}e.setSelectionRange(f,f);var m=b;if(e._InputDirection==Sys.Extended.UI.MaskedEditInputDirections.RightToLeft&&e._LogicLastInt!=c)m=d;for(var l=0,l=0;l<j.length;l++){var i=j.substring(l,l+1),h=f;if(m)h=e._getLastEmptyPosition();if((e._MaskType==Sys.Extended.UI.MaskedEditType.Time||e._MaskType==Sys.Extended.UI.MaskedEditType.DateTime)&&e.get_CultureFirstLettersAMPM().toUpperCase().indexOf(i.toUpperCase())!=c){if(e._AcceptAmPm){e.InsertAMPM(i);e.setSelectionRange(f,f)}}else if(e._MaskType==Sys.Extended.UI.MaskedEditType.Number&&e._AcceptNegative!=Sys.Extended.UI.MaskedEditShowSymbol.None&&r.indexOf(i)!=c){e.InsertSignal(i);e.setSelectionRange(f,f)}else{var o=f;f=e._getNextPosition(f);var h=f;if(e._LogicLastInt!=c&&e._InputDirection==Sys.Extended.UI.MaskedEditInputDirections.RightToLeft){if(o==e._LogicLastInt)h=e._getLastEmptyPosition()}else if(f>=e._LogicLastPos+1&&e._InputDirection==Sys.Extended.UI.MaskedEditInputDirections.RightToLeft)h=e._getLastEmptyPosition();if(e._processKey(h,i)){e._MessageValidatorTip&&e.ShowTooltipMessage(b);if(e._InputDirection==Sys.Extended.UI.MaskedEditInputDirections.LeftToRight){e._insertContent(i,h);f=e._getNextPosition(h+1)}else if(e._InputDirection==Sys.Extended.UI.MaskedEditInputDirections.RightToLeft)if(e._LogicLastInt==c)if(f<e._LogicLastPos+1){e._insertContent(i,h);f=e._getNextPosition(h+1)}else{e._insertContentRight(i);f=e._LogicLastPos+1}else if(o!=e._LogicLastInt){e._insertContent(i,h);f=e._getNextPosition(h+1)}else{e._insertContentRight(i);f=e._LogicLastInt}e.setSelectionRange(f,f)}}}m&&e.setSelectionRange(e._LogicLastInt,e._LogicLastInt)},_MoveDecimalPos:function(){var b=this,g=b.get_element(),e=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(g),a=b._LogicFirstPos,f=b._LogicLastPos,d=c;while(a<f){if(e.get_Value().substring(a,a+1)==b.get_CultureDecimalPlaceholder()){d=a;break}a++}if(d==c)return;b.setSelectionRange(d,d)},_MoveThousandLTR:function(){var b=this,h=b.get_element(),f=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(h),g=b._getCurrentPosition(),e=b._LogicLastPos,a=g+1,d=c;while(a<e){if(f.get_Value().substring(a,a+1)==b.get_CultureThousandsPlaceholder()){d=a;break}a++}if(d==c){var a=0;e=g;while(a<e){if(f.get_Value().substring(a,a+1)==b.get_CultureThousandsPlaceholder()){d=a;break}a++}if(d==c)return}b.setSelectionRange(d,d)},_MoveThousandRTL:function(){var b=this,h=b.get_element(),f=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(h),g=b._getCurrentPosition(),e=b._LogicFirstPos,a=g-1,d=c;while(a>e){if(f.get_Value().substring(a,a+1)==b.get_CultureThousandsPlaceholder()){d=a;break}a--}if(d==c){a=b._LogicLastPos;e=g;while(a>e){if(f.get_Value().substring(a,a+1)==b.get_CultureThousandsPlaceholder()){d=a;break}a--}if(d==c)return}b.setSelectionRange(d,d)},_AdjustElementDecimalLTR:function(){var b=this,p=b.get_element(),g=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(p),m=b._getCurrentPosition();if(g.get_Value().substring(m).indexOf(b.get_CultureDecimalPlaceholder())==c)return;var l=g.get_Value().substring(b._LogicFirstPos,b._LogicLastPos+1),e=l.indexOf(b.get_CultureDecimalPlaceholder());if(e==c)return;var d,f=b._getClearMask(g.get_Value());if(f!=a){f=f.replace(new RegExp(j+b.get_CultureThousandsPlaceholder()+i,k),a)+a;d=f.split(b.get_CultureDecimalPlaceholder())}else d=b.get_CultureDecimalPlaceholder().split(b.get_CultureDecimalPlaceholder());if(d[0]==a)d[0]=h;var o=l.length-e-1;while(d[1].length<o)d[1]+=h;var n=b._InputDirection;b._InputDirection=Sys.Extended.UI.MaskedEditInputDirections.RightToLeft;b.loadValue(d[0]+b.get_CultureDecimalPlaceholder()+d[1],b._LogicLastPos);b._InputDirection=n;e+=b._LogicFirstPos+1;b.setSelectionRange(e,e)},_AdjustElementDecimalRTL:function(){var b=this,g=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(b.get_element()),l=g.get_Value().substring(b._LogicFirstPos,b._LogicLastPos+1),e=l.indexOf(b.get_CultureDecimalPlaceholder());if(e==c)return;var m=b._getCurrentPosition();if(e+b._LogicFirstPos>=m){b._AdjustElementDecimalLTR();return}var d,f=b._getClearMask(g.get_Value());if(f!=a){f=f.replace(new RegExp(j+b.get_CultureThousandsPlaceholder()+i,k),a)+a;d=f.split(b.get_CultureDecimalPlaceholder())}else d=b.get_CultureDecimalPlaceholder().split(b.get_CultureDecimalPlaceholder());if(d[0]==a)d[0]=h;var o=l.length-e-1;while(d[1].length<o)d[1]+=h;var n=b._InputDirection;b._InputDirection=Sys.Extended.UI.MaskedEditInputDirections.RightToLeft;b.loadValue(d[0]+b.get_CultureDecimalPlaceholder()+d[1],b._LogicLastPos);b._InputDirection=n;e+=b._LogicFirstPos+1;b.setSelectionRange(e,e)},_AdjustTime:function(c,l){for(var g=d,e=0;e<parseInt(c.length,f);e++)if(c.substring(e,e+1)!=this._PromptChar)g=b;if(g)return l;var m=c.length;c=c.replace(new RegExp(j+this._PromptChar+i,k),a)+a;while(c.length<m)c=h+c;return c},_AdjustElementTime:function(){var b=this,o=b.get_element(),n=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(o),g=a,i=b._getCurrentPosition()-b._LogicFirstPos,j=b._maskvalid,c=i+b._LogicFirstPos,d=0;if(b._MaskType==Sys.Extended.UI.MaskedEditType.DateTime){d=j.split(e)[0].length+1;if(i<d){c=d+b._LogicFirstPos;b.setSelectionRange(c,c);return}j=j.split(e)[1];i-=d}j=j.split(":");if(i<=1){g="H";c=3+b._LogicFirstPos+d}else if(i>=2&&i<=4&&j.length==2){g=l;c=d+b._LogicFirstPos}else if(i>=2&&i<=4&&j.length==3){g=l;c=6+b._LogicFirstPos+d}else if(j.length==3){g="S";c=d+b._LogicFirstPos}if(g==a)return;var k=n.get_Value().substring(b._LogicFirstPos,b._LogicLastPos+1);if(b._MaskType==Sys.Extended.UI.MaskedEditType.DateTime)k=b._SplitDateTime(k)[1];var h=k.split(b.get_CultureTimePlaceholder()),m=b._GetTimeElementText(g),f;if(g=="H"){f=m+b.get_CultureTimePlaceholder()+h[1];if(h.length==3)f+=b.get_CultureTimePlaceholder()+h[2]}else if(g==l){f=h[0]+b.get_CultureTimePlaceholder()+m;if(h.length==3)f+=b.get_CultureTimePlaceholder()+h[2]}else if(g=="S"){f=h[0]+b.get_CultureTimePlaceholder()+h[1];f+=b.get_CultureTimePlaceholder()+m}if(b._MaskType==Sys.Extended.UI.MaskedEditType.DateTime)f=n.get_Value().substring(b._LogicFirstPos,d)+f;b.loadMaskValue(f,b._LogicFirstPos,b._LogicSymbol);b.setSelectionRange(c,c)},_GetTimeElementText:function(g){var d=this,b,f=d._LogicTextMask.substring(d._LogicFirstPos,d._LogicLastPos+1);if(d._MaskType==Sys.Extended.UI.MaskedEditType.DateTime)f=f.substring(d._maskvalid.split(e)[0].length+1);var c=f.split(d.get_CultureTimePlaceholder());c[0]=c[0].replace(new RegExp(j+d._LogicPrompt+i,k),d._PromptChar)+a;b=c[0].replace(new RegExp(j+d._PromptChar+i,k),a)+a;if(b!=a&&b.length<2){b=h+b;c[0]=b}c[1]=c[1].replace(new RegExp(j+d._LogicPrompt+i,k),d._PromptChar)+a;b=c[1].replace(new RegExp(j+d._PromptChar+i,k),a)+a;if(b!=a&&b.length<2){b=h+b;c[1]=b}if(c.length==3){c[2]=c[2].replace(new RegExp(j+d._LogicPrompt+i,k),d._PromptChar)+a;b=c[2].replace(new RegExp(j+d._PromptChar+i,k),a)+a;if(b!=a&&b.length<2){b=h+b;c[2]=b}}return g=="H"?c[0]:g==l?c[1]:c[2]},_AdjustElementDateTime:function(b){var a=this;b==a.get_CultureDatePlaceholder()&&a._AdjustElementDate();b==a.get_CultureTimePlaceholder()&&a._AdjustElementTime()},_AdjustElementDate:function(){var b=this,t=b.get_element(),p=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(t),k=p.get_Value().substring(b._LogicFirstPos,b._LogicLastPos+1);if(b._MaskType==Sys.Extended.UI.MaskedEditType.DateTime)k=b._SplitDateTime(k)[0];var i=k.split(b.get_CultureDatePlaceholder()),g=a,d=b._getCurrentPosition()-b._LogicFirstPos,f=d+b._LogicFirstPos,h=b._maskvalid.indexOf(E)!=c?2:0;if(b.get_CultureDateFormat()==x)if(d<=1){g=m;f=3+b._LogicFirstPos}else if(d>=2&&d<=4){g=l;f=6+b._LogicFirstPos}else{if(d>8+h&&b._MaskType==Sys.Extended.UI.MaskedEditType.DateTime){b.setSelectionRange(b._LogicFirstPos,b._LogicFirstPos);return}g=n;f=b._LogicFirstPos}else if(b.get_CultureDateFormat()==v)if(d<=1){g=l;f=3+b._LogicFirstPos}else if(d>=2&&d<=4){g=m;f=6+b._LogicFirstPos}else{if(d>8+h&&b._MaskType==Sys.Extended.UI.MaskedEditType.DateTime){b.setSelectionRange(b._LogicFirstPos,b._LogicFirstPos);return}g=n;f=b._LogicFirstPos}else if(b.get_CultureDateFormat()==y)if(d<=1){g=m;f=3+b._LogicFirstPos}else if(d>=2&&d<=4+h){g=n;f=6+h+b._LogicFirstPos}else{g=l;f=b._LogicFirstPos}else if(b.get_CultureDateFormat()==z)if(d<=1){g=l;f=3+b._LogicFirstPos}else if(d>=2&&d<=4+h){g=n;f=6+h+b._LogicFirstPos}else{g=m;f=b._LogicFirstPos}else if(b.get_CultureDateFormat()==A)if(d<=1+h){g=n;f=3+h+b._LogicFirstPos}else if(d>=2+h&&d<=4+h){g=l;f=6+h+b._LogicFirstPos}else{g=m;f=b._LogicFirstPos}else if(b.get_CultureDateFormat()==B)if(d<=1+h){g=n;f=3+h+b._LogicFirstPos}else if(d>=2+h&&d<=4+h){g=m;f=6+h+b._LogicFirstPos}else{g=l;f=b._LogicFirstPos}var r=b._GetDateElementText(g);i[b.get_CultureDateFormat().indexOf(g)]=r;var o=i[0]+b.get_CultureDatePlaceholder()+i[1]+b._CultureDatePlaceholder+i[2];if(b._MaskType==Sys.Extended.UI.MaskedEditType.DateTime){var s=p.get_Value().substring(b._LogicFirstPos,b._LogicLastPos+1),q=b._SplitDateTime(s),j=q[1].split(e);if(j.length==2)o+=e+j[0]+e+j[1];else o+=e+q[1]}b.loadMaskValue(o,b._LogicFirstPos,b._LogicSymbol);b.setSelectionRange(f,f)},_GetDateElementText:function(p){var e=this,f,g;if(e._MaskType==Sys.Extended.UI.MaskedEditType.DateTime){var o=e._SplitDateTime(e._LogicTextMask.substring(e._LogicFirstPos,e._LogicLastPos+1))[0];g=o.split(e.get_CultureDatePlaceholder())}else g=e._LogicTextMask.substring(e._LogicFirstPos,e._LogicLastPos+1).split(e.get_CultureDatePlaceholder());g[e.get_CultureDateFormat().indexOf(m)]=g[e.get_CultureDateFormat().indexOf(m)].replace(new RegExp(j+e._LogicPrompt+i,k),e._PromptChar)+a;f=g[e.get_CultureDateFormat().indexOf(m)].replace(new RegExp(j+e._PromptChar+i,k),a)+a;if(f!=a&&f.length<2){f=h+f;g[e.get_CultureDateFormat().indexOf(m)]=f}g[e.get_CultureDateFormat().indexOf(l)]=g[e.get_CultureDateFormat().indexOf(l)].replace(new RegExp(j+e._LogicPrompt+i,k),e._PromptChar)+a;f=g[e.get_CultureDateFormat().indexOf(l)].replace(new RegExp(j+e._PromptChar+i,k),a)+a;if(f!=a&&f.length<2){f=h+f;g[e.get_CultureDateFormat().indexOf(l)]=f}var q=e._maskvalid.indexOf(E)!=c?d:b;g[e.get_CultureDateFormat().indexOf(n)]=g[e.get_CultureDateFormat().indexOf(n)].replace(new RegExp(j+e._LogicPrompt+i,k),e._PromptChar)+a;f=g[e.get_CultureDateFormat().indexOf(n)].replace(new RegExp(j+e._PromptChar+i,k),a)+a;if(q){if(f!=a&&f.length<4){while(f.length<4)f=h+f;g[e.get_CultureDateFormat().indexOf(n)]=f}}else if(f!=a&&f.length<2){f=h+f;g[e.get_CultureDateFormat().indexOf(n)]=f}return g[e.get_CultureDateFormat().indexOf(p)]},_GetBoundSelection:function(){var d=g,b=this.get_element();if(b.setSelectionRange){if(b.selectionStart!=b.selectionEnd)d={left:parseInt(b.selectionStart,f),right:parseInt(b.selectionEnd,f)}}else if(document.selection){var c=document.selection.createRange();if(c.text!=a){var j=parseInt(c.text.length,f);c.text=String.fromCharCode(3)+c.text;var e=b.createTextRange();e.findText(String.fromCharCode(3));e.select();var i=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(b),h=parseInt(i.get_Value().indexOf(String.fromCharCode(3)),f);document.selection.clear();d={left:h,right:h+j}}}return d},_deleteTextSelection:function(){var g=this,e=g.get_element(),m=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(e),j=m.get_Value(),k=c,h=c,n=b;if(e.setSelectionRange){if(e.selectionStart!=e.selectionEnd){var r=parseInt(e.selectionStart,f),q=parseInt(e.selectionEnd,f);n=d;k=q-r;h=e.selectionStart;e.selectionEnd=e.selectionStart}}else if(document.selection){var o=document.selection.createRange();if(o.text!=a){n=d;var l=o.text+String.fromCharCode(3);o.text=l;var p=e.createTextRange();p.findText(l);p.select();h=m.get_Value().indexOf(l);document.selection.clear();k=parseInt(l.length,f)-1}}if(n){for(var i=0;i<k;i++)if(g._isValidMaskedEditPosition(h+i)){j=j.substring(0,h+i)+g._PromptChar+j.substring(h+i+1);g._LogicTextMask=g._LogicTextMask.substring(0,h+i)+g._LogicPrompt+g._LogicTextMask.substring(h+i+1)}m.set_Value(j);if(g._InputDirection==Sys.Extended.UI.MaskedEditInputDirections.RightToLeft)h+=k}g._DirectSelText=a;return h},_isNormalChar:function(a,f){var e=this,c=d;if(Sys.Browser.agent==Sys.Browser.Opera&&a.type==s)e._SaveKeyDown=f;if(f<32)c=b;else if(Sys.Browser.agent!=Sys.Browser.InternetExplorer||a.type==s)switch(f){case 33:if(typeof a.rawEvent.which!=o&&a.rawEvent.which!=g)if(a.rawEvent.which==0)c=b;break;case 34:if(typeof a.rawEvent.which!=o&&a.rawEvent.which!=g)if(a.rawEvent.which==0)c=b;break;case 35:if(Sys.Browser.agent==Sys.Browser.Opera&&a.type==p){if(e._SaveKeyDown==35)c=b}else c=b;break;case 36:if(Sys.Browser.agent==Sys.Browser.Opera&&a.type==p){if(e._SaveKeyDown==36)c=b}else c=b;break;case 37:if(typeof a.rawEvent.which!=o&&a.rawEvent.which!=g)if(a.rawEvent.which==0)c=b;break;case 38:if(typeof a.rawEvent.which!=o&&a.rawEvent.which!=g)if(a.rawEvent.which==0)c=b;break;case 39:if(typeof a.rawEvent.which!=o&&a.rawEvent.which!=g)if(a.rawEvent.which==0)c=b;break;case 40:if(typeof a.rawEvent.which!=o&&a.rawEvent.which!=g)if(a.rawEvent.which==0)c=b;break;case 45:if(typeof a.rawEvent.which!=o&&a.rawEvent.which!=g&&Sys.Browser.agent!=Sys.Browser.Opera){if(a.rawEvent.which==0)c=b}else if(Sys.Browser.agent==Sys.Browser.Opera)c=d;else c=b;break;case 86:case 118:if(!a.rawEvent.shiftKey&&a.rawEvent.ctrlKey&&!a.rawEvent.altKey)c=b;break;case 46:if(typeof a.rawEvent.which!=o&&a.rawEvent.which!=g&&Sys.Browser.agent!=Sys.Browser.Opera){if(a.rawEvent.which==0)c=b}else if(Sys.Browser.agent==Sys.Browser.Opera&&a.type==p){if(e._SaveKeyDown==127)c=b}else c=b;break;case 127:c=b}return c},_KeyCode:function(b){var a=0;if(b.keyIdentifier)if(b.charCode==63272)a=46;else if(b.charCode==63302)a=45;else if(b.charCode==63233)a=40;else if(b.charCode==63235)a=39;else if(b.charCode==63232)a=38;else if(b.charCode==63234)a=37;else if(b.charCode==63273)a=36;else if(b.charCode==63275)a=35;else if(b.charCode==63277)a=34;else if(b.charCode==63276)a=33;else if(b.charCode==3)a=13;if(a==0)if(b.charCode)a=b.charCode;if(a==0)a=b.keyCode;return a},_InitValue:function(c,d){var b=this;b._LogicSymbol=a;var f=b.get_element(),e=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(f);e.set_Value(b._EmptyMask);if(c==b._EmptyMask||c==a)b.loadValue(a,b._LogicFirstPos);else if(b._MaskType==Sys.Extended.UI.MaskedEditType.Date&&c!=a)c=b.ConvFmtDate(c,d);else if(b._MaskType==Sys.Extended.UI.MaskedEditType.Time&&c!=a)c=b.ConvFmtTime(c,d);else if(b._MaskType==Sys.Extended.UI.MaskedEditType.DateTime&&c!=a)c=b.ConvFmtDateTime(c,d);else if(b._MaskType==Sys.Extended.UI.MaskedEditType.Number&&c!=a)c=b.ConvFmtNumber(c,d);if(b._InputDirection==Sys.Extended.UI.MaskedEditInputDirections.LeftToRight&&c!=a)if(b._MaskType==Sys.Extended.UI.MaskedEditType.Number){b._InputDirection=Sys.Extended.UI.MaskedEditInputDirections.RightToLeft;b.loadValue(c,b._LogicLastPos);b._InputDirection=Sys.Extended.UI.MaskedEditInputDirections.LeftToRight}else b.loadValue(c,b._LogicFirstPos);else b._InputDirection==Sys.Extended.UI.MaskedEditInputDirections.RightToLeft&&c!=a&&b.loadValue(c,b._LogicLastPos);if(b._MaskType==Sys.Extended.UI.MaskedEditType.Number)b._InLostfocus&&b._LogicSymbol==q&&b._OnBlurCssNegative!=a&&b.AddCssClassMaskedEdit(b._OnBlurCssNegative)},loadMaskValue:function(g,d,e){var a=this;a._createMask();var i=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(a.get_element());i.set_Value(a._EmptyMask);if((a._MaskType==Sys.Extended.UI.MaskedEditType.Time||a._MaskType==Sys.Extended.UI.MaskedEditType.DateTime)&&a.get_CultureFirstLettersAMPM().toUpperCase().indexOf(e.toUpperCase().substring(0,1))!=c)a._AcceptAmPm&&a.InsertAMPM(e.toUpperCase().substring(0,1));else a._MaskType==Sys.Extended.UI.MaskedEditType.Number&&a._AcceptNegative!=Sys.Extended.UI.MaskedEditShowSymbol.None&&r.indexOf(e)!=c&&a.InsertSignal(e);for(var b=0,b=0;b<parseInt(g.length,f);b++){var h=g.substring(b+d,b+d+1);a._processKey(d+b,h)&&a._insertContent(h,d+b)}},loadValue:function(h,b){var a=this,d;a._createMask();var i=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(a.get_element());i.set_Value(a._EmptyMask);if(a._InputDirection==Sys.Extended.UI.MaskedEditInputDirections.LeftToRight)for(d=0;d<parseInt(h.length,f);d++){var e=h.substring(d,d+1);if((a._MaskType==Sys.Extended.UI.MaskedEditType.Time||a._MaskType==Sys.Extended.UI.MaskedEditType.DateTime)&&a.get_CultureFirstLettersAMPM().toUpperCase().indexOf(e.toUpperCase())!=c)a._AcceptAmPm&&a.InsertAMPM(e);else a._MaskType==Sys.Extended.UI.MaskedEditType.Number&&a._AcceptNegative!=Sys.Extended.UI.MaskedEditShowSymbol.None&&r.indexOf(e)!=c&&a.InsertSignal(e);if(a._processKey(b,e)){a._insertContent(e,b);b=a._getNextPosition(b+1)}}else if(a._InputDirection==Sys.Extended.UI.MaskedEditInputDirections.RightToLeft)if(b==a._LogicLastInt){b=a._getPreviousPosition(b);var g=h.split(a.get_CultureDecimalPlaceholder());for(d=parseInt(g[0].length,f);d>0;d--){var e=g[0].substring(d-1,d);a._MaskType==Sys.Extended.UI.MaskedEditType.Number&&a._AcceptNegative!=Sys.Extended.UI.MaskedEditShowSymbol.None&&r.indexOf(e)!=c&&a.InsertSignal(e);if(a._processKey(b,e)){a._insertContent(e,b);b=a._getPreviousPosition(b-1)}}if(g.length>1){b=a._getNextPosition(a._LogicLastInt);for(d=0;d<parseInt(g[1].length,f);d++){var e=g[1].substring(d,d+1);a._MaskType==Sys.Extended.UI.MaskedEditType.Number&&a._AcceptNegative!=Sys.Extended.UI.MaskedEditShowSymbol.None&&r.indexOf(e)!=c&&a.InsertSignal(e);if(a._processKey(b,e)){a._insertContent(e,b);b=a._getNextPosition(b+1)}}}}else for(d=parseInt(h.length,f);d>0;d--){var e=h.substring(d-1,d);a._MaskType==Sys.Extended.UI.MaskedEditType.Number&&a._AcceptNegative!=Sys.Extended.UI.MaskedEditShowSymbol.None&&r.indexOf(e)!=c&&a.InsertSignal(e);if(a._processKey(b,e)){a._insertContent(e,b);b=a._getPreviousPosition(b-1)}}},AutoFormatNumber:function(){var f=this,e,j=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(f.get_element());ValueText=j.get_Value();var i=f._AutoCompleteValue,k=b;for(e=f._LogicFirstPos;e<=f._LogicLastPos;e++)if(f._LogicTextMask.substring(e,e+1)==f._LogicPrompt){var g=h;if(i!=a)g=i.substring(e-f._LogicFirstPos,e+1-f._LogicFirstPos);if(k){f._LogicTextMask=f._LogicTextMask.substring(0,e)+g+f._LogicTextMask.substring(e+1);ValueText=ValueText.substring(0,e)+g+ValueText.substring(e+1)}}else if(f._LogicMask.substring(e,e+1)==f._LogicPrompt&&"123456789".indexOf(f._LogicTextMask.substring(e,e+1))!=c)k=d;j.set_Value(ValueText);return ValueText},AutoFormatTime:function(){var g=this,C=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(g.get_element());ValueText=C.get_Value();var i=g._AutoCompleteValue;if(i.indexOf(g.get_CultureTimePlaceholder())==c)i=a;if(g._MaskType==Sys.Extended.UI.MaskedEditType.DateTime){var A=g._SplitDateTime(ValueText),u=A[1].split(e);if(u.length==2)ValueText=u[0]+e+u[1];else ValueText=A[0];if(i!=a){if(i.indexOf(g.get_CultureDatePlaceholder())==c)i=e+i;var x=g._SplitDateTime(i),t=x[1].split(e);if(t.length==2)i=t[0]+e+t[1];else i=x[0]}}var y=new Date,j=y.getHours().toString();if(j.length<2)j=h+j;if(i!=a)j=i.substring(0,2);var r=b,q=b,s=a,k=a,p=a;if(g.get_CultureAMPMPlaceholder()!=a){var z=g.get_CultureAMPMPlaceholder().split(g._AMPMPlaceholderSeparator);s=z[0];k=z[1];if(i==a){var p=s;if(j>12){j=(parseInt(j,f)-12).toString();if(j.length<2)j=h+j;p=k}}else{p=s;if(i.indexOf(k)!=c)p=k}r=d;if(ValueText.indexOf(k)!=c&&k!=a)q=d;if(!g._AcceptAmPm){p=a;q=b;r=b}else{var B=d;if(ValueText.substring(0,1)!=g._PromptChar||ValueText.substring(1,2)!=g._PromptChar)B=b;if(B&&p!=a){r=d;q=b;if(k==p)q=d}}}var o=y.getMinutes().toString();if(o.length<2)o=h+o;if(i!=a)o=i.substring(3,5);var w="00",l,m;if(g._MaskType==Sys.Extended.UI.MaskedEditType.DateTime){l=ValueText.substring(0,2);l=g._AdjustTime(l,j);m=ValueText.substring(3,5);m=g._AdjustTime(m,o)}else{l=ValueText.substring(g._LogicFirstPos,g._LogicFirstPos+2);l=g._AdjustTime(l,j);m=ValueText.substring(g._LogicFirstPos+3,g._LogicFirstPos+5);m=g._AdjustTime(m,o)}var v=g._maskvalid;if(g._MaskType==Sys.Extended.UI.MaskedEditType.DateTime)v=v.split(e)[1];if(v=="99:99:99"){if(i!=a)w=i.substring(6);var n;if(g._MaskType==Sys.Extended.UI.MaskedEditType.DateTime){n=ValueText.substring(6,8);n=g._AdjustTime(n,w)}else{n=ValueText.substring(g._LogicFirstPos+6,g._LogicFirstPos+8);n=g._AdjustTime(n,w)}ValueText=l+g.get_CultureTimePlaceholder()+m+g.get_CultureTimePlaceholder()+n}else ValueText=l+g.get_CultureTimePlaceholder()+m;if(q)ValueText+=e+k;else if(r)ValueText+=e+s;g._MaskType!=Sys.Extended.UI.MaskedEditType.DateTime&&g.loadValue(ValueText,g._LogicFirstPos);return ValueText},AutoFormatDateTime:function(){var a=this,b=a.AutoFormatDate(),c=a.AutoFormatTime();a.loadValue(b+e+c,a._LogicFirstPos);return b+e+c},AutoFormatDate:function(){var f=this,t=f._GetDateElementText(m).replace(new RegExp(j+f._PromptChar+i,k),a)+a,u=f._GetDateElementText(l).replace(new RegExp(j+f._PromptChar+i,k),a)+a,w=f._GetDateElementText(n).replace(new RegExp(j+f._PromptChar+i,k),a)+a,D=f._maskvalid.indexOf(E)!=c?d:b,r=f._AutoCompleteValue;if(r.indexOf(f.get_CultureDatePlaceholder())==c)r=a;var p,q,o;if(r==a){var C=new Date;p=C.getUTCDate().toString();if(p.length<2)p=h+p;q=(C.getUTCMonth()+1).toString();if(q.length<2)q=h+q;if(D)o=C.getUTCFullYear().toString();else o=o.substring(2)}else{var g;if(f._MaskType==Sys.Extended.UI.MaskedEditType.DateTime){if(r.indexOf(f.get_CultureTimePlaceholder())==c)r=r+e;var F=f._SplitDateTime(r)[0];g=F.split(f.get_CultureDatePlaceholder())}else g=r.split(f.get_CultureDatePlaceholder());if(f.get_CultureDateFormat()==x){p=g[0];q=g[1];o=g[2]}else if(f.get_CultureDateFormat()==v){p=g[1];q=g[0];o=g[2]}else if(f.get_CultureDateFormat()==y){p=g[0];q=g[2];o=g[1]}else if(f.get_CultureDateFormat()==z){p=g[2];q=g[0];o=g[1]}else if(f.get_CultureDateFormat()==A){p=g[2];q=g[1];o=g[0]}else if(f.get_CultureDateFormat()==B){p=g[1];q=g[2];o=g[0]}if(p.length<2)p=h+p;if(q.length<2)q=h+q;if(D)while(o.length<4)o=h+o;else while(o.length<2)o=h+o}if(t==a)t=p;if(u==a)u=q;if(w==a)w=o;var s;if(f.get_CultureDateFormat()==x)s=t+f.get_CultureDatePlaceholder()+u+f._CultureDatePlaceholder+w;else if(f.get_CultureDateFormat()==v)s=u+f.get_CultureDatePlaceholder()+t+f._CultureDatePlaceholder+w;else if(f.get_CultureDateFormat()==y)s=t+f.get_CultureDatePlaceholder()+w+f._CultureDatePlaceholder+u;else if(f.get_CultureDateFormat()==z)s=u+f.get_CultureDatePlaceholder()+w+f._CultureDatePlaceholder+t;else if(f.get_CultureDateFormat()==A)s=w+f.get_CultureDatePlaceholder()+u+f._CultureDatePlaceholder+t;else if(f.get_CultureDateFormat()==B)s=w+f.get_CultureDatePlaceholder()+t+f._CultureDatePlaceholder+u;f._MaskType!=Sys.Extended.UI.MaskedEditType.DateTime&&f.loadValue(s,f._LogicFirstPos);return s},ConvFmtNumber:function(a){if(this._maskvalid.split(this.get_CultureDecimalPlaceholder()).length==2)if(a.substring(a.length-1,a.length)==this.get_CultureDecimalPlaceholder())a=a.substring(0,a.length-1);return a},ConvFmtTime:function(m,z){var g=this,y=0,w=b,x=b,p=a,q=a;if(g.get_CultureAMPMPlaceholder()!=a){p=g.get_CultureAMPMPlaceholder().split(g._AMPMPlaceholderSeparator)[0];q=g.get_CultureAMPMPlaceholder().split(g._AMPMPlaceholderSeparator)[1]}if(z){var v=a,u=a;if(g._CultureAMPMPlaceholder!=a){v=g._CultureAMPMPlaceholder.split(g._AMPMPlaceholderSeparator)[0];u=g._CultureAMPMPlaceholder.split(g._AMPMPlaceholderSeparator)[1]}if(g.get_UserTimeFormat()==Sys.Extended.UI.MaskedEditUserTimeFormat.TwentyFourHour){m=m.replace(new RegExp(j+v+i,k),a);if(m.indexOf(u)!=c)y=12;m=m.replace(new RegExp(j+u+i,k),a)}}if(m.indexOf(p)!=c&&p!=a)w=d;else if(m.indexOf(q)!=c&&q!=a)x=d;if(p!=a)m=m.replace(new RegExp(j+p+i,k),a);if(q!=a)m=m.replace(new RegExp(j+q+i,k),a);m=m.replace(new RegExp(j+e+i,k),a);var l=m.split(g.get_CultureTimePlaceholder()),n=g._maskvalid;if(g._MaskType==Sys.Extended.UI.MaskedEditType.DateTime)n=n.split(e)[1];n=n.split(":");if(parseInt(l.length,f)<2||parseInt(l.length,f)>3)return a;var o=parseInt(l[0],f)+y;o=o.toString();if(o.length<n[0].length)while(o.length<n[0].length)o=h+o;l[0]=o;var s=parseInt(l[1],f)+a;if(s.length<n[1].length)while(s.length<n[1].length)s=h+s;l[1]=s;var r=a;if(parseInt(l.length,f)==3){var t=parseInt(l[2],f)+a;if(t.length<n[2].length)while(t.length<n[2].length)t=h+t;l[2]=t;r=l[0]+g.get_CultureTimePlaceholder()+l[1]+g.get_CultureTimePlaceholder()+l[2]}else r=l[0]+g.get_CultureTimePlaceholder()+l[1];if(w)r+=e+p;else if(x)r+=e+q;return r},ConvFmtDateTime:function(f,c){var d=this._SplitDateTime(f),b=d[0],a=d[1];if(a.split(e).length==2)a+=e+a.split(e)[1];b=this.ConvFmtDate(b,c);a=this.ConvFmtTime(a,c);return b+e+a},ConvFmtDate:function(o,p){var b=this,j,c;if(p){j=o.split(b.get_CultureDatePlaceholder());c=o.split(b.get_CultureDatePlaceholder());if(b.get_UserDateFormat()!=Sys.Extended.UI.MaskedEditUserDateFormat.None){c[b.get_CultureDateFormat().indexOf(m)]=j[b._CultureDateFormat.indexOf(m)];c[b.get_CultureDateFormat().indexOf(l)]=j[b._CultureDateFormat.indexOf(l)];c[b.get_CultureDateFormat().indexOf(n)]=j[b._CultureDateFormat.indexOf(n)]}}else c=o.split(b.get_CultureDatePlaceholder());var d=b._maskvalid;if(b._MaskType==Sys.Extended.UI.MaskedEditType.DateTime)d=d.split(e)[0];d=d.split("/");if(parseInt(c.length,f)!=3)return a;var g=parseInt(c[b.get_CultureDateFormat().indexOf(m)],f)+a;if(g.length<d[b.get_CultureDateFormat().indexOf(m)].length)while(g.length<d[b.get_CultureDateFormat().indexOf(m)].length)g=h+g;c[b.get_CultureDateFormat().indexOf(m)]=g;var i=parseInt(c[b.get_CultureDateFormat().indexOf(l)],f)+a;if(i.length<d[b.get_CultureDateFormat().indexOf(l)].length)while(i.length<d[b.get_CultureDateFormat().indexOf(l)].length)i=h+i;c[b.get_CultureDateFormat().indexOf(l)]=i;var k=parseInt(c[b.get_CultureDateFormat().indexOf(n)],f)+a;while(k.length<d[b.get_CultureDateFormat().indexOf(n)].length)k=h+k;c[b.get_CultureDateFormat().indexOf(n)]=k;return c[0]+b.get_CultureDatePlaceholder()+c[1]+b._CultureDatePlaceholder+c[2]},AddCssClassMaskedEdit:function(d){var b=this,c=b.get_element();Sys.UI.DomElement.removeCssClass(c,b._OnBlurCssNegative);Sys.UI.DomElement.removeCssClass(c,b._OnFocusCssClass);Sys.UI.DomElement.removeCssClass(c,b._OnFocusCssNegative);Sys.UI.DomElement.removeCssClass(c,b._OnInvalidCssClass);d!=a&&Sys.UI.DomElement.addCssClass(c,d)},_SetCancelEvent:function(a){if(typeof a.returnValue!==o)a.returnValue=b;if(typeof a.cancelBubble!==o)a.cancelBubble=d;typeof a.preventDefault!==o&&a.preventDefault();typeof a.stopPropagation!==o&&a.stopPropagation()},_CaptureServerValidators:function(){var i=d,e=this._ExternalMessageError;if(typeof Page_Validators!=o)for(var c=g,h=d,f=0;f<Page_Validators.length;f++){c=Page_Validators[f];if(typeof c.enabled==o||c.enabled!=b)if(c.TargetValidator==this.get_element().id)if(!c.isvalid){if(h){h=b;e=a}if(typeof c.errormessage==u){if(e!=a)e+=", ";e+=c.errormessage}i=b}}this._ExternalMessageError=e;return i},_CaptureClientsValidators:function(){var f=d,e=a;this._ExternalMessageError=e;if(typeof Page_Validators!=o)for(var c=g,h=0;h<Page_Validators.length;h++){c=Page_Validators[h];if(typeof c.enabled==o||c.enabled!=b)if(c.TargetValidator==this.get_element().id)if(typeof c.evaluationfunction=="function"){var j=c.evaluationfunction(c);if(!j){f=b;if(typeof c.errormessage==u){if(e!=a)e+=", ";e+=c.errormessage}}}else if(typeof c.evaluationfunction==u){var j;eval("crtret = "+c.evaluationfunction+"("+c.id+i);if(!j){f=b;if(typeof c.errormessage==u){if(e!=a)e+=", ";e+=c.errormessage}}}}this._ExternalMessageError=e;return f},ShowTooltipMessage:function(e){var c=this;if(typeof Page_Validators==o)return;var f=a;if(!e){f=c._CurrentMessageError;c._CurrentMessageError=a}for(var d=0,b=g,d=0;d<Page_Validators.length;d++){b=Page_Validators[d];if(b.TargetValidator==c.get_element().id&&b.IsMaskedEdit=="true"){if(!e){b.innerHTML=f;if(typeof b.display==u){if(b.display=="None")return;if(b.display=="Dynamic"){b.style.display=b.isvalid?"none":"inline";return}}return}c._CurrentMessageError=b.innerHTML;b.innerHTML=b.TooltipMessage;if(typeof b.display==u){if(b.display=="None")return;if(b.display=="Dynamic"){b.style.display="inline";return}}b.style.visibility="visible";return}}},_insertContent:function(e,b){var c=this,d=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(c.get_element()),a=d.get_Value();a=a.substring(0,b)+e+a.substring(b+1);c._LogicTextMask=c._LogicTextMask.substring(0,b)+e+c._LogicTextMask.substring(b+1);d.set_Value(a)},_insertContentRight:function(n){var a=this,m=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(a.get_element()),d=m.get_Value(),g=a._getLastEmptyPosition();if(g<0)return;var b,i=d.substring(g+1),k=a._LogicTextMask.substring(g+1);d=d.substring(0,g)+a._PromptChar;a._LogicTextMask=a._LogicTextMask.substring(0,g)+a._LogicPrompt;var e;if(a._LogicLastInt!=c&&a._InputDirection==Sys.Extended.UI.MaskedEditInputDirections.RightToLeft){var h=i.split(a.get_CultureDecimalPlaceholder()),l=k.split(a.get_CultureDecimalPlaceholder());for(b=0;b<parseInt(h[0].length,f);b++)if(a._isValidMaskedEditPosition(g+1+b)){d+=a._PromptChar;a._LogicTextMask+=a._LogicPrompt}else{d+=h[0].substring(b,b+1);a._LogicTextMask+=l[0].substring(b,b+1)}if(h.length=2){d+=a.get_CultureDecimalPlaceholder()+h[1];a._LogicTextMask+=a.get_CultureDecimalPlaceholder()+l[1]}e=a._getNextPosition(g);for(b=0;b<parseInt(h[0].length,f);b++)if(a._isValidMaskedEditPosition(g+1+b)&&l[0].substring(b,b+1)!=a._LogicPrompt){d=d.substring(0,e)+h[0].substring(b,b+1)+d.substring(e+1);a._LogicTextMask=a._LogicTextMask.substring(0,e)+l[0].substring(b,b+1)+a._LogicTextMask.substring(e+1);e=a._getNextPosition(e+1)}}else{for(b=0;b<parseInt(i.length,f);b++)if(a._isValidMaskedEditPosition(g+1+b)){d+=a._PromptChar;a._LogicTextMask+=a._LogicPrompt}else{d+=i.substring(b,b+1);a._LogicTextMask+=k.substring(b,b+1)}e=a._getNextPosition(g);for(b=0;b<parseInt(i.length,f);b++)if(a._isValidMaskedEditPosition(g+1+b)&&k.substring(b,b+1)!=a._LogicPrompt){d=d.substring(0,e)+i.substring(b,b+1)+d.substring(e+1);a._LogicTextMask=a._LogicTextMask.substring(0,e)+k.substring(b,b+1)+a._LogicTextMask.substring(e+1);e=a._getNextPosition(e+1)}}var j=0;if(a._LogicLastInt!=c&&a._InputDirection==Sys.Extended.UI.MaskedEditInputDirections.RightToLeft)j=a._LogicLastPos-a._LogicLastInt+1;d=d.substring(0,a._LogicLastPos-j)+n+d.substring(a._LogicLastPos-j+1);a._LogicTextMask=a._LogicTextMask.substring(0,a._LogicLastPos-j)+n+a._LogicTextMask.substring(a._LogicLastPos-j+1);m.set_Value(d)},InsertAMPM:function(g){var b=this,f=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(b.get_element()),d=f.get_Value(),e=b.get_CultureAMPMPlaceholder().split(b._AMPMPlaceholderSeparator),c=a;if(e.length==2){if(g.toUpperCase()==b.get_CultureFirstLetterAM().toUpperCase())c=e[0];else if(g.toUpperCase()==b.get_CultureFirstLetterPM().toUpperCase())c=e[1];b._LogicSymbol=c}d=d.substring(0,b._LogicLastPos+2)+c+d.substring(b._LogicLastPos+2+c.length);f.set_Value(d)},InsertSignal:function(d){var b=this,f=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(b.get_element()),c=f.get_Value();if(d==q&&b._LogicSymbol==q)d="+";if(d=="+"){d=e;b._LogicSymbol=a;if(!b._InLostfocus&&b._OnFocusCssClass!=a)b.AddCssClassMaskedEdit(b._OnFocusCssClass);else!b._InLostfocus&&b.AddCssClassMaskedEdit(a)}else{b._LogicSymbol=q;!b._InLostfocus&&b._OnFocusCssNegative!=a&&b.AddCssClassMaskedEdit(b._OnFocusCssNegative)}if(b._AcceptNegative==Sys.Extended.UI.MaskedEditShowSymbol.Left)c=c.substring(0,b._LogicFirstPos-1)+d+c.substring(b._LogicFirstPos);else if(b._AcceptNegative==Sys.Extended.UI.MaskedEditShowSymbol.Right)c=c.substring(0,b._LogicLastPos+1)+d+c.substring(b._LogicLastPos+2);f.set_Value(c)},setSelectionRange:function(e,f){var a="character",b=this.get_element();if(b.setSelectionRange)b.setSelectionRange(e,f);else if(b.createTextRange){var c=b.createTextRange();c.collapse(d);c.moveEnd(a,f);c.moveStart(a,e);c.select()}},_getLastEmptyPosition:function(){var a=this,b=a._LogicLastPos;if(a._InputDirection==Sys.Extended.UI.MaskedEditInputDirections.RightToLeft&&a._LogicLastInt!=c){var d=a._getCurrentPosition();if(d<=a._LogicLastInt)b=a._LogicLastInt}while(b>=0&&a._LogicTextMask.substring(b,b+1)!=a._LogicPrompt)b--;return b},_isValidMaskedEditPosition:function(a){return this._LogicMask.substring(a,a+1)==this._LogicPrompt},_getNextPosition:function(a){var b=this;while(!b._isValidMaskedEditPosition(a)&&a<b._LogicLastPos+1)a++;if(a>b._LogicLastPos+1)a=b._LogicLastPos+1;return a},_getPreviousPosition:function(a){var b=this;while(!b._isValidMaskedEditPosition(a)&&a>b._LogicFirstPos)a--;if(a<b._LogicFirstPos)a=b._LogicFirstPos;return a},_getCurrentPosition:function(){var b=this,c=0,e=b.get_element();if(e.setSelectionRange)c=parseInt(e.selectionStart,f);else if(document.selection){var d=document.selection.createRange();if(d.text!=a){var g=a;if(b._DirectSelText=="R")g=d.text+String.fromCharCode(3);else if(b._DirectSelText=="L")g=String.fromCharCode(3)+d.text;d.text=g;b._DirectSelText==a}else{d.text=String.fromCharCode(3);b._DirectSelText==a}var h=e.createTextRange();h.findText(String.fromCharCode(3));h.select();var i=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(e);c=i.get_Value().indexOf(String.fromCharCode(3));document.selection.clear()}if(c>b._LogicLastPos+1)c=b._LogicLastPos+1;if(c<b._LogicFirstPos)c=b._LogicFirstPos;return c},_processKey:function(f,j){var g=this,i=g._LogicMaskConv,h;if(i.substring(f,f+1)=="9")h=g._charNumbers;else if(i.substring(f,f+1).toUpperCase()=="L")h=g._charLetters+g._charLetters.toLowerCase();else if(i.substring(f,f+1)=="$")h=g._charLetters+g._charLetters.toLowerCase()+e;else if(i.substring(f,f+1).toUpperCase()=="C")h=g._Filtered;else if(i.substring(f,f+1).toUpperCase()=="A")h=g._charLetters+g._charLetters.toLowerCase()+g._Filtered;else if(i.substring(f,f+1).toUpperCase()=="N")h=g._charNumbers+g._Filtered;else if(i.substring(f,f+1)=="?")h=a;else return b;return h==a?d:!h||h.length==0||h.indexOf(j)!=c},_createMask:function(){var g=this;g._MaskConv==a&&g._Mask!=a&&g._convertMask();var i=g._MaskConv,h=0,j=a,k=a,l=b;g._LogicTextMask=a;g._QtdValidInput=0;while(h<parseInt(i.length,f)){if(i.substring(h,h+1)==g._charEscape&&l==b)l=d;else if(g._CharsEditMask.indexOf(i.substring(h,h+1))==c)if(l==d){l=b;j+=i.substring(h,h+1);k+=i.substring(h,h+1);g._LogicTextMask+=g._LogicEscape}else if(g._CharsSpecialMask.indexOf(i.substring(h,h+1))!=c){g._QtdValidInput++;if(i.substring(h,h+1)=="/"){j+=g.get_CultureDatePlaceholder();k+="/";g._LogicTextMask+=g.get_CultureDatePlaceholder()}else if(i.substring(h,h+1)==":"){j+=g.get_CultureTimePlaceholder();k+=":";g._LogicTextMask+=g.get_CultureTimePlaceholder()}else if(i.substring(h,h+1)==","){j+=g.get_CultureThousandsPlaceholder();k+=".";g._LogicTextMask+=g.get_CultureThousandsPlaceholder()}else if(i.substring(h,h+1)=="."){j+=g.get_CultureDecimalPlaceholder();k+=",";g._LogicTextMask+=g.get_CultureDecimalPlaceholder()}}else{j+=i.substring(h,h+1);k+=i.substring(h,h+1);g._LogicTextMask+=i.substring(h,h+1)}else if(l==d){l=b;j+=i.substring(h,h+1);k+=i.substring(h,h+1);g._LogicTextMask+=g._LogicEscape}else{g._QtdValidInput++;j+=g._PromptChar;k+=i.substring(h,h+1);g._LogicTextMask+=g._LogicPrompt}h++}g._LogicFirstPos=c;g._LogicLastPos=c;g._LogicLastInt=c;g._LogicMask=g._LogicTextMask;for(h=0;h<parseInt(g._LogicMask.length,f);h++){if(g._LogicFirstPos==c&&g._LogicMask.substring(h,h+1)==g._LogicPrompt)g._LogicFirstPos=h;if(g._LogicMask.substring(h,h+g.get_CultureDatePlaceholder().length)==g.get_CultureDatePlaceholder())continue;else if(g._LogicMask.substring(h,h+1)==e)g._LogicDateTimeSepPos=h;if(g._LogicMask.substring(h,h+1)==g._LogicPrompt)g._LogicLastPos=h;if(g._MaskType==Sys.Extended.UI.MaskedEditType.Number&&g._InputDirection==Sys.Extended.UI.MaskedEditInputDirections.RightToLeft)if(g._LogicMask.substring(h,h+1)==g.get_CultureDecimalPlaceholder())g._LogicLastInt=h}g._maskvalid=k.substring(g._LogicFirstPos,g._LogicLastPos+1);g._EmptyMask=j},_getClearMask:function(){var c=this,g=0,i=a,k=0,j=b;while(g<parseInt(c._LogicTextMask.length,f)){if(k<c._QtdValidInput)if(c._isValidMaskedEditPosition(g)&&c._LogicTextMask.substring(g,g+1)!=c._LogicPrompt){if(i==a&&j){i+=h+c.get_CultureDecimalPlaceholder();j=b}i+=c._LogicTextMask.substring(g,g+1);k++}else if(c._LogicTextMask.substring(g,g+1)!=c._LogicPrompt&&c._LogicTextMask.substring(g,g+1)!=c._LogicEscape)if(c._LogicTextMask.substring(g,g+c.get_CultureDatePlaceholder().length)==c.get_CultureDatePlaceholder()&&(c._MaskType==Sys.Extended.UI.MaskedEditType.Date||c._MaskType==Sys.Extended.UI.MaskedEditType.DateTime)){i+=i==a?a:c.get_CultureDatePlaceholder();g+=c.get_CultureDatePlaceholder().length-1}else if(c._LogicTextMask.substring(g,g+1)==c.get_CultureTimePlaceholder()&&(c._MaskType==Sys.Extended.UI.MaskedEditType.Time||c._MaskType==Sys.Extended.UI.MaskedEditType.DateTime))i+=i==a?a:c.get_CultureTimePlaceholder();else if(c._LogicTextMask.substring(g,g+1)==e&&c._MaskType==Sys.Extended.UI.MaskedEditType.DateTime)i+=i==a?a:e;else if(c._LogicTextMask.substring(g,g+1)==c.get_CultureThousandsPlaceholder()&&c._MaskType==Sys.Extended.UI.MaskedEditType.Number)i+=i==a?a:c.get_CultureThousandsPlaceholder();else if(c._LogicTextMask.substring(g,g+1)==c.get_CultureDecimalPlaceholder()&&c._MaskType==Sys.Extended.UI.MaskedEditType.Number){i+=i==a?a:c.get_CultureDecimalPlaceholder();if(i==a)j=d}g++}if(c._LogicSymbol!=a&&i!=a)if(c._MaskType==Sys.Extended.UI.MaskedEditType.Time||c._MaskType==Sys.Extended.UI.MaskedEditType.DateTime)i+=e+c._LogicSymbol;else if(c._MaskType==Sys.Extended.UI.MaskedEditType.Number)i=c._LogicSymbol+i;return i},_convertMask:function(){var g=this;g._MaskConv=a;for(var j=a,o=a,i=0;i<parseInt(g._Mask.length,f);i++)if(g._CharsEditMask.indexOf(g._Mask.substring(i,i+1))!=c){if(j.length==0){g._MaskConv+=g._Mask.substring(i,i+1);j=a;o=g._Mask.substring(i,i+1)}else if(g._Mask.substring(i,i+1)=="9")j+="9";else if(g._Mask.substring(i,i+1)==h)j+=h}else if(g._CharsEditMask.indexOf(g._Mask.substring(i,i+1))==c&&g._Mask.substring(i,i+1)!=g._DelimitStartDup&&g._Mask.substring(i,i+1)!=g._DelimitEndDup){if(j.length==0){g._MaskConv+=g._Mask.substring(i,i+1);j=a;o=a}else if(g._charNumbers.indexOf(g._Mask.substring(i,i+1))!=c)j+=g._Mask.substring(i,i+1)}else if(g._Mask.substring(i,i+1)==g._DelimitStartDup&&j==a)j=h;else if(g._Mask.substring(i,i+1)==g._DelimitEndDup&&j!=a){var q=parseInt(j,f)-1;if(q>0)for(var r=0;r<q;r++)g._MaskConv+=o;j=a;o=a}var m=c,l=c,n=b;for(i=0;i<parseInt(g._MaskConv.length,f);i++)if(g._MaskConv.substring(i,i+1)==g._charEscape&&!n)n=d;else if(g._CharsEditMask.indexOf(g._MaskConv.substring(i,i+1))!=c&&!n){if(m==c)m=i;l=i}else if(n)n=b;if((g._MaskType==Sys.Extended.UI.MaskedEditType.Time||g._MaskType==Sys.Extended.UI.MaskedEditType.DateTime)&&g._AcceptAmPm){var p=g.get_CultureAMPMPlaceholder().split(g._AMPMPlaceholderSeparator),k=a;if(p.length==2){k=g._charEscape+e;for(i=0;i<parseInt(p[0].length,f);i++)k+=g._charEscape+e}g._MaskConv=g._MaskConv.substring(0,l+1)+k+g._MaskConv.substring(l+1)}else if(g._MaskType==Sys.Extended.UI.MaskedEditType.Number&&g._DisplayMoney==Sys.Extended.UI.MaskedEditShowSymbol.Left){var k=a;for(i=0;i<parseInt(g.get_CultureCurrencySymbolPlaceholder().length,f);i++)if(g._CharsEditMask.indexOf(g.get_CultureCurrencySymbolPlaceholder().substring(i,i+1))==c)k+=g.get_CultureCurrencySymbolPlaceholder().substring(i,i+1);else k+=g._charEscape+g.get_CultureCurrencySymbolPlaceholder().substring(i,i+1);k+=g._charEscape+e;g._MaskConv=g._MaskConv.substring(0,m)+k+g._MaskConv.substring(m);m+=k.length;l+=k.length}else if(g._MaskType==Sys.Extended.UI.MaskedEditType.Number&&g._DisplayMoney==Sys.Extended.UI.MaskedEditShowSymbol.Right){var k=g._charEscape+e;for(i=0;i<parseInt(g.get_CultureCurrencySymbolPlaceholder().length,f);i++)if(g._CharsEditMask.indexOf(g.get_CultureCurrencySymbolPlaceholder().substring(i,i+1))==c)k+=g.get_CultureCurrencySymbolPlaceholder().substring(i,i+1);else k+=g._charEscape+g.get_CultureCurrencySymbolPlaceholder().substring(i,i+1);g._MaskConv=g._MaskConv.substring(0,l+1)+k+g._MaskConv.substring(l+1)}if(g._MaskType==Sys.Extended.UI.MaskedEditType.Number&&g._AcceptNegative==Sys.Extended.UI.MaskedEditShowSymbol.Right)g._MaskConv=g._MaskConv.substring(0,l+1)+g._charEscape+e+g._MaskConv.substring(l+1);else if(g._MaskType==Sys.Extended.UI.MaskedEditType.Number&&g._AcceptNegative==Sys.Extended.UI.MaskedEditShowSymbol.Left)g._MaskConv=g._MaskConv.substring(0,m)+g._charEscape+e+g._MaskConv.substring(m);g._convertMaskNotEscape()},_convertMaskNotEscape:function(){var c=this;c._LogicMaskConv=a;for(var h=c._MaskConv.replace(/(\/)/g,c.get_CultureDatePlaceholder()),g=b,e=0;e<parseInt(h.length,f);e++)if(h.substring(e,e+1)==c._charEscape)g=d;else if(!g)c._LogicMaskConv+=h.substring(e,e+1);else{c._LogicMaskConv+=c._LogicEscape;g=b}},get_Mask:function(){var b=this;b._MaskConv==a&&b._Mask!=a&&b._convertMask();return b._MaskConv},set_Mask:function(a){this._Mask=a;this.raisePropertyChanged("Mask")},get_Filtered:function(){return this._Filtered},set_Filtered:function(a){this._Filtered=a;this.raisePropertyChanged("Filtered")},get_InputDirection:function(){return this._InputDirection},set_InputDirection:function(a){this._InputDirection=a;this.raisePropertyChanged("InputDirection")},get_PromptCharacter:function(){return this._PromptChar},set_PromptCharacter:function(a){this._PromptChar=a;this.raisePropertyChanged("PromptChar")},get_OnFocusCssClass:function(){return this._OnFocusCssClass},set_OnFocusCssClass:function(a){this._OnFocusCssClass=a;this.raisePropertyChanged("OnFocusCssClass")},get_OnInvalidCssClass:function(){return this._OnInvalidCssClass},set_OnInvalidCssClass:function(a){this._OnInvalidCssClass=a;this.raisePropertyChanged("OnInvalidCssClass")},get_CultureName:function(){return this._CultureName},set_CultureName:function(a){this._CultureName=a;this.raisePropertyChanged("Culture")},get_CultureDatePlaceholder:function(){return this._CultureDatePlaceholder},set_CultureDatePlaceholder:function(a){this._CultureDatePlaceholder=a;this.raisePropertyChanged("CultureDatePlaceholder")},get_CultureTimePlaceholder:function(){return this._CultureTimePlaceholder},set_CultureTimePlaceholder:function(a){this._CultureTimePlaceholder=a;this.raisePropertyChanged("CultureTimePlaceholder")},get_CultureDecimalPlaceholder:function(){return this._CultureDecimalPlaceholder},set_CultureDecimalPlaceholder:function(a){this._CultureDecimalPlaceholder=a;this.raisePropertyChanged("CultureDecimalPlaceholder")},get_CultureThousandsPlaceholder:function(){return this._CultureThousandsPlaceholder},set_CultureThousandsPlaceholder:function(a){this._CultureThousandsPlaceholder=a;this.raisePropertyChanged("CultureThousandsPlaceholder")},get_CultureDateFormat:function(){var a=this._CultureDateFormat;switch(this.get_UserDateFormat()){case Sys.Extended.UI.MaskedEditUserDateFormat.DayMonthYear:a=x;break;case Sys.Extended.UI.MaskedEditUserDateFormat.DayYearMonth:a=y;break;case Sys.Extended.UI.MaskedEditUserDateFormat.MonthDayYear:a=v;break;case Sys.Extended.UI.MaskedEditUserDateFormat.MonthYearDay:a=z;break;case Sys.Extended.UI.MaskedEditUserDateFormat.YearDayMonth:a=B;break;case Sys.Extended.UI.MaskedEditUserDateFormat.YearMonthDay:a=A}return a},set_CultureDateFormat:function(a){this._CultureDateFormat=a;this.raisePropertyChanged("CultureDateFormat")},get_CultureCurrencySymbolPlaceholder:function(){return this._CultureCurrencySymbolPlaceholder},set_CultureCurrencySymbolPlaceholder:function(a){this._CultureCurrencySymbolPlaceholder=a;this.raisePropertyChanged("CultureCurrencySymbolPlaceholder")},get_CultureAMPMPlaceholder:function(){var c=this,b=c._CultureAMPMPlaceholder;if(b.split(c._AMPMPlaceholderSeparator).length!=2||b==c._AMPMPlaceholderSeparator)b=a;if(c.get_UserTimeFormat()==Sys.Extended.UI.MaskedEditUserTimeFormat.TwentyFourHour)b=a;return b},set_CultureAMPMPlaceholder:function(a){this._CultureAMPMPlaceholder=a;this.raisePropertyChanged("CultureAMPMPlaceholder")},get_CultureFirstLettersAMPM:function(){if(this.get_CultureAMPMPlaceholder()!=a){var b=this.get_CultureAMPMPlaceholder().split(this._AMPMPlaceholderSeparator);return b[0].substring(0,1)+b[1].substring(0,1)}return a},get_CultureFirstLetterAM:function(){if(this.get_CultureAMPMPlaceholder()!=a){var b=this.get_CultureAMPMPlaceholder().split(this._AMPMPlaceholderSeparator);return b[0].substring(0,1)}return a},get_CultureFirstLetterPM:function(){if(this.get_CultureAMPMPlaceholder()!=a){var b=this.get_CultureAMPMPlaceholder().split(this._AMPMPlaceholderSeparator);return b[1].substring(0,1)}return a},get_ClearMaskOnLostFocus:function(){return this._ClearMaskOnLostfocus},set_ClearMaskOnLostFocus:function(a){this._ClearMaskOnLostfocus=a;this.raisePropertyChanged("ClearMaskOnLostfocus")},get_MessageValidatorTip:function(){return this._MessageValidatorTip},set_MessageValidatorTip:function(a){this._MessageValidatorTip=a;this.raisePropertyChanged("MessageValidatorTip")},get_AcceptAMPM:function(){return this._AcceptAmPm},set_AcceptAMPM:function(a){this._AcceptAmPm=a;this.raisePropertyChanged("AcceptAmPm")},get_AcceptNegative:function(){return this._AcceptNegative},set_AcceptNegative:function(a){this._AcceptNegative=a;this.raisePropertyChanged("AcceptNegative")},get_DisplayMoney:function(){return this._DisplayMoney},set_DisplayMoney:function(a){this._DisplayMoney=a;this.raisePropertyChanged("DisplayMoney")},get_OnFocusCssNegative:function(){return this._OnFocusCssNegative},set_OnFocusCssNegative:function(a){this._OnFocusCssNegative=a;this.raisePropertyChanged("OnFocusCssNegative")},get_OnBlurCssNegative:function(){return this._OnBlurCssNegative},set_OnBlurCssNegative:function(a){this._OnBlurCssNegative=a;this.raisePropertyChanged("OnBlurCssNegative")},get_Century:function(){return this._Century},set_Century:function(a){this._Century=a;this.raisePropertyChanged("Century")},get_AutoComplete:function(){return this._AutoComplete},set_AutoComplete:function(a){this._AutoComplete=a;this.raisePropertyChanged("AutoComplete")},get_AutoCompleteValue:function(){return this._AutoCompleteValue},set_AutoCompleteValue:function(a){this._AutoCompleteValue=a;this.raisePropertyChanged("AutoCompleteValue")},get_MaskType:function(){return this._MaskType},set_MaskType:function(a){this._MaskType=a;this.raisePropertyChanged("MaskType")},get_ClearTextOnInvalid:function(){return this._ClearTextOnInvalid},set_ClearTextOnInvalid:function(a){if(this._ClearTextOnInvalid!==a){this._ClearTextOnInvalid=a;this.raisePropertyChanged("ClearTextOnInvalid")}},get_ClipboardText:function(){return this._ClipboardText},set_ClipboardText:function(a){this._ClipboardText=a;this.raisePropertyChanged("ClipboardText")},get_ClipboardEnabled:function(){return this._AllowCopyPaste},set_ClipboardEnabled:function(a){this._AllowCopyPaste=a;this.raisePropertyChanged("ClipboardEnabled")},get_ErrorTooltipEnabled:function(){return this._ShowMessageErrorFloat},set_ErrorTooltipEnabled:function(a){this._ShowMessageErrorFloat=a;this.raisePropertyChanged("ErrorTooltipEnabled")},get_ErrorTooltipCssClass:function(){return this._CssMessageErrorFloat},set_ErrorTooltipCssClass:function(a){this._CssMessageErrorFloat=a;this.raisePropertyChanged("ErrorTooltipCssClass")},get_UserDateFormat:function(){return this._UserDateFormat},set_UserDateFormat:function(a){this._UserDateFormat=a;this.raisePropertyChanged("UserDateFormat")},get_UserTimeFormat:function(){return this._UserTimeFormat},set_UserTimeFormat:function(a){this._UserTimeFormat=a;this.raisePropertyChanged("UserTimeFormat")}};Sys.Extended.UI.MaskedEditBehavior.registerClass("Sys.Extended.UI.MaskedEditBehavior",Sys.Extended.UI.DynamicPopulateBehaviorBase);Sys.registerComponent(Sys.Extended.UI.MaskedEditBehavior,{name:"maskedEdit"});Sys.Extended.UI.MaskedEditType=function(){throw Error.invalidOperation();};Sys.Extended.UI.MaskedEditInputDirections=function(){throw Error.invalidOperation();};Sys.Extended.UI.MaskedEditShowSymbol=function(){throw Error.invalidOperation();};Sys.Extended.UI.MaskedEditUserDateFormat=function(){throw Error.invalidOperation();};Sys.Extended.UI.MaskedEditUserTimeFormat=function(){throw Error.invalidOperation();};Sys.Extended.UI.MaskedEditType.prototype={None:0,Date:1,Number:2,Time:3,DateTime:4};Sys.Extended.UI.MaskedEditInputDirections.prototype={LeftToRight:0,RightToLeft:1};Sys.Extended.UI.MaskedEditShowSymbol.prototype={None:0,Left:1,Right:2};Sys.Extended.UI.MaskedEditUserDateFormat.prototype={None:0,DayMonthYear:1,DayYearMonth:2,MonthDayYear:3,MonthYearDay:4,YearDayMonth:5,YearMonthDay:6};Sys.Extended.UI.MaskedEditUserTimeFormat.prototype={None:0,TwentyFourHour:1};Sys.Extended.UI.MaskedEditType.registerEnum("Sys.Extended.UI.MaskedEditType");Sys.Extended.UI.MaskedEditInputDirections.registerEnum("Sys.Extended.UI.MaskedEditInputDirections");Sys.Extended.UI.MaskedEditShowSymbol.registerEnum("Sys.Extended.UI.MaskedEditShowSymbol");Sys.Extended.UI.MaskedEditUserDateFormat.registerEnum("Sys.Extended.UI.MaskedEditUserDateFormat");Sys.Extended.UI.MaskedEditUserTimeFormat.registerEnum("Sys.Extended.UI.MaskedEditUserTimeFormat")}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["Globalization","ExtendedBase","ExtendedTimer","ExtendedCommon"],a);else a()})();�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveAlignment=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveAlignment.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveAlignment.prototype={checkState:function(){return!Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveAlignment.callBaseMethod(this,"checkState")?false:this._designPanel._textAlignState(null)},callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveAlignment.callBaseMethod(this,"callMethod"))return false;var a=this._designPanel,b=this._editPanel;a._saveContent();a.MSIE_justify("left",true);a.onContentChanged();setTimeout(function(){b.updateToolbar()},0)}};Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveAlignment.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveAlignment",Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.PreviewMode=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.PreviewMode.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.PreviewMode.prototype={};Sys.Extended.UI.HTMLEditor.ToolbarButton.PreviewMode.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.PreviewMode",Sys.Extended.UI.HTMLEditor.ToolbarButton.ModeButton);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor");Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.ModeButton=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.ModeButton.initializeBase(this,[a]);this._activeMode=Sys.Extended.UI.HTMLEditor.ActiveModeType.Design};Sys.Extended.UI.HTMLEditor.ToolbarButton.ModeButton.prototype={get_activeMode:function(){return this._activeMode},set_activeMode:function(a){this._activeMode=a},_onclick:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.ModeButton.callBaseMethod(this,"_onclick"))return false;var a=this;setTimeout(function(){a._editPanel.set_activeMode(a._activeMode)},0);return true},onEditPanelActivity:function(){this.setActivity(this._editPanel.get_activeMode()==this._activeMode)}};Sys.Extended.UI.HTMLEditor.ToolbarButton.ModeButton.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.ModeButton",Sys.Extended.UI.HTMLEditor.ToolbarButton.ImageButton);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.Ltr = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.Ltr.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.Ltr.prototype = {
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.Ltr.callBaseMethod(this, "callMethod")) return false;
        this._designPanel._doc.body.style.direction=(!this.checkState())?"":"rtl";

        if(!Sys.Extended.UI.HTMLEditor.isIE) {
            var sel   = this._designPanel._getSelection();
            var range = this._designPanel._createRange(sel);

            this._designPanel._removeAllRanges(sel);

            this._designPanel._selectRange(sel,range);
            this._designPanel.focusEditor();
        }
        var button = this;
        setTimeout(function(){button._editPanel.updateToolbar();},0);
    },
    
    checkState : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.Ltr.callBaseMethod(this, "checkState")) return false;
        if(!(this._designPanel._doc.body.style.direction && this._designPanel._doc.body.style.direction=="rtl")) return true;
        return false;
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.Ltr.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.Ltr", Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton);

Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.ImageButton = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.ImageButton.initializeBase(this, [element]);
    
    this._normalSrc = "";
    this._hoverSrc = "";
    this._downSrc = "";
    this._activeSrc = "";
    this._downTimer = null;
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.ImageButton.prototype = {

    get_normalSrc: function() {
        return this._normalSrc;
    },
    set_normalSrc: function(value) {
        this._normalSrc = value;
        var element = this.get_element();
        if (/none$/.test(element.src)) {
            element.src = value;
        }
    },

    get_hoverSrc: function() {
        return this._hoverSrc;
    },
    set_hoverSrc: function(value) {
        this._hoverSrc = value;
    },

    get_downSrc: function() {
        return this._downSrc;
    },
    set_downSrc: function(value) {
        this._downSrc = value;
    },

    get_activeSrc: function() {
        return this._activeSrc;
    },
    set_activeSrc: function(value) {
        this._activeSrc = value;
    },

    isImage: function() {
        return true;
    },

    _onmouseover: function(e) {
        if (!Sys.Extended.UI.HTMLEditor.ToolbarButton.ImageButton.callBaseMethod(this, "_onmouseover")) return false;
        if (this._hoverSrc.length > 0) {
            this.get_element().src = this._hoverSrc;
        }
        return true;
    },

    _onmouseout: function(e) {
        var node = this.get_element();
        if (!Sys.Extended.UI.HTMLEditor.ToolbarButton.ImageButton.callBaseMethod(this, "_onmouseout")) return false;
        if (this._hoverSrc.length > 0) {
            if (Sys.UI.DomElement.containsCssClass(node, this._cssClass + "_mousedown") && this._downSrc.length > 0) {
                node.src = this._downSrc;
            } else {
                if (Sys.UI.DomElement.containsCssClass(node, this._cssClass + "_active") && this._activeSrc.length > 0) {
                    node.src = this._activeSrc;
                } else {
                    node.src = this._normalSrc;
                }
            }
        }
        return true;
    },

    _onmousedown: function(e) {
        if (Sys.Extended.UI.HTMLEditor.ToolbarButton.ImageButton.callBaseMethod(this, "_onmousedown") === null) return null;
        if (this._downSrc.length > 0) {
            this.get_element().src = this._downSrc;
            this._downTimer = setTimeout(Function.createDelegate(this, this._onmouseup), 1000); // one second delay
        }
        return true;
    },

    _onmouseup: function(e) {
        var node = this.get_element();
        if (!Sys.Extended.UI.HTMLEditor.ToolbarButton.ImageButton.callBaseMethod(this, "_onmouseup")) return false;
        if (this._downSrc.length > 0) {
            if (Sys.UI.DomElement.containsCssClass(node, this._cssClass + "_hover") && this._hoverSrc.length > 0) {
                node.src = this._hoverSrc;
            } else {
                if (Sys.UI.DomElement.containsCssClass(node, this._cssClass + "_active") && this._activeSrc.length > 0) {
                    node.src = this._activeSrc;
                } else {
                    node.src = this._normalSrc;
                }
            }
            if (this._downTimer != null) {
                clearTimeout(this._downTimer);
                this._downTimer = null;
            }
        }
        return true;
    },

    setActivity: function(value) {
        var node = this.get_element();
        if (this._activeSrc.length > 0) {
            if (value) {
                if (!Sys.UI.DomElement.containsCssClass(node, this._cssClass + "_active")) {
                    node.src = this._activeSrc;
                }
            } else {
                if (Sys.UI.DomElement.containsCssClass(node, this._cssClass + "_active")) {
                    if (Sys.UI.DomElement.containsCssClass(node, this._cssClass + "_mousedown") && this._downSrc.length > 0) {
                        node.src = this._downSrc;
                    } else {
                        if (Sys.UI.DomElement.containsCssClass(node, this._cssClass + "_hover") && this._hoverSrc.length > 0) {
                            node.src = this._hoverSrc;
                        } else {
                            node.src = this._normalSrc;
                        }
                    }
                }
            }
        }
        Sys.Extended.UI.HTMLEditor.ToolbarButton.ImageButton.callBaseMethod(this, "setActivity", [value]);
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.ImageButton.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.ImageButton", Sys.Extended.UI.HTMLEditor.ToolbarButton.CommonButton);

�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.FontSize=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.FontSize.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.FontSize.prototype={initialize:function(){Sys.Extended.UI.HTMLEditor.ToolbarButton.FontSize.callBaseMethod(this,"initialize")},callMethod:function(a){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.FontSize.callBaseMethod(this,"callMethod"))return false;try{var b=this._designPanel;b._execCommand("FontSize",false,Sys.Extended.UI.HTMLEditor.fontSizeSeek(a.options.item(a.selectedIndex).value))}catch(d){}},checkState:function(){var c=this;if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.FontSize.callBaseMethod(c,"checkState"))return false;var f=c._designPanel,a=null,g=c._select.id;try{a=Function.createDelegate(f,Sys.Extended.UI.HTMLEditor._queryCommandValue)("fontsize",g)}catch(j){}if(a)a=a.toString();if(!f._FontNotSet)if(!a||a.length==0){a=Sys.Extended.UI.HTMLEditor.getStyle(f._doc.body,"font-size");a=Sys.Extended.UI.HTMLEditor._TryTransformFromPxToPt(a,c,g)}try{var d=c._select,b=0;if(a&&a.length>0){var h=a.toLowerCase().split(",")[0];for(b=0;b<d.options.length;b++){var i=Sys.Extended.UI.HTMLEditor.fontSizeSeek(d.options.item(b).value.toLowerCase().split(",")[0]);if(i==h)break}if(b==d.options.length)try{var e=document.createElement("OPTION");e.value=a;e.text=a;d.add(e,Sys.Extended.UI.HTMLEditor.isIE?b:null);$addHandler(e,"click",c._onclick_option$delegate)}catch(j){b=0}}d.selectedIndex=b}catch(j){}}};Sys.Extended.UI.HTMLEditor.ToolbarButton.FontSize.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.FontSize",Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeSelectButton);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedColorButton=function(b){var a=this;Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedColorButton.initializeBase(a,[b]);a._defaultColor="#000000";a._colorDiv=null;a._methodButton=null};Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedColorButton.prototype={get_defaultColor:function(){return this._defaultColor},set_defaultColor:function(a){this._defaultColor=a;if(this._colorDiv!=null)this._colorDiv.get_element().style.backgroundColor=a},get_colorDiv:function(){return this._colorDiv},set_colorDiv:function(a){this._colorDiv=a},get_methodButton:function(){return this._methodButton},set_methodButton:function(a){this._methodButton=a},callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedColorButton.callBaseMethod(this,"callMethod"))return false;this.setColor(this.get_defaultColor())},setColor:function(){},initialize:function(){var a=this;Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedColorButton.callBaseMethod(a,"initialize");if(a._methodButton!=null)a._methodButton.callMethod=Function.createDelegate(a,a.callMethod);if(a._colorDiv!=null)a._colorDiv.callMethod=Function.createDelegate(a,a.callMethod)}};Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedColorButton.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedColorButton",Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeBoxButton);rType.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedBackColor = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedBackColor.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedBackColor.prototype = {
    setColor : function(color) {
        this._designPanel._execCommand("backcolor", false, color);
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedBackColor.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedBackColor", Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedColorButton);

�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.Cut=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.Cut.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.Cut.prototype={callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.Cut.callBaseMethod(this,"callMethod"))return false;var a=this._designPanel;if(Sys.Extended.UI.HTMLEditor.isIE){a.openWait();setTimeout(function(){a.isShadowed();a._copyCut("x",true);a.closeWait()},0)}else a._copyCut("x",true)}};Sys.Extended.UI.HTMLEditor.ToolbarButton.Cut.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.Cut",Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.BulletedList = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.BulletedList.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.BulletedList.prototype = {
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.BulletedList.callBaseMethod(this, "callMethod")) return false;
        this._designPanel._execCommand("InsertUnorderedList");
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.BulletedList.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.BulletedList", Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);

�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.Bold=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.Bold.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.Bold.prototype={callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.Bold.callBaseMethod(this,"callMethod"))return false;this._designPanel._execCommand("bold",false,null)},checkState:function(){return!Sys.Extended.UI.HTMLEditor.ToolbarButton.Bold.callBaseMethod(this,"checkState")?false:this._designPanel._queryCommandState("bold")}};Sys.Extended.UI.HTMLEditor.ToolbarButton.Bold.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.Bold",Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.BackColorClear=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.BackColorClear.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.BackColorClear.prototype={callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.BackColorClear.callBaseMethod(this,"callMethod"))return false;this._designPanel._execCommand("backcolor",false,"")}};Sys.Extended.UI.HTMLEditor.ToolbarButton.BackColorClear.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.BackColorClear",Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.BackColorClear = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.BackColorClear.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.BackColorClear.prototype = {
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.BackColorClear.callBaseMethod(this, "callMethod")) return false;
        this._designPanel._execCommand("backcolor", false, "");
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.BackColorClear.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.BackColorClear", Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);

�// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedHoverMenu";function a(){var e="hidden",d="hiding",c="shown",b="showing",g="mouseout",f="mouseover",a=null;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.HoverMenuBehavior=function(c){var b=this;Sys.Extended.UI.HoverMenuBehavior.initializeBase(b,[c]);b._hoverBehavior=a;b._popupBehavior=a;b._mouseEnterHandler=a;b._mouseLeaveHandler=a;b._unhoverHandler=a;b._hoverHandler=a;b._inHover=a;b._oldClass=a;b._popupElement=a;b._onShowJson=a;b._onHideJson=a;b._popupElement=a;b._hoverCssClass=a;b._offsetX=0;b._offsetY=0;b._popDelay=100;b._hoverDelay=0;b._popupPosition=a};Sys.Extended.UI.HoverMenuBehavior.prototype={initialize:function(){var b=this;Sys.Extended.UI.HoverMenuBehavior.callBaseMethod(b,"initialize");b._hoverHandler=Function.createDelegate(b,b._onHover);b._unhoverHandler=Function.createDelegate(b,b._onUnhover);b._mouseEnterHandler=Function.createDelegate(b,b._onmouseover);b._mouseLeaveHandler=Function.createDelegate(b,b._onmouseout);var c=b.get_element();$addHandler(c,f,b._mouseEnterHandler);$addHandler(c,g,b._mouseLeaveHandler);if(b._popupElement){b._popupBehavior=$create(Sys.Extended.UI.PopupBehavior,{id:b.get_id()+"_PopupBehavior"},a,a,b._popupElement);if(b._popupPosition)b._popupBehavior.set_positioningMode(Sys.Extended.UI.HoverMenuPopupPosition.Absolute);else b._popupBehavior.set_positioningMode(Sys.Extended.UI.HoverMenuPopupPosition.Center);b._onShowJson&&b._popupBehavior.set_onShow(b._onShowJson);b._onHideJson&&b._popupBehavior.set_onHide(b._onHideJson);b._hoverBehavior=$create(Sys.Extended.UI.HoverBehavior,{id:b.get_id()+"_HoverBehavior",hoverDelay:b._hoverDelay,unhoverDelay:b._popDelay,hoverElement:b._popupElement},a,a,c);b._hoverBehavior.add_hover(b._hoverHandler);b._hoverBehavior.add_unhover(b._unhoverHandler)}},dispose:function(){var b=this;b._onShowJson=a;b._onHideJson=a;if(b._popupBehavior){b._popupBehavior.dispose();b._popupBehavior=a}if(b._popupElement)b._popupElement=a;b._mouseEnterHandler&&$removeHandler(b.get_element(),f,b._mouseEnterHandler);b._mouseLeaveHandler&&$removeHandler(b.get_element(),g,b._mouseLeaveHandler);if(b._hoverBehavior){if(b._hoverHandler){b._hoverBehavior.remove_hover(b._hoverHandler);b._hoverHandler=a}if(b._unhoverHandler){b._hoverBehavior.remove_hover(b._unhoverHandler);b._unhoverHandler=a}b._hoverBehavior.dispose();b._hoverBehavior=a}Sys.Extended.UI.HoverMenuBehavior.callBaseMethod(b,"dispose")},_getLeftOffset:function(){var a=this,c=$common.getLocation(a.get_element()).x,d=$common.getLocation(a.get_popupElement().offsetParent).x,b=0;switch(a._popupPosition){case Sys.Extended.UI.HoverMenuPopupPosition.Left:b=-1*a._popupElement.offsetWidth;break;case Sys.Extended.UI.HoverMenuPopupPosition.Right:b=a.get_element().offsetWidth}return b+c-d+a._offsetX},_getTopOffset:function(){var a=this,c=$common.getLocation(a.get_element()).y,d=$common.getLocation(a.get_popupElement().offsetParent).y,b=0;switch(a._popupPosition){case Sys.Extended.UI.HoverMenuPopupPosition.Top:b=-1*a._popupElement.offsetHeight;break;case Sys.Extended.UI.HoverMenuPopupPosition.Bottom:b=a.get_element().offsetHeight}return c-d+b+a._offsetY},_onHover:function(){var a=this;if(a._inHover)return;var b=new Sys.CancelEventArgs;a.raiseShowing(b);if(b.get_cancel())return;a._inHover=true;a.populate();a._popupBehavior.show();if($common.getCurrentStyle(a._popupElement,"display")=="none")a._popupElement.style.display="block";a._popupBehavior.set_x(a._getLeftOffset());a._popupBehavior.set_y(a._getTopOffset());a.raiseShown(Sys.EventArgs.Empty)},_onUnhover:function(){var a=this,b=new Sys.CancelEventArgs;a.raiseHiding(b);if(b.get_cancel())return;a._inHover=false;a._resetCssClass();a._popupBehavior.hide();a.raiseHidden(Sys.EventArgs.Empty)},_onmouseover:function(){var a=this,b=a.get_element();if(a._hoverCssClass&&b.className!=a._hoverCssClass){a._oldClass=b.className;b.className=a._hoverCssClass}},_onmouseout:function(){this._resetCssClass()},_resetCssClass:function(){var a=this,b=a.get_element();if(!a._inHover&&a._hoverCssClass&&b.className==a._hoverCssClass)b.className=a._oldClass},get_onShow:function(){return this._popupBehavior?this._popupBehavior.get_onShow():this._onShowJson},set_onShow:function(b){var a=this;if(a._popupBehavior)a._popupBehavior.set_onShow(b);else a._onShowJson=b;a.raisePropertyChanged("onShow")},get_onShowBehavior:function(){return this._popupBehavior?this._popupBehavior.get_onShowBehavior():a},onShow:function(){this._popupBehavior&&this._popupBehavior.onShow()},get_onHide:function(){return this._popupBehavior?this._popupBehavior.get_onHide():this._onHideJson},set_onHide:function(b){var a=this;if(a._popupBehavior)a._popupBehavior.set_onHide(b);else a._onHideJson=b;a.raisePropertyChanged("onHide")},get_onHideBehavior:function(){return this._popupBehavior?this._popupBehavior.get_onHideBehavior():a},onHide:function(){this._popupBehavior&&this._popupBehavior.onHide()},get_popupElement:function(){return this._popupElement},set_popupElement:function(b){var a=this;if(a._popupElement!=b){a._popupElement=b;a.get_isInitialized()&&a._hoverBehavior&&a._hoverBehavior.set_hoverElement(a._popupElement);a.raisePropertyChanged("popupElement")}},get_HoverCssClass:function(){return this._hoverCssClass},set_HoverCssClass:function(a){if(this._hoverCssClass!=a){this._hoverCssClass=a;this.raisePropertyChanged("HoverCssClass")}},get_OffsetX:function(){return this._offsetX},set_OffsetX:function(a){if(this._offsetX!=a){this._offsetX=a;this.raisePropertyChanged("OffsetX")}},get_OffsetY:function(){return this._offsetY},set_OffsetY:function(a){if(this._offsetY!=a){this._offsetY=a;this.raisePropertyChanged("OffsetY")}},get_PopupPosition:function(){return this._popupPosition},set_PopupPosition:function(a){if(this._popupPosition!=a){this._popupPosition=a;this.raisePropertyChanged("PopupPosition")}},get_PopDelay:function(){return this._popDelay},set_PopDelay:function(a){if(this._popDelay!=a){this._popDelay=a;this.raisePropertyChanged("PopDelay")}},get_HoverDelay:function(){return this._hoverDelay},set_HoverDelay:function(a){if(this._hoverDelay!=a){this._hoverDelay=a;this.raisePropertyChanged("HoverDelay")}},add_showing:function(a){this.get_events().addHandler(b,a)},remove_showing:function(a){this.get_events().removeHandler(b,a)},raiseShowing:function(c){var a=this.get_events().getHandler(b);a&&a(this,c)},add_shown:function(a){this.get_events().addHandler(c,a)},remove_shown:function(a){this.get_events().removeHandler(c,a)},raiseShown:function(b){var a=this.get_events().getHandler(c);a&&a(this,b)},add_hiding:function(a){this.get_events().addHandler(d,a)},remove_hiding:function(a){this.get_events().removeHandler(d,a)},raiseHiding:function(b){var a=this.get_events().getHandler(d);a&&a(this,b)},add_hidden:function(a){this.get_events().addHandler(e,a)},remove_hidden:function(a){this.get_events().removeHandler(e,a)},raiseHidden:function(b){var a=this.get_events().getHandler(e);a&&a(this,b)}};Sys.Extended.UI.HoverMenuBehavior.registerClass("Sys.Extended.UI.HoverMenuBehavior",Sys.Extended.UI.DynamicPopulateBehaviorBase);Sys.registerComponent(Sys.Extended.UI.HoverMenuBehavior,{name:"hoverMenu"});Sys.Extended.UI.HoverMenuPopupPosition=function(){throw Error.invalidOperation();};Sys.Extended.UI.HoverMenuPopupPosition.prototype={Center:0,Top:1,Left:2,Bottom:3,Right:4};Sys.Extended.UI.HoverMenuPopupPosition.registerEnum("Sys.Extended.UI.HoverMenuPopupPosition")}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedDynamicPopulate","ExtendedHover","ExtendedAnimationBehavior","ExtendedPopup"],a);else a()})();6   �& h�( @ �����lZ��jX��hV��gT�~dR�|cP�zbO�y`M�w^J�v]I�t[G�sYE�qXD�pVB�oT@�nS?�mR=��������������������������������������������Ǿ��Ļ��¹�ѿ��м��λ��̸��ʶ��ɴ��Dz��ư��ĭ��ì������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Į��sYE���������������������������������������������������������������������������DZ��sYE�������������������������������������������������������������������������ɳ��u[H���������������������������������������������������������������������������˶��w^J����������������������������������������������������������������������������ͺ��y`M�����������������������������������������������������������������������������ϼ��{bO���������������������������������������������������������������������������������~dR�����������������������������������������������������������������������������ú��gT���������������������������������������������������������������������������������Ǿ��iW�����������������������������������������������������������������������������������lZ�ёr�ёr�ёr�Ќk�Іa��~U��uI��m=��d1��]'��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y �ёr���������������������������������������������������}���z���w���t���q���o��m��j��h��f��e��e��e��e��Y �ёr���������������������������������������������������~���z���w���t���q���n��m��j��h��f��e��e��e��e��Y �ёr���������������������������������������������������}���z���w���u���q���o��l��j��h��g��e��e��e��e��Y �ёr�ёr�ёr�Ќk�Іa��~U��uI��m=��d1��]'��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ������������������#����G�#��������������������������������(  ����cI5�cI5�cI5�cI5�cI5���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î��������������������������������������������Ȳ����������������������������������������������̶�������������������������������������������cI5�ꪋ�ꪋ�ꪋ�饄��z��n��b��V��}J��v@��r9��r9��r9��b/�ꪋ��¢���������������������������}���w���q���j��e��e1�ꪋ�ꪋ�ꪋ�ꪋ�ꦆ����v��l��b��X��N��{F��v>��r9������I���%��	���������������6   �& h�( @ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������(  ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������~h( �����������������������������������������������������3��3����̙�̙�����������������������3��3����̙�̙�������������������������������������������������������f�f���������������������������������f�f�������������������������������������������������������������������������������f�f������������������̙�̙����������f�f������������������̙�̙��������������������������������������������������������f�3f�3����������������������������f�3f�3���������������������ꪋ駇袀�d�j�i�a�Y�Q�J�yC�u<�q7�m5�i3�e1ꪋ����j����l��|��s��k��c��]��Y�T����xK�rF�e1ꪋ�j������l��{��s��k��d��]��Y�S�ϼ����qF�e1ꪋ駇�i�ϼ�_�i�a�Y�Q�J�yC�u<��m5�i3�e16   �& h�( @ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ�ġ���ǰ��ǰ��ǰ��ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ�ġ���ġ���ǰ��ǰ��ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ��ǰ�ġ����ǰ��ġ���ǰ��ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ�ġ����ǰ��ǰ��ǰ��ġ���ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ���ǰ��ǰ��ǰ��ǰ��ǰ���ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ���������������������������������������������������������������������������������������������������������������������������������������������������(  �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ǰ��ǰ��ǰ�ġ���ǰ��ǰ������������������������������������ǰ��ǰ�ġ���ġ���ǰ������������������������������������ǰ��ǰ���ǰ���ǰ������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ�����������������������������������������������������������������������������������6   �& h�( @ ���{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN���������������������������������������������������������������������Ⱦ�{bN�������������������������������������������������������������������������ɿ�{bN������������������������������������������������������������������������{bN�����������������������������������������������������������������������������{bN�����������������������������������������������������������������������������{bN�������������������������������������������������������������������������������{bN�����������������������������������������������������������������������������{bN�������������������������������������������������������������������������������{bN���������������������������������������������������������������������������������{bN�����������������������������������������������������������������������������������{bN����������������������������������������������������������������������������������{bN�������������������������������������������������������������������paM���������������{`I�K	I}J�}H��������������������������������������������������������������������{ul�����������u�vF�~K�Q	�I��I�������������������������������������������������������������������������{vl�������{��R��m��m��U��K�|G���������������������������������������������������������������������������~��h:��W���8�֜J���7��g��N�n=��������������������������������������������������������������������������wA��p&�֝O�ݡO��U�ʖR��u,�~N�c89�����������������������������������������������������������������������Ӹ���m(��[��t��̔�ؠW��z/��a��Y�i<X�����������������������������������������������������n��v/��e��Ѡ��֩��y�ϗO��a��\��\�sBZ�X�_�נX���߹��Ѥ�ќV��r(�˔F��k��`�wG	�vE.�V�Y
	�j��g��ƈ��֧��~�ˏ@��У��^�՗D��n��N�yG��S �Y�dU�p��wƽx�q��i��~+��ٯ��e�ݞH��n��X�r:�L��ML�Y�b�o�l�h"�e2�c9�~+��֩��t�ԗB��W�ˆ@��b��M��o �~+�֩��m�؝N��È�È=��V
��f�r,L�V	��c��ϝ�Ɖ9��R�\�,}�V	�Ң�ΐ@��g͝\�_�o$�~*�Ȍ=�Y͡Y������������������������������������������������������(  ��}�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN��gT�x^F���������������������������������Ⱦ��Ⱦ�v_O������������������������������������������fV�������������������������������������������fV����������������������������������������������xh����������������������������zvk�����������V�������������������������������������zvk�ĭ���b ��a��T��������������������������������o=��h)�ŐI���K��O�����������������������������̭����I�龉�ӥn��|E��[+����������������������·�̬����C��Ѫ�����P��W��R�rA3�m+r�z/�ҝZ���E�˜[��u���0��V�JY�U�\�f�o',��H��ϧ�ڪl��f��j/��{0��m �j!`��U���E��Ϡ���G�ɥuY�z7�z/��Ο���Q�ɥu�ɥu�a���G�ɥudɥu���������������������������������jGIF89a�������������������������������������!�	,8Р�A$@p�@;<GIF89a� �,��<��<������������������������������������!� ,A�  ��4`�@A 0  ;OGIF89a��1�<��8��9��<ݡS�����Ǝ���!�,, x�@��x� ��!>l81"E�/j�ȱ�G�p�`@;GGIF89a��.�1��8��8��<ݡS����Ǝ���!�,$p ��@�`aC�#B����D�0�@ ��;�GIF89a
�			





   !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������,
����L�cĄ���kW.\�hɊj��^�nɋ'ocǎ�8~�7�SZ�^Ńo%˖,]��D��,U����ɳ�E���Juʧѝ��yu��Q���qe��S�y��a�i�q侂V,Yrlؼi�(Ѳ�o�*+8wnA0_�uIU*T�J�
�'O�6i�d�ΝG;�GIF89a�?��*i�������G���������������������������������������������������������������������������������������������������������������)^����!�?,���pH,���'�l:�Mᄣ�Y���U8zut�x�V
n�n�����8|��_��B:74;���;$=77B
6{{}x�B	)!����!��71
�|{
�B2766=�����B(&��{%B'5����B.zǖ-B S<��ԾB ,<*��y<R<"��<��a�$@�@�����!X���n$h���BD`׀�0q��͛A;�GIF89a����:����������������������������������������������������������������������������������������������������������������������������)^����!�?,���pH,�
��l:�M�GT2Y���U8B�Z�p�'.��'V��n�}�p��j�|���kB-8�>�>���B16	::��}}�B9;;�;�z>����<����B/		��
���B
�>B!""!�B�}�yBS&)�/��B �+}y1^�X��	$�|01��j"0#�+�Rb4ظ�#G7lԠQ���0���A�d�B(:�#J�qA]
�&� g!GG�F
;�GIF89a�3���@8@���`�������耨𫬧 ( 0P����@@@���0`�333p���UTT H�0X���������8?7���   ���`e^kpj������@h����@`�0X����vvuPx�PHPP������������������������������!�3,���pH,���r�l
���3JUN��+��
�]KG�<0Ɉ�1��:$S;�,�52*I"{���2��/B11,�!*0�0 	�����0���#��������	��)����0��)�+��/-$��+�-���/��ؗ�����.����뗘����G�A;�GIF89a�������������������������������������������Z���������������Η�ռ��������������������5g����������������������������������������������)^�!�,�@��+�H���9����P�ج�q|�x^F��o�^��iިe��8�5NC��6+95�,8%z5!��5>&7�77z����>6:��z���'69��z����/12z	1")1	23z3;2�1�K=$m 03��1�*V8�8
�A;CGIF89a������������������!�,h�\^#A;��PNG


IHDRY*3(gAMA��7��tEXtSoftwareAdobe ImageReadyq�e<IDATx��]	xE�'3�	$!�@ ªܧ�x� ������\��#�����'�!(�r�n�OE9$$�G�c�_
=t:=�՝	l���LW�U]��W��뙬V+1�Cq�X�}��kM&�l�p9���k�
l����d��C�'�8c�!%SL&�Q	��$k�!��'�1Đ.�,)[�!ٻw�b����y�&�ԩ����be~��i����(S��4i����'b�iҤ���<d`�v���yzU��w�Bll,#Xq$�2e
ڵk���ޱc;>���HDD;f�<�̳�v⨾s�>�w�ž��r���כ�g�5k�T�Vs�'%%b�ʕ��/���2�����1��gΜ�u�ֲ�˗/������D||<�{�&֬YS�r�R���u&p�6�fP�,?����� *����Ѧi�~����M+��R_q�����č-G�ʒ�l�S�
7-|9$���\dgg3�r�޽���y�ҥ�u�7�֤����K/���EL���g�U�V�T���SɊҨQC��h�"4h��7oƤI�P�Blܸ�%�'//͚5��?��'"44�^��tc�^�fϞ�������^�1�����+7�
��Ԟ<�&g�_}�%v�܉�>���I\�<�9x�?��o=�{&�c��{	���G��!����?aٿV�ƍT���!�n>��ށ�ߌ���ύ}��a���HNHF��@�g�?튿׿r��|��m|9�I.�uZM��?�]�����2Tʃ�-��!�6a��	�ɦ��cӦ�سg���|}}�gJJ
6l� ԉ�H�8t���`m�Ä	�Y���Kh۶-&��c
լYs�x���C�nݐ���:�֭[Y^�W���ɘ6m�"�j����+�-]U]1b?~�}�����G�J���Jn�b]�#��
Z�s�.�~�����/��+�U�V����ɵ4�.���}���#�T�U	����E�Ɍ`/�]D�I3L4fi�޽�{\�5ю3}�G�~+K�.��!�]wX ��4n��������A���$�њ�V���<x��^dF���wm.]��qVϞ��y����S'���3.U��6�,�aϞ=����\/��S�'�MHH�ny$&�O�kԨ�{��Vh޼9Ə�����P�����		єM�g͚)T@)fr���
L	Y���*l��*�;))	;v�X��'�5I�ƍ��'��e���$ʾ}?��8*w\�|�l;aР�8p�V�\��+jzF%l+y�R�j(0`qQK�v�O�֮�Q+�Ч�thɬ����ZoF��z��T����8]��`$K�${�\d[5<���lӦM\���ە�MWcK��;��L,����ۣnݺ,��N����7���v����.<<�-L�ob���ϳO�~Ө&���[b�(��*�g�.\`~R1I�F�Q�\9\�zJ�"ܢ����_�4D6����!i�y��+Z�DH���c[Y��*���l�i0(\�Ys��f ��t�̙3�`�����?~��yx�M�נA�2�śo�)�%X/VNr59��ԩ��J&"_�r���f%���<P+����x�F��ljT�,t��HNK�����#�W
���G��k�Y�رcE���L�`Ӯ�!M�d�:�������o�,��È}��-N��;�-�?��Ot��5k�B^^��z�=���ӣGa7��X��\e�*{B�e�"WQ��}���ݻ���'�lٲ�|SSSٔ_I�\)j�V�T�-t�o�k׮v��O�Y�ζi(�K��j׮�v��aذaصk3����r�ƻ|��S�%�%�g�q������[��߹s�}���)Krr27v�Ν�\�ҥ�:�o�>���E�o[�na�Sn��,_��-��=4��q�CDD�SlZ��a��^�p!��^Mbu�+r�4��L�U �_�a��.(�g�w�H��k�	x�����cr��ի�a#pE�p�w�U策V�;&<���_�/��SI�ڍW]����S�<�ؼXz�I�+Z�n�t�ܹ��-HB|H��-[2W��y��lV�-�$+%X�$7nd�>q������ҥK8{�,[�!V�ߵ��bA�>}�)�,fj�[��ȗ���IG����r��vB�g \m��3��i��*-K���###�'Y�������׊Mgd�N�:U��d��+��v}�&�O�M�wJC��_��Wlڴ�up9�)����p���;v,&O��	&����z#{g�,8oMuB�o��0][��_�)��k�4��͊��%c�Cx���	@�+�0@�`�OI��Y0�`L\�;�d���_1H%���,���pv��yHӂ��,X�ZwI��-Z�AD�j�b�=�|�4m���r�+�۱c눔Yo��w�;�  ��U�b��m�0Ҹ1ԮI��~\qjK�-
d�Ne�B�G9�jy
�QZ*�h%�Q�u��1�m�1qc�e*��h�FE=.X����Kҽ{w�룑XL���]���;�
\�����ѣG�2��׏�vpᓸt--����4�T'��~�zfI���ޑ���Syz"7"��U�T�Q�K��
ja�К5-�[�;uꤋLh�a�V��?��Ǎ�x/������ꫯ�F�LO�O�0-��d�7 ȷID�,D"+g�:�F��:Y�z_D��S�N�<i��v�Zf�~SZ�!����?K���J�iD�r��U�}�v�Z�j��"q���d
������T�z��1���C���M�T�eʔ0۱k999��HӦ��b@^^��ܔ�)�Ne

b0�-P-^��YД
�	)6���QͺBV2�Y��:����V<-�J�{�v�ɚ�u�=Q�%�=QU1ctc�:�مm
D���36?�#�";���}��K�Ht�mN�'+]lR#Y򩒒�QI������sh"Y��#"��r��zyy��OB$B�4}��+E�X��'��F/+�[*+Yl���&�r�т�U��]/�J���[B&��7��&K���J&�%7�7hG�BԈ�A����i��#�ث���ɃWO��Q�:уݷo_�^r�$��:0#����v��YP�{���!
�M�=��U�rl��v5����Qxuܙ_V
��!�	�%.�u�jl"Wh�EE�o��
w�+	m�.l^߼�2�[oZ�Dk���ؤs43�ϲip'�]j:��] *	oz�tZ0�������)a��\{������:).6�:蟴n��v�Զt�Z�k)��4��C-��䡷N�b�}�t�h�A��;�;;�^b.�..T�\�Z���Ìmw���v�6�
l���"�n|�6�
�;l#2�!�b��Y���#H�#S'F}m�(�IAA���Ⰷ�@�F�6C1�]ܵ�f��!��ߛ��<���gvG��0sw��8؃�f�w~O��m���4�0��(�w�\���Sd���J!^0_zv>~9��@OԨ?o��� �Pz�&,,�����?`@����
6,���E�P�~�b��H�]��{�o5�3����N�4w<��oA&����??��<@'���:t,�$+�T)x�<h�E|w`�Z�$�A��|<�D��Z�ɵ����剰�r�|=�Ng�����2�l�<�Lk|��.��H��"��T��-lܼy�����L`�5J�U?�,c5=���]�ܤ�C܆]��|V:c��@+!/Y�&��,�j�o;�P�½T�S�Na����f���-J��o�)�,Y�R�S:�����U�z��(��<l<zm����[9��m����+�aE��>f�[�8t.ͣ|�{��;���ޞ���ź��M�E�*�_�h��RRu�e�Eyu۝�%i:υMf���_ �4`Mp�7����D��
�8 �d��Ei^9��3���&�8Oz������Zt���w퉬c:���s�zM��Z���j3���+c
O�]�����%k�y����9H���|!ap�Z�?��s�)���f�����و��J_l2wb;l�
E�͛7�m�����~���_<Rpd�k-wc�`���u-֩۰k���Y�e�aM8�XөC�N^���Y��tϞ����F��ܞ앎��t�]ժU�6�ήӵw��KW�9"Xy���&;�@��@N�����d�>p.
əe��J�{#<��%W�›����k>�o�
��l=��M���V��c��F$K�ґm��]"u�#����]�J�u7�+mq��ϻ��(a�0�.c^�($�T��Y���/V́U�\M��a}Sп
+a=�L
[��w�@����m��,J�x��y$&&�æ������ȑ#�����9�zڛ��:���5.K�$.|9��.w��������c�(�`_ODE�!$�a��)����q�T�By�^�?����j�ѫW/|��,�lm#<E�U<g����*x�\�=!mKG7�K����s��dX�)}����ۙ~�r:σ���ҹ�0��x̬>���Ǯ���`�?�)v����`}M���m`�֤K��ްzz�T�1X�L���G�3�^P��+2�Q\��I�A�b ů��bݐ��)��7n�n�8�>�'3j
fƋ�'�"q�A���\��#�p6����2^�_#A�,���GV��2�r9�#��|ϝ؎dݺ��G�װf�Z���4���4�I�I��i)7Iϸ�-�\��шh����@��m:xt����PZvg�&l�7"y����J��;��N��{�T�^�V�3#�bԹ���[|�\����D2���pa�pUk
S*�š6
�ϥT`;��(��[^N�Ō��x<����;�M��¥�)��…꘳`��g��ӊz�0������,<`�{�KG)nN��d�1(�/�R�F)��x?�ىu�����tf��������Zȍ���~�Dÿ�J�܉���P��ފ���bD�	�Q�0뎰��Y[8*�[I�ER�ۖ$��'G8�W��Y�z��`��a�=T��@���,"Bv^��[��XZ�0f�<
��)H���|�@��T�,��D�|<��Cfn������Iq���ܤ�<$R�pP�`��=,�����Y�w�}ס~H��<�G�Z�r���3��}���\�]gJZ����硔���g�U�aSr�=ݐ�٨]���.��_.Zq�d۷7r�HEB��Ek��=��-�SѢY ��1cT�����~�D`��<3ք��`���ͫx�e����l�*�e�ۖ<�,/��;Φq���ziy�ElW��+��>�:�X8Gb~��rb�3�1��G8s��vlk,ׯ!d�`x^ODR���7���Ə���s�m�*�L�&b�PV�&8x� ;d;%%���)����z&���&�	�Q$���)�I� 	�[OP5G���e�Y̍�7�l��H<����"��o�H���`��P���@�7Ez2d�"GԂ=~@O4�^Z�`�|�&O��[*s?���I��k��Y�msi;���M�\��tF��Vɏ�5�2�Ŗ�
�[Mx��[��u��6P����o*f�_���4���7bP��x�}P.lQ̷n"d�(�]�����
�JՐ:j�Bg�ܴ���s���ژB�/[��B^��0D�D��>##�K�]'�����BkθC�d���c��+����ި���Rܲ!(T�b�UJ�`�h|���}���-��K�e���[�,M��t�ؑE���:x�U���[eY�ʾi�^�:�@ˋ-�����-w�����l'�W`�ՅZ}�I�܉"�t�!���Ⓙ��c��`���Sʧ�'�Ɩ���]�]�v٬dL��P�4l{"�k+��j�8��\،�r���$]��)wQz�8�4jn�v���߇�e��9j
����孹ϓEK��(
�����6핥�i��ùtB�d
��sñ1�������Q7G'�s�+�Z���׽���
{N�-"b�A(�!��ku��a
C&F�ՊM�z?�*�M��R!+�(.y����x~Thݯ�S⼱�J
�����*T�X��E���Ex	�ͥj�=��MO���\�(/��蚻���6iJ躱'|�^���g�ޒ�x�/@ �a89g>�4ymb���O	����L��V���YX�t>����Ӗ�B�v��%X��+���X&�贎�љ!�5�-Oz��g�O�+cʱO�F�x�)PS��*l^��gԨQl/ޔ��ѧS+��G�F|��g,<8�!��'��}�Ν�Xj�s��eo�H�p^6�����H�Z1��iX�Q�ֶ
"¯���m��c#��U�2��y�]ҖJ�"�MK�Hwa�q����[�Jء����r�Mf$D5Ch@i�7(+�]T:�_|���xv�Ǫئ�\x�z)�2�U����A����D=`-��]�	����az4��V$�~�l�ٲ�g��=PO�2�نR�+�yqx;&�>��׶m[�����<EL����HIIa�wQ�_;m�4����硆=c�t{1��bccU���牚!X���Y�$�n7�k�D9X,�z--�i%Y��"Y�5޶T�zϝ�G�����z���^z�Ϯz�Z�"Z:�Z�	m�o�o�:+�0��m�<B�3�Ӣ=�B„4�\�}�#bR΁���9}��K�O$��~����e����x��d���a�~X�$�%�=O9�[+�����=��5ɺ[T‡�NIw�!�n�6��ѩo�d-�5�C1�
�?F�O���IEND�B`�Ϻ�PNG


IHDRl�7�	tEXtSoftwareAdobe ImageReadyq�e<�qIDATx�����e�?�g�(�7E�jbE�&���iz4]��'���T�?�w��9����UK�(Ӵ�2
35��&J���0�a���(J�8��3C+q[�2������fvwv�;3;3���y�BJ��lVΒ��93s�&�c�R�G��P(�Zy|,�y8gaμ��g�˟w#@�>�;<~��<.���]ẏ9�+���P��ߋ��dx����s^�k�mmm/t�:7�h��r6���]Zy�b%@���ek{��>��/�<��/�}�/t8�lβ�+��@/=����zl�7sF��9���zJ%���z��
�I�ph>�^ΰ�>���n�ċ[h��J\��Sr���[�qṋlϭ���V�ڽ~/�[�S�9�Ѳ���s��y2�wRC���^���J�?��1R�ߔ�Ǻ���σ#��[s�v��-��XRَ��E�����*���V�	��ٲ_��iٲx�}"�Ɯ+s&+7��
�J�0���`��v�!i������~}�{�(u���jF�W�'��ƌ�3-_�J�1�u��8Щ�ȝY952z�{�X�#��]}._�U�xΣ9�Q���8�a���k��h��(��*��Ǖ
jg]w���-�ɾ9��;������Fn��L��2�t�a�|-�wV��LhK}��IwL�'͞�`ǯ��W�\�s��S�հ]�)������O�xR�m���[���>-=�̢�_G(_�3)��@=��2��МO���|@:��Ү����[��Ν�~����O�� ͜��5]ߌ���9�Ry	��C���F��-i�
��b�s4o�M��n)ZĦ�<��.i�#��`�8��/�|��b��������q�Y
~����G��3�k�[=!��z`���o�g�}.���k�u���N�����N��Ry��r7������Ba@*���fN�#�<8}��s��[o�޸�-'No�rg�o��v�R����rP��:�A��hڞ��4���K�8��t��G��ϙ�Hzl�Ѹ���t�������f��J�#�=��UvX��u��b�r�3g��V����M9��5�'�(2Ѹ�n4rM�
=��;|+ρ��h�7���4��y��jC<W����_��;����T��D?��g�ͩi�V�#�>��s7��
��B!�~�"gXL���1b���&�&�G�O�>���I9g�<���=�ױa[jT���Y�L���ho�M�?�]�?p���ҽ��!͚�畿$����m���5��\���nRmM�;��рz$��t�����O�Ν�����J��e��>
�σ��A���?�c7�X���U���eou�M�n1�/'� ��}�K�G�ƨŠ����nzR-���B!�M�E��5j�tm~|��v��uW���t�?k?���t�R��'ܒ���N6l�b-��9���~Ӊ'����O��Ç��<���t�o�>[EuT�Jb$~�@���K��x���ڶoI�>���X��w�<e24����3d=�7փ~ ��7*t��4l+ρq�U�yp�:�S��3/�G�G��>��oT�)u{���1��˾��/���.J�\|Eu�P�\>+�\7=��q#�~�3n��=���\���~�U~}<6�r���G�W��m{^Ґ�^}��göj`*O�~Fl�i��OI_���ue���>ʔ;�O��U�^Lj�h�^��k�;����S�X������p=�"��c}�Gݚ���"9�\��T�PN�� e�nj�V�j��mg��돤�L��5�:M��ݙ�ջ�ܝ3��5�gªвe/��O�T�T����_r�y�nuҰ
Ѽ�!g�}�����Ҵ��V�}�g?�>��s�O��n�E���4�*��㿋
۪�9_�9)���ȟ���4�kk�ƈ�o�=�t��?��c����R��~_w�ֱ����-�pU1�'�20��f�i΁�k#�b��8"с����ab}���1�g�jѬ��탕�a�h�������
���f�_x�57����4o^���1�ۓ�*�fu԰
ѡ����w���W|{����oI��t�;�l4bb��Y�m���԰��5����7���zB��{�t�/Z�|�s�UWMn?� F�Ĉ�KSy�1x��vX��#Re����,��I��[��W*��ٷױ ��7��
ێχ{��4�K�Tn��4����^@�?w�����Ӧ�h��xM�8��t�]W�q�b��4*':R;��hb1���rƚα���r���\�N��>8�OΧs~�����}�0��X_�Y��?�4s柺|�1��?���t�/.NO����?_�luo����tc��S���n
X'/��t7�u�:b��7�3����(�ˉ�}���uĚ�G�����B�<�ٟ��~�8{���RyƺRy�mhX�s�����}��X��'W}��)���ژ2v����bj������:/=��S��M���i�-?I;�}�=4��:���Pb:�!#f�z�o��ޑ���I���r���3Nk?�c�I�:���~c�S�Sy�o����T^{X�s��y���/���ZIirϦ�Ws�x=����S�n��P�I��b���
��ǔα�Q���-��M
@�Y� c���۷�x���i��>��^L�>���:|Sr>���R��ְXÔ�1�̱G}h���.\��?A��	gT+1MTL%>��
��ΦD^Y<9~5�q&�}���{J���Ww\�6�U�2�G��vo�Y���j5SBƚ�G�������b����Ҵ��G�O7\O,�q[ΓJ
�׃S"�J4;��<����cʫ���f@�<�nouL�S+�H����|~�鐃ON�g?�V�7ܕ�G�^X*���YC�gpΣ9��;9���:_���R:�����~}��!�&M[�uް�:>�� ����f�
��zcD�O���zQ4nc~�h�>�^@�?w�vXǴ��tÏ�5�n���f�kθ��V��!'�q�4�F/7l���k�dzc#��H�ung��,P���+���ѳ��sf�0uq�>}��ѣVl�?v�5�:k��e�S��b�c�=n)z�}��1-[�rNj�)�J˻�筥�󵜏����E�;�S��+���?��t���Ry�e����1�!F�"gh���+�OC��쌉s��K�����XK���3)����а��]��ֱ�����c4mi%�մ
1�r��}YY��j԰��6g��-�%H*�>5=q@�>w|A�7���B;q���SOh_��~*KC�n�tᅗ�k���zQl��J�E�s����-�O��6"��͝��q�q�@Z�օʻ��i؆���Q���O~Q�7mÜ9������ҏ.�Y���rv%K܋h���Z��9f�ب~ԲT>`k�[�M��麞N�54++�]���o�sb��19���8�Y�~��{��]�[#kcoF풾rΧ�a��WMޯ��%��G>�޴H��ٝkܮ���_y��Q<��?��]i��a���g�Y�9��4}z,��>���ݪ��U>wm_�`
�S��Χ�Ѵ������[o�+?x֬?�7nr�Ջb���|0�:o؆�l<=���d�0�!f��M����M[����mզ9cs�o��ss,���{��]�[S yذ���[�iĈT�����Q*����-
C��I9��լ���k9i��<��sxZ�،-��'Ry-���?ـ
۰�i3Y\���{���<��t���N7�x{��+s>V�5�h���Syݾ��"��-O�8(g�n��8�!�6�FR]5l�vI�m7l���{�Ɍ��w�ݲ�&r`4������G�kBl����J��nN
�x�|:烩<�x�~�����z��W���~��]��~���_l�gZ�SO-l_�u%3r�#��
ڰ
q�ǽ9��3�-]��/�m��K�…��٘*>�����i
а
�K���%^��u��b���+�]<<��Mۿ)-���!���mG4xyc��%�6j��{�'�|�#}�7���z���J���:
�BL��rc=�ṯ���N:*v�ۭ��,��u�#w�5�z�R������!��a���ݳ�iO�_`޼'��?����0)��I��-=�A�1Z�_��g��)��T�!�nۜwu�=��3�x����a[S5�4ɛ4x�Ϲ%�y�8j�o@c�ͣ�ï�>��*H���W�>��b�R����~�P���������},��h��^�/~3}�3�V�ƺ����z�5n؆Sr~�喛��ݐbY�Z���+��^��}�¬�x10۽��� 
���|H����c��C�t�x=�\�^��ލ��Q���ieuް
1���9����dfj�{��'ә��&���
ҴbZ�;�߾Y*�:��N�P�3�G�
�����f̸?��4g�#qvR~�kW���ኜ�k=�E�t�>�n���q6�����ut�:n؎�$F�M��|��h�s�E�T#Qc��X�;�����uSӪ�a[�M*��y��|Z*l���o@��8pcգ���bK��|_�P��#k�x�Q��P#�G�<)
�҄�؜�VLA��:�s���c����Wgڈ���|ӽ��Y*O�:>��=���24�8� �]>&gH�>1u�����V�C�/������G,�v���&O:�v���no���˾�PC��s��7�P=�߅Ba@��IsΎ�/����H�~}S,����X��é2
�{Mj��cS���`��J��m���ܗ���/�*���˩<K�
9/5�߱k*/�`�9���A�P�Ѹ���OV��=��t�1�R��T4�s_7yJ��ϵ�������Wi���챕7���h2�s�MQ��u�<2���I��n��=�Q��Hɹ*�G�6��S�i�=N��l�����t��G�ԉPLh�?gQΤظc�=u����w�uu�s���٘~�WI���14��:�fk2�����n��
svw�BCy!�ڜ{�o���;����0G���`ԓc�=,m�Š��3�F
�-K���:���U2�����=i�����1b���k.IG��4s柢i{K�t�>*��	O��k��B�n>Z��9��MI�t��Խ������慆���X3���ۥ�̷�)�)���7��CT	��瞯M��vw�qzk
�Q�7��U��W�u��ai��{�U�w�q����ǟ��M�1&_4�=��X�sW%S+���������#RG����q*|88'�ڲrZ�ݍ�X����n^�T�����S�|P�M���Y*�Vݲ���깜��
[X���ۧ�f���͡5����'�|0g����v�!i��I{��<�v�
MC��f�W6l��f�A��]��i{��פ��g���@����O�x����<1 �`_�����n������6�-&�FmL3�lS��i7+Mn�7����̶�����o���թ���
���Q��P����ak�>u���ԙ>}V�ߧl̏��T�.�}���Q��7[Ǎ۷�4F�6�1c�l��&���/��$��ߧ�n�}Z��׷���I��?Ѹ���#qkiK�-���>�,g\�M�ZU�1�X,>�Oomkk{�����sn�yK���w��ޚ����	@wҰ���sN���G}h�0�-q�@��x��m��Ҟ0w��.MSo�����8��3
��K�Ҕ���Z��~�,��&mLe���BM��ۣ���Mmmm�0���T^�z���cj��s��KН6PX�Sr��31F�~���Ҝ��H?�م���1�ė�|f�m��ҏ.�F:���☚�7�B�9�k�9h�VT���.��Y�`Z,wl��'�X���+
�{�k���N��j�_1�9�;||�q�
���ٴ�N۫��O:*�����g?��4p`Ji?�O�BaՁ�� ��C�za�/��2���sJ
�{�h��6����3;x�V�;�=;]��I������yF��O��@*�%{K�P0]Կh�W�+1c�A�b�Y�����`�s��ZwE���-�Z4ko���~c�w]�N�x��@7�Y*bY��Lh��1��/��'Z�_#r�V�K���j�H۩
�;�1Yn�n�a#~�3jܸ}�O~Q1bU�nv����{�	���X�PU��4F	�����FنY9�4��k=��n@wа���f�~�G�~|�i��	��\�s��X�ɹ�P(�*PWb��͕�Z4�k���9�4��kZd���-��z���.�����b��O:*6�|WE��WhÚ�o�%gq���CS��
[(��9?6>����Q�vQ�%߽��4r䎱yp�P8VE�nQh���oZ�s[��#�
�*
[H�x���~�sS
�E�l�q�Ї'T�~NE�nT�X����<� ��	�2
[H�����P	����{���)6�,
cU�B%���'����9�+����8v��Ç�|���{�>�͓T�BA	�c�ƞ�y�An���芾J@����J@
�x�Q�+g���h*[W2 �}灕�k�Q��}����Д��<[�^��B�œ�r^��a@�k�3V�jj��GV7G
�A�Ri��@��ʣN��l7�M*�9m�����X�㩼��zO�a@��a�P���۷o5j�4k֟�T��5l��Ĉ����4/h
[U2:�o9���y��Wd
[Zݠ��٠MUj��<h�W=?
a���團�ƤY@k�i���i�9�X,��3�l�-��O��>}Tjl�
�z~�Z�T^fh���r�
�#�bqN>���ֶx����N�>�G�J���:#�X,�vm_h�-�*FՎVX'�r�Z,���[���^^�a��ľ�C�f-��9�*���IV�ڬ�A)`��&��b��᪞h`uƥ�@�l�sH�X|U�V����#ge�n34�-/а`U6�y�2@�U,���Ѱ`Ub�O_e���b�X�

[V�����=&f�h_v@�������t� ]=o�b����-m��]�e��-m��kk����J�Ɣ��J%�^3@����_�g
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ�
[�Ѱ��h�>O=�P5hj˗��bS5�Ѱ��~P5hj��>����jP�a{cl\u�u�AS�����kT�z
۫r_����u���Mi��{�O��66�V��Ps�5l�g��'�+=��|U���}z�>Y={^�T��*ԃ
*���L�=���ֱǤo|���)���#��f��h�!�g�
��ڰ�ibߝ3y��y���|:�]��S�T!R�w�k�@w�1i��?�ES�>^*�����o��E9��96��M�2����![���F��{�?�d�?ANj��|=�,�Z�M�U\vU΍9g���ςO�4��9�s.(�JO(���j.�Ѷg����94g�r��(�J�X�����@}뻎_�D%PWJ��"��Ŝ͕��Rr�Խ�^��gs�UZ�3J�o%�E<���G�Ᶎ-���d�!�cY�e���a@��5��VZ��Sy�f��i��J���P�ܣ9Ph���i9�)M*���I��@�����<��_�&�AX��� Y
��
�B���4�R����J�)�w��!gX��U̓���9/)4#liy�B�>�3gL΀�Q�OMQhz/�r���-��h���9W�s*�P�\��}$g�2@}Ӱ�����#�Bat>���g�|�T*M͟?G���,T�P��6�5�|P�V9���k�M�5��yE��1^�C+8<��s�v�D�~}ӲeqP}���O�J��������Tn�F�6�;��˙�t�X4lif�園sl��ꅻ�6"�?v�|���I�j��򜏕J���
��.�g��Ӎ��{���)J���-ͦO*��=#�פm7v����ߞ�;����曥9����K�.�9�T*MR:j`��Q��|Ϧ����r�ə����4li&G�w�n�g����M�|ʻӞ{����~zaj;����)w�ٹ9�,�J���ۢQ;:g��~���R�s��,UFh|�4��.�{9��̸q������Oy����'��j�vv��K��<��ž��j���2O�ܒ�� M�&YL}�j��Kz�'���q�*��_'��n��،u}�yB��E�s�O�����TU��2@sѰ�Q
�aΑq�=��|)m�ц���L*�_~ul.�yWҬ��Ĕ���Q�k�ޜ��MHÖF44�79��
����/���>t���.�n~"��C�ްY�;r�\��]�sS���KÖF�Gݒ�S�U��K����~�5~��wQ�6mFlNϹX	�%��=g���Q�ڗ����-�$�A���;r�釗~-m���P���i��/*!�$�.������T��z����a�?gOe����3�HW\y~�l��k��_\�~q��csI*�[;��r�\I���O�ݳ>�]�'�Zh)]j�
��81�Ȝ������n#�.>w���a���LhK?�T��޹���|r}�ťRi�
�E[��o�>�sCҬ���^
�B��'��YɊ�Y�~}�^{���rΧS���:�}�|��i���S�IK�.m�lƌYi����+�t�_�]*��Vi��9��d�M�X�v�2@k�töP(�:�Ŝ��G�&N<9v�xդn}���-]�,���[��_����Ƹ_9߿�O�Ri���I1������[��lЙ/.
q���r9r�tݯ~����Ś�4���}��_NJq�N����"�u�]���s�SBhMt������4�tȡ� M!:��KӰaC�l����:*��ۅ�C�n-��un�
��d}:��竟M�o����TF��!}�+���5m�T�N9����ZWgF؞�3�c32M+��1Mr��s�U�"F׾��??g�2@��Lö��u�)ǨM��c�n���i�G׆ǔZ[g�#���|�����8f���n��Z����_����:Ӱ�����FS8p��9Kbcɒ�)+�0gx�c�2@k�}�5k?�y��gU��yOT7�52,u}ߊ�k��UX�9��v��i��ƨԑٳ\������M�ɀ��Ng���
�kO�TَѶ1�Ӌ�-@��lr��L�#}���U�į��%-X�tl�,�JO���b�S�sΖ*B�g5��އr�OF�@S3%2�ٔ�E7�x{�n�Հ:�oM�n^��ʊ����ɉ9oJ��4��S��{R*�����-�A�T���Ύ�
"��~|���(b��o�PU,7�y{�|KN�I�h�VRPh>��v��S����O��Ѓ>�>��/U�~�T*-R��hh�P�T���G��h��Z�J����9K/�����(PѬ=��Ӽy�K�^���
PU,G�]U�&������E��A�T��O�5g�E^�N<�Ci��z�w.�4�=�4}��8��T�*���ɛU�S~۟M�|XG�R��|�a-�ɕצ�{��}���S�T��?�8Ũ���~B���N�=���%*t� o����rvTh}��]�T��P(�!o~n��e��h�H9r�4hЦ��`�����/t���Ϥr�`e�����)4
[�R�47���P(��O��9:g�9sQ�^�~�Ԝ+S�Q�TI���R	h1�+4
[XO�RiV�P8+o�U�hd� ��n1;���bC%��Ph��}�(�DA	p���-tA�TR��J�J�)x��C���-QhSh|��l���*�;4lX�_��cJ�O�����yI����4l�)h���h�T�k����XM@��U����uii�����-��,�ve��t�ѵ�<4lX�Gs�U�+����=��<4lX����P���ܭ�\�*k1-ga�9��z��9�mkk���|4lXsr��yS�.9%�^{������R@sҰ�*����,ι%箜�sF�l��YN�.[��(�Ŝ�r涵��MY��i��
��왳SΠ��9s�(
���Ry����ѯ�u�b�8�rY��U���"�Ѷ��?(46
[�M4b����ʍ�+}ͼ���\�3A����r6O���V��h�n��;?�~%�Ƨa@3��
�ȸ�?9d��i����g/�d*O��)��Ry&����y=�r�lkk{EI��i�Ш��9�����$�?v�4nܾ��禋.��ڬ���[��^SG�v�T^�y�.^_)��F�@Ѱ���tǧ�LL��������I����6�-iٲ�ӿN8#���k���s��B�%��m��S�.9�U�w�X;zJ[[�cJ�E��F0 ������2.�o�1�#i�;��4f̞+������t뭿��sNN�j�'�tǻU�a7_�s9׵��=���|4l�g}r&�r�vx\pȡ�SNyw:����_��;�iڴq6��9�@�6�M��r=�,F����ֶL��9i�P����T>29t�i�ē�1���/�ujO<��j�vz��s)#=$�{���immm%���a@���ݜ��̸q���LhkϚ�|҇�ԩ���̜w$�Zz�V9cS�6j_Ι��@[[��@�Ӱ����C�N�:�C��>�޵~�i�d�yʝ�9;�G�.TJ�Y�K��WN�΋97�<���:/2������8��C�|)
��Z���S�%_�Ks�㧔�n�]�9���ω&�9/(9�
[j��rN�3_���Sg�����Ϝ[�<+��C��#iߜʣj{ڜ��Ry:d��h�PKѬ�,�؁7I?�����ǯ�7�_J3f��w圫�t�
s�M����PrhM��ʊf��[�ۦ�4�����˗/O�M�M��'�"%��l�sX�'�h�[rRrh]���W�z6kÏ.�Y�5�ϱyk*������s����y)熜ǕZ��-�pj·c�~��fm���i��K��n�yΡ�盵��-q�B%4l���3,g�RФ�|96.��W���{�ו��5[U7�L\��3s�yB�XG����ڍz��D�6�����P�L�ц1�p�r�
�{�	�=���ǎ�'}%��_^×�0ܟ�\��H�X�h�F�v��91�qL����U�P{Ѩ��S�:L;�}�v�!i�Q��Mi��쓎:��.]�a��O�rR�:uZ��_�}�����C=�,xz�|6��9�ș�`%���Ry:��Tn־��@G�P�w�€|�Üc�G�>��	頃PXGѴ���u���.�a��(��r�c9KU���9��Ϩ��լ��J��P(��'��9v��ҏ��v��k�B7��½�{�T/�`�e*@�V9o���Dί�f-��P_���n#�w]��;����θ�H��ϩ
@ˋ���UN{�f-�V����
���<�/]Y� ����@/�s�צ]����h؎V���{��=x�R�Y�L��5Ѱ����3Ooo �'�?m�I��'�hY�_�
=x��f-Љ&@/)
1�o�ѣ�H_��
5�_�|>|Xl�3\EZҨ�Mz躗��P9X+
[�]�LJ���P#l��1x����X�v���)9�)3��4l�w����J@
~�����r��ٴ���w9s��
[�]#�î��PC��ڥ���j�������r�+/�Y�л����O%��
�lŦj���)3����T�
���@gi��r��Y���G5Z�9}{�z��yIy���a���{�:�̙����ҰZ������

[�l��i7_gL����]�W	Z��9�r���ٲr
ͦ'��r��p~y����S9�r^Tz��_�P�v�y}�����?g�.[�1�xΌ�ǔX
[�ֲYθ�m�z�6�D�֜�����c����f-��6��h���r��P)�f��wx�vJTi�4�-rޖSP
���'{P*OO�a��I;>��R@݈��A�
[��62g+e���u�e4l�W��}�2@����-@����2@��<gKe�֦aм�+x��M��yY���%�֦aмL��o�@kӰh^}��^%�֦aP;%�֦aP#�5�aP#�5�aP#�5�aP#�5�aP#�5�aP#�5�aP#�5�aP#�5�aP#�5�aP#�5�aP#�5�aP#�����a��e*5����T�\��

[Z���U	��E��_���

[Zݬ��P	��_\���y$6ct��*@�а��M�S�ޣPC��i���R��\Eh���)9Kn����Ï��ȕW^[ݜ��
[Z]L�xUl�Ϲ�Q
���s�_~ul���+U�V�a)�bGq�0z���:��ye�T��"�
[Hif��=���'�K5����[�&csi�Y*@�Ѱ��O�,��Uץ�=�"��^�`����B�T��*�
[({"�}�;�c��s�~za��S>�f�s��5U�(��KJ���ۙ����_Q6��SO-\���r~���8����<EE�<��_�QG��n��8�j�J��R����D	�׼ؙ�m��T,�M��V7���/�G�kB����T�F����#O���qvF��R��P_*�;Ӱmft�?U6��UW]WݼQ5�e�G%�/�������
t��������q�h�>�2Pw�+��i�^���'W^��N�G�hJ1���?�>6�\�"��b��r���
c�����}^U`=����<.}����ҥ�⢋s�Q*��ԥa��2@�{9g�:7l��y��؞��O��s��%����U=�EӲY��ڜořo|��4�-G���7�` X�8�7f�8�'�[o�m\4+�GվϚ�P�P�q���-ݠ��tVΔ�C���iD�c�i_O+���>OU��E9�ySΌXo/F
�n�t̻'������K��̹i�ǤO�P��rq��J��TU��k���cJ93b�o���TZZ(ޝ79s�����?"M�xrz��(+
��)w��λ�c�er�Ɏ�Vaz�r��|8��~}��F�_��i��Ƥ���~��!i��=T�����O����;�ޓ���t�o��Ν��KbD����΢�:[��q�:�rP
�lkkk_��og�3��^T(ޞ7�3�?���1�U�v�!i�m^��Խ����`��/��M?���֭�fj%�sN�9|ٲ���v��)�2ύ4���g���ssnM�ujoU-hh��>gG��n�BΊ�}��*���P(Ě~s�GVG���Q��F�yq0�r��\�]I���Ry�m��_��&>Ɛ�8��J���0t�V�>�8k뜁J�╜���ږU/�ەk+�J�
�B�CtV��A=T�i�S�	S��di�
�Fyn�M���gIΆnZ�%zQ�c뉽3��r@�Dcꖶ��W�����?d^%��F�-�����@���zS̪19�������rΔ���GV�D��F(��<�@Sx4g�2�b�y��d�59��l��)1��mmm����
.�W/(-⹜�(P#��"�G��y�ꚵA������ƴRw�-��T^�
�V��H�[r�*�V�W�������k�¾j@��o~��šys�j��f��U�N<P���_�.���X��^��u�b
[��9����4�Y�|t>@=�[��9���AS���HYhQ1�Ĝx���ֶ�3ߨa@S�o�c�؛��b���
U�&�b�oSy�@��i�㠒{sv��5gH*H�앜9�9g�\��-���{������� ��AQDE�I�
�$jz4/M��4�r4;u:�.'��t��eiv<���xK�0EQ�8QI��($�%q�ϳ��#��3���}�_���ogwgg����<OK)���J��b9���5f��Є��y8fA�־h�M��o���)f���+�@3{&�5i�TN�]�P
[�B������M
\,�Q��R*����*HY�@�?[��-+�f��X�	��'d(��:4�`����Ỳu�7�B�me{��-�jdL���B��+�����d������6t!�����̝��
�a���ӷ��<���r�X̣�m�f�b%�LT^�ע[W^�];)�J�-y�&h:�7��)::��F~��O���z���}s�>!;"�V���EӴ���3�X,�]�*@O�F���u!kΦ��*ϿkiU̯Ӓ>�
[�-5cG���Nw%��F��#��e�3g^��51��\\.��:���`�F�C��;X�G�T��X,>�$�Ai֤Ԙݾ�Ԙݺ�~�#1w���kg�Ѱ���hٱ1�*��I�g��8bx�y���N��o�0l�Na�aC�3˟
�^ze�u��oMk]si�\~���b��53M(�׎,�J���'��3��i��CZwV|��к_����H��I�Ӕ�~þ���{����7�>��w��.m�k֬���/�Z����ճ��|=沴].����I�\�2M,M�}D�T��X,>��@ij�
��5ޟc���W��^��#c���X�6�F˾����A�	���߰�}6x�i��������U�z.��JVt�ߗF�u3��ҝiJ@�֜M����9dˆ4�t��G��
�39dM�*/~�7nL8x�a�ķ���ư���m��X�B��y�	�uui�Y!M������ni
�nrZİR���2��v��%fx̶
v�^���R,_��7k���ԸL���f��Q�#G��֠=�Iᐉo	t�5�\��p�??�X�4M	uy��1O�w�fm��O�S	h1;W���٢A�㒐��}vS�w��(ͫ�ְ��"5gO�H��3����'OG3)��_�~�ܹ
����[��Q=+M�z^������h1�iZ��1{�l����z����s�X��n������F�����%*�lT̩1g�v͝#�:4�Γ�
C���/��ԶVmŢ��Lm�Zliw��l�4�>1{��Q;�	��1�Ƽԙ~��m���ܐ�Q4�>A3�4qg��H�����S���4������3Ə?�m$�?�~R�m�]j���xbix�9�'�2uF���N�'B�fm#�k��Ť)�V)Md@�1���X��1w�<ޕY����t���#�v�yG�
��ǟK�.K�c+�x�P�R<��\.�Q!z�tp�Y!kԦ�~¾��ٶ�N=��a[k�]{K��[X��m"�4���13�����o�٥���b�Ĭ���^�C6��mm�s�=�m,h6�ϸ'\v��������~&fR�P��r�����C_�^�i��֦M���O8*|��3C�^���K?�•W\S���,wsP�k����W�׵w��VXmئy����4l����=��E;4��&ԖԸMG�ϛw����
����e�A�S���.ْ7�`ƶ�s�:딶fm=���	?��^f�4���b��� Jk[�����f�j��b�V�k�ڰ�h̤�#��N�a�e���*��Դ�y����ɧ���\����V�M�u���p�;����0z�~u��/��b8�����7MO��5j�1��$D;��m�]�4�6-��L=.|��u���X��_��f--'��W|��O�-
CT��F�>��A�9���a�=7��������ŕᚵ��y��9:4W�6�O{O̍�N��$5lONEJ/���XЊ�\iDA���*@�o�H��~uۏÍ?�*�7���`W��n�vB�<7@��f�}S�;c�7�u2�ژ?���m[��䓏����N>����1�@I%�)e~3v̘Q�G?�V���W�-�]�{�G�m�>��ц�l��7��-��^��u��1�_���[��k�vZڛƌ�n�P
Z����K��}Ω�;߽�ۯ��A��5iv��\�[�f-@O�U��ք�=�U{G̳�KS�vP�4h�݇�֫�fk7U�fz�5jS‘G>���e��u�:�p�פ�51��,p��X��L���d׻�ۘ���n��~�T��0T�����}4|�3����g/�n~6f���GJ=�q1�4�uO���ѵ���0>�3d��=·�}q��S��4������0'�7@��?�Ș��?3+fu�WB��9|0�1��?���+.	淴�ܹj?�*��,;�L�7rj���`#\
[��wa���������~�K߭n^�5~�Y��98��d���[c�o�+�a�ؾ���~#����s�B�/	?��ƴ�F�~�M��)��Mx���=�<�4l׷C6r����<�І�RwϺ��ym�"7@�rP���z���o�+�a�3�����$D�bNN��!�7�a����Ϯ݌9g#ߞ�OU����ֺh^����d�9���-4���н�Č�31f���Z�6̸�aԨ��z<����;����̊����*�6@�K#k��Y�֩�%4�z��a�7 ��=r�/8 ��ж��3���W�&�
�M:(:��[j ��/ۦF�����]�hqxz���s�5k�l7��$I#n��\3�-АҚ��6
rQ�F֮n�+�a�36d�D�*�<0<~l8�1m��Ǝ�J4�Դ����g�}>�s�oý��	����7����U�p��W�l�e�q{s�]�V�}�re5l���P���ʺ�ɱ�M��~R8�G�=ڶ�n�>fR[���w.�n�vG�5���Y_��0�S1��@�v�9����1��<�LE��~5��=�?����?��0���Í?�J��#=^~����̻�k{�L9Ei��o��3J�r�?&�H+4�}%旡ɚ���-�FU{W̷c�I�ٴ�ߗ���0r��� 5kS�G?�V=z�tָ�Mcu��t�4K�1}��uj�uk���-t]���i-���᧥C��t�;O>6��/���e�CZ���P(�Q�n�֬�$�嘩1O6k�5l�kR����ai-�_�qxשǫ
�w�{I���W�M����5m�/�[�,�Ӥi���ڿ4s�5l�󆅬Y;(M���P8p��@
����0dȠ��	1�S���<fbh�uk�!{�/�^t
[�4��Pi֦)����k����3K���ҧ�
��U�.��l�$�uṾ�Pt
[��Ō;vt��U_V
��Դ��~�����U��ԨݧI��oc��U
�aT(��'M�_�ʧ��[�W�iV���QL�i�S#��A�9z�Kb~�J�װ���0�ϙg�Ə?@5�}����gڜX(ƫ@M���sU��![��eh�@
������X>�[߾[�c��\���*P6�L���Պ�asBL�w�z|6l�j@����nN.
T�KW���Y؊7��-t�1��	'��������3IE�d�&���i�@�:fL�p�a�Tr4nܘ�{l�S��ٵ	��1O����~��P(�'��~;��1|�j@M�����ٮ��M���в�23�&���b&l���y�r�\��W����'/��������g���	�څ;��$4�:�U�Y��r����8
[�t}�>�q`1�m�=�Q
�4��1�(-,�ޱ�$5p���D�\I
[��a��5i����@���{%φ�q���[
[�ֶY�1���h�*��sP̘��Bּͅ�-@�J�O
�}�גf��W̌��
l�6h=�R)M|bЬ�M�C�I1û�k���R���0l��t�䘽�����J����U:�sHL��?t�/tt@�(�J�Z�������H���J����~*536f�z�
[�&W*�^OV	��4=�Ę-�K4l�_j�n�Ps[�P�_�a��J���x2L%�n���_�װhn�+�U��
��p
[�&U*�ҚzF�@��Y��4l��.��������{ h^���͎��P
[�浽@�ٶ�aм�*4�㮆-@���m6�Džj��D� '�9Ѱȉ�-t�5m֬Q	�ъ/��T
�a�kI��t�2��=�xIus�j�'
[�^�Ӈ�o����3�n�Q
�a����]����fW7��yҰ��5#f�������Հ|��)���6���Y*@�4l�����䢴��ˮ/��@7J�G��m�E*@�4l��]3��_�w�~�j@7y��W���0o���Y�r�U o������x�Ҵ�'�xNx��
u�F־��3�-SӬ�aQ̉�@#а����!k-��i��ɧ�+�0��᫗^b�f��b�RAo%�|���Y�B�y���s�ĄL�.6��0t��1�	:aժU���t��{�}a���_�sZЬ��h�B��h�7ǜ�Y���-FU����|6����h�Bc�Rɤ��1Cb�(tJZ':5i���,P��-4���h�B���"�`�)@>4lr�a�
[��h����@�[�гi�����J%��M��u=���+�l��k�@�{\	�gӰh]��cB#{9�	e��M��E��W�����5/�e��M����
�(>�����-��i���b���B�TN�_��а��H[�1�6dkLh�����2@���S�������<3>x_�[������J��9@���'c���SP��t��!�y�r�Ұ�y�sG̯c����U�61�+tɪ��c^�яż�,�kѰ�^
و�?w�g���ɻ{L�J�*%��}d`%�v�gSc7P����,
����4l�i�bF�l�P[TRm��K�R�t��b�t�Т<�`c�h�w�����)�1�WL�T*�К<�`C�9<X�����J��J�G�����J��0�T*��Z4lX�a1oVh8o,�J�+�
[֕�_���3��3�T*��Z��-��/f+e���E�he�֠a@{iT��
�R��2@�Ӱ���!�4�4%�pe��a@{Ô��`%��a@{���J����BA '�rY�>�Th[)4?
[���1��jbq�e�\�QhF@а��>.Fœ�b���ME��V�̌�I̔����Z	h1�(4>
[�B�0,�|&d�ڵF��/��eYh���2,]�,�?��t��D�5���1�)-d�@�Ӱ�(
��1���<�y�)m3f��@��\�R��OnS�\n�qO:P�1�ļ/}Y��:x6fge��<���MT(�O~3�'���[߾X��_���=gïn�q�}m�m^��>5��e��a%�>
t7
[��BaL<��>iD�~��0r�
��<=�7疶�ǣq��#@�=�DhO�<��4la#
�BZG��/����{_T�{�~z�w AۧO��T��)+-��b�h_�&�awn�n�M:(|�?����Դ���>[���B��_U�[s�2��f��'����-l@�P�O.H��{��@xשLJ#�:4m�1�����H[��}�bq�2@�а�
3�Cǟp�j@���O�n��@��1�搭
��٘[�����Ko%�
zG�0~�X��r�q��v�m�y�Q�Ba@�\^�*@,��.fx�Șc�(
du̓1���B���a6*}8|���F�s��;�y�o��ә*��#�TmS�l�9��3MɼD�y-�bq�*@kа�
�a�*
f�A��!�t���$��Ȋ�?k��N�XThQְ�
�����*
�W�^k7U���:\��f-@��a�󺐭k[K/�,PZ��#5l�TKaŊU���fͫk7U�����ֲ���v�j��9Rö����͙����fϭn.T
����ٻƗ�P�Jг���q�SU���n�I5�.:0�v���1w(+@ϓ^\^��曦�[��PZRڷ���������t��1#jxyϤ�-1�(-@ϓ��(ދ�'x��UZ�c�=��c��~zq�\^�*@'���P��{:����g�N��/^�?����w�-!��GN>-,X�`�4
!�TU�N�sT�5��e1?�yIiz�j�vM�)13�� y�i���6��5kT����iN�r�f��ry���P�yk�5��?�����l��m�����0��7�4�Z�6���0r��m۽z�
�? |�+���/[�ju�?�zq�{�}*O],X�PX��g�5k��4����H��Ccv��e������^���к(沘sB6�����3g��o�={nX�����&���K���&������h�����r�:)�Lux��\VZ����g���ޯq~jp]RI�?fde�W��uu��e�B�r�~�%/��bx��緟��_��:YP.�W(P}B֬ݹ����f�3_IXW�M����S�>!��ۏ?r����<�\8�������l�ܧ��Z(�ˊ�ö!�uj�.^NZ���1/))�ӻ?sA�0a�؍~�c�=�s�G�̙�ix8戠Y@csX��]��GCv��2�`C:ڰ=+f�1��?��
~�-Sg�����x��i��)5k+9
*M�<>fD.C���H�6�`�J��s�x�oZ����~2|��WϺ)��1�)7
jx�!1};�C�P:X�i��#6�a;$�1ۼ����{�(������5j�ͻ?}�*�1�(3
*5h
�U�������5m��6�a;4����������
W^qM��57VתMfż/f�Р��:6�6��@��F��ek؎�����tP��5�}�n���	�uu)�>�p�s�ߟ����VihP��3�?�d�5�C1�(!�����1ߍ��Q��5k_~yU��W����
�N����΍�4暘5�
@�>f\�N��)�8���c^T>�a}
�t��7Cְ
�x���_����'���h�}+B6��ꘙJ	@#*�J�u�c��ȷ��(�ѐ5i_U=�m݆�Y1�7fPjҮ\�R��������5g�H��!k�@�)�J���1�_�[�(ڿ�,�y$f���ݪ
�4%ԷcFW����!��)-P;+d
�J@#+�Ji��11;��C֜MYZ9�\����1�cf�L	٨�ԤM�ٕJ@3(�J#��bƬYCvy�FΦ�gU�&޿ZTj�N��N�T�.��Z��w1ˋ����|�!k�B�Kk'/W�9z��eU�i��g��3��+�J�Ǔ}b���J4��f��Gc�l�e�E�VZI�T�+����B5hR���+so�C��I���P*�R�kB�ުA�*��?�ܣ�z6SZ�A��������G���W*�Fē}U���G��Z4lhj�R)-�s�J�C�5n��a@��5d�|BO�u�Pe��ѻ�P(8���U.��߮J@3<�qe��лƗ7$8ʓ�8f�2@K�V	��ͪK
�B�0(��sT�X���}��x25�r����@S����fթ�m�P�O>�ј~��v�yGU��=���a��eis\%����r�|��@��L	��ͪ�
�B��M<�y���'�=��pؤ�T��s�;�e�]n�:#M�]��wm{�Ѷt��Y(�ē�cƏ�w�q�O�u�_�YK�:�C��?�:|�k��
k[~����W�u���N�sA̤�#�7O�:L���%|��3Ý��i�N�xȦ�����m�PHS�~<m��]v�I�h)i���W>]��¸�P�##lψ��;��O��r������=nr��s��POiئib�g�S�hi'�|lus�jPOi؎H��wOU��항c�S
�#
�^mzm�j��A��.];H5�'�W��h��D� '�9Ѱȉ�-@N4lr�a�
[��h��D� '�9Ѱȉ�-@N4lr�a�
[��h��D� '�9Ѱȉ�-@N4lr�a�
[��h��D� '�9Ѱȉ�-@N4lr�a�
[��h��D� '�9Ѱȉ�-@N4lr�a�
[��h��D� '�9Ѱȉ�-@N4lr�a�
[��h��D� '�9Ѱȉ�-@N4lr�a�
[��h��D� '�9Ѱȉ�-@N4lr�a�
[��h��D� '�9Ѱȉ�-@N4lr�a�
[��h��D� '�9Ѱȉ�-@N4lr�a�
[��h��D� '�9Ѱ���@�Ѱ��UJM�%��a@{+���_����-�-UhO+4?
[�[��4Sh~���<�Ye����/_��4lX�%����b�XVh~���`mLhd��2@kа`}�ǬRh8�cn7�Z��-���������Ǡ��3���r��֡a@�{Y	����c1?w?���F�N+��*�
[��QF����ɘ*�@>�sc�X|L)���V�ܢ���@��[���a1�c���[,���b���R@�Ұ��=3&f+��H��Gr���*�2fh�!��m@L�v߷uL���gc^���^�y:d�Ԧ��c^(�*-N���V,W�J����I�ApOȚ:y{1�J�{��mئ�ς�thAְ���Ņ�d�J���|�C1��2Ӵ����$
[Z�1)-�����\��t@-K�6칶�U%���Z�z�jI�X|5�Wq��1�U�Vy�sg%�&���j|yi
hcв4la�ڦ�zl�*
��Ǟ���)@U�X�C<�&�w1ϨM��*��Mt�7�ٵƗ�H�Kv	ZUo%�
�s�̙�G3I5�A����0{�ܴ�2f^7�j���A�����}�X,��.�R*���lM�t�O���=c�t�2�4ǯV��ݻ�<��&��!k���v5Z��-lش���=�>����IusV�\^ٍ����5�-��+��޽=�@^/^�vsc�[,SSwE�TZ�r�X:�+
�gc��b5ٷƗ���he�D�
(��Ɠ���;'|벫�u��Rݼ���'���´���! G��V7�9z.�o4+���v3Z��-l�E��7����t��!ox�!MS-��6��0+}h�4rp�ݿ���f���.������_^Z�!��N�6�\.��W�/\�Hx���W_}UQ '�Iz�פ�51��59\��&������:�0gN��E�!Gi�ٿv��[i��bv��e�m�'�Hö�M�5k4�hm+V��v��٧�,L
��wfX�l�BA7��U?�,~�������̜���Ei���
9���)��+T��X~v����_ޟc�ؽ�	:Ұm[����W5Z���]kAu�\.?O��薩3�a��Q~@����xڇ�����Y�|=��S�{I����7MoK���\Ehv�g��٢j0,f�^^�lt-=FG�m���L�N�hi�^;��9����ry~<90f����9q�I��}-̞=7��{���ۦ8��OnnQ;�
GTG���yo̧�j^3?��M�����K/�����O/���M}C#H�@����bvk�?5�'�����n���[�ꩬ��
��}c�0$���T��~u8��I�G�I�g���3�f:Z��z(�N�'������ߺ����_?�K�+MŜóf��F���:�1�־-�z4�O��u�Ϯ
�7٭u��S���(�[{`G׳/�J�H��!�-������&���ٳ���^���.S,7��vb<�R�-��eW�׵�#l��t�h��2���>{�	7	-%��i߮�xCG�ǯM��=nsi��0����?}�]�^�Y{��i�ғ<W�O�Q���������zΊ�D�8��s��3�q�@����6k���S:ڬ�:�ߘ;��bF4�ߝ^ײY�x�\�t��J���Y�?5�f,X�`8r�im�$h�N�#>锐��W��M��
�X̛c��tV�(5Z-Zܩ땚�鍩�Ϯ��EZ1�V�So��,dS�5�/�\�f͚p�[O	�]{��Pc�W�ҶL��\�>M3�X.�������?�����dsj4R��Kc�*��:�)%�n��ڡ�m|Q�*�8զ�����~��-M)5X��i>�m�>��N
�+�zW��6v��0l�Ў��-�9�#aɒ���7�\�V����3����|[E�F�/6�x��E�'�o���g�
*���K'v��C��o���j�dN�~��n��@�(��q�w��I��\�PHO�/����7M������
#G���.@��/^��ټ�?��:�{�}mM�d���Š/���t��%)5�Z����g�y.�r��̙�N�����k���F��_��'.i��~�cƌR褯^ze[/n�l#-�pD|��@eh`�͛;c��x�%�?6�ߙ���c����=35��tN�X\^*��}i[���Jө�\�.�����B!M��R�Ōq;Qo#G�n�Y
���9��uu鵾���O�d^��5k7px�/�������n��ɗ�F֞v�yՑ��
�CCcO	����WM@��?&&
��>9��S�7���Nh=՜9�§?���eK*n��Pza���R���t�]c����ܘ�cu���*�.5���!���E�
��b��)�qi���U��֘Gk���^�\���*
i��T��cF����/.X��w�~~���+�V[m��x�ŕ�f�ʐ5>��gS#tE>_��3�j��>��O����nz��֠Y�$�H/��s�W\��Ι�	�L<0�}�iF����Ô)׷oԦ#���� �L�8�C�LNG*�]�����J��4�Z���و�W�2P齮�!�b����&6k;��Ն�FB�
��'fđG~x�7�v�m��:���n��m3��fO���wĔҺ�s��˰�6�ۤ��E_���K��Έ9-h��kj����_��T=����	'�����j֬��-So��{�S=;-WrU̧*�5{�7–n6>f��>�
ٌPn��%M��A�œ�r���"�i6u�N|��5(PSi��M��t�[�fO��h��n�v�n'�pv��)_���h„�ՆmZw��G�����={���i�����u��R=�:j}����ܐ��OoҝsƯ�ߵMe���N��[ƍi�5dȠ�Lj�m�i;창��2��1+V�֬Y�g�h��p�=s�ݳf�ի_Y���)a�F-4�Y![���N�lu�m���w9�iz��c�ಞY#�I��^�X\X*�vٚ�@�1�y���4��1���w��!�;߽$}̆w�qa���Ox_Ȏ�oS�?�N����:���~c�?��k��W�y��r�m
�4�v��6�	Fخ�_�	![�v\����.5��
ّʳ�o�-9�+搐M)���l��r��Cv�t��>}����5�_�K@�td�N|���Y�V9���17�.�����4�4���>Ik�~����o��A�1z�{?�6��ys�և�e�6i|G̨�&~v�7���7L�_>%TGڅ�ͩSB�N�	��a��t�Ijܦ��Č��?,d�@�Hk��i�teZ����s�U���aK�vو�m;��/��i�D7^�*�W7��夵�n�Yn7�������.5k�{f[�tɳ!;���Oj���\�~�F��<�����\�7��i?��ƴ���b��h�O��_Č?����k����}�=��K��L�Q=+5h?su02tH4l�n~�װ%g��t�:{�I�=���]/}CvP��]��gB6��A7=tMG��<�m��4m�sR�vjȖ9��㷆-�`d�֍M/(�ĉo	iJ��9��饗^o?����t��[�������#ƌn��m�R��S�?��M�����c.�Y�&��˻a4
[Dm{P�3���;c�R��6<d�7���e�7�RS�75�Fg��ǽ4���1۫"tȓ![����z�ְ���#�!k�q�Ƅ4=q�.yĈ�m߰l��p��j�=�xX��}����7���'����ҿk�Κu_�T�w���P��������d�y�@Gi��`v��ub;�O1��N-���yK�]��4���)PC�m�V���4��>*	��tNK���m^��i����ICk?3�z�G&O��6�v�-���N=/�:���@}�\Ӂ}>������x��m���E[#x��_�ӻ���5����IШ��<rj��aK�J#m�
�Ľ;��iz�߄l��H��1o�ټ?����:9U�q]iض{��%��U���4EkMf�Ѱ���sF�F�����{���V�|�m��԰=/��od���wK�����
3R������W���%!kҦ,ps@mi��aK��"d#\�����]�������,f�7���o�F<^ɣ!k�uV��m���Iki�WYh���C�y>~k���'��C6�65q��bj���m�T�'�}����ē/Ɯ�>OS?������yz�̘J��at��-M$5o��lD܎!��xS<���7�={�l*��m�e��ljΦ&�1��y�{հa�^��}���iқ�i���縹?~�v���a�7T*OFSw|z��r�K�U�O���
�s����rj�VתM�j�V/�ҬM�q�\������;��^�y��$5W��l�]�6��u
Y�7���r9IU7"dKm��35b��t0�3��tj�chM�V����3��fs����c��N���1/6ҕӰ�'�_����B��/dM�t�q�;2�x~z1�'&M�<5dG[�&�☹�ga@7�kX���Cր�6X�kھ1��긐-ϓ�1N�Ԯ
ٔ�i���.#m�i���\�6�֯���}���J�[~����*����O��-������<Q9�ai������dN%�s�*Ѐ�U�1K_��P��FަY�����JC�i$����Yiv��P�N��Rcبj�x���e�����d:�qI�yvM��r����d�h]]��zְL3M�9d��H��}*Iӌ�&d�۞dː����[No�oa��IU��۝�f��6n�h�N1���H͒�!�t�4}��1�sw���me�L��}�`�,�k��c^�CּMKr>���z
[��!�q��z���4�65oo
��z�f�M��=ѐJ*�J������M������i�
�(�v�9���bN�9�h[!-?rr�T�cS~@���M���0�T�oj��#��|@��c�w���Ik���T*���PhQ�RiX<�]%�ᤆ�VM|���DŽl�>���ksB|^��Pj�����fM|�L��4�vG7#l���޽�I]�FAQ19�(�i�mrB!�DQ�^&oY�';������NM�.Vލ���x��`��b(Ib��4<(�
����ٙ5TP���gv�~�>;�v�ߑ���g~�'-�J�Җk���.�T*�u%�����|�jg���11o��@�t�ٯ�;�k(l��m��Zzv�NvG��QB@ۥ�vt�T�'X�&�+���U'���Ǽ�C��3f�R����
[��kS#�N�$}��.������^Y�<hD�B��ƚ��
j��@��kئ��=TPU��J�����
[��-b�b����6(�WL���F@�0f^e�����̮d�A�(�J=L:���mz����
�*�g�s̝
[Xw�b��?��Y�궨$iZ͟?3-fb�5�\���׼�1v,�Jw+l�m��BG�V9j�o�>�M��.��'8��w�!���3���=�����=����ǟh�~��G�ҥ/�<�����?���y0=OX�1�c.�o��i�P^����4�V
[X;�
�b���n6�)�>|���i�����o߼%IS���p��ƉS�5�L��rKz�<���1���ѷ@�U(�at�w(l!�B���I���^L�te���G�px�O[l�y8���Zr��	^pE�}�]a��?������xyJss���N��@�>�*l���#�F�l3�8`�͍y(fj̲v�gǘKc��+����Y_vzcX��~t��l�����O~<.,Z���xut�P�Jss�M	:�M�:��Va�!�Ag�rY��8�jRY;)��Ym���1��ީ�=��[���̯.|��#��rf�����C��
�A������&um#��Cay���(���l���K���L��ܹ��S/���ޖ��RI:���1+�b����b�}⨃¥�}7t��)ڣ�~��҅��	7��;>�t\L�B�pdss�2��eM/�X�{�r��[(�F��1�{��(§��g��6P,�9�'�G?�<]=!�{�)�,|�;"T��t$Ѕ�m�PE?tLx���轏L��ƛ~7�Wi@�Z���
�B:
��b�k���)-�b*k�����"|�g�Y���e�hd(P��~dhP�@�Kg�����V}~��ThT
[�#����^�F�'�<l��6&hȐ����MMM�ۖR���|[�ʿ�i�Ze-t��;�
/�n�q�zD�P8�ThD
[��B�ph����ۆK/;7l�IoC��r˾��	?m=�=�Q;�u�rV̀}F�.���H���F��s���M�F���*
���7�I'��z+C�Jo
���+Vme��6�}֗
j�GԲ�m��
9�Dh4
[��a1����'�5
� ���ͫ�{\���1������@m�~Ɖ���
�~&@#Q�Bm��1�$ �݇�ں�L���_����S|�~i�G��24
�-�V˚���I@F�G�Ѻ����g�Q# A;dr�?G>�4h$
[��鋵k!��l��ɖCއ
k2�h�>ܺ9�P(t3��j�G˗�M2���m�n�J����6޸w8p��;T>��@a@�����%.��I���������J_z��i�YϞ���� �-@&
[�L��(l2Q�d���Da��� �-@&
[�L��(l2Q�d���Da��� �-@&
[�L��(l2Q�d���Da��� �-@&
[�L��(l2Q�d���Da��� �-@&
[�L��(l2Q�d���Da��� �-@&
[�L��(l2Q�d���Da��� �-@&
[�L��(l2Q�d���Da��� �-@&
[�L��(l2Q�d���Da��� �-@&
[�L��(l2Q�d���Da��� �-@&
[�L��(l2Q�d���Da��� �-@&
[�L��(l2Q�d���Da��� �-@&
[�L��(l2Q�d���Da��� �-@&
[�L��(l2Q�d���Da��� �-@&
[�L��(l2Q�d���Da��� �-@&
[�L��(l2Q�d���Da����kz��Sh6hl
[�.�X,�/^1	�{+�����z���-5hl
[���Y#����@cS�t]�ԽyF�Ma�u=�1@�{�"c�Ʀ�袊�b*kg�ԭYF(l���b�7�;i�ڿ����*G�N�y�4�n,����Da�=s�1@]H��)f�Q�F��Y��=!�兘߅�(Z���q̍Y32fs〚z<涘�F�Ja�X���6�]1��k$С�/���%�(l�Õl�?�OLwc�K����>�V_�.�YT���x3
[��|(���m�ɘB��֤��h��X����t}����X��R��b^���3fcc�Ca4�Gb����~�
������r�+�n�@C�G̓U����
���jki���/�d�h��W7M��<P�m��X�u����z(}y����d��C��n�5
���ޘ�G��~��
�+�-�����맘d4q����[M��5l�T�}�)-�.�P[җ�N�%,[��4 �G}<\=�ƴ�֯�h"
�%U���bv0V`](l�����gNj�s�>��3
2��W�m�3�D�+1wWy��oց_ ��N�Yy�������0
��+��ВhE�WL��͍y�����^c�Ja5V9�[i��Î�g��P�n�z[�đ'�^=%f��4��c^���lf�@[(l!����ŋk.|64�o��+:�w�i�g�#[�^P	,�����K�~8x�h�/@��8m�g��I�^39�\��d����>~>���������n�9}X�?L�U�-�*�o(i�V�7ȣ��ye�P81nΈ9릩�
H�l�۷O�f��a�m�}��͠�rz�� ����C�k��&O��O��}v�-X�tx�¬YsV�ևb>3�#�j��g����x�gc�b��[Q�B~�c��96�g�Y42�et)��g�Sc���}o�����1�fߒW�sM̸�uX��c~s@L�*�sd��1O/�f�P����-b���c4tA�b���R��C��?�u�I:��ⴘE��т��1sc�3n�RZ��1cb6���rt{���G�������Jf]���_�����48�ⶭ�|����TЎ3R�`I(/��ј
����}�"Xi��zF@�T�祍���dx�m��C[7�1N�hq�����
B���k���(l��Ԙ	�-~P�Kۣ�9,�S���@���wn�y�J�K�m:��6F����\V�*��M����Ҧ�9`T��7c�)U�ִ��`���=f��-�*�-9����-[>�����Z��7���U��=�8��Wb~s[e��3:�\�-٥��1�Oۗ\<���}�g��O?����sb'�kcTib�y��
[��y1��������O��y���}��1�Sc�i�W̯b�%��|��t��*�o��c�5Zhl
[��Ԙ�c�_�`a���F�88\~�Uo�C�^vn�kԈ��}��la�t����U�:kۦ�"�󑘞F�Ia@�YsP%�O�~W�̿����a��	7���l���/ǟ��5]ʥ�F	@Y�Gږb�����x(h0
[��1�	�m��<�p�aLJ���d��׽������0lXS�:$�n/t�`�4��C���<�J;�����3ft�FF�Ca@��C̉1;��O���v`�ҩ��f�y��ܲo�r�OV==�ݕ�Б��sE̝1�۱��|��{��o�!x��3X��w�|6f����wϽ0����C�
��vvHG�n�Ֆ�W/���s�ȿ�9'��1�^��7�ꘉ1�<��Ik����R����@׶�Љ,����a1���~��b�w�i�d��a���a���޽7�\<�[��/��e��@
,�$�,f���b���r���]*����w��g���-�ՌJN�3*f�%KGN�4-��JG�>��S;���.�95��_���W2;������w�r���Z�|���K���x9�X,zM]����`z%I:
��J�b?��S}V���b��m�5�R̼J�� ���M�|�힫���c�-�J�����bq�q@称��y.��	���m�tSC*�[��9�rrJ�ޮz��V��MG���U�-m�����T��ŧ�:7�-�`~%�3�x�C��}�X,>cе)l!���fC�L
��!�0�Ţ!@�Z��P�d���Da��� �-@&
[�L��(l2Q�d���Da��� �-@&
[�L��(l2Q�d���Da��� �-@&
[�L��(l2Q�d���Da��� �-@&
[�L��(l2Q�d���Da��� �-@&
[�L����F�%�-k���c�k���b#��w�-k���C=��`M��Ya�aU��&/���C,)��*lx32����-ofQ�#�U�$�ᴡ��L�y��zϭ�b񕴡�୼ssL�Q@���X,�_��-k㉘{��eǍUoP����s�1�:y2�7��Bn����i=��1�7
Xk����6q�-muw(�ִ���`��Օ��#lht�җ�˖�d�|���y~�^:5�S1#c���Ҙۋ������4��-_>k��Iy��<?�BzA}}�{bv��n$�r�?��U,_z�oV����o�r�_L2Z�xI�7o~�|.f��@��ޔ�/�ј!1;�=и��],�(!O�4�������2	��7�������ܼ�D�Sz>���mw��!���� ρ騠�V�b�ئV���һËn���>�f�	MM�M2�0�����M:��0��*�,f����2������K�uܟ�����ٙ��F���"���wI��/d"Pc3g�7N��6��L0�R�^���MB��ݰr}��Z�gӘ�:�o:���v�.�|��K^Q�^T͝+l ��b��r�
=N:��0t������oݼ���y��@�����z_���B�H+Xk��y1?N_�ʹ�5t���[��ME�LX�M:�}L��P�V
[(�Z�ܛ������Mj�����3Z����Z�M����P^��Daeiͼ�b��|\)|��N5�@?�װ���+W�%�ZN�|��k���{{���T�>�`](l���cV\~�U�G�d"�f̘�?dt�7�匁�bN4�M��ku~�ѵ�P�.��Z�M�c��r�
��
�=�S�*��+���˖-OW����ܼ�d�7�:����?z�XW
[x�[cF�,��)a��{���rS�vH�Վ���U׬=������Z�-�ٶ���ܘ�*֕�V/��_c&��5��)g����d�>�.��6�ҩ�n���I��Յ1G677[0X�C}���>|6��@{(l`���|4�׵���)���#n9:�ƉSM��It����������+W��/�١��y�	k!]��:��w�<��=�7xK��L�I�p<a�i��BC��'�>|�p�Ç��͔hxO>�t(]��0e�-!}�i�cNmnn�aJ@��^�/}�A�U�/�M��{,�G7�96昘[o�իg<x����w�s@���m-���i�[�0��A;��/^y�o������懅�l�{�-G�����*��L��a��&��O��R��Y�v1��$�P>%2�F�Xl�+lhH�(lW5$�=c��gG#G~0L��꺛�K/�>=�s���7����� �����g�X��z�	��I��1�lP��/����b���:m-l����J��+&N�J܁1}*�Ӵ��u�wJ��9`T��-Y�4|�[��}.f����t�����9��+��>a�>]�e�+1ӂ��*R�@u,��=�\���b�9ӧ�U7��3�,
Gqb�i�m�j:�e:
�Cf:XZ��_�޷t��T��U�����Ŝ�6�ߵ.���??�0cƬt5U�/F���Ƽ�N�[kY�Wն�@V��Hk���ѵ���0f���em:�删�����[�޷�c~�	�����|zǜ�6>d��w���Cv�;̙�`�:=f��&:��1���B̯�#k�@N��|=f�>��ǟ06۝x饗ÿ��+�k���SBy]^�(�P^��^O��(fJ�RIay��'��3���lw"M{�gOk=rz�٘�:XϘ�b����@̌P>2t(�-�^��t8k��{D:tH�;q�ig���֫i���b�����em�:�o+b~��R�@m���UL�1�
^tv���I��wϽ0�z띭7]���t�w���^޷��L�y��@-)l�vz�O�Ц�����έ�_�h��p҉��C�M���)��{h�`��ٺ�[*ho�y��@
[��T֖b�b��Õ~���S���̯�.��0��t5�U����B�TO�Q
1�c�b���}K���sO�K*rQ�@�Kk�2������]��n����?���+�3g�n�ib̉1�<,t��I����?�� +�-t�c���Z־�]�����]n�~J�>��֛fŜ3�C@�0����)����'scҧ�y��
[�8��,��ȑ��;/l��;:�/K�;NE��o�3̚5��洑N<��@K�
�yo����_�y8�ޘ�&��:��Y1�KW>q�A��˾�w�[o������^3y՛gƜs����^���%f�:�_��y �O���@=?���?檘���pf8�䣫��<��?�/��6\��p�;Zo^sM�y�\�@GJ��{b��)j�Ѵ��rQ�����@a��-渘o�l:x�N��K�	C���_r��Ä��>�*�\��
:��1;����=�t��t$m:���i�T��~Cc.
�uz��~z���f�mZ���4��p�׆ۧ�}��֛�Ѵ���"�O{���@󮘁1�:�?��MG�΋y��@g���u�'�ת=6]6����ǩ�m�E��ɓ����7L�mfx�gV��1�c&��Б�Ѵ;V�QܟȚ�6��=<t
[h�^1��|=�O�n�Z���~������
����pkL:��uRI�z4��@K�o���|_^
����[���/�vz��Ѵ_��"�0�Q��g}9�C�v4cƬ�S��6E�d��U�xY�ԘI1�ui����\�n�#�}HK�<Yy-�.�����)l୥�hO��\(�9�5jD8������s�>�8kN���	��0s��r����̘i1�V������:wۘw��歱�CyɟT�Ώy�C@�Q�����h�Ѵ��ttm�g���c�;p��y����G��y0�sϟý�?̉�˖-_ݾ�i��W�
���I�9�:f��׻5�$�J���)�hx
[x���\Ԧuj�z�a���'�06l=�x|�p����=���R�>��Sa֬9o���1�B�(��˕�@���P>�6�g�}��$}89���\��P�)l�Ŝ36T��ij��3�&O��V?�N��hLjogW������*�JƋ��&w���_
�26].o,h�=����Ș/��?X͑���̫$��+�e��T*������l��x9��t���]Y�|�u���4�tD�Q�|$�ŕ��'��V�[��t��"����J���;C�(ڴ���+Y��|]��+o�w�J�n1}M�:����bW��)47;;��P(ԘןP{�Rim�5��e�r�>�@'�L̒�1O�򇔲*�m�~G�А�a@�K�
o_�ۃ���V���1O�<���	�V�$�86�yo�1]P���+�P̟c^��;���6��`�vF@I��RɃ1w���uEa�ub��kLw�����m̌����S�tA�Ri�x��P^��g�qǘ[b��ÝR��:(
�5���l��J�RZ�o��ZX��b>�1O�3
[�c@��P^�~`L��ޡ��.�J��@s*��r^(�~jz��O2@WS*��:�{�����K��~4�71O�#
[��T�3*���F@���T�nzݟ͎�3�r	�S�T�6(k`m��t���ҧr�	���9!战M[o0��m���vk
[��"��a�q��L�.��W���{�e��9�y��;���t��C��)��I�tA̸��LڮT*������/�H�5�|���+X��	�װMG� ���m���=¡��	{����g�4��3g�ɓ������O����e�\ڞ^W�z�
kV*���1����v���;*�m�~�-��7)lӧ��sr�2h�a�Ệ�O���`
��fr7���bA�)1Zo�֬T*�/v5	h��c��ޝ(l��P���PY���������m0g΃����^����٘y^���J�����1����+c^j�N�Z�z��HG�*�:��̻')k`�3R��q�G�w8p�t��;By]x`������3f�Z���������Ն�sz����	MM�M�!-'��ٿ
c����W�V(���Ve��L���k�)l�}�)��+m\]�0|�n"P%�l�;\w�%�㇎IW���P(�4x�tJ�
���O%5���u������M��*|�~&�~Ѻ�z�ʫ~>5�e��^1�*
ۛ���@ս���}���Иs�Ƶ�]>��n&��}/~����1W
�n�-67��������F�B�G��(��g�="|�ц5p�e熡C��ͦ�/�����s?�*l�펊2lXS��Mj�g�
�W��֫g
�>���@�~~U�@TN�xF�NG����{�1�J��cN0:@�����fϘ�#G~0|jl�4 �Nۺy�i��)l�mL_>��n&��5jD�Z�
��P�3S�@۴�)��1	��_?�K��0��3S��Z*
i����y��wd��ί>6
:3�-��Mc����'����������M��3S���듾l��f&�m�{���ަ@g����ף�K��&@U(l2Q�d���Da��� �-@&
[�L��(l2Q�d���Da��� �-@&
[�L��(l2Q�d���Da��� �-@&
[�L��(l2Q�d���Da��� �-@&
[�L��(l2Q�d���Da��� �-@&
[�L��(l2Q�d���Da��� �-@&
[�L��(l2Q�d���Da��� �-@&
[�L��(l2Q�d���Da��� �-@&
[�L��(l�g�������4����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[����[�I�w?�rU��O(�@h�Q�"�`C��	b��(lat�AA�VE�Nk���(����?�0����N0ml��F�@�@BH ����]�H޾�콻��f�n6oϜ��7�}�=GaP�-@A�Q�DaP�-@A�Q�DaP�-@A�Q�DaP�-@A�Q�DaP�-@A�Q�DaP�-@A�Q�DaP�-@A�Q�DaP�-@A�Q�DaP�-@A�Q�DaP�-@��l
����*l���ܦV~���}�5���_��k�)������h_��TM����V~���MU*����I3&�2��V~����-60 �?l��*l�X�R�Ur�-�e����P�-@�{ �c��6D*��m�R����yf�%/�|*藟��R��ej&�iy?�¶P�t��EV�賟D.r
[�Q�T^��9���
خGR헝
��� �Jes�8�o��*���C�T����nM���ך	(ئ������J���w�vą,�ڪȷR���R��9�>�-l׮]g&�`�֭��l�6�J�9:26��0�WOda��60w�@U��|��7���W�(В%��rh6`��yy䙑���`��T�>��T²6S�@s�?����-X��q��l@��%*�G��~�)S@{2��ȍ��M��e���sG�c֬�	(H^��9�ü���4ms$/W���%��۟�Z��������#wG~��}�+��̊l�g���.N��w�h�/O��qx[}�����������d{E^o��޾�Qm0�'"��|-�\�xm������(l�	�juݐ!C���K���9��-�r��t�m�4�N7#0��	S�Q�yo�3���`;9�D���o�?,���;��Ч.�BZ���|��]bF���{�o�'GaM�V�+���|���~)�Xᗎ���k3�7o�[�
���@Sm�1n�'Fa���E���c���]�֮]gF`'Z�`Q������j���Yhʲ�%��7]a��R���ϝ��=�J[�I.\�&�����ӫ��f�i=��|�{������
�I�e��y0M=�����Y�t���	ǜ�zz^�O��V����~{$�|��7j0��-옼㉑%��=��uON�|�F�;��7��i��W�٫���f`�.�"�U���7O��v\.m��ܺf�3�c�|�z�Ғ%����13?���ǰ1r~�R30 ~y��c{Sd�vB�006D�M�}m��}ל�u�)��]���>���;ө������E���F�Ff��S��y��c9|���!�j�Kh��!�둑��|8�K~a�I�s�Hg�=9
��	��e�~�[����u+#�~��~��͜9�$�Z�"�K8�"���R�Ri�
[���
G.�L��/��4��ӤIǧ�u��>zL�g��M(����+�?�.\��=�0=��~�#�S�ڍ[�[ׯ�<�-�qJ���G���:�
[h�>�
#"�DΎ���ސ���;����CߒF�P�v�ם��8.�}P)Ǘ�}h��i��E�|�gק����E���]��"s����_�y
[�c�ș��j`����Sm�����h���R.o'E&F�Smّf�W��џ7����uD�ƕ�ؼW�ƍ�����]��#��^d^���]�@���A�{dj�l{�����i�	m����Ah�u�;��R.mG׏G'%.)MظqӴ��J0+uwY���;k�e�Ȃm�uY�{_��^��ҳ�Y��#�+Ѹ�J�%���'@a���XSr�� \����o���Ό4yʤRl��}^9�����t���S�J�#'F�v������>�:���i��o)Š�޺uSүW����_dv䅒�+_w��:��T���ő��/��7E�w�~`Z�~<�D.s�:��T��mC��uH����n�8�
[��2r~�'�e;�]�+�(t@���#i�]r_�>��t���흩v�m��9#�G�M���=̈Y~������{f��Ϙ1��O_vQ��?�r�q��y>�ȏK6�}#S#o��V���E����|eᄊ��3�
�o��3i„�|��K���l�<ɿ-�b��5<���	��h/�"g�ھ�/]w�M���M��y���\�w�k��l���,K�}m˴Dr.j�֯��n�	V�����퉑��ϝ�N=���.O==����ǥ�|����9ҩ�8Ϥھ���jwޖŨ�Y�#R�m��h_�"GE�"�s�����NI���>���L���a����qj:�DfF~Y�1�9>���~�8�
[����"Պ۹K����N�|���w�i� n�׿OS�sZ>|S�IiЩ�G�|;��D��7rz��^�4�
[�ΰ4rR��꼧��3?�N����Ln���]�ui;�i�X��ͥm.oזh\E*�k�׷�D*l:ˌ�["�G��3kn:��s{��y�޹�C�n]�>9�)�hyy�L�#ϕdL�F�"��J^�*l:�����!��\�<�	�8+M~�y����y�C��ۿu�{���;%��ȭ�y�<w��m�N�����e��!�j�h��!&�v22rY�##�'�K��vb��%�a�v��?\}C���_h<�9/���_�+4o�̙&�����T[��,6G~y$��R�R�4�~�-���65<�G�OF�/�}P���M�{�������w��c�|Z�|E~�x��;�?_�+4Oa@	���T�;\��,I�%���Z@a@��^yg�|�m.o�rƹ�(�V=�.�🦼,sݍ�KS�wۺ~��)l(��U롑ё7�h\�F~�i䅁��
[h�-$�i���P�Ƌ'����NLg�=9x��A_�����%m��\~�.ry�ھ�{ׯ�<�-%�����\r.o���|�Xdi���~!�-����uBdZ�=���m�'�[�N�2)uu�C��F��_Lw�1��҂�E��ն��]�@����\޾%rH*Oy��y��u������P��ᆥڒ�gG��-���?4?q\�2eR���#G�ӯ�ƍ�J_�꺴x�#��K��G�H�X&�+4Oa@�y]�wRm���W	ƴ>Պۥ���R�@(lDvI�}nsq���Ų�ل	ݽn����N�F�����E�I�]{S��T+n������_�y
[�����v��~�=
ϪT+o�ݷ�^�M
[h�-�X��6��'�3b˿=��ṯoK�ӕ��Н������w�~񊫷\&9�o{U=/�~��)l�0y��\��!2���<Y�Y���[�-���^1!2��8>��[���#ߚ�:zL:꨷�����]Zyk,J_����w�i��ﲽ:�|�������j���h�������c�U
[h�-������m~�~�7�sX�o�7��>0�{D:�7���O�^����t��o�w�Έ\װ�M1���A(���{��V�����j?��#���W�J����-�����E����T[Z�5
�g:��Cz�-Z�x��H���Zv�i��S��+����9{������=Պݝas��T��J��ܫ�Ia����1&r@��T+r���홑j��2��Ma}�K�a���r�p.qwI�;sw��ݞ;�O�ڝ�+*�ʪƋ
[��-�t�7�w�v�/�s�;��Z^�*���6��Na;��4�;uw����uk��7�YY����&�E��IEND�B`��,// (c) 2010 CodePlex Foundation
Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.ValidatorCalloutBehavior=function(c){var b=null,a=this;Sys.Extended.UI.ValidatorCalloutBehavior.initializeBase(a,[c]);a._warningIconImageUrl=b;a._closeImageUrl=b;a._cssClass="ajax__validatorcallout";a._highlightCssClass=b;a._popupPosition=Sys.Extended.UI.ValidatorCalloutPosition.Right;a._width="200px";a._invalid=false;a._originalValidationMethod=b;a._validationMethodOverride=b;a._elementToValidate=b;a._popupTable=b;a._errorMessageCell=b;a._calloutArrowCell=b;a._warningIconImage=b;a._closeImage=b;a._closeCellInnerDiv=b;a._popupBehavior=b;a._onShowJson=b;a._onHideJson=b;a._focusAttached=false;a._isBuilt=false;a._focusHandler=Function.createDelegate(a,a._onfocus);a._closeClickHandler=Function.createDelegate(a,a._oncloseClick)};Sys.Extended.UI.ValidatorCalloutBehavior.prototype={initialize:function(){var a=this;Sys.Extended.UI.ValidatorCalloutBehavior.callBaseMethod(a,"initialize");var b=a.get_element();if(b.evaluationfunction){a._originalValidationMethod=Function.createDelegate(b,b.evaluationfunction);a._validationMethodOverride=Function.createDelegate(a,a._onvalidate);b.evaluationfunction=a._validationMethodOverride}var c=a.get_ClientState();if(null!=c&&""!==c){a._ensureCallout();a._highlightCssClass&&Sys.UI.DomElement.addCssClass(a._elementToValidate,a._highlightCssClass);a.show()}},_ensureCallout:function(){var x="arrowpixel",w="ajax__validatorcallout_innerdiv",g="div",n="td",r="tr",a=this;if(!a._isBuilt){var z=a.get_element(),A=a._elementToValidate=$get(z.controltovalidate),q=document.createElement("tbody"),b=document.createElement(r),o=document.createElement(n),k=document.createElement("table"),v=document.createElement("tbody"),u=document.createElement(r),i=document.createElement(n),h=document.createElement(n),s=a._closeCellInnerDiv=document.createElement(g),e=a._popupTable=document.createElement("table"),c=a._calloutArrowCell=document.createElement(n),t=a._warningIconImage=document.createElement("img"),y=a._closeImage=document.createElement("img"),f=a._errorMessageCell=document.createElement(n);e.id=a.get_id()+"_popupTable";e.cellPadding=0;e.cellSpacing=0;e.border=0;e.width=a.get_width();e.className=a._cssClass+" ajax__validatorcallout_popup_table";b.className="ajax__validatorcallout_popup_table_row";o.className="ajax__validatorcallout_callout_cell";k.cellPadding=0;k.cellSpacing=0;k.border=0;k.className="ajax__validatorcallout_callout_table";u.className="ajax__validatorcallout_callout_table_row";if(a._popupPosition==Sys.Extended.UI.ValidatorCalloutPosition.BottomLeft)c.className="ajax__validatorcallout_callout_arrow_cell_bottomleftpos";else if(a._popupPosition==Sys.Extended.UI.ValidatorCalloutPosition.BottomRight)c.className="ajax__validatorcallout_callout_arrow_cell_bottomrightpos";else if(a._popupPosition==Sys.Extended.UI.ValidatorCalloutPosition.TopLeft)c.className="ajax__validatorcallout_callout_arrow_cell_topleftpos";else if(a._popupPosition==Sys.Extended.UI.ValidatorCalloutPosition.TopRight)c.className="ajax__validatorcallout_callout_arrow_cell_toprightpos";else if(a._popupPosition==Sys.Extended.UI.ValidatorCalloutPosition.Left)c.className="ajax__validatorcallout_callout_arrow_cell_leftpos";else c.className="ajax__validatorcallout_callout_arrow_cell";i.className="ajax__validatorcallout_icon_cell";t.border=0;t.src=a.get_warningIconImageUrl();f.className="ajax__validatorcallout_error_message_cell";f.innerHTML=a._getErrorMessage();h.className="ajax__validatorcallout_close_button_cell";s.className=w;y.src=a.get_closeImageUrl();z.parentNode.appendChild(e);e.appendChild(q);q.appendChild(b);b.appendChild(o);o.appendChild(k);k.appendChild(v);v.appendChild(u);u.appendChild(c);b.appendChild(i);i.appendChild(t);b.appendChild(f);b.appendChild(h);s.appendChild(y);h.appendChild(s);if(a._popupPosition==Sys.Extended.UI.ValidatorCalloutPosition.BottomLeft||a._popupPosition==Sys.Extended.UI.ValidatorCalloutPosition.BottomRight){var p=document.createElement(r);q.insertBefore(p,b);c.colSpan=2;p.appendChild(c);b.appendChild(i);b.appendChild(f);b.appendChild(h)}else if(a._popupPosition==Sys.Extended.UI.ValidatorCalloutPosition.TopLeft||a._popupPosition==Sys.Extended.UI.ValidatorCalloutPosition.TopRight){var p=document.createElement(r);q.appendChild(p);c.colSpan=2;p.appendChild(c);b.appendChild(i);b.appendChild(f);b.appendChild(h)}else if(a._popupPosition==Sys.Extended.UI.ValidatorCalloutPosition.Left){b.appendChild(i);b.appendChild(f);b.appendChild(h);b.appendChild(o)}else{b.appendChild(o);b.appendChild(i);b.appendChild(f);b.appendChild(h)}var j=document.createElement(g);j.className=w;c.appendChild(j);if(a._popupPosition==Sys.Extended.UI.ValidatorCalloutPosition.BottomLeft||a._popupPosition==Sys.Extended.UI.ValidatorCalloutPosition.BottomRight){var l=document.createElement(g);l.style.width="1px";l.className=x;j.appendChild(l);for(var d=1;d<22;d+=2){var m=document.createElement(g);m.style.width=d.toString()+"px";j.appendChild(m)}}else if(a._popupPosition==Sys.Extended.UI.ValidatorCalloutPosition.TopLeft||a._popupPosition==Sys.Extended.UI.ValidatorCalloutPosition.TopRight){for(var d=23;d>0;d-=2){var m=document.createElement(g);m.style.width=d.toString()+"px";j.appendChild(m)}var l=document.createElement(g);l.style.width="1px";l.className=x;j.appendChild(l)}else for(var d=14;d>0;d--){var m=document.createElement(g);m.style.width=d.toString()+"px";j.appendChild(m)}a._popupBehavior=$create(Sys.Extended.UI.PopupBehavior,{parentElement:A},{},null,a._popupTable);if(a._popupPosition==Sys.Extended.UI.ValidatorCalloutPosition.TopLeft)a._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.TopLeft);else if(a._popupPosition==Sys.Extended.UI.ValidatorCalloutPosition.TopRight)a._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.TopRight);else if(a._popupPosition==Sys.Extended.UI.ValidatorCalloutPosition.BottomLeft)a._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.BottomLeft);else if(a._popupPosition==Sys.Extended.UI.ValidatorCalloutPosition.BottomRight)a._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.BottomRight);else if(a._popupPosition==Sys.Extended.UI.ValidatorCalloutPosition.Right)a._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.Right);else if(a._popupPosition==Sys.Extended.UI.ValidatorCalloutPosition.Left)a._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.Left);else a._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.Right);a._onShowJson&&a._popupBehavior.set_onShow(a._onShowJson);a._onHideJson&&a._popupBehavior.set_onHide(a._onHideJson);$addHandler(a._closeCellInnerDiv,"click",a._closeClickHandler);a._isBuilt=true}},dispose:function(){var b=null,a=this;if(a._isBuilt){a.hide();if(a._focusAttached){$removeHandler(a._elementToValidate,"focus",a._focusHandler);a._focusAttached=false}$removeHandler(a._closeCellInnerDiv,"click",a._closeClickHandler);a._onShowJson=b;a._onHideJson=b;if(a._popupBehavior){a._popupBehavior.dispose();a._popupBehavior=b}if(a._closeBehavior){a._closeBehavior.dispose();a._closeBehavior=b}if(a._popupTable){a._popupTable.parentNode.removeChild(a._popupTable);a._popupTable=b;a._errorMessageCell=b;a._elementToValidate=b;a._calloutArrowCell=b;a._warningIconImage=b;a._closeImage=b;a._closeCellInnerDiv=b}a._isBuilt=false}Sys.Extended.UI.ValidatorCalloutBehavior.callBaseMethod(a,"dispose")},_getErrorMessage:function(){return this.get_element().errormessage||Sys.Extended.UI.Resources.ValidatorCallout_DefaultErrorMessage},show:function(b){var a=this;if(b||!a.get_isOpen()){b&&Sys.Extended.UI.ValidatorCalloutBehavior._currentCallout&&Sys.Extended.UI.ValidatorCalloutBehavior._currentCallout.hide();if(Sys.Extended.UI.ValidatorCalloutBehavior._currentCallout!=null)return;Sys.Extended.UI.ValidatorCalloutBehavior._currentCallout=a;a._errorMessageCell.innerHTML=a._getErrorMessage();a._popupBehavior.show()}},hide:function(){if(Sys.Extended.UI.ValidatorCalloutBehavior._currentCallout==this)Sys.Extended.UI.ValidatorCalloutBehavior._currentCallout=null;this.get_isOpen()&&this._popupBehavior.hide()},_onfocus:function(){var a=this;if(!a._originalValidationMethod(a.get_element())){a._ensureCallout();a._highlightCssClass&&Sys.UI.DomElement.addCssClass(a._elementToValidate,a._highlightCssClass);a.show(true);return false}else{a.hide();return true}},_oncloseClick:function(){this.hide()},_onvalidate:function(b){var a=this;if(!a._originalValidationMethod(b)){a._ensureCallout();a._highlightCssClass&&Sys.UI.DomElement.addCssClass(a._elementToValidate,a._highlightCssClass);if(!a._focusAttached){$addHandler(a._elementToValidate,"focus",a._focusHandler);a._focusAttached=true}a.show(false);a._invalid=true;return false}else{a._highlightCssClass&&a._invalid&&Sys.UI.DomElement.removeCssClass(a._elementToValidate,a._highlightCssClass);a._invalid=false;a.hide();return true}},get_onShow:function(){return this._popupBehavior?this._popupBehavior.get_onShow():this._onShowJson},set_onShow:function(b){var a=this;if(a._popupBehavior)a._popupBehavior.set_onShow(b);else a._onShowJson=b;a.raisePropertyChanged("onShow")},get_onShowBehavior:function(){return this._popupBehavior?this._popupBehavior.get_onShowBehavior():null},onShow:function(){this._popupBehavior&&this._popupBehavior.onShow()},get_onHide:function(){return this._popupBehavior?this._popupBehavior.get_onHide():this._onHideJson},set_onHide:function(b){var a=this;if(a._popupBehavior)a._popupBehavior.set_onHide(b);else a._onHideJson=b;a.raisePropertyChanged("onHide")},get_onHideBehavior:function(){return this._popupBehavior?this._popupBehavior.get_onHideBehavior():null},onHide:function(){this._popupBehavior&&this._popupBehavior.onHide()},get_warningIconImageUrl:function(){return this._warningIconImageUrl},set_warningIconImageUrl:function(b){var a=this;if(a._warningIconImageUrl!=b){a._warningIconImageUrl=b;if(a.get_isInitialized())a._warningIconImage.src=b;a.raisePropertyChanged("warningIconImageUrl")}},get_closeImageUrl:function(){return this._closeImageUrl},set_closeImageUrl:function(b){var a=this;if(a._closeImageUrl!=b){a._closeImageUrl=b;if(a.get_isInitialized())a._closeImage.src=b;a.raisePropertyChanged("closeImageUrl")}},get_width:function(){return this._width},set_width:function(b){var a=this;if(a._width!=b){a._width=b;if(a.get_isInitialized())a._popupTable.style.width=_width;a.raisePropertyChanged("width")}},get_popupPosition:function(){return this._popupPosition},set_popupPosition:function(a){if(this._popupPosition!=a){this._popupPosition=a;this.raisePropertyChanged("popupPosition")}},get_cssClass:function(){return this._cssClass},set_cssClass:function(a){if(this._cssClass!=a){this._cssClass=a;this.raisePropertyChanged("cssClass")}},get_highlightCssClass:function(){return this._highlightCssClass},set_highlightCssClass:function(a){if(this._highlightCssClass!=a){this._highlightCssClass=a;this.raisePropertyChanged("highlightCssClass")}},get_isOpen:function(){return $common.getVisible(this._popupTable)}};Sys.Extended.UI.ValidatorCalloutBehavior.registerClass("Sys.Extended.UI.ValidatorCalloutBehavior",Sys.Extended.UI.BehaviorBase);Sys.Extended.UI.ValidatorCalloutPosition=function(){throw Error.invalidOperation();};Sys.Extended.UI.ValidatorCalloutPosition.prototype={Right:0,Left:1,BottomLeft:2,BottomRight:3,TopLeft:4,TopRight:5};Sys.Extended.UI.ValidatorCalloutPosition.registerEnum("Sys.Extended.UI.ValidatorCalloutPosition");�// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedToggleButton";function a(){var c="url(",e="mouseout",d="mouseover",b="click",a=null;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.ToggleButtonBehavior=function(c){var b=this;Sys.Extended.UI.ToggleButtonBehavior.initializeBase(b,[c]);b._idDecoration="_ToggleButton";b._ImageWidth=a;b._ImageHeight=a;b._UncheckedImageUrl=a;b._CheckedImageUrl=a;b._DisabledUncheckedImageUrl=a;b._DisabledCheckedImageUrl=a;b._CheckedImageOverUrl=a;b._UncheckedImageOverUrl=a;b._UncheckedImageAlternateText=a;b._CheckedImageAlternateText=a;b._CheckedImageOverAlternateText=a;b._UncheckedImageOverAlternateText=a;b._decoyElement=a;b._decoyElementClickHandler=a;b._checkChangedHandler=a;b._divContent=a;b._clickHandler=a;b._decoyElementMouseOverHandler=a;b._decoyElementMouseOutHandler=a};Sys.Extended.UI.ToggleButtonBehavior.prototype={initialize:function(){var a=this;Sys.Extended.UI.ToggleButtonBehavior.callBaseMethod(a,"initialize");var c=a.get_element();a._divContent=document.createElement("div");a._divContent.style.position="relative";a._decoyElement=document.createElement("a");c.parentNode.insertBefore(a._divContent,c);a._decoyElement.id=c.id+a._idDecoration;a._decoyElement.href="";a._divContent.appendChild(a._decoyElement);c.style.visibility="hidden";var f=a._decoyElement.style;f.position="absolute";f.left="0px";f.top="0px";f.width=a._ImageWidth+"px";f.height=a._ImageHeight+"px";f.fontSize=a._ImageHeight+"px";f.backgroundRepeat="no-repeat";a._onClick();a._clickHandler=Function.createDelegate(a,a._onClick);a._checkChangedHandler=Function.createDelegate(a,a._onClick);a._decoyElementClickHandler=Function.createDelegate(a,a._onDecoyElementClick);a._decoyElementMouseOverHandler=Function.createDelegate(a,a._onDecoyElementMouseOver);a._decoyElementMouseOutHandler=Function.createDelegate(a,a._onDecoyElementMouseOut);$addHandler(c,b,a._clickHandler);$addHandler(c,"change",a._checkChangedHandler);$addHandler(a._decoyElement,b,a._decoyElementClickHandler);$addHandler(a._decoyElement,d,a._decoyElementMouseOverHandler);$addHandler(a._decoyElement,e,a._decoyElementMouseOutHandler);if(Sys.Browser.agent===Sys.Browser.InternetExplorer){var g=a._divContent.parentNode.getElementsByTagName("label");for(i=0;i<g.length;i++)if(c.id==g[i].htmlFor)g[i].htmlFor=c.id+a._idDecoration}},dispose:function(){var c=this;if(c._decoyElementClickHandler){$removeHandler(c._decoyElement,b,c._decoyElementClickHandler);c._decoyElementClickHandler=a}if(c._checkChangedHandler){$removeHandler(c.get_element(),"change",c._checkChangedHandler);c._checkChangedHandler=a}if(c._clickHandler){$removeHandler(c.get_element(),b,c._clickHandler);c._clickHandler=a}if(c._decoyElementMouseOverHandler){$removeHandler(c._decoyElement,d,c._decoyElementMouseOverHandler);c._decoyElementMouseOverHandler=a}if(c._decoyElementMouseOutHandler){$removeHandler(c._decoyElement,e,c._decoyElementMouseOutHandler);c._decoyElementMouseOutHandler=a}Sys.Extended.UI.ToggleButtonBehavior.callBaseMethod(c,"dispose")},_onClick:function(){var a=this;if(a.get_element().checked){a._decoyElement.style.backgroundImage=c+(a.get_element().disabled?a.get_DisabledCheckedImageUrl():a._CheckedImageUrl)+")";if(a._CheckedImageAlternateText)a._decoyElement.title=a._CheckedImageAlternateText}else{a._decoyElement.style.backgroundImage=c+(a.get_element().disabled?a.get_DisabledUncheckedImageUrl():a._UncheckedImageUrl)+")";if(a._UncheckedImageAlternateText)a._decoyElement.title=a._UncheckedImageAlternateText}},_onDecoyElementClick:function(a){this.get_element().click();a.preventDefault();return false},_onDecoyElementMouseOver:function(b){var a=this,b=a.get_element();if(b&&!b.disabled)if(b.checked&&a._CheckedImageOverUrl){a._decoyElement.style.backgroundImage=c+a._CheckedImageOverUrl+")";if(a._CheckedImageOverAlternateText)a._decoyElement.title=a._CheckedImageOverAlternateText}else if(!b.checked&&a._UncheckedImageOverUrl){a._decoyElement.style.backgroundImage=c+a._UncheckedImageOverUrl+")";if(a._UncheckedImageOverAlternateText)a._decoyElement.title=a._UncheckedImageOverAlternateText}},_onDecoyElementMouseOut:function(){this._onClick()},get_ImageWidth:function(){return this._ImageWidth},set_ImageWidth:function(a){if(this._ImageWidth!=a){this._ImageWidth=a;this.raisePropertyChanged("ImageWidth")}},get_ImageHeight:function(){return this._ImageHeight},set_ImageHeight:function(a){if(this._ImageHeight!=a){this._ImageHeight=a;this.raisePropertyChanged("ImageHeight")}},get_UncheckedImageUrl:function(){return this._UncheckedImageUrl},set_UncheckedImageUrl:function(a){if(this._UncheckedImageUrl!=a){this._UncheckedImageUrl=a;this.raisePropertyChanged("UncheckedImageUrl")}},get_CheckedImageUrl:function(){return this._CheckedImageUrl},set_CheckedImageUrl:function(a){if(this._CheckedImageUrl!=a){this._CheckedImageUrl=a;this.raisePropertyChanged("CheckedImageUrl")}},get_DisabledUncheckedImageUrl:function(){return this._DisabledUncheckedImageUrl!=undefined?this._DisabledUncheckedImageUrl:this._UncheckedImageUrl},set_DisabledUncheckedImageUrl:function(a){if(this._DisabledUncheckedImageUrl!=a){this._DisabledUncheckedImageUrl=a;this.raisePropertyChanged("DisabledUncheckedImageUrl")}},get_DisabledCheckedImageUrl:function(){return this._DisabledUncheckedImageUrl!=undefined?this._DisabledCheckedImageUrl:this._CheckedImageUrl},set_DisabledCheckedImageUrl:function(a){if(this._DisabledCheckedImageUrl!=a){this._DisabledCheckedImageUrl=a;this.raisePropertyChanged("DisabledCheckedImageUrl")}},get_CheckedImageOverUrl:function(){return this._CheckedImageOverUrl},set_CheckedImageOverUrl:function(a){if(this._CheckedImageOverUrl!=a){this._CheckedImageOverUrl=a;this.raisePropertyChanged("CheckedImageOverUrl")}},get_UncheckedImageOverUrl:function(){return this._UncheckedImageOverUrl},set_UncheckedImageOverUrl:function(a){if(this._UncheckedImageOverUrl!=a){this._UncheckedImageOverUrl=a;this.raisePropertyChanged("UncheckedImageOverUrl")}},get_UncheckedImageAlternateText:function(){return this._UncheckedImageAlternateText},set_UncheckedImageAlternateText:function(a){if(this._UncheckedImageAlternateText!=a){this._UncheckedImageAlternateText=a;this.raisePropertyChanged("UncheckedImageAlternateText")}},get_CheckedImageAlternateText:function(){return this._CheckedImageAlternateText},set_CheckedImageAlternateText:function(a){if(this._CheckedImageAlternateText!=a){this._CheckedImageAlternateText=a;this.raisePropertyChanged("CheckedImageAlternateText")}},get_CheckedImageOverAlternateText:function(){return this._CheckedImageOverAlternateText},set_CheckedImageOverAlternateText:function(a){if(this._CheckedImageOverAlternateText!=a){this._CheckedImageOverAlternateText=a;this.raisePropertyChanged("CheckedImageOverAlternateText")}},get_UncheckedImageOverAlternateText:function(){return this._UncheckedImageOverAlternateText},set_UncheckedImageOverAlternateText:function(a){if(this._UncheckedImageOverAlternateText!=a){this._UncheckedImageOverAlternateText=a;this.raisePropertyChanged("UncheckedImageOverAlternateText")}}};Sys.Extended.UI.ToggleButtonBehavior.registerClass("Sys.Extended.UI.ToggleButtonBehavior",Sys.Extended.UI.BehaviorBase);Sys.registerComponent(Sys.Extended.UI.ToggleButtonBehavior,{name:"toggleButton"})}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedBase"],a);else a()})();sx


/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />
/// <reference path="../Compat/DragDrop/DragDropScripts.js" />
/// <reference path="../Animation/Animations.js" />

(function() {
var scriptName = "ExtendedSlider";

function execute() {

Type.registerNamespace('Sys.Extended.UI');


Sys.Extended.UI._SliderDragDropManagerInternal = function() {
    Sys.Extended.UI._SliderDragDropManagerInternal.initializeBase(this);
    
    this._instance = null;
}
Sys.Extended.UI._SliderDragDropManagerInternal.prototype = {
    _getInstance : function() {
        this._instance = new Sys.Extended.UI.GenericDragDropManager();

        this._instance.initialize();
        this._instance.add_dragStart(Function.createDelegate(this, this._raiseDragStart));
        this._instance.add_dragStop(Function.createDelegate(this, this._raiseDragStop));
        
        return this._instance;
    }   
}
Sys.Extended.UI._SliderDragDropManagerInternal.registerClass('Sys.Extended.UI._SliderDragDropManagerInternal', Sys.Extended.UI._DragDropManager);
Sys.Extended.UI.SliderDragDropManagerInternal = new Sys.Extended.UI._SliderDragDropManagerInternal();

Sys.Extended.UI.SliderOrientation = function() {

}
Sys.Extended.UI.SliderOrientation.prototype = {
    Horizontal : 0,
    Vertical : 1
}
Sys.Extended.UI.SliderOrientation.registerEnum('Sys.Extended.UI.SliderOrientation', false);

Sys.Extended.UI.SliderBehavior = function(element) {
    Sys.Extended.UI.SliderBehavior.initializeBase(this, [element]);
    
    this._minimum =  0;
    this._maximum =  100;
    this._value = null;
    this._steps =  0;
    this._decimals =  0;
    this._orientation =  Sys.Extended.UI.SliderOrientation.Horizontal;
    this._railElement = null;
    this._railCssClass = null;
    this._isHorizontal =  true;
    this._isUpdatingInternal =  false;
    this._isInitializedInternal =  false;
    this._enableHandleAnimation =  false;
    this._handle = null;
    this._handleImage =  null;
    this._handleAnimation =  null;
    this._handleAnimationDuration =  0.1;
    this._handleImageUrl = null;
    this._handleCssClass = null;
    this._dragHandle = null;
    this._mouseupHandler = null;
    this._selectstartHandler = null;
    this._boundControlChangeHandler = null;
    this._boundControlKeyPressHandler = null;
    this._boundControlID = null;
    this._boundControl = null;
    this._length = null;
    this._raiseChangeOnlyOnMouseUp =  true;
    this._animationPending = false;
    this._selectstartPending = false;
    this._tooltipText = '';

    this._enableKeyboard = true;

    this._keyDownHandler = null;
    
}
Sys.Extended.UI.SliderBehavior.prototype = {
    
    initialize : function() {
        Sys.Extended.UI.SliderBehavior.callBaseMethod(this, 'initialize');
                
        this._initializeLayout();
    },
    
    dispose : function() {
        this._disposeHandlers();
        
        this._disposeBoundControl();
        
        if(this._enableHandleAnimation && this._handleAnimation) {
            this._handleAnimation.dispose();
        }
                
        Sys.Extended.UI.SliderBehavior.callBaseMethod(this, 'dispose');
    },
        
    _initializeLayout : function() {
        this._railElement = document.createElement('DIV');
        this._railElement.id = this.get_id() + '_railElement';
        
        this._railElement.tabIndex = -1;
        
        this._railElement.innerHTML = '<div></div>';
        this._handle = this._railElement.childNodes[0];
        this._handle.style.overflow = 'hidden';
        this._handle.style.position = 'absolute'; 

        if(Sys.Browser.agent == Sys.Browser.Opera) {
            this._handle.style.left = '0px';
            this._handle.style.top = '0px';
        }
        
        var textBoxElement = this.get_element();
        var textBoxElementBounds = $common.getBounds(textBoxElement);
        textBoxElement.parentNode.insertBefore(this._railElement, textBoxElement);
        
        this._isHorizontal = (this._orientation == Sys.Extended.UI.SliderOrientation.Horizontal); 
        
        var defaultRailCssClass = (this._isHorizontal) ? 'ajax__slider_h_rail' : 'ajax__slider_v_rail'; 
        var defaultHandleCssClass = (this._isHorizontal) ? 'ajax__slider_h_handle' : 'ajax__slider_v_handle';
        var defaultHandleImageUrl = (this._isHorizontal) ? '<%= WebResource("Slider.Images.slider_h_handle.gif") %>'
            : '<%= WebResource("Slider.Images.slider_v_handle.gif") %>';
            
        this._railElement.className = (this._railCssClass) ? this._railCssClass : defaultRailCssClass; 
        this._handle.className = (this._handleCssClass) ? this._handleCssClass : defaultHandleCssClass;
        if(!this._handleImageUrl) this._handleImageUrl = defaultHandleImageUrl;
        
        if (this._isHorizontal) {
            if(this._length) this._railElement.style.width =  this._length;
        } 
        else {
            if(this._length) this._railElement.style.height =  this._length;
        }
        
        this._loadHandleImage();
        
        this._enforceTextBoxElementPositioning();

        this._hideTextBoxElement();
        
        this._initializeSlider();
    },
    
    _enforceTextBoxElementPositioning : function() {
        var tbPosition = 
            {
                position: this.get_element().style.position,
                top: this.get_element().style.top,
                right: this.get_element().style.right,
                bottom: this.get_element().style.bottom,
                left: this.get_element().style.left
            };
        
        if(tbPosition.position != '') {
           this._railElement.style.position = tbPosition.position;
        }
        if(tbPosition.top != '') {
            this._railElement.style.top = tbPosition.top;
        }
        if(tbPosition.right != '') {
           this._railElement.style.right = tbPosition.right;
        }
        if(tbPosition.bottom != '') {
           this._railElement.style.bottom = tbPosition.bottom;
        }
        if(tbPosition.left != '') {
            this._railElement.style.left = tbPosition.left;
        }
    },

    _hideTextBoxElement: function() {
        var textBoxElement = this.get_element();

        textBoxElement.readOnly = true;

        var dimension = '0px';

        if (Sys.Browser.agent == Sys.Browser.Safari) {
            dimension = '1px';
        }

        textBoxElement.style.width = dimension;
        textBoxElement.style.height = dimension;
        textBoxElement.style.border = '0px';
        textBoxElement.style.padding = '0px';
        textBoxElement.style.margin = '0px';
        textBoxElement.style.fontSize = '1px';
        textBoxElement.style.lineHeight = '1px';
        textBoxElement.style.outline = '0';

        textBoxElement.style.position = 'absolute';
    },
    
    _loadHandleImage : function() {
        this._handleImage = document.createElement('IMG');
        this._handleImage.id = this.get_id() + '_handleImage';
        this._handle.appendChild(this._handleImage);
        this._handleImage.src = this._handleImageUrl;
    },
       
    _initializeSlider : function() {
        this._initializeBoundControl();
                
        var _elementValue;
        try {
            _elementValue = parseFloat(this.get_element().value);
        } catch(ex) {
            _elementValue = Number.NaN;
        }
        
        this.set_Value(_elementValue);
        
        this._setHandleOffset(this._value);
                
        this._initializeDragHandle();
                                        
        Sys.Extended.UI.SliderDragDropManagerInternal.registerDropTarget(this);
        
        this._initializeHandlers();
                
        this._initializeHandleAnimation();
                        
        this._isInitializedInternal = true;
        
        this._raiseEvent('sliderInitialized');
    },
    
    _initializeBoundControl : function() {
        if(this._boundControl) {
            var isInputElement = this._boundControl.nodeName == 'INPUT';
            
            if(isInputElement) {
                this._boundControlChangeHandler = Function.createDelegate(this, this._onBoundControlChange);
                this._boundControlKeyPressHandler = Function.createDelegate(this, this._onBoundControlKeyPress);
                
                $addHandler(this._boundControl, 'change', this._boundControlChangeHandler);
                $addHandler(this._boundControl, 'keypress', this._boundControlKeyPressHandler);
            }
        }
    },
    
    _disposeBoundControl : function() {
        if(this._boundControl) {;
            var isInputElement = this._boundControl.nodeName == 'INPUT';
            
            if(isInputElement) {
                $removeHandler(this._boundControl, 'change', this._boundControlChangeHandler);
                $removeHandler(this._boundControl, 'keypress', this._boundControlKeyPressHandler);
            }
        }
    },
    
    _onBoundControlChange : function(evt) {
        this._animationPending = true;
        this._setValueFromBoundControl();
    },
    
    _onBoundControlKeyPress : function(evt) {
        if(evt.charCode == 13) {
            this._animationPending = true;
            this._setValueFromBoundControl();
            evt.preventDefault();
        }
    },
    
    _setValueFromBoundControl : function() {
        this._isUpdatingInternal = true;
        
        if(this._boundControlID) {
            this._calcValue($get(this._boundControlID).value);
        }
        
        this._isUpdatingInternal = false;
    },
   
    _initializeHandleAnimation : function() {
        if(this._steps > 0) {
            this._enableHandleAnimation = false;
            return;
        }
        
        if(this._enableHandleAnimation) {
            this._handleAnimation = new Sys.Extended.UI.Animation.LengthAnimation(
                    this._handle, this._handleAnimationDuration, 100, 'style');
        }
    },
    
    _ensureBinding : function() {
        if(this._boundControl) {
            var value = this._value;
            
            if(value >= this._minimum || value <= this._maximum) {
                var isInputElement = this._boundControl.nodeName == 'INPUT';
                
                if(isInputElement) {
                    this._boundControl.value = value;
                }
                else if(this._boundControl) {
                    this._boundControl.innerHTML = value;
                }
            }
        }
    },
        
    _getBoundsInternal : function(element) {
        var bounds = $common.getBounds(element);
        
        function hasSize() { 
            return bounds.width > 0 && bounds.height > 0;
        }
        
        if(!hasSize()) {
            bounds.width = parseInt($common.getCurrentStyle(element, 'width'));
            bounds.height = parseInt($common.getCurrentStyle(element, 'height'));
            
            if(!hasSize()) {
                var tempNode = element.cloneNode(true);
                tempNode.visibility = 'hidden';
                document.body.appendChild(tempNode);
                
                bounds.width = parseInt($common.getCurrentStyle(tempNode, 'width'));
                bounds.height = parseInt($common.getCurrentStyle(tempNode, 'height'));
                document.body.removeChild(tempNode);

                if(!hasSize()) {
                    throw Error.argument('element size', Sys.Extended.UI.Resources.Slider_NoSizeProvided);
                }
            }
        }

        if(this._orientation == Sys.Extended.UI.SliderOrientation.Vertical) {
             bounds = { x : bounds.y, 
                        y : bounds.x, 
                        height : bounds.width, 
                        width : bounds.height, 
                        right : bounds.right,
                        bottom : bounds.bottom,
                        location : {x:bounds.y, y:bounds.x},
                        size : {width:bounds.height, height:bounds.width}
                      };
        }
        
        return bounds;
    },
    
    _getRailBounds : function() {
        var bounds = this._getBoundsInternal(this._railElement);
        
        return bounds;
    },
    
    _getHandleBounds : function() {
        return this._getBoundsInternal(this._handle);
    },
    
    _initializeDragHandle : function() {
        var dh = this._dragHandle = document.createElement('DIV');
        
        dh.style.position = 'absolute';
        dh.style.width = '1px';
        dh.style.height = '1px';
        dh.style.overflow = 'hidden';
        dh.style.zIndex = '999';
        dh.style.background = 'none';
        
        document.body.appendChild(this._dragHandle);
    },
    
    _resetDragHandle : function() {
        var handleBounds = $common.getBounds(this._handle);
        
        $common.setLocation(this._dragHandle, {x:handleBounds.x, y:handleBounds.y});
    },
    
    _initializeHandlers : function() {
        this._selectstartHandler = Function.createDelegate(this, this._onSelectStart);
        this._mouseupHandler = Function.createDelegate(this, this._onMouseUp);

        this._keyDownHandler = Function.createDelegate(this, this._onKeyDown);
        
        $addHandler(document, 'mouseup', this._mouseupHandler);

        $addHandler(this.get_element(), 'keydown', this._keyDownHandler);
                   
        $addHandlers(this._handle, 
            {
                'mousedown': this._onMouseDown,
                'dragstart': this._IEDragDropHandler,
                'drag': this._IEDragDropHandler,
                'dragend': this._IEDragDropHandler
            },
            this);
            
        $addHandlers(this._railElement,
            {
                'click': this._onRailClick
            },
            this);
    },
    
    _disposeHandlers : function() {
        $clearHandlers(this._handle);
        $clearHandlers(this._railElement);

        $removeHandler(this.get_element(), 'keydown', this._keyDownHandler);

        $removeHandler(document, 'mouseup', this._mouseupHandler);

        this._keyDownHandler = null;
        this._mouseupHandler = null;
        this._selectstartHandler = null;
    },
    
    startDragDrop : function(dragVisual) {
        this._resetDragHandle();
        
        Sys.Extended.UI.SliderDragDropManagerInternal.startDragDrop(this, dragVisual, null);
    },
    
    _onMouseDown : function(evt) {
        window._event = evt;        
        evt.preventDefault();
        
        if(!Sys.Extended.UI.SliderBehavior.DropPending) {
            Sys.Extended.UI.SliderBehavior.DropPending = this;
            
            $addHandler(document, 'selectstart', this._selectstartHandler);
            this._selectstartPending = true;
            
            this.startDragDrop(this._dragHandle);
        }
    },
    
    _onMouseUp : function(evt) {
        var srcElement = evt.target;
        
        if(Sys.Extended.UI.SliderBehavior.DropPending == this) {
            Sys.Extended.UI.SliderBehavior.DropPending = null;
            
            if(this._selectstartPending) {
                $removeHandler(document, 'selectstart', this._selectstartHandler);
            }
        }
    },

    _onKeyDown: function(e) {
        if (this._enableKeyboard) {
            var evt = new Sys.UI.DomEvent(e);

            switch (evt.keyCode || evt.rawEvent.keyCode) {
                case Sys.UI.Key.up:
                case Sys.UI.Key.left:
                    this._handleSlide(true);
                    evt.preventDefault();
                    return;
                case Sys.UI.Key.down:
                case Sys.UI.Key.right:
                    this._handleSlide(false);
                    evt.preventDefault();
                    return false;
                default:
                    return false;
            }
        }
    },

    _handleSlide: function(decrement) {
        this._animationPending = true;

        this._isUpdatingInternal = true;

        var currentValue = this.get_Value();
        var increment;

        if (this._steps > 0) {
            var extent = this._maximum - this._minimum;

            var delta = (extent / (this._steps - 1)).toFixed(this._decimals);

            increment = delta;
        } else {
            increment = this._decimals == 0 ? 1 : 1 / Math.pow(10, this._decimals);
        }

        if (decrement) {
            increment = 0 - increment
        }

        this._calcValue(parseFloat(currentValue) + parseFloat(increment));

        this._isUpdatingInternal = false;

        this._fireTextBoxChangeEvent();
    },
    
    _onRailClick : function(evt) {
        if(evt.target == this._railElement) {
            this._animationPending = true;
            this._onRailClicked(evt);    
        }
    },
    
    _IEDragDropHandler : function(evt) {
        evt.preventDefault();
    },
    
    _onSelectStart : function(evt) {
        evt.preventDefault();
    },
    
    _calcValue : function(value, mouseOffset) {
        var val;
        
        if(value != null) {
            if(!Number.isInstanceOfType(value)) {
                try {
                    value = parseFloat(value);
                } catch(ex) {
                    value = Number.NaN;
                }
            }

            if(isNaN(value)) {
                value = this._minimum;
            }
            
            val = (value < this._minimum) ? this._minimum
                : (value > this._maximum) ? this._maximum
                : value;
        }
        else {                
            var _minimum = this._minimum;
            var _maximum = this._maximum;
            var handleBounds = this._getHandleBounds();
            var sliderBounds = this._getRailBounds();        
            var handleX = (mouseOffset) ? mouseOffset - handleBounds.width / 2 
                                        : handleBounds.x - sliderBounds.x;
            var extent = sliderBounds.width - handleBounds.width;
            var percent = handleX / extent;
            
            val = (handleX == 0) ? _minimum
                : (handleX == (sliderBounds.width - handleBounds.width)) ? _maximum
                : _minimum + percent * (_maximum - _minimum);
        }
        
        if(this._steps > 0) {
            val = this._getNearestStepValue(val);
        }
        
        val = (val < this._minimum) ? this._minimum
            : (val > this._maximum) ? this._maximum
            : val;
                
        this._isUpdatingInternal = true;
        this.set_Value(val);
        this._isUpdatingInternal = false;
        
        return val;
    },
       
    _setHandleOffset : function(value, playHandleAnimation) {
        var _minimum = this._minimum;
        var _maximum = this._maximum;
        var handleBounds = this._getHandleBounds();
        var sliderBounds = this._getRailBounds();
        
        var extent = _maximum - _minimum;
        var fraction = (value - _minimum) / extent;
        var hypOffset = Math.round(fraction * (sliderBounds.width - handleBounds.width));
        
        var offset = (value == _minimum) ? 0
                   : (value == _maximum) ? (sliderBounds.width - handleBounds.width)
                   : hypOffset;
        
        if(playHandleAnimation) {
            this._handleAnimation.set_startValue(handleBounds.x - sliderBounds.x);
            this._handleAnimation.set_endValue(offset);
            this._handleAnimation.set_propertyKey((this._isHorizontal) ? 'left' : 'top');
            this._handleAnimation.play();
            
            this._animationPending = false;
        }
        else {
            if(this._isHorizontal) {
                this._handle.style.left = offset + 'px';
            }
            else {
                this._handle.style.top = offset + 'px';
            }
        }
    },
 
    _getNearestStepValue : function(value) {
        if(this._steps == 0) return value;
        
        var extent = this._maximum - this._minimum;
        if (extent == 0) return value;
        
        var delta = extent / (this._steps - 1);

        return Math.round(value / delta) * delta;
    },
    
    _onHandleReleased : function() {
        if(this._raiseChangeOnlyOnMouseUp) {
            this._fireTextBoxChangeEvent();
        }
        
        this._raiseEvent('slideEnd');
    },
    
    _onRailClicked : function(evt) {
        var handleBounds = this._getHandleBounds();
        var sliderBounds = this._getRailBounds();
        var offset = (this._isHorizontal) ? evt.offsetX : evt.offsetY;
        var minOffset = handleBounds.width / 2;
        var maxOffset = sliderBounds.width - minOffset;
        
        offset = (offset < minOffset) ? minOffset 
               : (offset > maxOffset) ? maxOffset
               : offset;

        this._calcValue(null, offset, true);

        this.get_element().focus();
        
        this._fireTextBoxChangeEvent();
    },
    
    _fireTextBoxChangeEvent : function() {
        if (document.createEvent) {
            var onchangeEvent = document.createEvent('HTMLEvents');
            onchangeEvent.initEvent('change', true, false);
            
            this.get_element().dispatchEvent(onchangeEvent);
        } 
        else if(document.createEventObject) {
            this.get_element().fireEvent('onchange');
        }
    },
        
    get_dragDataType : function() {        
        return 'HTML';
    },
    
    getDragData : function() {
        return this._handle;
    },
    
    get_dragMode : function() {       
        return Sys.Extended.UI.DragMode.Move;
    },

    onDragStart : function() {
        this.get_element().focus();
        
        this._resetDragHandle();
        this._raiseEvent('slideStart');
    },
    
    onDrag : function() {
        var dragHandleBounds = this._getBoundsInternal(this._dragHandle);
        var handleBounds = this._getHandleBounds();
        var sliderBounds = this._getRailBounds();
        
        var handlePosition; 
        if(this._isHorizontal) {
            handlePosition = { x:dragHandleBounds.x - sliderBounds.x, y:0 };
        }
        else {
            handlePosition = { y:dragHandleBounds.x - sliderBounds.x, x:0 };
        }
        
        $common.setLocation(this._handle, handlePosition);
        
        this._calcValue(null, null);
        
        if(this._steps > 1) {
            this._setHandleOffset(this.get_Value(), false);
        }
    },
        
    onDragEnd : function() {
        this._onHandleReleased();
    },
    
    get_dropTargetElement : function() {
        return document.body;
    },
        
    canDrop : function(dragMode, dataType) {
        return dataType == 'HTML';
    },
    
    drop : Function.emptyMethod,
    
    onDragEnterTarget : Function.emptyMethod,
    
    onDragLeaveTarget : Function.emptyMethod,
    
    onDragInTarget : Function.emptyMethod,
    
    add_sliderInitialized : function(handler) {
        this.get_events().addHandler('sliderInitialized', handler);
    },
    
    remove_sliderInitialized : function(handler) {
        this.get_events().removeHandler('sliderInitialized', handler);
    },
    
    add_valueChanged : function(handler) {
        this.get_events().addHandler('valueChanged', handler);
    },
    
    remove_valueChanged : function(handler) {
        this.get_events().removeHandler('valueChanged', handler);
    },
    
    add_slideStart : function(handler) {
        this.get_events().addHandler('slideStart', handler);
    },
    
    remove_slideStart : function(handler) {
        this.get_events().removeHandler('slideStart', handler);
    },
    
    add_slideEnd : function(handler) {
        this.get_events().addHandler('slideEnd', handler);
    },
    
    remove_slideEnd : function(handler) {
        this.get_events().removeHandler('slideEnd', handler);
    },
    
    _raiseEvent : function(eventName, eventArgs) {
        var handler = this.get_events().getHandler(eventName);
        if (handler) {
         if (!eventArgs) {
            eventArgs = Sys.EventArgs.Empty;
         }
         handler(this, eventArgs);
        }
    },
    
    get_Value : function() {
        return this._value;
    },
    
    set_Value : function(value) {
        var oldValue = this._value;
        var newValue = value;
        
        if(!this._isUpdatingInternal) {
            newValue = this._calcValue(value);
        }
        
        this.get_element().value = this._value = newValue.toFixed(this._decimals);

        this._ensureBinding();
                
        if(!Number.isInstanceOfType(this._value)) {
            try {
                this._value = parseFloat(this._value);
            } catch(ex) {
                this._value = Number.NaN;
            }
        }
        
        if(this._tooltipText) {
            this._handle.alt = this._handle.title = 
                String.format(this._tooltipText, this._value);
        }
        
        if(this._isInitializedInternal) {
            this._setHandleOffset(newValue, this._enableHandleAnimation && this._animationPending);
                
            if(this._isUpdatingInternal) {
                if(!this._raiseChangeOnlyOnMouseUp) {
                    this._fireTextBoxChangeEvent();
                }
            }
            
            if(this._value != oldValue) {
                this._raiseEvent('valueChanged');
            }
        }
    },

    get_RailCssClass : function() {
        return this._railCssClass;
    },
    
    set_RailCssClass : function(value) {
        this._railCssClass = value;
    },  
    
    get_HandleImageUrl : function() {
        return this._handleImageUrl;
    },
    
    set_HandleImageUrl : function(value) {
        this._handleImageUrl = value;
    },
    
    get_HandleCssClass : function() {
        return this._handleCssClass;
    },
    
    set_HandleCssClass : function(value) {
        this._handleCssClass = value;
    },
    
    get_Minimum : function() {
        return this._minimum;
    },
    
    set_Minimum : function(value) {
        this._minimum = value;
    }, 
    
    get_Maximum : function() {
        return this._maximum;
    },
    
    set_Maximum : function(value) {
        this._maximum = value;
    },
    
    get_Orientation : function() {
        return this._orientation;
    },
    
    set_Orientation : function(value) {
        this._orientation = value;
    },
    
    get_Steps : function() {
        return this._steps;
    },
    
    set_Steps : function(value) {
        this._steps = Math.abs(value);
        this._steps = (this._steps == 1) ? 2 : this._steps;
    },
    
    get_Decimals : function() {
        return this._decimals;
    },
    
    set_Decimals : function(value) {
        this._decimals = Math.abs(value);
    },
    
    get_EnableHandleAnimation : function() {
        return this._enableHandleAnimation;
    },
    
    set_EnableHandleAnimation : function(value) {
        this._enableHandleAnimation = value;
    },
    
    get_HandleAnimationDuration : function() {
        return this._handleAnimationDuration;
    },
    
    set_HandleAnimationDuration : function(value) {
        this._handleAnimationDuration = value;
    }, 
      
    get_BoundControlID : function() {
        return this._boundControlID;
    },
    
    set_BoundControlID : function(value) {
        this._boundControlID = value;
        if(this._boundControlID) {
            this._boundControl = $get(this._boundControlID);
        } else {
            this._boundControl = null;
        }
    },
    
    get_Length : function() {
        return this._length;
    },
    
    set_Length : function(value) {
        this._length = value + 'px';
    },
    
    get_SliderInitialized : function() {
        return this._isInitializedInternal;
    },
    
    get_RaiseChangeOnlyOnMouseUp : function() {
        return this._raiseChangeOnlyOnMouseUp;
    },
    
    set_RaiseChangeOnlyOnMouseUp : function(value) {
        this._raiseChangeOnlyOnMouseUp = value;
    },
    
    get_TooltipText : function() {
        return this._tooltipText;
    },
    
    set_TooltipText : function(value) {
        this._tooltipText = value;
    },

    get_enableKeyboard: function() {
        /// <value type="Boolean">
        /// Determines if the slider will respond to arrow keys when it has focus.
        /// </value>

        return this._enableKeyboard;
    },
    set_enableKeyboard: function(value) {
        /// <value type="Boolean">
        /// Determines if the slider will respond to arrow keys when it has focus.
        /// </value>

        if (value !== this._enableKeyboard) {
            this._enableKeyboard = value;
            this.raisePropertyChanged('enableKeyboard');
        }
    },
        
    getClientState : function() {
        var value = Sys.Extended.UI.SliderBehavior.callBaseMethod(this, 'get_ClientState');                
        if (value == '') value = null;
        return value;
    },
     
    setClientState : function(value) {
        return Sys.Extended.UI.SliderBehavior.callBaseMethod(this, 'set_ClientState',[value]);                
    }
}

Sys.Extended.UI.SliderBehavior.DropPending = null; // Global, used to work around an issue when using the GenericDragDropManager in IE.

Sys.Extended.UI.SliderBehavior.registerClass('Sys.Extended.UI.SliderBehavior', Sys.Extended.UI.BehaviorBase, Sys.Extended.UI.IDragSource, Sys.Extended.UI.IDropTarget);

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedBase", "ExtendedDragDrop", "ExendedAnimations"], execute);
}
else {
    execute();
}

})();
<$// (c) 2010 CodePlex Foundation
Type.registerNamespace('Sys.Extended.UI.Seadragon');

Sys.Extended.UI.Seadragon.Viewport = function(containerSize, contentSize, config) {
	this.zoomPoint = null;
	this.config = config;
	this._containerSize = containerSize;
	this._contentSize = contentSize;
	this._contentAspect = contentSize.x / contentSize.y;
	this._contentHeight = contentSize.y / contentSize.x;
	this._centerSpringX = new Seadragon.Spring(0, this.config);
	this._centerSpringY = new Seadragon.Spring(0, this.config);
	this._zoomSpring = new Seadragon.Spring(1, this.config);
	this._homeBounds = new Sys.Extended.UI.Seadragon.Rect(0, 0, 1, this._contentHeight);
	this.goHome(true);
	this.update();
}
Sys.Extended.UI.Seadragon.Viewport.prototype = {
	_getHomeZoom: function() {
		var aspectFactor = this._contentAspect / this.getAspectRatio();
		return (aspectFactor >= 1) ? 1 : aspectFactor;
	},

	_getMinZoom: function() {
		var homeZoom = this._getHomeZoom();

		if (this.config.minZoomDimension) {
			var zoom = (this._contentSize.x <= this._contentSize.y) ?
                this.config.minZoomDimension / this._containerSize.x :
                this.config.minZoomDimension / (this._containerSize.x * this._contentHeight);
		} else {
			var zoom = this.config.minZoomImageRatio * homeZoom;
		}

		return Math.min(zoom, homeZoom);
	},

	_getMaxZoom: function() {
		var zoom = this._contentSize.x * this.config.maxZoomPixelRatio / this._containerSize.x;
		return Math.max(zoom, this._getHomeZoom());
	},
	getAspectRatio: function() {
		return this._containerSize.x / this._containerSize.y;
	},
	getContainerSize: function() {
		return new Sys.Extended.UI.Seadragon.Point(this._containerSize.x, this._containerSize.y);
	},

	getBounds: function(current) {
		var center = this.getCenter(current);
		var width = 1.0 / this.getZoom(current);
		var height = width / this.getAspectRatio();

		return new Sys.Extended.UI.Seadragon.Rect(center.x - width / 2.0, center.y - height / 2.0,
            width, height);
	},

	getCenter: function(current) {
		var centerCurrent = new Sys.Extended.UI.Seadragon.Point(this._centerSpringX.getCurrent(),
                this._centerSpringY.getCurrent());
		var centerTarget = new Sys.Extended.UI.Seadragon.Point(this._centerSpringX.getTarget(),
                this._centerSpringY.getTarget());

		if (current) {
			return centerCurrent;
		} else if (!this.zoomPoint) {
			return centerTarget;
		}

		var oldZoomPixel = this.pixelFromPoint(this.zoomPoint, true);

		var zoom = this.getZoom();
		var width = 1.0 / zoom;
		var height = width / this.getAspectRatio();
		var bounds = new Sys.Extended.UI.Seadragon.Rect(centerCurrent.x - width / 2.0,
                centerCurrent.y - height / 2.0, width, height);

		var newZoomPixel = this.zoomPoint.minus(bounds.getTopLeft()).times(this._containerSize.x / bounds.width);
		var deltaZoomPixels = newZoomPixel.minus(oldZoomPixel);
		var deltaZoomPoints = deltaZoomPixels.divide(this._containerSize.x * zoom);

		return centerTarget.plus(deltaZoomPoints);
	},

	getZoom: function(current) {
		if (current) {
			return this._zoomSpring.getCurrent();
		} else {
			return this._zoomSpring.getTarget();
		}
	},


	applyConstraints: function(immediately) {
		var actualZoom = this.getZoom();
		var constrainedZoom = Math.max(Math.min(actualZoom, this._getMaxZoom()), this._getMinZoom());
		if (actualZoom != constrainedZoom) {
			this.zoomTo(constrainedZoom, this.zoomPoint, immediately);
		}

		var bounds = this.getBounds();
		var visibilityRatio = this.config.visibilityRatio;

		var horThres = visibilityRatio * bounds.width;
		var verThres = visibilityRatio * bounds.height;

		var left = bounds.x + bounds.width;
		var right = 1 - bounds.x;
		var top = bounds.y + bounds.height;
		var bottom = this._contentHeight - bounds.y;

		var dx = 0;
		if (this.config.wrapHorizontal) {
		} else if (left < horThres) {
			dx = horThres - left;
		} else if (right < horThres) {
			dx = right - horThres;
		}

		var dy = 0;
		if (this.config.wrapVertical) {
		} else if (top < verThres) {
			dy = verThres - top;
		} else if (bottom < verThres) {
			dy = bottom - verThres;
		}

		if (dx || dy) {
			bounds.x += dx;
			bounds.y += dy;
			this.fitBounds(bounds, immediately);
		}
	},

	ensureVisible: function(immediately) {
		this.applyConstraints(immediately);
	},

	fitBounds: function(bounds, immediately) {
		var aspect = this.getAspectRatio();
		var center = bounds.getCenter();

		var newBounds = new Sys.Extended.UI.Seadragon.Rect(bounds.x, bounds.y, bounds.width, bounds.height);
		if (newBounds.getAspectRatio() >= aspect) {
			newBounds.height = bounds.width / aspect;
			newBounds.y = center.y - newBounds.height / 2;
		} else {
			newBounds.width = bounds.height * aspect;
			newBounds.x = center.x - newBounds.width / 2;
		}

		this.panTo(this.getCenter(true), true);
		this.zoomTo(this.getZoom(true), null, true);

		var oldBounds = this.getBounds();
		var oldZoom = this.getZoom();

		var newZoom = 1.0 / newBounds.width;
		if (newZoom == oldZoom || newBounds.width == oldBounds.width) {
			this.panTo(center, immediately);
			return;
		}

		var refPoint = oldBounds.getTopLeft().times(this._containerSize.x / oldBounds.width).minus(
                newBounds.getTopLeft().times(this._containerSize.x / newBounds.width)).divide(
                this._containerSize.x / oldBounds.width - this._containerSize.x / newBounds.width);


		this.zoomTo(newZoom, refPoint, immediately);
	},

	goHome: function(immediately) {
		var center = this.getCenter();

		if (this.config.wrapHorizontal) {
			center.x = (1 + (center.x % 1)) % 1;
			this._centerSpringX.resetTo(center.x);
			this._centerSpringX.update();
		}

		if (this.config.wrapVertical) {
			center.y = (this._contentHeight + (center.y % this._contentHeight)) % this._contentHeight;
			this._centerSpringY.resetTo(center.y);
			this._centerSpringY.update();
		}

		this.fitBounds(this._homeBounds, immediately);
	},

	panBy: function(delta, immediately) {
		var center = new Sys.Extended.UI.Seadragon.Point(this._centerSpringX.getTarget(),
                this._centerSpringY.getTarget());
		this.panTo(center.plus(delta), immediately);
	},

	panTo: function(center, immediately) {
		if (immediately) {
			this._centerSpringX.resetTo(center.x);
			this._centerSpringY.resetTo(center.y);
		} else {
			this._centerSpringX.springTo(center.x);
			this._centerSpringY.springTo(center.y);
		}
	},

	zoomBy: function(factor, refPoint, immediately) {
		this.zoomTo(this._zoomSpring.getTarget() * factor, refPoint, immediately);
	},

	zoomTo: function(zoom, refPoint, immediately) {

		if (immediately) {
			this._zoomSpring.resetTo(zoom);
		} else {		
			this._zoomSpring.springTo(zoom);
		}

		this.zoomPoint = refPoint instanceof Sys.Extended.UI.Seadragon.Point ? refPoint : null;
	},

	resize: function(newContainerSize, maintain) {
		var oldBounds = this.getBounds();
		var newBounds = oldBounds;
		var widthDeltaFactor = newContainerSize.x / this._containerSize.x;

		this._containerSize = new Sys.Extended.UI.Seadragon.Point(newContainerSize.x, newContainerSize.y);

		if (maintain) {
			newBounds.width = oldBounds.width * widthDeltaFactor;
			newBounds.height = newBounds.width / this.getAspectRatio();
		}

		this.fitBounds(newBounds, true);
	},

	update: function() {
		var oldCenterX = this._centerSpringX.getCurrent();
		var oldCenterY = this._centerSpringY.getCurrent();
		var oldZoom = this._zoomSpring.getCurrent();

		if (this.zoomPoint) {
			var oldZoomPixel = this.pixelFromPoint(this.zoomPoint, true);
		}

		this._zoomSpring.update();

		if (this.zoomPoint && this._zoomSpring.getCurrent() != oldZoom) {
			var newZoomPixel = this.pixelFromPoint(this.zoomPoint, true);
			var deltaZoomPixels = newZoomPixel.minus(oldZoomPixel);
			var deltaZoomPoints = this.deltaPointsFromPixels(deltaZoomPixels, true);

			this._centerSpringX.shiftBy(deltaZoomPoints.x);
			this._centerSpringY.shiftBy(deltaZoomPoints.y);
		} else {
			this.zoomPoint = null;
		}

		this._centerSpringX.update();
		this._centerSpringY.update();

		return this._centerSpringX.getCurrent() != oldCenterX ||
                this._centerSpringY.getCurrent() != oldCenterY ||
                this._zoomSpring.getCurrent() != oldZoom;
	},


	deltaPixelsFromPoints: function(deltaPoints, current) {
		return deltaPoints.times(this._containerSize.x * this.getZoom(current));
	},

	deltaPointsFromPixels: function(deltaPixels, current) {
		return deltaPixels.divide(this._containerSize.x * this.getZoom(current));
	},

	pixelFromPoint: function(point, current) {
		var bounds = this.getBounds(current);
		return point.minus(bounds.getTopLeft()).times(this._containerSize.x / bounds.width);
	},

	pointFromPixel: function(pixel, current) {
		var bounds = this.getBounds(current);
		return pixel.divide(this._containerSize.x / bounds.width).plus(bounds.getTopLeft());
	}
}
Sys.Extended.UI.Seadragon.Viewport.registerClass('Sys.Extended.UI.Seadragon.Viewport', null, Sys.IDisposable);

E// (c) 2010 CodePlex Foundation
Type.registerNamespace("Sys.Extended.UI.Seadragon");Type.registerNamespace("Seadragon");Seadragon.Spring=Sys.Extended.UI.Seadragon.Spring=function(b,c){var a=this;a._currentValue=typeof b=="number"?b:0;a._startValue=a._currentValue;a._targetValue=a._currentValue;a.config=c;a._currentTime=(new Date).getTime();a._startTime=a._currentTime;a._targetTime=a._currentTime};Sys.Extended.UI.Seadragon.Spring.prototype={_transform:function(b){var a=this.config.springStiffness;return(1-Math.exp(-b*a))/(1-Math.exp(-a))},getCurrent:function(){return this._currentValue},getTarget:function(){return this._targetValue},resetTo:function(b){var a=this;a._targetValue=b;a._targetTime=a._currentTime;a._startValue=a._targetValue;a._startTime=a._targetTime},springTo:function(b){var a=this;a._startValue=a._currentValue;a._startTime=a._currentTime;a._targetValue=b;a._targetTime=a._startTime+1e3*a.config.animationTime},shiftBy:function(a){this._startValue+=a;this._targetValue+=a},update:function(){var a=this;a._currentTime=(new Date).getTime();a._currentValue=a._currentTime>=a._targetTime?a._targetValue:a._startValue+(a._targetValue-a._startValue)*a._transform((a._currentTime-a._startTime)/(a._targetTime-a._startTime))}};Sys.Extended.UI.Seadragon.Spring.registerClass("Sys.Extended.UI.Seadragon.Spring",null,Sys.IDisposable);AS// (c) 2010 CodePlex Foundation
if(!window.SIGNAL)window.SIGNAL="----seadragon----";Type.registerNamespace("Sys.Extended.UI.Seadragon");Type.registerNamespace("Seadragon");Sys.Extended.UI.Seadragon.ControlAnchor=function(){throw Error.invalidOperation();};Sys.Extended.UI.Seadragon.ControlAnchor.prototype={NONE:0,TOP_LEFT:1,TOP_RIGHT:2,BOTTOM_RIGHT:3,BOTTOM_LEFT:4};Sys.Extended.UI.Seadragon.ControlAnchor.registerEnum("Sys.Extended.UI.Seadragon.ControlAnchor",false);Seadragon.ControlAnchor=Sys.Extended.UI.Seadragon.ControlAnchor;Sys.Extended.UI.Seadragon.OverlayPlacement=function(){throw Error.invalidOperation();};Sys.Extended.UI.Seadragon.OverlayPlacement.prototype={CENTER:0,TOP_LEFT:1,TOP:2,TOP_RIGHT:3,RIGHT:4,BOTTOM_RIGHT:5,BOTTOM:6,BOTTOM_LEFT:7,LEFT:8};Sys.Extended.UI.Seadragon.OverlayPlacement.registerEnum("Sys.Extended.UI.Seadragon.OverlayPlacement",false);Seadragon.OverlayPlacement=Sys.Extended.UI.Seadragon.OverlayPlacement;Sys.Extended.UI.Seadragon.NavControl=function(c){var b=null,a=this;a._group=b;a._zooming=false;a._zoomFactor=b;a._lastZoomTime=b;a._viewer=c;a.config=a._viewer.config;a.elmt=b;a.initialize()};Sys.Extended.UI.Seadragon.NavControl.prototype={initialize:function(){var c=null,a=this,f=Function.createDelegate(a,a._beginZoomingIn),d=Function.createDelegate(a,a._endZooming),h=Function.createDelegate(a,a._doSingleZoomIn),e=Function.createDelegate(a,a._beginZoomingOut),g=Function.createDelegate(a,a._doSingleZoomOut),j=Function.createDelegate(a,a._onHome),i=Function.createDelegate(a,a._onFullPage),b=a._viewer.config.navImages,n=$create(Sys.Extended.UI.Seadragon.Button,{config:a._viewer.config,tooltip:Seadragon.Strings.getString("Tooltips.ZoomIn"),srcRest:a._resolveUrl(b.zoomIn.REST),srcGroup:a._resolveUrl(b.zoomIn.GROUP),srcHover:a._resolveUrl(b.zoomIn.HOVER),srcDown:a._resolveUrl(b.zoomIn.DOWN)},{onPress:f,onRelease:d,onClick:h,onEnter:f,onExit:d},c,c),l=$create(Sys.Extended.UI.Seadragon.Button,{config:a._viewer.config,tooltip:Seadragon.Strings.getString("Tooltips.ZoomOut"),srcRest:a._resolveUrl(b.zoomOut.REST),srcGroup:a._resolveUrl(b.zoomOut.GROUP),srcHover:a._resolveUrl(b.zoomOut.HOVER),srcDown:a._resolveUrl(b.zoomOut.DOWN)},{onPress:e,onRelease:d,onClick:g,onEnter:e,onExit:d},c,c),m=$create(Sys.Extended.UI.Seadragon.Button,{config:a._viewer.config,tooltip:Seadragon.Strings.getString("Tooltips.Home"),srcRest:a._resolveUrl(b.home.REST),srcGroup:a._resolveUrl(b.home.GROUP),srcHover:a._resolveUrl(b.home.HOVER),srcDown:a._resolveUrl(b.home.DOWN)},{onRelease:j},c,c),k=$create(Sys.Extended.UI.Seadragon.Button,{config:a._viewer.config,tooltip:Seadragon.Strings.getString("Tooltips.FullPage"),srcRest:a._resolveUrl(b.fullpage.REST),srcGroup:a._resolveUrl(b.fullpage.GROUP),srcHover:a._resolveUrl(b.fullpage.HOVER),srcDown:a._resolveUrl(b.fullpage.DOWN)},{onRelease:i},c,c);a._group=$create(Sys.Extended.UI.Seadragon.ButtonGroup,{config:a._viewer.config,buttons:[n,l,m,k]},c,c,c);a.elmt=a._group.get_element();a.elmt[SIGNAL]=true;a._viewer.add_open(Function.createDelegate(a,a._lightUp))},dispose:function(){},_resolveUrl:function(a){return String.format("{1}",this._viewer.get_prefixUrl(),a)},_beginZoomingIn:function(){var a=this;a._lastZoomTime=(new Date).getTime();a._zoomFactor=a.config.zoomPerSecond;a._zooming=true;a._scheduleZoom()},_beginZoomingOut:function(){var a=this;a._lastZoomTime=(new Date).getTime();a._zoomFactor=1/a.config.zoomPerSecond;a._zooming=true;a._scheduleZoom()},_endZooming:function(){this._zooming=false},_scheduleZoom:function(){window.setTimeout(Function.createDelegate(this,this._doZoom),10)},_doZoom:function(){var a=this;if(a._zooming&&a._viewer.viewport){var b=(new Date).getTime(),d=b-a._lastZoomTime,c=Math.pow(a._zoomFactor,d/1e3);a._viewer.viewport.zoomBy(c);a._viewer.viewport.applyConstraints();a._lastZoomTime=b;a._scheduleZoom()}},_doSingleZoomIn:function(){var a=this;if(a._viewer.viewport){a._zooming=false;a._viewer.viewport.zoomBy(a.config.zoomPerClick/1);a._viewer.viewport.applyConstraints()}},_doSingleZoomOut:function(){var a=this;if(a._viewer.viewport){a._zooming=false;a._viewer.viewport.zoomBy(1/a.config.zoomPerClick);a._viewer.viewport.applyConstraints()}},_lightUp:function(){this._group.emulateEnter();this._group.emulateExit()},_onHome:function(){this._viewer.viewport&&this._viewer.viewport.goHome()},_onFullPage:function(){var a=this;a._viewer.setFullPage(!a._viewer.isFullPage());a._group.emulateExit();a._viewer.viewport&&a._viewer.viewport.applyConstraints()}};Sys.Extended.UI.Seadragon.NavControl.registerClass("Sys.Extended.UI.Seadragon.NavControl",null,Sys.IDisposable);Sys.Extended.UI.Seadragon.Control=function(d,c,b){var a=this;a.elmt=d;a.anchor=c;a.container=b;a.wrapper=Seadragon.Utils.makeNeutralElement("span");a.initialize()};Sys.Extended.UI.Seadragon.Control.prototype={initialize:function(){var a=this;a.wrapper=Seadragon.Utils.makeNeutralElement("span");a.wrapper.style.display="inline-block";a.wrapper.appendChild(a.elmt);if(a.anchor==Seadragon.ControlAnchor.NONE)a.wrapper.style.width=a.wrapper.style.height="100%";a.addToAnchor()},addToAnchor:function(){var a=this;if(a.anchor==Seadragon.ControlAnchor.TOP_RIGHT||a.anchor==Seadragon.ControlAnchor.BOTTOM_RIGHT)a.container.insertBefore(a.elmt,a.container.firstChild);else a.container.appendChild(a.elmt)},destroy:function(){var a=this;a.wrapper.removeChild(a.elmt);a.container.removeChild(a.wrapper)},isVisible:function(){return this.wrapper.style.display!="none"},setVisible:function(a){this.wrapper.style.display=a?"inline-block":"none"},setOpacity:function(a){if(this.elmt[SIGNAL]&&Seadragon.Utils.getBrowser()==Seadragon.Browser.IE)Seadragon.Utils.setElementOpacity(this.elmt,a,true);else Seadragon.Utils.setElementOpacity(this.wrapper,a,true)}};Sys.Extended.UI.Seadragon.Control.registerClass("Sys.Extended.UI.Seadragon.Control",null,Sys.IDisposable);Sys.Extended.UI.Seadragon.Viewer=function(c){var b=null,a=this;Sys.Extended.UI.Seadragon.Viewer.initializeBase(a,[c]);a.config=new Sys.Extended.UI.Seadragon.Config;a._prefixUrl=b;a._controls=[];a._customControls=b;a._overlays=[];a._overlayControls=b;a._container=b;a._canvas=b;a._controlsTL=b;a._controlsTR=b;a._controlsBR=b;a._controlsBL=b;a._bodyWidth=b;a._bodyHeight=b;a._bodyOverflow=b;a._docOverflow=b;a._fsBoundsDelta=b;a._prevContainerSize=b;a._lastOpenStartTime=0;a._lastOpenEndTime=0;a._animating=false;a._forceRedraw=false;a._mouseInside=false;a._xmlPath=b;a.source=b;a.drawer=b;a.viewport=b;a.profiler=b};Sys.Extended.UI.Seadragon.Viewer.prototype={initialize:function(){var n="absolute",b="0px",f="100%",d="div",a=this;Sys.Extended.UI.Seadragon.Viewer.callBaseMethod(a,"initialize");a._container=Seadragon.Utils.makeNeutralElement(d);a._canvas=Seadragon.Utils.makeNeutralElement(d);a._controlsTL=Seadragon.Utils.makeNeutralElement(d);a._controlsTR=Seadragon.Utils.makeNeutralElement(d);a._controlsBR=Seadragon.Utils.makeNeutralElement(d);a._controlsBL=Seadragon.Utils.makeNeutralElement(d);var g=new Seadragon.MouseTracker(a._canvas,a.config.clickTimeThreshold,a.config.clickDistThreshold),h=new Seadragon.MouseTracker(a._container,a.config.clickTimeThreshold,a.config.clickDistThreshold);a._bodyWidth=document.body.style.width;a._bodyHeight=document.body.style.height;a._bodyOverflow=document.body.style.overflow;a._docOverflow=document.documentElement.style.overflow;a._fsBoundsDelta=new Sys.Extended.UI.Seadragon.Point(1,1);var e=a._canvas.style,c=a._container.style,l=a._controlsTL.style,m=a._controlsTR.style,k=a._controlsBR.style,j=a._controlsBL.style;c.width=f;c.height=f;c.position="relative";c.left=b;c.top=b;c.textAlign="left";e.width=f;e.height=f;e.overflow="hidden";e.position=n;e.top=b;e.left=b;l.position=m.position=k.position=j.position=n;l.top=m.top=b;l.left=j.left=b;m.right=k.right=b;j.bottom=k.bottom=b;g.clickHandler=Function.createDelegate(a,a._onCanvasClick);g.dragHandler=Function.createDelegate(a,a._onCanvasDrag);g.releaseHandler=Function.createDelegate(a,a._onCanvasRelease);g.setTracking(true);if(a.get_showNavigationControl()){navControl=(new Sys.Extended.UI.Seadragon.NavControl(a)).elmt;navControl.style.marginRight="4px";navControl.style.marginBottom="4px";a.addControl(navControl,Sys.Extended.UI.Seadragon.ControlAnchor.BOTTOM_RIGHT)}for(var i=0;i<a._customControls.length;i++)a.addControl(a._customControls[i].id,a._customControls[i].anchor);h.enterHandler=Function.createDelegate(a,a._onContainerEnter);h.exitHandler=Function.createDelegate(a,a._onContainerExit);h.releaseHandler=Function.createDelegate(a,a._onContainerRelease);h.setTracking(true);window.setTimeout(Function.createDelegate(a,a._beginControlsAutoHide),1);a._container.appendChild(a._canvas);a._container.appendChild(a._controlsTL);a._container.appendChild(a._controlsTR);a._container.appendChild(a._controlsBR);a._container.appendChild(a._controlsBL);a.get_element().appendChild(a._container);a._xmlPath&&a.openDzi(a._xmlPath)},_raiseEvent:function(c,a){var b=this.get_events().getHandler(c);if(b){if(!a)a=Sys.EventArgs.Empty;b(this,a)}},_beginControlsAutoHide:function(){var a=this;if(!a.config.autoHideControls)return;a._controlsShouldFade=true;a._controlsFadeBeginTime=(new Date).getTime()+a._controlsFadeDelay;window.setTimeout(Function.createDelegate(a,a._scheduleControlsFade),a._controlsFadeDelay)},_scheduleControlsFade:function(){window.setTimeout(Function.createDelegate(this,this._updateControlsFade),20)},_updateControlsFade:function(){var b=this;if(b._controlsShouldFade){var d=(new Date).getTime(),e=d-b._controlsFadeBeginTime,a=1-e/b._controlsFadeLength;a=Math.min(1,a);a=Math.max(0,a);for(var c=b._controls.length-1;c>=0;c--)b._controls[c].setOpacity(a);a>0&&b._scheduleControlsFade()}},_onCanvasClick:function(g,c,e,f){var a=this;if(a.viewport&&e){var b=a.config.zoomPerClick,d=f?1/b:b;a.viewport.zoomBy(d,a.viewport.pointFromPixel(c,true));a.viewport.applyConstraints()}},_onCanvasDrag:function(c,b,a){this.viewport&&this.viewport.panBy(this.viewport.deltaPointsFromPixels(a.negate()))},_onCanvasRelease:function(d,c,a){a&&this.viewport&&this.viewport.applyConstraints()},_onContainerExit:function(d,c,a){if(!a){this._mouseInside=false;!this._animating&&this._beginControlsAutoHide()}},_onContainerRelease:function(d,c,b,a){if(!a){this._mouseInside=false;!this._animating&&this._beginControlsAutoHide()}},_getControlIndex:function(b){for(var a=this._controls.length-1;a>=0;a--)if(this._controls[a].elmt==b)return a;return-1},_abortControlsAutoHide:function(){this._controlsShouldFade=false;for(var a=this._controls.length-1;a>=0;a--)this._controls[a].setOpacity(1)},_onContainerEnter:function(){this._mouseInside=true;this._abortControlsAutoHide()},_updateOnce:function(){var a=this;if(!a.source)return;a.profiler.beginUpdate();var c=Seadragon.Utils.getElementSize(a._container);if(!c.equals(a._prevContainerSize)){a.viewport.resize(c,true);a._prevContainerSize=c;a._raiseEvent("resize",a)}var b=a.viewport.update();if(!a._animating&&b){a._raiseEvent("animationstart",self);a._abortControlsAutoHide()}if(b){a.drawer.update();a._raiseEvent("animation",self)}else if(a._forceRedraw||a.drawer.needsUpdate()){a.drawer.update();a._forceRedraw=false}else a.drawer.idle();if(a._animating&&!b){a._raiseEvent("animationfinish",a);!a._mouseInside&&a._beginControlsAutoHide()}a._animating=b;a.profiler.endUpdate()},_onClose:function(){var b=null,a=this;a.source=b;a.viewport=b;a.drawer=b;a.profiler=b;a._canvas.innerHTML=""},_beforeOpen:function(){var a=this;a.source&&a._onClose();a._lastOpenStartTime=(new Date).getTime();window.setTimeout(Function.createDelegate(a,function(){this._lastOpenStartTime>this._lastOpenEndTime&&this._setMessage(Seadragon.Strings.getString("Messages.Loading"))}),2e3);return a._lastOpenStartTime},_setMessage:function(d){var b="normal",c=document.createTextNode(d);this._canvas.innerHTML="";this._canvas.appendChild(Seadragon.Utils.makeCenteredNode(c));var a=c.parentNode.style;a.color="white";a.fontFamily="verdana";a.fontSize="13px";a.fontSizeAdjust="none";a.fontStyle=b;a.fontStretch=b;a.fontVariant=b;a.fontWeight=b;a.lineHeight="1em";a.textAlign="center";a.textDecoration="none"},_onOpen:function(f,d,e){var a=this;a._lastOpenEndTime=(new Date).getTime();if(f<a._lastOpenStartTime){Seadragon.Debug.log("Ignoring out-of-date open.");a._raiseEvent("ignore");return}else if(!d){a._setMessage(e);a._raiseEvent("error");return}a._canvas.innerHTML="";a._prevContainerSize=Seadragon.Utils.getElementSize(a._container);a.source=d;a.viewport=new Sys.Extended.UI.Seadragon.Viewport(a._prevContainerSize,a.source.dimensions,a.config);a.drawer=new Sys.Extended.UI.Seadragon.Drawer(a.source,a.viewport,a._canvas);a.profiler=new Sys.Extended.UI.Seadragon.Profiler;a._animating=false;a._forceRedraw=true;a._scheduleUpdate(a._updateMulti);for(var c=0;c<a._overlayControls.length;c++){var b=a._overlayControls[c];if(b.point!=null)a.drawer.addOverlay(b.id,new Sys.Extended.UI.Seadragon.Point(b.point.X,b.point.Y),Sys.Extended.UI.Seadragon.OverlayPlacement.TOP_LEFT);else a.drawer.addOverlay(b.id,new Sys.Extended.UI.Seadragon.Rect(b.rect.Point.X,b.rect.Point.Y,b.rect.Width,b.rect.Height),b.placement)}a._raiseEvent("open")},_scheduleUpdate:function(c,a){if(this._animating)return window.setTimeout(Function.createDelegate(this,c),1);var b=(new Date).getTime(),a=a?a:b,d=a+1e3/60,e=Math.max(1,d-b);return window.setTimeout(Function.createDelegate(this,c),e)},_updateMulti:function(){if(!this.source)return;var a=(new Date).getTime();this._updateOnce();this._scheduleUpdate(arguments.callee,a)},_updateOnce:function(){var a=this;if(!a.source)return;a.profiler.beginUpdate();var c=Seadragon.Utils.getElementSize(a._container);if(!c.equals(a._prevContainerSize)){a.viewport.resize(c,true);a._prevContainerSize=c;a._raiseEvent("resize")}var b=a.viewport.update();if(!a._animating&&b){a._raiseEvent("animationstart");a._abortControlsAutoHide()}if(b){a.drawer.update();a._raiseEvent("animation")}else if(a._forceRedraw||a.drawer.needsUpdate()){a.drawer.update();a._forceRedraw=false}else a.drawer.idle();if(a._animating&&!b){a._raiseEvent("animationfinish");!a._mouseInside&&a._beginControlsAutoHide()}a._animating=b;a.profiler.endUpdate()},getNavControl:function(){return this._navControl},get_xmlPath:function(){return this._xmlPath},set_xmlPath:function(a){this._xmlPath=a},get_debugMode:function(){return this.config.debugMode},set_debugMode:function(a){this.config.debugMode=a},get_animationTime:function(){return this.config.animationTime},set_animationTime:function(a){this.config.animationTime=a},get_blendTime:function(){return this.config.blendTime},set_blendTime:function(a){this.config.blendTime=a},get_alwaysBlend:function(){return this.config.alwaysBlend},set_alwaysBlend:function(a){this.config.alwaysBlend=a},get_autoHideControls:function(){return this.config.autoHideControls},set_autoHideControls:function(a){this.config.autoHideControls=a},get_immediateRender:function(){return this.config.immediateRender},set_immediateRender:function(a){this.config.immediateRender=a},get_wrapHorizontal:function(){return this.config.wrapHorizontal},set_wrapHorizontal:function(a){this.config.wrapHorizontal=a},get_wrapVertical:function(){return this.config.wrapVertical},set_wrapVertical:function(a){this.config.wrapVertical=a},get_minZoomDimension:function(){return this.config.minZoomDimension},set_minZoomDimension:function(a){this.config.minZoomDimension=a},get_maxZoomPixelRatio:function(){return this.config.maxZoomPixelRatio},set_maxZoomPixelRatio:function(a){this.config.maxZoomPixelRatio=a},get_visibilityRatio:function(){return this.config.visibilityRatio},set_visibilityRatio:function(a){this.config.visibilityRatio=a},get_springStiffness:function(){return this.config.springStiffness},set_springStiffness:function(a){this.config.springStiffness=a},get_imageLoaderLimit:function(){return this.config.imageLoaderLimit},set_imageLoaderLimit:function(a){this.config.imageLoaderLimit=a},get_clickTimeThreshold:function(){return this.config.clickTimeThreshold},set_clickTimeThreshold:function(a){this.config.clickTimeThreshold=a},get_clickDistThreshold:function(){return this.config.clickDistThreshold},set_clickDistThreshold:function(a){this.config.clickDistThreshold=a},get_zoomPerClick:function(){return this.config.zoomPerClick},set_zoomPerClick:function(a){this.config.zoomPerClick=a},get_zoomPerSecond:function(){return this.config.zoomPerSecond},set_zoomPerSecond:function(a){this.config.zoomPerSecond=a},get_maxImageCacheCount:function(){return this.config.maxImageCacheCount},set_maxImageCacheCount:function(a){this.config.maxImageCacheCount=a},get_showNavigationControl:function(){return this.config.showNavigationControl},set_showNavigationControl:function(a){this.config.showNavigationControl=a},get_minPixelRatio:function(){return this.config.minPixelRatio},set_minPixelRatio:function(a){this.config.minPixelRatio=a},get_mouseNavEnabled:function(){return this.config.mouseNavEnabled},set_mouseNavEnabled:function(a){this.config.mouseNavEnabled=a},get_controls:function(){return this._customControls},set_controls:function(a){this._customControls=a},get_overlays:function(){return this._overlayControls},set_overlays:function(a){this._overlayControls=a},get_prefixUrl:function(){return this._prefixUrl},set_prefixUrl:function(a){this._prefixUrl=a},add_open:function(a){this.get_events().addHandler("open",a)},remove_open:function(a){this.get_events().removeHandler("open",a)},add_error:function(a){this.get_events().addHandler("error",a)},remove_error:function(a){this.get_events().removeHandler("error",a)},add_ignore:function(a){this.get_events().addHandler("ignore",a)},remove_ignore:function(a){this.get_events().removeHandler("ignore",a)},add_resize:function(a){this.get_events().addHandler("resize",a)},remove_resize:function(a){this.get_events().removeHandler("resize",a)},add_animationstart:function(a){this.get_events().addHandler("animationstart",a)},remove_animationstart:function(a){this.get_events().removeHandler("animationstart",a)},add_animationend:function(a){this.get_events().addHandler("animationend",a)},remove_animationend:function(a){this.get_events().removeHandler("animationend",a)},addControl:function(a,e){var d="relative",b=this,a=Seadragon.Utils.getElement(a);if(b._getControlIndex(a)>=0)return;var c=null;switch(e){case Sys.Extended.UI.Seadragon.ControlAnchor.TOP_RIGHT:c=b._controlsTR;a.style.position=d;break;case Sys.Extended.UI.Seadragon.ControlAnchor.BOTTOM_RIGHT:c=b._controlsBR;a.style.position=d;break;case Sys.Extended.UI.Seadragon.ControlAnchor.BOTTOM_LEFT:c=b._controlsBL;a.style.position=d;break;case Sys.Extended.UI.Seadragon.ControlAnchor.TOP_LEFT:c=b._controlsTL;a.style.position=d;break;case Sys.Extended.UI.Seadragon.ControlAnchor.NONE:default:c=b._container;a.style.position="absolute"}b._controls.push(new Sys.Extended.UI.Seadragon.Control(a,e,c))},isOpen:function(){return!!this.source},openDzi:function(c,b){var a=this._beforeOpen();Sys.Extended.UI.Seadragon.DziTileSourceHelper.createFromXml(c,b,Seadragon.Utils.createCallback(null,Function.createDelegate(this,this._onOpen),a))},openTileSource:function(b){var a=beforeOpen();window.setTimeout(Function.createDelegate(this,function(){onOpen(a,b)}),1)},close:function(){if(!this.source)return;this._onClose()},removeControl:function(b){var b=Seadragon.Utils.getElement(b),a=this._getControlIndex(b);if(a>=0){this._controls[a].destroy();this._controls.splice(a,1)}},clearControls:function(){while(this._controls.length>0)this._controls.pop().destroy()},isDashboardEnabled:function(){for(var a=this._controls.length-1;a>=0;a--)if(this._controls[a].isVisible())return true;return false},isFullPage:function(){return this._container.parentNode==document.body},isMouseNavEnabled:function(){return this._innerTracker.isTracking()},isVisible:function(){return this._container.style.visibility!="hidden"},setDashboardEnabled:function(b){for(var a=this._controls.length-1;a>=0;a--)this._controls[a].setVisible(b)},setFullPage:function(f){var a=this;if(f==a.isFullPage())return;var i=document.body,b=i.style,e=document.documentElement.style,c=a._container.style,d=a._canvas.style;if(f){bodyOverflow=b.overflow;docOverflow=e.overflow;b.overflow="hidden";e.overflow="hidden";bodyWidth=b.width;bodyHeight=b.height;b.width="100%";b.height="100%";d.backgroundColor="black";d.color="white";c.position="fixed";c.zIndex="99999999";i.appendChild(a._container);a._prevContainerSize=Seadragon.Utils.getWindowSize();a._onContainerEnter()}else{b.overflow=bodyOverflow;e.overflow=docOverflow;b.width=bodyWidth;b.height=bodyHeight;d.backgroundColor="";d.color="";c.position="relative";c.zIndex="";a.get_element().appendChild(a._container);a._prevContainerSize=Seadragon.Utils.getElementSize(a.get_element());a._onContainerExit()}if(a.viewport){var h=a.viewport.getBounds();a.viewport.resize(a._prevContainerSize);var g=a.viewport.getBounds();if(f)a._fsBoundsDelta=new Sys.Extended.UI.Seadragon.Point(g.width/h.width,g.height/h.height);else{a.viewport.update();a.viewport.zoomBy(Math.max(a._fsBoundsDelta.x,a._fsBoundsDelta.y),null,true)}a._forceRedraw=true;a._raiseEvent("resize",a);a._updateOnce()}},setMouseNavEnabled:function(a){this._innerTracker.setTracking(a)},setVisible:function(a){this._container.style.visibility=a?"":"hidden"}};Sys.Extended.UI.Seadragon.Viewer.registerClass("Sys.Extended.UI.Seadragon.Viewer",Sys.UI.Control);3F// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedPasswordStrength";function a(){var h="none",g="hidden",f="absolute",a="px",l="BelowRight",e=true,k="CalculationWeightings",j="PreferredPasswordLength",i="50;15;15;20",c="",d=false,b=null;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.PasswordStrengthExtenderBehavior=function(e){var a=this;Sys.Extended.UI.PasswordStrengthExtenderBehavior.initializeBase(a,[e]);a._levelArray=[];a._styleArray=[];a._txtPwdStrengthCssClass=b;a._barBorderCssClass=b;a._barIndicatorCssClass=b;a._displayPosition=Sys.Extended.UI.DisplayPosition.RightSide;a._strengthIndicator=Sys.Extended.UI.StrengthIndicatorTypes.Text;a._preferredPasswordLength=0;a._minimumNumericCharacters=0;a._minimumSymbolCharacters=0;a._requiresUpperAndLowerCaseCharacters=d;a._helpHandleCssClass=c;a._helpHandlePosition=Sys.Extended.UI.DisplayPosition.AboveRight;a._helpText=c;a._helpStatusLabelID=b;a._displayDiv=b;a._helpDiv=b;a._barOuterDiv=b;a._barInnerDiv=b;a._keyPressHandler=b;a._blurHandler=b;a._helpClickHandler=b;a._prefixText=Sys.Extended.UI.Resources.PasswordStrength_StrengthPrompt;a._txtStrengthDescriptions=Sys.Extended.UI.Resources.PasswordStrength_DefaultStrengthDescriptions;a._strengthStyles=c;a._barIndicatorStyles=c;a._txtseparator=";";a._MIN_TXT_LEVEL_COUNT=2;a._MAX_TXT_LEVEL_COUNT=10;a._calcWeightings=i;a._minLowerCaseChars=0;a._minUpperCaseChars=0};Sys.Extended.UI.PasswordStrengthExtenderBehavior.prototype={initialize:function(){var a=this;Sys.Extended.UI.PasswordStrengthExtenderBehavior.callBaseMethod(a,"initialize");a._createIndicatorDisplayElement();var d=a.get_element();a._keyPressHandler=Function.createDelegate(a,a._onKeyPress);a._blurHandler=Function.createDelegate(a,a._onBlur);$addHandler(d,"keyup",a._keyPressHandler);$addHandler(d,"blur",a._blurHandler);if(a._preferredPasswordLength==b||a._preferredPasswordLength==c||a._preferredPasswordLength<=0){a._preferredPasswordLength=10;a.raisePropertyChanged(j)}if(a._calcWeightings==b||a._calcWeightings==c){a._calcWeightings=i;a.raisePropertyChanged(k)}a._getPasswordStrength()},_createIndicatorDisplayElement:function(){var c=this;if(c._strengthIndicator==Sys.Extended.UI.StrengthIndicatorTypes.BarIndicator)c._createBarIndicatorDisplayElement();else c._createTextDisplayElement();if(c._createHelpDisplayElement()==e){$common.setVisible(c._helpDiv,e);var b=$common.getBounds(c.get_element()),f=$common.getBounds(c._helpDiv),h,g,d=3;if(c._helpHandlePosition=="LeftSide"){h=b.y+(b.height/2-f.height/2);g=b.x-f.width}else if(c._helpHandlePosition==l){h=b.y+b.height-d;g=b.x+b.width-d}else if(c._helpHandlePosition=="BelowLeft"){h=b.y+b.height-d;g=b.x-f.width+d}else if(c._helpHandlePosition=="RightSide"){h=b.y+(b.height/2-f.height/2);g=b.x+b.width}else if(c._helpHandlePosition=="AboveLeft"){h=b.y-f.height+d;g=b.x-f.width+d}else{h=b.y-f.height+d;g=b.x+b.width-d}c._helpDiv.style.top=h+a;c._helpDiv.style.left=g+a}},_createTextDisplayElement:function(){var b=this,a=document.createElement("label");a.style.position=f;a.style.visibility=g;a.style.display=h;if(b.get_element().id)a.id=b.get_element().id+"_PasswordStrength";b._displayDiv=a;b._setTextDisplayLocation(a);document.body.appendChild(a);b._setTextDisplayStyle(0)},_setTextDisplayStyle:function(b){var a=this;if(a._styleArray.length==0)if(a._txtPwdStrengthCssClass)a._displayDiv.className=a._txtPwdStrengthCssClass;else a._displayDiv.style.backgroundColor="yellow";else{a._displayDiv.style.backgroundColor=c;a._txtPwdStrengthCssClass&&Sys.UI.DomElement.containsCssClass(a._displayDiv,a._txtPwdStrengthCssClass)&&Sys.UI.DomElement.removeCssClass(a._displayDiv,a._txtPwdStrengthCssClass);a._displayDiv.className=a._styleArray[b]}},_setBarDisplayStyle:function(b){var a=this;if(a._barBorderCssClass!=c)a._barOuterDiv.className=a._barBorderCssClass;else{d1.style.width="200px";d1.style.borderStyle="solid";d1.style.borderWidth="1px"}if(a._styleArray.length==0)if(a._barIndicatorCssClass!=c)a._barInnerDiv.className=a._barIndicatorCssClass;else a._barInnerDiv.style.backgroundColor="red";else{a._barIndicatorCssClass&&Sys.UI.DomElement.containsCssClass(a._barInnerDiv,a._barIndicatorCssClass)&&Sys.UI.DomElement.removeCssClass(a._barInnerDiv,a._barIndicatorCssClass);a._barInnerDiv.className=a._styleArray[b]}},_createBarIndicatorDisplayElement:function(){var b=this,c=document.createElement("div");c.style.position=f;c.style.visibility=g;c.style.display=h;var d=document.createElement("div");d.style.position=f;d.style.visibility=g;d.style.display=h;c.style.height=b.get_element().offsetHeight+4+a;if(b.get_element().id){c.id=b.get_element().id+"_PasswordStrengthBar1";d.id=b.get_element().id+"_PasswordStrengthBar2"}b._barOuterDiv=c;b._barInnerDiv=d;b._extractStyles();b._setBarDisplayStyle(0);document.body.appendChild(c);document.body.appendChild(d);b._setBarDisplayLocation(c,d)},_createHelpDisplayElement:function(){var a=this;if(a._helpHandleCssClass!=c){var i=document.createElement("a");i.style.position=f;i.style.visibility=g;i.style.display=h;i.href="#";i.title=Sys.Extended.UI.Resources.PasswordStrength_GetHelpRequirements;if(a.get_element().id)i.id=a.get_element().id+"_PasswordStrengthReqDisplay";a._helpClickHandler=Function.createDelegate(a,a._onHelpClick);$addHandler(i,"click",a._helpClickHandler);a._helpDiv=i;a._helpDiv.className=a._helpHandleCssClass;if(a.get_element().parentElement!=b&&a.get_element().parentElement.canHaveChildren)a.get_element().parentElement.appendChild(i);else document.body.appendChild(i);return e}else return d},_setTextDisplayLocation:function(c){var b=this,d=$common.getLocation(b.get_element()),f=$common.getBounds(b.get_element()),e=15;if(b._displayPosition==Sys.Extended.UI.DisplayPosition.LeftSide){c.style.top=d.y+a;c.style.left=d.x-f.width-e+a}else if(b._displayPosition==l){c.style.top=d.y+b.get_element().offsetHeight+a;c.style.left=d.x+b.get_element().offsetWidth-b.get_element().offsetWidth/4+a}else if(b._displayPosition==Sys.Extended.UI.DisplayPosition.BelowLeft){c.style.top=d.y+b.get_element().offsetHeight+a;c.style.left=d.x-e+a}else if(b._displayPosition==Sys.Extended.UI.DisplayPosition.AboveRight){c.style.top=d.y-b.get_element().offsetHeight+a;c.style.left=d.x+b.get_element().offsetWidth-b.get_element().offsetWidth/4+a}else if(b._displayPosition==Sys.Extended.UI.DisplayPosition.AboveLeft){c.style.top=d.y-b.get_element().offsetHeight+a;c.style.left=d.x-e+a}else{c.style.top=d.y+a;c.style.left=d.x+b.get_element().offsetWidth+e+a}},_setBarDisplayLocation:function(d,f){var b=this;if(b.get_element().offsetHeight>0){var l=$common.getBorderBox(d),k=$common.getPaddingBox(d),g=l.left+k.left,h=l.top+k.top;f.style.height=b.get_element().offsetHeight+a;d.style.height=b.get_element().offsetHeight+a;var c=$common.getLocation(b.get_element()),i=15;if(b._displayPosition==Sys.Extended.UI.DisplayPosition.LeftSide){var m=$common.getVisible(b._barOuterDiv);$common.setVisible(b._barOuterDiv,e);var n=$common.getContentSize(d);$common.setVisible(b._barOuterDiv,m);var j=n.width;d.style.top=c.y+a;d.style.left=c.x-parseInt(j)-i+a;f.style.top=c.y+h+a;f.style.left=c.x-parseInt(j)-i+g+a}else if(b._displayPosition==Sys.Extended.UI.DisplayPosition.BelowRight){d.style.top=c.y+b.get_element().offsetHeight+a;d.style.left=c.x+b.get_element().offsetWidth+a;f.style.top=c.y+b.get_element().offsetHeight+h+a;f.style.left=c.x+b.get_element().offsetWidth+g+a}else if(b._displayPosition==Sys.Extended.UI.DisplayPosition.BelowLeft){d.style.top=c.y+b.get_element().offsetHeight+a;d.style.left=c.x+a;f.style.top=c.y+b.get_element().offsetHeight+h+a;f.style.left=c.x+g+a}else if(b._displayPosition==Sys.Extended.UI.DisplayPosition.AboveRight){d.style.top=c.y-b.get_element().offsetHeight+a;d.style.left=c.x+b.get_element().offsetWidth+a;f.style.top=c.y-b.get_element().offsetHeight+h+a;f.style.left=c.x+b.get_element().offsetWidth+g+a}else if(b._displayPosition==Sys.Extended.UI.DisplayPosition.AboveLeft){d.style.top=c.y-b.get_element().offsetHeight+a;d.style.left=c.x+a;f.style.top=c.y-b.get_element().offsetHeight+h+a;f.style.left=c.x+g+a}else{d.style.top=c.y+a;d.style.left=c.x+b.get_element().offsetWidth+i+a;f.style.top=c.y+h+a;f.style.left=c.x+b.get_element().offsetWidth+i+g+a}}},_showStrength:function(){var a=this,g=a.get_element();if(g.readOnly==e)return;var d=a._getPasswordStrength();if(a._strengthIndicator==Sys.Extended.UI.StrengthIndicatorTypes.BarIndicator){$common.setVisible(a._barOuterDiv,e);$common.setVisible(a._barInnerDiv,e);var c=0;if(a._styleArray!=b&&a._styleArray.length>0)c=parseInt(d/100*(a._styleArray.length-1));a._setBarDisplayStyle(c);a._setBarDisplayLocation(a._barOuterDiv,a._barInnerDiv);a._showStrengthAsBarValue(d)}else{a._createTextDescriptions(a._txtStrengthDescriptions);$common.setVisible(a._displayDiv,e);var c=parseInt(d/100*(a._levelArray.length-1)),f=a._levelArray[c];a._setTextDisplayStyle(c);a._setTextDisplayLocation(a._displayDiv);a._showStrengthAsText(f)}},_showStrengthAsText:function(a){this._displayDiv.innerHTML=this._prefixText+a},_showStrengthAsBarValue:function(b){var d=$common.getContentSize(this._barOuterDiv),e=$common.getPaddingBox(this._barOuterDiv),c=parseInt(d.width*(b/100));this._barInnerDiv.style.width=c+a},_getPasswordStrength:function(){var f=", ",a=this,j=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(a.get_element()).get_Value(),d=c,g=0,k=a._calcWeightings.split(";");k.length!=4&&Sys.Debug.assert(b,Sys.Extended.UI.Resources.PasswordStrength_InvalidWeightingRatios);var v=parseInt(k[0]),o=parseInt(k[1]),n=parseInt(k[2]),p=parseInt(k[3]),h=j.length/a._preferredPasswordLength;if(h>1)h=1;var q=h*v;g+=q;if(h<1)d=String.format(Sys.Extended.UI.Resources.PasswordStrength_RemainingCharacters,a._preferredPasswordLength-j.length);if(a._minimumNumericCharacters>0){var t=new RegExp("[0-9]","g"),i=a._getRegexCount(t,j);if(i>=a._minimumNumericCharacters)g+=o;if(i<a._minimumNumericCharacters){if(d!=c)d+=f;d+=String.format(Sys.Extended.UI.Resources.PasswordStrength_RemainingNumbers,a._minimumNumericCharacters-i)}}else g+=h*o;if(a._requiresUpperAndLowerCaseCharacters==e||typeof a._requiresUpperAndLowerCaseCharacters=="String"&&Boolean.parse(a._requiresUpperAndLowerCaseCharacters)==e){var r=new RegExp("[a-z]","g"),s=new RegExp("[A-Z]","g"),l=a._getRegexCount(r,j),m=a._getRegexCount(s,j);if(l>0||m>0)if(l>=a._minLowerCaseChars&&m>=a._minUpperCaseChars)g+=n;else{if(a._minLowerCaseChars>0&&a._minLowerCaseChars-l>0){if(d!=c)d+=f;d+=String.format(Sys.Extended.UI.Resources.PasswordStrength_RemainingLowerCase,a._minLowerCaseChars-l)}if(a._minUpperCaseChars>0&&a._minUpperCaseChars-m>0){if(d!=c)d+=f;d+=String.format(Sys.Extended.UI.Resources.PasswordStrength_RemainingUpperCase,a._minUpperCaseChars-m)}}else{if(d!=c)d+=f;d+=Sys.Extended.UI.Resources.PasswordStrength_RemainingMixedCase}}else g+=h*n;if(a._minimumSymbolCharacters>0){var u=new RegExp("[^a-z,A-Z,0-9, ]","g"),i=a._getRegexCount(u,j);if(i>=a._minimumSymbolCharacters)g+=p;if(i<a._minimumSymbolCharacters){if(d!=c)d+=f;d+=String.format(Sys.Extended.UI.Resources.PasswordStrength_RemainingSymbols,a._minimumSymbolCharacters-i)}}else g+=h*p;a.set_HelpText(d);return g},_getRegexCount:function(f,a){var e=0;if(a!=b&&a!=c){var d=a.match(f);if(d!=b)e=d.length}return e},_extractStyles:function(){var a=this;if(a._strengthStyles!=b&&a._strengthStyles!=c)a._styleArray=a._strengthStyles.split(a._txtseparator)},_createTextDescriptions:function(){var a=this;a._levelArray=a._txtStrengthDescriptions.split(a._txtseparator);a._extractStyles();a._styleArray.length>0&&a._styleArray.length!=a._levelArray.length&&Sys.Debug.assert(d,Sys.Extended.UI.Resources.PasswordStrength_InvalidStrengthDescriptionStyles);(a._levelArray.length<a._MIN_TXT_LEVEL_COUNT||a._levelArray>a._MAX_TXT_LEVEL_COUNT)&&Sys.Debug.assert(d,Sys.Extended.UI.Resources.PasswordStrength_InvalidStrengthDescriptions)},_onKeyPress:function(){this._showStrength()},_onBlur:function(){var a=this;if(a._strengthIndicator==Sys.Extended.UI.StrengthIndicatorTypes.BarIndicator){$common.setVisible(a._barOuterDiv,d);$common.setVisible(a._barInnerDiv,d)}else $common.setVisible(a._displayDiv,d)},_onHelpClick:function(){if(this._helpText==c)alert(Sys.Extended.UI.Resources.PasswordStrength_Satisfied);else alert(this._helpText)},dispose:function(){var a=this,e=a.get_element();if(a._keyPressHandler){$removeHandler(e,"keyup",a._keyPressHandler);a._keyPressHandler=b}if(a._blurHandler){$removeHandler(e,"blur",a._blurHandler);a._blurHandler=b}if(a._helpClickHandler){$removeHandler(a._helpDiv,"click",a._helpClickHandler);a._helpClickHandler=b}a._displayDiv&&$common.setVisible(a._displayDiv,d);a._barOuterDiv&&$common.setVisible(a._barOuterDiv,d);a._barInnerDiv&&$common.setVisible(a._barInnerDiv,d);a._helpHandleCssClass!=c&&a._helpDiv&&$common.setVisible(a._helpDiv,d);Sys.Extended.UI.PasswordStrengthExtenderBehavior.callBaseMethod(a,"dispose")},get_PreferredPasswordLength:function(){return this._preferredPasswordLength},set_PreferredPasswordLength:function(a){if(this._preferredPasswordLength!=a){this._preferredPasswordLength=a;this.raisePropertyChanged(j)}},get_MinimumNumericCharacters:function(){return this._minimumNumericCharacters},set_MinimumNumericCharacters:function(a){if(this._minimumNumericCharacters!=a){this._minimumNumericCharacters=a;this.raisePropertyChanged("MinimumNumericCharacters")}},get_MinimumSymbolCharacters:function(){return this._minimumSymbolCharacters},set_MinimumSymbolCharacters:function(a){if(this._minimumSymbolCharacters!=a){this._minimumSymbolCharacters=a;this.raisePropertyChanged("MinimumSymbolCharacters")}},get_RequiresUpperAndLowerCaseCharacters:function(){return this._requiresUpperAndLowerCaseCharacters},set_RequiresUpperAndLowerCaseCharacters:function(a){if(this._requiresUpperAndLowerCaseCharacters!=a){this._requiresUpperAndLowerCaseCharacters=a;this.raisePropertyChanged("RequiresUpperAndLowerCaseCharacters")}},get_TextCssClass:function(){return this._txtPwdStrengthCssClass},set_TextCssClass:function(a){if(this._txtPwdStrengthCssClass!=a){this._txtPwdStrengthCssClass=a;this.raisePropertyChanged("TextCssClass")}},get_BarBorderCssClass:function(){return this._barBorderCssClass},set_BarBorderCssClass:function(a){if(this._barBorderCssClass!=a){this._barBorderCssClass=a;this.raisePropertyChanged("BarBorderCssClass")}},get_BarIndicatorCssClass:function(){return this._barIndicatorCssClass},set_BarIndicatorCssClass:function(a){if(this._barIndicatorCssClass!=a){this._barIndicatorCssClass=a;this.raisePropertyChanged("BarIndicatorCssClass")}},get_DisplayPosition:function(){return this._displayPosition},set_DisplayPosition:function(a){if(this._displayPosition!=a){this._displayPosition=a;this.raisePropertyChanged("DisplayPosition")}},get_PrefixText:function(){return this._prefixText},set_PrefixText:function(a){if(this._prefixText!=a){this._prefixText=a;this.raisePropertyChanged("PrefixText")}},get_StrengthIndicatorType:function(){return this._strengthIndicator},set_StrengthIndicatorType:function(a){if(this._strengthIndicator!=a){this._strengthIndicator=a;this.raisePropertyChanged("StrengthIndicatorType")}},get_TextStrengthDescriptions:function(){return this._txtStrengthDescriptions},set_TextStrengthDescriptions:function(a){if(a!=b&&a!=c&&a!=this._txtStrengthDescriptions){this._txtStrengthDescriptions=a;this.raisePropertyChanged("TextStrengthDescriptions")}},get_StrengthStyles:function(){return this._strengthStyles},set_StrengthStyles:function(a){if(a!=b&&a!=c&&a!=this._strengthStyles){this._strengthStyles=a;this.raisePropertyChanged("StrengthStyles")}},get_TextStrengthDescriptionStyles:function(){return this.get_StrengthStyles()},set_TextStrengthDescriptionStyles:function(a){this.set_StrengthStyles(a)},get_HelpHandleCssClass:function(){return this._helpHandleCssClass},set_HelpHandleCssClass:function(a){if(this._helpHandleCssClass!=a){this._helpHandleCssClass=a;this.raisePropertyChanged("HelpHandleCssClass")}},get_HelpHandlePosition:function(){return this._helpHandlePosition},set_HelpHandlePosition:function(a){if(this._helpHandlePosition!=a){this._helpHandlePosition=a;this.raisePropertyChanged("HelpHandlePosition")}},get_HelpText:function(){return this._helpText},get_CalculationWeightings:function(){return this._calcWeightings},set_CalculationWeightings:function(a){if(this._calcWeightings!=a){this._calcWeightings=a;this.raisePropertyChanged(k)}},set_HelpText:function(d){var a=this;if(a._helpStatusLabelID){var b=$get(a._helpStatusLabelID);if(b)if(Sys.Extended.UI.TextBoxWrapper.get_Wrapper(a.get_element()).get_Value().length>0)b.innerHTML=d;else b.innerHTML=c}if(a._helpText!=d){a._helpText=d;a.raisePropertyChanged("HelpText")}},get_MinimumLowerCaseCharacters:function(){return this._minLowerCaseChars},set_MinimumLowerCaseCharacters:function(a){this._minLowerCaseChars=a},get_MinimumUpperCaseCharacters:function(){return this._minUpperCaseChars},set_MinimumUpperCaseCharacters:function(a){this._minUpperCaseChars=a},get_HelpStatusLabelID:function(){return this._helpStatusLabelID},set_HelpStatusLabelID:function(a){if(this._helpStatusLabelID!=a){this._helpStatusLabelID=a;this.raisePropertyChanged("HelpStatusLabelID")}}};Sys.Extended.UI.PasswordStrengthExtenderBehavior.registerClass("Sys.Extended.UI.PasswordStrengthExtenderBehavior",Sys.Extended.UI.BehaviorBase);Sys.registerComponent(Sys.Extended.UI.PasswordStrengthExtenderBehavior,{name:"passwordStrength"});Sys.Extended.UI.StrengthIndicatorTypes=function(){throw Error.invalidOperation();};Sys.Extended.UI.DisplayPosition=function(){throw Error.invalidOperation();};Sys.Extended.UI.StrengthIndicatorTypes.prototype={Text:0,BarIndicator:1};Sys.Extended.UI.DisplayPosition.prototype={RightSide:0,AboveRight:1,AboveLeft:2,LeftSide:3,BelowRight:4,BelowLeft:5};Sys.Extended.UI.DisplayPosition.registerEnum("Sys.Extended.UI.DisplayPosition");Sys.Extended.UI.StrengthIndicatorTypes.registerEnum("Sys.Extended.UI.StrengthIndicatorTypes")}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedBase","ExtendedCommon"],a);else a()})();V�// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference name="MicrosoftAjaxTimer.debug.js" />
/// <reference name="MicrosoftAjaxWebForms.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />
/// <reference path="../DynamicPopulate/DynamicPopulateBehavior.js" />
/// <reference path="../RoundedCorners/RoundedCornersBehavior.js" />
/// <reference path="../Compat/Timer/Timer.js" />
/// <reference path="../DropShadow/DropShadowBehavior.js" />
/// <reference path="../Compat/DragDrop/DragDropScripts.js" />
/// <reference path="../DragPanel/FloatingBehavior.js" />


Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.ModalPopupRepositionMode = function () {
    /// <summary>
    /// The ModalPopupRepositionMode enumeration describes how the modal popup repositions
    /// </summary>
    /// <field name="None" type="Number" integer="true" />
    /// <field name="RepositionOnWindowResize" type="Number" integer="true" />
    /// <field name="RepositionOnWindowScroll" type="Number" integer="true" />
    /// <field name="RepositionOnWindowResizeAndScroll" type="Number" integer="true" />
    throw Error.invalidOperation();
}
Sys.Extended.UI.ModalPopupRepositionMode.prototype = {
    None: 0,
    RepositionOnWindowResize: 1,
    RepositionOnWindowScroll: 2,
    RepositionOnWindowResizeAndScroll: 3
}
Sys.Extended.UI.ModalPopupRepositionMode.registerEnum('Sys.Extended.UI.ModalPopupRepositionMode');


Sys.Extended.UI.ModalPopupBehavior = function (element) {
    /// <summary>
    /// The ModalPopupBehavior is used to display the target element as a modal dialog
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// DOM Element the behavior is associated with
    /// </param>
    Sys.Extended.UI.ModalPopupBehavior.initializeBase(this, [element]);

    this._PopupControlID = null;
    this._PopupDragHandleControlID = null;
    this._BackgroundCssClass = null;
    this._DropShadow = false;
    this._Drag = false;
    this._OkControlID = null;
    this._CancelControlID = null;
    this._OnOkScript = null;
    this._OnCancelScript = null;
    this._xCoordinate = -1;
    this._yCoordinate = -1;
    this._repositionMode = Sys.Extended.UI.ModalPopupRepositionMode.RepositionOnWindowResizeAndScroll;
    this._onShown = new Sys.Extended.UI.Animation.GenericAnimationBehavior(element); //element replaced later with popuptarget
    this._onHidden = new Sys.Extended.UI.Animation.GenericAnimationBehavior(element);
    this._onShowing = new Sys.Extended.UI.Animation.GenericAnimationBehavior(element);
    this._onHiding = new Sys.Extended.UI.Animation.GenericAnimationBehavior(element);

    this._backgroundElement = null;
    this._foregroundElement = null;
    this._relativeOrAbsoluteParentElement = null;
    this._popupElement = null;
    this._dragHandleElement = null;
    this._showHandler = null;
    this._okHandler = null;
    this._cancelHandler = null;
    this._scrollHandler = null;
    this._resizeHandler = null;
    this._windowHandlersAttached = false;
    this._dropShadowBehavior = null;
    this._dragBehavior = null;
    this._isIE6 = false;

    this._saveTabIndexes = new Array();
    this._saveDesableSelect = new Array();
    this._tagWithTabIndex = new Array('A', 'AREA', 'BUTTON', 'INPUT', 'OBJECT', 'SELECT', 'TEXTAREA', 'IFRAME');

    this._isAnimationJustEnded = false;
    this._hidingAnimationEndedHandler = null;
    this._showingAnimationEndedHandler = null;

}
Sys.Extended.UI.ModalPopupBehavior.prototype = {
    initialize: function () {
        /// <summary>
        /// Initialize the behavior
        /// </summary>

        /*
        <div superpopup - drag container resizable><div -- drag handle\dropshadow foreground></div></div>
        */
        Sys.Extended.UI.ModalPopupBehavior.callBaseMethod(this, 'initialize');
        this._isIE6 = (Sys.Browser.agent == Sys.Browser.InternetExplorer && Sys.Browser.version < 7);
        if (this._PopupDragHandleControlID)
            this._dragHandleElement = $get(this._PopupDragHandleControlID);

        this._popupElement = $get(this._PopupControlID);
        if (this._DropShadow) {
            this._foregroundElement = document.createElement('div');
            this._foregroundElement.id = this.get_id() + '_foregroundElement';
            this._popupElement.parentNode.appendChild(this._foregroundElement);
            this._foregroundElement.appendChild(this._popupElement);
        }
        else {
            this._foregroundElement = this._popupElement;
        }
        this._backgroundElement = document.createElement('div');
        this._backgroundElement.id = this.get_id() + '_backgroundElement';
        this._backgroundElement.style.display = 'none';
        this._backgroundElement.style.position = 'fixed';
        this._backgroundElement.style.left = '0px';
        this._backgroundElement.style.top = '0px';
        this._backgroundElement.style.zIndex = 10000;
        if (this._BackgroundCssClass) {
            this._backgroundElement.className = this._BackgroundCssClass;
        }
        this._foregroundElement.parentNode.appendChild(this._backgroundElement);

        this._foregroundElement.style.display = 'none';
        this._foregroundElement.style.position = 'fixed';
        this._foregroundElement.style.zIndex = $common.getCurrentStyle(this._backgroundElement, 'zIndex', this._backgroundElement.style.zIndex) + 1;

        this._showHandler = Function.createDelegate(this, this._onShow);
        $addHandler(this.get_element(), 'click', this._showHandler);

        if (this._OkControlID) {
            this._okHandler = Function.createDelegate(this, this._onOk);
            $addHandler($get(this._OkControlID), 'click', this._okHandler);
        }

        if (this._CancelControlID) {
            this._cancelHandler = Function.createDelegate(this, this._onCancel);
            $addHandler($get(this._CancelControlID), 'click', this._cancelHandler);
        }

        this._scrollHandler = Function.createDelegate(this, this._onLayout);
        this._resizeHandler = Function.createDelegate(this, this._onLayout);

        this.registerPartialUpdateEvents();

        this._resetAnimationsTarget();

        if (this._onHiding.get_animation()) {
            this._hidingAnimationEndedHandler = Function.createDelegate(this, function () {
                this._isAnimationJustEnded = true;
                this.hide();
            });
            this._onHiding.get_animation().add_ended(this._hidingAnimationEndedHandler);
        }

        if (this._onShowing.get_animation()) {
            this._showingAnimationEndedHandler = Function.createDelegate(this, function () {
                this._isAnimationJustEnded = true;
                this.show();
            });
            this._onShowing.get_animation().add_ended(this._showingAnimationEndedHandler);
        }
    },

    dispose: function () {
        /// <summary>
        /// Dispose the behavior
        /// </summary>

        this._hideImplementation();

        if (this._foregroundElement && this._foregroundElement.parentNode) {
            this._foregroundElement.parentNode.removeChild(this._backgroundElement);

            if (this._DropShadow) {
                this._foregroundElement.parentNode.appendChild(this._popupElement);
                this._foregroundElement.parentNode.removeChild(this._foregroundElement);
            }
        }

        this._scrollHandler = null;
        this._resizeHandler = null;
        if (this._cancelHandler && $get(this._CancelControlID)) {
            $removeHandler($get(this._CancelControlID), 'click', this._cancelHandler);
            this._cancelHandler = null;
        }
        if (this._okHandler && $get(this._OkControlID)) {
            $removeHandler($get(this._OkControlID), 'click', this._okHandler);
            this._okHandler = null;
        }
        if (this._showHandler) {
            $removeHandler(this.get_element(), 'click', this._showHandler);
            this._showHandler = null;
        }

        if (this._hidingAnimationEndedHandler) {
            this._onHiding.get_animation().remove_ended(this._hidingAnimationEndedHandler);
        }

        if (this._showingAnimationEndedHandler) {
            this._onShowing.get_animation().remove_ended(this._showingAnimationEndedHandler);
        }

        Sys.Extended.UI.ModalPopupBehavior.callBaseMethod(this, 'dispose');
    },

    _attachPopup: function () {
        /// <summary>
        /// Attach the event handlers for the popup
        /// </summary>

        if (this._DropShadow && !this._dropShadowBehavior) {
            this._dropShadowBehavior = $create(Sys.Extended.UI.DropShadowBehavior, {}, null, null, this._popupElement);
        }
        if (this._dragHandleElement && !this._dragBehavior) {
            this._dragBehavior = $create(Sys.Extended.UI.FloatingBehavior, { "handle": this._dragHandleElement }, null, null, this._foregroundElement);
        }

        $addHandler(window, 'resize', this._resizeHandler);
        $addHandler(window, 'scroll', this._scrollHandler);
        this._windowHandlersAttached = true;
    },

    _detachPopup: function () {
        /// <summary>
        /// Detach the event handlers for the popup
        /// </summary>

        if (this._windowHandlersAttached) {
            if (this._scrollHandler) {
                $removeHandler(window, 'scroll', this._scrollHandler);
            }
            if (this._resizeHandler) {
                $removeHandler(window, 'resize', this._resizeHandler);
            }
            this._windowHandlersAttached = false;
        }

        if (this._dragBehavior) {
            this._dragBehavior.dispose();
            this._dragBehavior = null;
        }

        if (this._dropShadowBehavior) {
            this._dropShadowBehavior.dispose();
            this._dropShadowBehavior = null;
        }
    },

    _onShow: function (e) {
        /// <summary>
        /// Handler for the target's click event
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">
        /// Event info
        /// </param>

        if (!this.get_element().disabled) {
            this.show();
            e.preventDefault();
            return false;
        }
    },

    _onOk: function (e) {
        /// <summary>
        /// Handler for the modal dialog's OK button click
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">
        /// Event info
        /// </param>

        var element = $get(this._OkControlID);
        if (element && !element.disabled) {
            if (this.hide() && this._OnOkScript) {
                window.setTimeout(this._OnOkScript, 0);
            }
            e.preventDefault();
            return false;
        }
    },

    _onCancel: function (e) {
        /// <summary>
        /// Handler for the modal dialog's Cancel button click
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">
        /// Event info
        /// </param>

        var element = $get(this._CancelControlID);
        if (element && !element.disabled) {
            if (this.hide() && this._OnCancelScript) {
                window.setTimeout(this._OnCancelScript, 0);
            }
            e.preventDefault();
            return false;
        }
    },

    _onLayout: function (e) {
        /// <summary>
        /// Handler for scrolling and resizing events that would require a repositioning of the modal dialog
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">
        /// Event info
        /// </param>
        var positioning = this.get_repositionMode();
        if (((positioning === Sys.Extended.UI.ModalPopupRepositionMode.RepositionOnWindowScroll) ||
            (positioning === Sys.Extended.UI.ModalPopupRepositionMode.RepositionOnWindowResizeAndScroll)) && (e.type === 'scroll')) {
            this._layout();
        } else if (((positioning === Sys.Extended.UI.ModalPopupRepositionMode.RepositionOnWindowResize) ||
            (positioning === Sys.Extended.UI.ModalPopupRepositionMode.RepositionOnWindowResizeAndScroll)) && (e.type === 'resize')) {
            this._layout();
        } else {
            this._layoutBackgroundElement();
        }
    },

    show: function () {
        /// <summary>
        /// Display the element referenced by PopupControlID as a modal dialog
        /// </summary>

        if (!this._isAnimationJustEnded) {
            var eventArgs = new Sys.CancelEventArgs();
            this.raiseShowing(eventArgs);
            if (eventArgs.get_cancel()) {
                return;
            }
            else if (this._onShowing.get_animation()) {
                this._onShowing.play();
                return;
            }
        }
        else {
            this._isAnimationJustEnded = false;
        }

        this.populate();
        this._attachPopup();

        this._backgroundElement.style.display = '';
        this._foregroundElement.style.display = '';
        this._popupElement.style.display = '';
        if (this._isIE6) {
            this._foregroundElement.style.position = 'absolute';
            this._backgroundElement.style.position = 'absolute';
            var tempRelativeOrAbsoluteParent = this._foregroundElement.parentNode;
            while (tempRelativeOrAbsoluteParent && (tempRelativeOrAbsoluteParent != document.documentElement)) {
                if ((tempRelativeOrAbsoluteParent.style.position != 'relative') && (tempRelativeOrAbsoluteParent.style.position != 'absolute')) {
                    tempRelativeOrAbsoluteParent = tempRelativeOrAbsoluteParent.parentNode;
                } else {
                    this._relativeOrAbsoluteParentElement = tempRelativeOrAbsoluteParent;
                    break;
                }
            }
        }


        this.disableTab();

        this._layout();
        this._layout();

        this.raiseShown(Sys.EventArgs.Empty);

        this._onShown.play();
    },

    disableTab: function () {
        /// <summary>
        /// Change the tab indices so we only tab through the modal popup
        /// (and hide SELECT tags in IE6)
        /// </summary>

        var i = 0;
        var tagElements;
        var tagElementsInPopUp = new Array();
        Array.clear(this._saveTabIndexes);

        for (var j = 0; j < this._tagWithTabIndex.length; j++) {
            tagElements = this._foregroundElement.getElementsByTagName(this._tagWithTabIndex[j]);
            for (var k = 0; k < tagElements.length; k++) {
                tagElementsInPopUp[i] = tagElements[k];
                i++;
            }
        }

        i = 0;
        for (var j = 0; j < this._tagWithTabIndex.length; j++) {
            tagElements = document.getElementsByTagName(this._tagWithTabIndex[j]);
            for (var k = 0; k < tagElements.length; k++) {
                if (Array.indexOf(tagElementsInPopUp, tagElements[k]) == -1) {
                    this._saveTabIndexes[i] = { tag: tagElements[k], index: tagElements[k].tabIndex };
                    tagElements[k].tabIndex = "-1";
                    i++;
                }
            }
        }

        i = 0;
        if ((Sys.Browser.agent === Sys.Browser.InternetExplorer) && (Sys.Browser.version < 7)) {
            var tagSelectInPopUp = new Array();
            for (var j = 0; j < this._tagWithTabIndex.length; j++) {
                tagElements = this._foregroundElement.getElementsByTagName('SELECT');
                for (var k = 0; k < tagElements.length; k++) {
                    tagSelectInPopUp[i] = tagElements[k];
                    i++;
                }
            }

            i = 0;
            Array.clear(this._saveDesableSelect);
            tagElements = document.getElementsByTagName('SELECT');
            for (var k = 0; k < tagElements.length; k++) {
                if (Array.indexOf(tagSelectInPopUp, tagElements[k]) == -1) {
                    this._saveDesableSelect[i] = { tag: tagElements[k], visib: $common.getCurrentStyle(tagElements[k], 'visibility') };
                    tagElements[k].style.visibility = 'hidden';
                    i++;
                }
            }
        }
    },

    restoreTab: function () {
        /// <summary>
        /// Restore the tab indices so we tab through the page like normal
        /// (and restore SELECT tags in IE6)
        /// </summary>

        for (var i = 0; i < this._saveTabIndexes.length; i++) {
            this._saveTabIndexes[i].tag.tabIndex = this._saveTabIndexes[i].index;
        }
        Array.clear(this._saveTabIndexes);

        if ((Sys.Browser.agent === Sys.Browser.InternetExplorer) && (Sys.Browser.version < 7)) {
            for (var k = 0; k < this._saveDesableSelect.length; k++) {
                this._saveDesableSelect[k].tag.style.visibility = this._saveDesableSelect[k].visib;
            }
            Array.clear(this._saveDesableSelect);
        }
    },

    hide: function () {
        /// <summary>
        /// Hide the modal dialog
        /// </summary>
        /// <returns type="Boolean" mayBeNull="false">
        /// Whether or not the dialog was hidden
        /// </returns>

        if (!this._isAnimationJustEnded) {
            var eventArgs = new Sys.CancelEventArgs();
            this.raiseHiding(eventArgs);
            if (eventArgs.get_cancel()) {
                return false;
            }
            else if (this._onHiding.get_animation()) {
                this._onHiding.play();
                return true;
            }
        }
        else {
            this._isAnimationJustEnded = false;
        }

        this._hideImplementation();

        this.raiseHidden(Sys.EventArgs.Empty);

        this._onHidden.play();

        return true;
    },

    _hideImplementation: function () {
        /// <summary>
        /// Internal implementation to hide the modal dialog
        /// </summary>

        this._backgroundElement.style.display = 'none';
        this._foregroundElement.style.display = 'none';

        this.restoreTab();

        this._detachPopup();
    },

    _layout: function () {
        /// <summary>
        /// Position the modal dialog 
        /// </summary>
        var scrollLeft = (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
        var scrollTop = (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);

        var clientBounds = $common.getClientBounds();
        var clientWidth = clientBounds.width;
        var clientHeight = clientBounds.height;

        this._layoutBackgroundElement();

        var xCoord = 0;
        var yCoord = 0;
        if (this._xCoordinate < 0) {
            var foregroundelementwidth = this._foregroundElement.offsetWidth ? this._foregroundElement.offsetWidth : this._foregroundElement.scrollWidth;
            xCoord = ((clientWidth - foregroundelementwidth) / 2);
            if (this._foregroundElement.style.position == 'absolute') {
                xCoord += scrollLeft;
            }
            this._foregroundElement.style.left = xCoord + 'px';

        } else {
            if (this._isIE6) {
                this._foregroundElement.style.left = (this._xCoordinate + scrollLeft) + 'px';
                xCoord = this._xCoordinate + scrollLeft;
            }
            else {
                this._foregroundElement.style.left = this._xCoordinate + 'px';
                xCoord = this._xCoordinate;
            }
        }
        if (this._yCoordinate < 0) {
            var foregroundelementheight = this._foregroundElement.offsetHeight ? this._foregroundElement.offsetHeight : this._foregroundElement.scrollHeight;
            yCoord = ((clientHeight - foregroundelementheight) / 2);
            if (this._foregroundElement.style.position == 'absolute') {
                yCoord += scrollTop;
            }
            this._foregroundElement.style.top = yCoord + 'px';

        } else {
            if (this._isIE6) {
                this._foregroundElement.style.top = (this._yCoordinate + scrollTop) + 'px';
                yCoord = this._yCoordinate + scrollTop;
            }
            else {
                this._foregroundElement.style.top = this._yCoordinate + 'px';
                yCoord = this._yCoordinate;
            }
        }

        this._layoutForegroundElement(xCoord, yCoord);

        if (this._dropShadowBehavior) {
            this._dropShadowBehavior.setShadow();
            window.setTimeout(Function.createDelegate(this, this._fixupDropShadowBehavior), 0);
        }

        this._layoutBackgroundElement();
    },

    _layoutForegroundElement: function (xCoord, yCoord) {
        /// <summary>
        /// Set the correct location of the foreground element to ensure that it is absolutely 
        /// positioned with respect to the browser. This is just a workaround for IE 6 since
        /// elements nested in relative parents cause modal popup positioning issues and 'fixed'
        /// is not supported by IE 6. Hence we manually compute the right location of the popup.
        /// </summary>
        /// <param name="xCoord" type="Number" integer="true" maybenull="false">
        /// <param name="yCoord" type="Number" integer="true" maybenull="false">        
        /// </params>

        if (this._isIE6 && this._relativeOrAbsoluteParentElement) {
            var foregroundLocation = $common.getLocation(this._foregroundElement);
            var relativeParentLocation = $common.getLocation(this._relativeOrAbsoluteParentElement);
            var getLocationXCoord = foregroundLocation.x;
            if (getLocationXCoord != xCoord) {
                this._foregroundElement.style.left = (xCoord - relativeParentLocation.x) + 'px';
            }

            var getLocationYCoord = foregroundLocation.y;
            if (getLocationYCoord != yCoord) {
                this._foregroundElement.style.top = (yCoord - relativeParentLocation.y) + 'px';
            }
        }
    },

    _layoutBackgroundElement: function () {
        /// <summary>
        /// Set the correct location of the background element to ensure that it is absolutely 
        /// positioned with respect to the browser.
        /// </summary>

        if (this._isIE6) {
            var backgroundLocation = $common.getLocation(this._backgroundElement);
            var backgroundXCoord = backgroundLocation.x;
            if (backgroundXCoord != 0) {
                this._backgroundElement.style.left = (-backgroundXCoord) + 'px';
            }

            var backgroundYCoord = backgroundLocation.y;
            if (backgroundYCoord != 0) {
                this._backgroundElement.style.top = (-backgroundYCoord) + 'px';
            }
        }
        var clientBounds = $common.getClientBounds();
        var clientWidth = clientBounds.width;
        var clientHeight = clientBounds.height;
        this._backgroundElement.style.width = Math.max(Math.max(document.documentElement.scrollWidth, document.body.scrollWidth), clientWidth) + 'px';
        this._backgroundElement.style.height = Math.max(Math.max(document.documentElement.scrollHeight, document.body.scrollHeight), clientHeight) + 'px';
    },

    _fixupDropShadowBehavior: function () {
        /// <summary>
        /// Some browsers don't update the location values immediately, so
        /// the location of the drop shadow would always be a step behind
        /// without this method
        /// </summary>

        if (this._dropShadowBehavior) {
            this._dropShadowBehavior.setShadow();
        }
    },

    _partialUpdateEndRequest: function (sender, endRequestEventArgs) {
        /// <summary>
        /// Show the popup if requested during a partial postback
        /// </summary>
        /// <param name="sender" type="Object">
        /// Sender
        /// </param>
        /// <param name="endRequestEventArgs" type="Sys.WebForms.EndRequestEventArgs">
        /// Event arguments
        /// </param>
        /// <returns />
        Sys.Extended.UI.ModalPopupBehavior.callBaseMethod(this, '_partialUpdateEndRequest', [sender, endRequestEventArgs]);

        if (this.get_element()) {
            var action = endRequestEventArgs.get_dataItems()[this.get_element().id];
            if ("show" == action) {
                this.show();
            } else if ("hide" == action) {
                this.hide();
            }
        }

        this._layout();
    },

    _onPopulated: function (sender, eventArgs) {
        /// <summary>
        /// Re-layout the popup after we've dynamically populated
        /// </summary>
        /// <param name="sender" type="Object">
        /// Sender
        /// </param>
        /// <param name="eventArgs" type="Sys.EventArgs">
        /// Event arguments
        /// </param>
        /// <returns />
        Sys.Extended.UI.ModalPopupBehavior.callBaseMethod(this, '_onPopulated', [sender, eventArgs]);

        this._layout();
    },

    _replaceAnimationTarget: function (memberName, target) {
        var json = this[memberName].get_json();
        this[memberName] = new Sys.Extended.UI.Animation.GenericAnimationBehavior(target);
        this[memberName].set_json(json);
        this[memberName].initialize();
    },

    _resetAnimationsTarget: function () {

        var target = $get(this.get_PopupControlID());

        this._replaceAnimationTarget('_onShowing', target);
        this._replaceAnimationTarget('_onShown', target);
        this._replaceAnimationTarget('_onHiding', target);
        this._replaceAnimationTarget('_onHidden', target);
    },

    get_PopupControlID: function () {
        /// <value type="String">
        /// The ID of the element to display as a modal popup
        /// </value>
        return this._PopupControlID;
    },
    set_PopupControlID: function (value) {
        if (this._PopupControlID != value) {
            this._PopupControlID = value;
            this.raisePropertyChanged('PopupControlID');
        }
    },

    get_X: function () {
        /// <value type="Number" integer="true">
        /// The number of pixels from the left of the browser to position the modal popup.
        /// </value>
        return this._xCoordinate;
    },
    set_X: function (value) {
        if (this._xCoordinate != value) {
            this._xCoordinate = value;
            this.raisePropertyChanged('X');
        }
    },

    get_Y: function () {
        /// <value type="Number" integer="true">
        /// The number of pixels from the top of the browser to position the modal popup.
        /// </value>
        return this._yCoordinate;
    },
    set_Y: function (value) {
        if (this._yCoordinate != value) {
            this._yCoordinate = value;
            this.raisePropertyChanged('Y');
        }
    },

    get_PopupDragHandleControlID: function () {
        /// <value type="String">
        /// The ID of the element to display as the drag handle for the modal popup
        /// </value>
        return this._PopupDragHandleControlID;
    },
    set_PopupDragHandleControlID: function (value) {
        if (this._PopupDragHandleControlID != value) {
            this._PopupDragHandleControlID = value;
            this.raisePropertyChanged('PopupDragHandleControlID');
        }
    },

    get_BackgroundCssClass: function () {
        /// <value type="String">
        /// The CSS class to apply to the background when the modal popup is displayed
        /// </value>
        return this._BackgroundCssClass;
    },
    set_BackgroundCssClass: function (value) {
        if (this._BackgroundCssClass != value) {
            this._BackgroundCssClass = value;
            this.raisePropertyChanged('BackgroundCssClass');
        }
    },

    get_DropShadow: function () {
        /// <value type="Boolean">
        /// Whether or not a drop-shadow should be added to the modal popup
        /// </value>
        return this._DropShadow;
    },
    set_DropShadow: function (value) {
        if (this._DropShadow != value) {
            this._DropShadow = value;
            this.raisePropertyChanged('DropShadow');
        }
    },

    get_Drag: function () {
        /// <value type="Boolean">
        /// Obsolete: Setting the _Drag property is a noop
        /// </value>
        return this._Drag;
    },
    set_Drag: function (value) {
        if (this._Drag != value) {
            this._Drag = value;
            this.raisePropertyChanged('Drag');
        }
    },

    get_OkControlID: function () {
        /// <value type="String">
        /// The ID of the element that dismisses the modal popup
        /// </value>
        return this._OkControlID;
    },
    set_OkControlID: function (value) {
        if (this._OkControlID != value) {
            this._OkControlID = value;
            this.raisePropertyChanged('OkControlID');
        }
    },

    get_CancelControlID: function () {
        /// <value type="String">
        /// The ID of the element that cancels the modal popup
        /// </value>
        return this._CancelControlID;
    },
    set_CancelControlID: function (value) {
        if (this._CancelControlID != value) {
            this._CancelControlID = value;
            this.raisePropertyChanged('CancelControlID');
        }
    },

    get_OnOkScript: function () {
        /// <value type="String">
        /// Script to run when the modal popup is dismissed with the OkControlID
        /// </value>
        return this._OnOkScript;
    },
    set_OnOkScript: function (value) {
        if (this._OnOkScript != value) {
            this._OnOkScript = value;
            this.raisePropertyChanged('OnOkScript');
        }
    },

    get_OnCancelScript: function () {
        /// <value type="String">
        /// Script to run when the modal popup is dismissed with the CancelControlID
        /// </value>
        return this._OnCancelScript;
    },
    set_OnCancelScript: function (value) {
        if (this._OnCancelScript != value) {
            this._OnCancelScript = value;
            this.raisePropertyChanged('OnCancelScript');
        }
    },

    get_repositionMode: function () {
        /// <value type="AjaxControlToolkit.ModalPopupRepositionMode">
        /// Determines if the ModalPopup should be repositioned on window resize/scroll
        /// </value>
        return this._repositionMode;
    },
    set_repositionMode: function (value) {
        if (this._repositionMode !== value) {
            this._repositionMode = value;
            this.raisePropertyChanged('RepositionMode');
        }
    },

    get_OnShowing: function () {
        /// <value type="String" mayBeNull="true">
        /// Generic OnShowing Animation's JSON definition. Played before the Popup is being shown.
        /// </value>
        return this._onShowing.get_json();
    },

    set_OnShowing: function (value) {
        this._onShowing.set_json(value);
        this.raisePropertyChanged('OnShowing');
    },

    get_OnShown: function () {
        /// <value type="String" mayBeNull="true">
        /// Generic OnShown Animation's JSON definition. Played once the Popup is shown.
        /// </value>    
        return this._onShown.get_json();
    },

    set_OnShown: function (value) {
        this._onShown.set_json(value);
        this.raisePropertyChanged('OnShown');
    },

    get_OnHiding: function () {
        /// <value type="String" mayBeNull="true">
        /// Generic OnHiding Animation's JSON definition. Played before the Popup is being hidden.
        /// </value>
        return this._onHiding.get_json();
    },

    set_OnHiding: function (value) {
        this._onHiding.set_json(value);
        this.raisePropertyChanged('OnHiding');
    },

    get_OnHidden: function () {
        /// <value type="String" mayBeNull="true">
        /// Generic OnHidden Animation's JSON definition. Played once the Popup is hidden.
        /// </value>    
        return this._onHidden.get_json();
    },

    set_OnHidden: function (value) {
        this._onHidden.set_json(value);
        this.raisePropertyChanged('OnHidden');
    },

    add_showing: function (handler) {
        /// <summary>
        /// Add an event handler for the showing event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('showing', handler);
    },
    remove_showing: function (handler) {
        /// <summary>
        /// Remove an event handler from the showing event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('showing', handler);
    },
    raiseShowing: function (eventArgs) {
        /// <summary>
        /// Raise the showing event
        /// </summary>
        /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
        /// Event arguments for the showing event
        /// </param>
        /// <returns />

        var handler = this.get_events().getHandler('showing');
        if (handler) {
            handler(this, eventArgs);
        }
    },

    add_shown: function (handler) {
        /// <summary>
        /// Add an event handler for the shown event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('shown', handler);
    },
    remove_shown: function (handler) {
        /// <summary>
        /// Remove an event handler from the shown event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('shown', handler);
    },
    raiseShown: function (eventArgs) {
        /// <summary>
        /// Raise the shown event
        /// </summary>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="false">
        /// Event arguments for the shown event
        /// </param>
        /// <returns />

        var handler = this.get_events().getHandler('shown');
        if (handler) {
            handler(this, eventArgs);
        }
    },

    add_hiding: function (handler) {
        /// <summary>
        /// Add an event handler for the hiding event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('hiding', handler);
    },
    remove_hiding: function (handler) {
        /// <summary>
        /// Remove an event handler from the hiding event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('hiding', handler);
    },
    raiseHiding: function (eventArgs) {
        /// <summary>
        /// Raise the hiding event
        /// </summary>
        /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
        /// Event arguments for the hiding event
        /// </param>
        /// <returns />

        var handler = this.get_events().getHandler('hiding');
        if (handler) {
            handler(this, eventArgs);
        }
    },

    add_hidden: function (handler) {
        /// <summary>
        /// Add an event handler for the hidden event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('hidden', handler);
    },
    remove_hidden: function (handler) {
        /// <summary>
        /// Remove an event handler from the hidden event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('hidden', handler);
    },
    raiseHidden: function (eventArgs) {
        /// <summary>
        /// Raise the hidden event
        /// </summary>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="false">
        /// Event arguments for the hidden event
        /// </param>
        /// <returns />

        var handler = this.get_events().getHandler('hidden');
        if (handler) {
            handler(this, eventArgs);
        }
    }
}
Sys.Extended.UI.ModalPopupBehavior.registerClass('Sys.Extended.UI.ModalPopupBehavior', Sys.Extended.UI.DynamicPopulateBehaviorBase);

Sys.Extended.UI.ModalPopupBehavior.invokeViaServer = function (behaviorID, show) {
    /// <summary>
    /// This static function (that is intended to be called from script emitted
    /// on the server) will show or hide the behavior associated with behaviorID
    /// (i.e. to use this, the ModalPopupExtender must have an ID or BehaviorID) and
    /// will either show or hide depending on the show parameter.
    /// </summary>
    /// <param name="behaviorID" type="String">
    /// ID of the modal popup behavior
    /// </param>
    /// <param name="show" type="Boolean">
    /// Whether to show or hide the modal popup
    /// </param>
    var behavior = $find(behaviorID);
    if (behavior) {
        if (show) {
            behavior.show();
        } else {
            behavior.hide();
        }
    }
}

H// (c) 2010 CodePlex Foundation
(function(){function a(){Type._registerScript("MicrosoftAjaxSerialization.js",["MicrosoftAjaxCore.js"]);var a,c,b=Sys._isBrowser,d=Sys._merge;Type.registerNamespace("Sys.Serialization");a=Sys.Serialization.JavaScriptSerializer=function(){};a.registerClass("Sys.Serialization.JavaScriptSerializer");a._esc={charsRegExs:{'"':/\"/g,"\\":/\\/g},chars:["\\",'"'],dateRegEx:/(^|[^\\])\"\\\/Date\((-?[0-9]+)(?:[a-zA-Z]|(?:\+|-)[0-9]{4})?\)\\\/\"/g,escapeChars:{"\\":"\\\\",'"':'\\"',"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r"},escapeRegExG:/[\"\\\x00-\x1F]/g,escapeRegEx:/[\"\\\x00-\x1F]/i,jsonRegEx:/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/g,jsonStringRegEx:/\"(\\.|[^\"\\])*\"/g};a._init=function(){for(var c=this._esc,f=c.chars,e=c.charsRegExs,d=c.escapeChars,b=0;b<32;b++){var a=String.fromCharCode(b);f[b+2]=a;e[a]=new RegExp(a,"g");d[a]=d[a]||"\\u"+("000"+b.toString(16)).slice(-4)}this._load=true};a._serializeNumberWithBuilder=function(a,b){if(!isFinite(a))throw Error.invalidOperation(Sys.Res.cannotSerializeNonFiniteNumbers);b.append(String(a))};a._serializeStringWithBuilder=function(a,f){f.append('"');var c=this._esc;if(c.escapeRegEx.test(a)){!this._load&&this._init();if(a.length<128)a=a.replace(c.escapeRegExG,function(a){return c.escapeChars[a]});else for(var e=0;e<34;e++){var d=c.chars[e];if(a.indexOf(d)!==-1){var g=c.escapeChars[d];a=b("Opera")||b("Firefox")?a.split(d).join(g):a.replace(c.charsRegExs[d],g)}}}f.append(a).append('"')};a._serializeWithBuilder=function(b,a,i,h){var d=this,c;switch(typeof b){case"object":if(b)if(Number.isInstanceOfType(b))d._serializeNumberWithBuilder(b,a);else if(Boolean.isInstanceOfType(b))a.append(b);else if(String.isInstanceOfType(b))d._serializeStringWithBuilder(b,a);else if(b instanceof Array){a.append("[");for(c=0;c<b.length;++c){c&&a.append(",");d._serializeWithBuilder(b[c],a,false,h)}a.append("]")}else{if(Date.isInstanceOfType(b)){a.append('"\\/Date(').append(b.getTime()).append(')\\/"');break}var e=[],f=0;for(var g in b)if(g.charAt(0)!=="$")if(g==="__type"&&f){e[f++]=e[0];e[0]=g}else e[f++]=g;i&&e.sort();a.append("{");var j;for(c=0;c<f;c++){var l=e[c],k=b[l],m=typeof k;if(m!=="undefined"&&m!=="function"){j&&a.append(",");d._serializeWithBuilder(l,a,i,h);a.append(":");d._serializeWithBuilder(k,a,i,h);j=true}}a.append("}")}else a.append("null");break;case"number":d._serializeNumberWithBuilder(b,a);break;case"string":d._serializeStringWithBuilder(b,a);break;case"boolean":a.append(b);break;default:a.append("null")}};a.serialize=function(b){var a=new Sys.StringBuilder;Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(b,a,false);return a.toString()};a.deserialize=function(b,d){if(!b.length)throw Error.argument("data",Sys.Res.cannotDeserializeEmptyString);var e,a=Sys.Serialization.JavaScriptSerializer._esc;try{var c=b.replace(a.dateRegEx,"$1new Date($2)");if(d&&a.jsonRegEx.test(c.replace(a.jsonStringRegEx,"")))throw null;return window.eval("("+c+")")}catch(e){throw Error.argument("data",Sys.Res.cannotDeserializeInvalidJson);}}}if(window.Sys&&Sys.loader)Sys.loader.registerScript("Serialization",null,a);else a()})();�// (c) 2010 CodePlex Foundation
(function(){var a=null;function b(){var c=false,h="InternetExplorer",b=true,f="undefined",e="navigate";Type._registerScript("MicrosoftAjaxHistory.js",["MicrosoftAjaxComponentModel.js","MicrosoftAjaxSerialization.js"]);var g,d,i=Sys._isBrowser;g=Sys.HistoryEventArgs=function(a){Sys.HistoryEventArgs.initializeBase(this);this._state=a};g.prototype={get_state:function(){return this._state}};g.registerClass("Sys.HistoryEventArgs",Sys.EventArgs);g=Sys.Application;g._currentEntry="";g._initialState=a;g._state={};d=Sys._Application.prototype;d.get_stateString=function(){var b=a;if(i("Firefox")){var d=window.location.href,c=d.indexOf("#");if(c!==-1)b=d.substring(c+1);else b="";return b}else b=window.location.hash;if(b.length&&b.charAt(0)==="#")b=b.substring(1);return b};d.get_enableHistory=function(){return!!this._enableHistory};d.set_enableHistory=function(a){this._enableHistory=a};d.add_navigate=function(a){this._addHandler(e,a)};d.remove_navigate=function(a){this._removeHandler(e,a)};d.addHistoryPoint=function(g,j){var c=this;c._ensureHistory();var d=c._state;for(var e in g){var h=g[e];if(h===a){if(typeof d[e]!==f)delete d[e]}else d[e]=h}var i=c._serializeState(d);c._historyPointIsNew=b;c._setState(i,j);c._raiseNavigate()};d.setServerId=function(a,b){this._clientId=a;this._uniqueId=b};d.setServerState=function(a){this._ensureHistory();this._state.__s=a;this._updateHiddenField(a)};d._deserializeState=function(a){var e={};a=a||"";var b=a.indexOf("&&");if(b!==-1&&b+2<a.length){e.__s=a.substr(b+2);a=a.substr(0,b)}for(var g=a.split("&"),f=0,j=g.length;f<j;f++){var d=g[f],c=d.indexOf("=");if(c!==-1&&c+1<d.length){var i=d.substr(0,c),h=d.substr(c+1);e[i]=decodeURIComponent(h)}}return e};d._enableHistoryInScriptManager=function(){this._enableHistory=b};d._ensureHistory=function(){var a=this;if(!a._historyInitialized&&a._enableHistory){if(i(h)&&Sys.Browser.documentMode<8){a._historyFrame=Sys.get("#__historyFrame");a._ignoreIFrame=b}a._timerHandler=Function.createDelegate(a,a._onIdle);a._timerCookie=window.setTimeout(a._timerHandler,100);var c;try{a._initialState=a._deserializeState(a.get_stateString())}catch(c){}a._historyInitialized=b}};d._navigate=function(d){var a=this;a._ensureHistory();var c=a._deserializeState(d);if(a._uniqueId){var e=a._state.__s||"",b=c.__s||"";if(b!==e){a._updateHiddenField(b);__doPostBack(a._uniqueId,b);a._state=c;return}}a._setState(d);a._state=c;a._raiseNavigate()};d._onIdle=function(){var a=this;delete a._timerCookie;var b=a.get_stateString();if(b!==a._currentEntry){if(!a._ignoreTimer){a._historyPointIsNew=c;a._navigate(b)}}else a._ignoreTimer=c;a._timerCookie=window.setTimeout(a._timerHandler,100)};d._onIFrameLoad=function(b){var a=this;a._ensureHistory();if(!a._ignoreIFrame){a._historyPointIsNew=c;a._navigate(b)}a._ignoreIFrame=c};d._onPageRequestManagerBeginRequest=function(){this._ignoreTimer=b;this._originalTitle=document.title};d._onPageRequestManagerEndRequest=function(n,m){var d=this,k=m.get_dataItems()[d._clientId],j=d._originalTitle;d._originalTitle=a;var g=Sys.get("#__EVENTTARGET");if(g&&g.value===d._uniqueId)g.value="";if(typeof k!==f){d.setServerState(k);d._historyPointIsNew=b}else d._ignoreTimer=c;var e=d._serializeState(d._state);if(e!==d._currentEntry){d._ignoreTimer=b;if(typeof j==="string"){if(!i(h)||Sys.Browser.version>7){var l=document.title;document.title=j;d._setState(e);document.title=l}else d._setState(e);d._raiseNavigate()}else{d._setState(e);d._raiseNavigate()}}};d._raiseNavigate=function(){var a=this,d=a._historyPointIsNew,c={};for(var b in a._state)if(b!=="__s")c[b]=a._state[b];var f=new Sys.HistoryEventArgs(c);Sys.Observer.raiseEvent(a,e,f);if(!d){var g;try{if(i("Firefox")&&window.location.hash&&(!window.frameElement||window.top.location.hash))Sys.Browser.version<3.5?window.history.go(0):(location.hash=a.get_stateString())}catch(g){}}};d._serializeState=function(d){var c=[];for(var a in d){var e=d[a];if(a==="__s")var b=e;else c.push(a+"="+encodeURIComponent(e))}return c.join("&")+(b?"&&"+b:"")};d._setState=function(e,g){var d=this;if(d._enableHistory){e=e||"";if(e!==d._currentEntry){if(window.theForm){var i=window.theForm.action,j=i.indexOf("#");window.theForm.action=(j!==-1?i.substring(0,j):i)+"#"+e}if(d._historyFrame&&d._historyPointIsNew){d._ignoreIFrame=b;var h=d._historyFrame.contentWindow.document;h.open("javascript:'<html></html>'");h.write("<html><head><title>"+(g||document.title)+'</title><script type="text/javascript">parent.Sys.Application._onIFrameLoad('+Sys.Serialization.JavaScriptSerializer.serialize(e)+");<\/script></head><body></body></html>");h.close()}d._ignoreTimer=c;d._currentEntry=e;if(d._historyFrame||d._historyPointIsNew){var k=d.get_stateString();if(e!==k){window.location.hash=e;d._currentEntry=d.get_stateString();if(typeof g!==f&&g!==a)document.title=g}}d._historyPointIsNew=c}}};d._updateHiddenField=function(b){if(this._clientId){var a=document.getElementById(this._clientId);if(a)a.value=b}}}if(window.Sys&&Sys.loader)Sys.loader.registerScript("History",a,b);else b()})();�`// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference name="MicrosoftAjaxTimer.debug.js" />
/// <reference name="MicrosoftAjaxWebForms.debug.js" />
/// <reference path="../Common/Common.js" />


function MaskedEditSetMessage(value,msg,txt)
{
    value.errormessage = msg;
    if (txt == "")
    {
        value.text = msg;
    }
    else
    {
        value.text = txt;
    }
    value.innerHTML = value.text;
}
function MaskedEditMessageShow(value,IsValid)
{
    if (typeof(value.display) == "string") 
    {    
        if (value.display == "None") {
            return;
        }
        if (value.display == "Dynamic") {
            value.style.display = IsValid ? "none" : "inline";
            return;
        }
    }
    value.style.visibility = IsValid ? "hidden" : "visible";
}
function MaskedEditSetCssClass(value,Css)
{
    var target = $get(value.TargetValidator); 
    Sys.UI.DomElement.removeCssClass(target,value.InvalidValueCssClass);
    Sys.UI.DomElement.removeCssClass(target,value.CssBlurNegative);
    Sys.UI.DomElement.removeCssClass(target,value.CssFocus);
    Sys.UI.DomElement.removeCssClass(target,value.CssFocusNegative);
    if (Css != "")
    {
        Sys.UI.DomElement.addCssClass(target,Css);
    }
}
function MaskedEditValidatorDateTime(value)
{
    MaskedEditSetMessage(value,"","");
    MaskedEditSetCssClass(value,"");
    MaskedEditMessageShow(value,true);
    if (value.IsMaskedEdit == "false")
    {
        return true;
    }
    var target = $get(value.TargetValidator); 
    if (value.ValidEmpty  == "false")
    {
        if (Sys.Extended.UI.TextBoxWrapper.get_Wrapper(target).get_Value() == value.InitialValue)
        {
            MaskedEditSetMessage(value,value.EmptyValueMessage,value.EmptyValueText);
            MaskedEditSetCssClass(value,value.InvalidValueCssClass);
            MaskedEditMessageShow(value,false);
            return false;
        }
    }
    if (Sys.Extended.UI.TextBoxWrapper.get_Wrapper(target).get_Value() == "")
    {
        return true;
    }
    var ret = true;
    var mask = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(target).get_Value();
    if (value.ValidationExpression != "" )
    {
        var rx = new RegExp(value.ValidationExpression);
        var matches = rx.exec(mask);
        ret = (matches != null && mask == matches[0]);
        if (!ret)
        {
            MaskedEditSetMessage(value,value.InvalidValueMessage,value.InvalidValueText);
            MaskedEditSetCssClass(value,value.InvalidValueCssClass);
            MaskedEditMessageShow(value,false);
            return false;
        }
    }
    var PartDate = target.MaskedEditBehavior.AutoFormatDate();
    var PartTime = target.MaskedEditBehavior.AutoFormatTime();   
    var MinVlDt = "";
    var MinVlTm = "";
    if (value.MinimumValue != "")
    {
        MinVlDt = value.MinimumValue.split(" ")[0];
        MinVlTm = value.MinimumValue.split(" ")[1];
    }
    var MaxVlDt = "";
    var MaxVlTm = "";
    if (value.MaximumValue != "")
    {
        MaxVlDt = value.MaximumValue.split(" ")[0];
        MaxVlTm = value.MaximumValue.split(" ")[1];
    }
    ret = MaskedEditValidatorPartDate(value,PartDate,MinVlDt,MaxVlDt);
    if (ret)
    {
        ret = MaskedEditValidatorPartTime(value,PartTime,MinVlTm,MaxVlTm);
    }
    if (ret && value.ClientValidationFunction != "")
    {
        var args = { Value:mask, IsValid:true };
        eval(value.ClientValidationFunction + "(value, args);");
        ret = args.IsValid;
        if (!ret)
        {
            MaskedEditSetMessage(value,value.InvalidValueMessage,value.InvalidValueText);
            MaskedEditSetCssClass(value,value.InvalidValueCssClass);
        }
    }
    if (!ret)
    {
        MaskedEditMessageShow(value,ret);
    }
    return ret;
}
function MaskedEditValidatorPartTime(value,mask,MinVl,MaxVl)
{
    var ret = true;
    var AttibTmSep = value.TimeSeparator;
    var AttibTmSyb = value.AmPmSymbol;
    var SybTm = AttibTmSyb.split(";");
    var tm = AttibTmSyb.replace(";","|");
    var reg1 = "^(^([0][0-9]|[1][0-2])"+ AttibTmSep + "([0-5][0-9])" + AttibTmSep + "([0-5][0-9])\\s("+tm+")$)|(^([0][0-9]|[1][0-2])" + AttibTmSep + "([0-5][0-9])\\s("+tm+")$)$";
    var reg2 = "^(^([0-1][0-9]|[2][0-3])" + AttibTmSep + "([0-5][0-9])" + AttibTmSep + "([0-5][0-9])$)|(^([0-1][0-9]|[2][0-3])" + AttibTmSep + "([0-5][0-9])$)$";
    var H=-1;
    var M=-1;
    var S=-1;
    var aux = "";
    var m_arrValue = mask.split(AttibTmSep);
    var regex1 = new RegExp(reg1);
    var matches1 = regex1.exec(mask);
    var regex2 = new RegExp(reg2);
    var matches2 = regex2.exec(mask);
    if  (matches1 && (matches1[0] == mask))
    {
        aux = mask.substring(mask.length-2).substring(0,1);
        H = parseInt(m_arrValue[0],10);
        if (aux.toUpperCase() == SybTm[1].substring(0,1).toUpperCase())
        {
            H += 12;
            if (H == 24)
            {
                H = 12;
            }
        }
        M = parseInt(m_arrValue[1],10);
        S = (value.length > 9?parseInt(m_arrValue[2].substring(0,2),10):0);
    }
    else if (matches2 && (matches2[0] == mask))
    {
        H = parseInt(m_arrValue[0],10);
        M = parseInt(m_arrValue[1],10);
        S = (mask.length > 5?parseInt(m_arrValue[2],10):0);
    }
    if (H==-1 || M==-1 || S==-1)
    {
        ret = false;
    }
    if (!ret)
    {
        MaskedEditSetMessage(value,value.InvalidValueMessage,value.InvalidValueText);
        MaskedEditSetCssClass(value,value.InvalidValueCssClass);
    }
    if(ret && (MaxVl != "" || MinVl != ""))
    {
        var Hr;
        var Mr;
        var Sr;
        var m_arr;
        if (MinVl != "" )
        {
            Hr=-1;
            Mr=-1;
            Sr=-1;
            m_arr = MinVl.split(AttibTmSep);
            matches1 = regex1.exec(MinVl);
            matches2 = regex2.exec(MinVl);
            if (matches1 && (matches1[0] == MinVl))
            {
                aux = MinVl.substring(MinVl.length-2).substring(0,1);
                Hr = parseInt(m_arr[0],10);
                if (aux.toUpperCase() == SybTm[1].substring(0,1).toUpperCase())
                {
                    Hr += 12;
                    if (Hr == 24)
                    {
                        Hr = 0;
                    }
                }
                Mr = parseInt(m_arr[1],10);
                Sr = (MinVl.length > 9?parseInt(m_arr[2].substring(0,2),10):0);
            }
            else if (matches2 && (matches2[0] == MinVl))
            {
                Hr = parseInt(m_arr[0],10);
                Mr = parseInt(m_arr[1],10);
                Sr = (MinVl.length > 5?parseInt(m_arr[2],10):0);
            }
            ret = (H > Hr || (H == Hr && M > Mr) || (H == Hr && M == Mr && S >= Sr));
            if (!ret)
            {
                MaskedEditSetMessage(value,value.MinimumValueMessage,value.MinimumValueText);
                MaskedEditSetCssClass(value,value.InvalidValueCssClass);
            }
        }
        if (MaxVl != "" && ret)
        {
            Hr=-1;
            Mr=-1;
            Sr=-1;
            m_arr = MaxVl.split(AttibTmSep);
            matches1 = regex1.exec(MaxVl);
            matches2 = regex2.exec(MaxVl);
            if  (matches1 && (matches1[0] == MaxVl))
            {
                aux = MaxVl.substring(MaxVl.length-2).substring(0,1);
                Hr = parseInt(m_arr[0],10);
                if (aux.toUpperCase() == SybTm[1].substring(0,1).toUpperCase())
                {
                    Hr += 12;
                    if (Hr == 24)
                    {
                        Hr = 0;
                    }
                }
                Mr = parseInt(m_arr[1],10);
                Sr = (MaxVl.length > 9?parseInt(m_arr[2].substring(0,2),10):0);
            }
            else if (matches2 && (matches2[0] == MaxVl))
            {
                Hr = parseInt(m_arr[0],10);
                Mr = parseInt(m_arr[1],10);
                Sr = (MaxVl.length > 5?parseInt(m_arr[2],10):0);
            }
            ret = (H < Hr || (H == Hr && M < Mr) || (H == Hr && M == Mr && S <= Sr));
            if (!ret)
            {
                MaskedEditSetMessage(value,value.MaximumValueMessage,value.MaximumValueText);
                MaskedEditSetCssClass(value,value.InvalidValueCssClass);
            }
        }
    }
    return ret;
}
function MaskedEditValidatorPartDate(value,mask,MinVl,MaxVl)
{
    var ret = true;
    var AttibDtFmt = value.DateFormat;
    var AttibDtSep = value.DateSeparator;
    var m_arrDate = mask.split(AttibDtSep);
    if (parseInt(m_arrDate.length,10) != 3)
    {
        MaskedEditSetMessage(value,value.InvalidValueMessage,value.InvalidValueText);
        MaskedEditSetCssClass(value,value.InvalidValueCssClass);
        ret = false;
    }
    if (AttibDtFmt.indexOf("D") == -1 || AttibDtFmt.indexOf("M") == -1 || AttibDtFmt.indexOf("Y") == -1)
    {
        MaskedEditSetMessage(value,value.InvalidValueMessage,value.InvalidValueText);
        MaskedEditSetCssClass(value,value.InvalidValueCssClass);
        ret = false;
    }
    var D = -1;
    var M = -1;
    var Y = -1;
    if (ret)
    {
        D = parseInt(m_arrDate[AttibDtFmt.indexOf("D")],10);
        M = parseInt(m_arrDate[AttibDtFmt.indexOf("M")],10);
        Y = parseInt(m_arrDate[AttibDtFmt.indexOf("Y")],10)
        if (Y < 100)
        {
            Y = parseInt(Y + value.Century,10);
        }
        else if (Y < 999)
        {
            Y += parseInt(value.Century.substring(0,1) + Y,10)
        }
        ret = (D>0 && M>0 && Y>0 && (D<=[,31,28,31,30,31,30,31,31,30,31,30,31][M] || D==29 && M==2 && Y%4==0 && (Y%100>0 || Y%400==0)));
    }
    if (!ret)
    {
        MaskedEditSetMessage(value,value.InvalidValueMessage,value.InvalidValueText);
        MaskedEditSetCssClass(value,value.InvalidValueCssClass);
    }
    if(ret && (MaxVl != "" || MinVl != ""))
    {
       var m_arr;
       var Dr=-1;
       var Mr=-1;
       var Yr=-1;
       if (MinVl != "")
       {
            m_arr = MinVl.split(AttibDtSep);
            Dr = parseInt(m_arr[AttibDtFmt.indexOf("D")],10);
            Mr = parseInt(m_arr[AttibDtFmt.indexOf("M")],10);
            Yr = parseInt(m_arr[AttibDtFmt.indexOf("Y")],10);
            if (Yr < 100)
            {
                Yr = parseInt(Yr + value.Century,10);
            }
            else if (Yr < 999)
            {
                Yr += parseInt(value.Century.substring(0,1) + Yr,10)
            }
            ret = (Dr>0 && Mr>0 && Yr>0 && Y > Yr || (Y == Yr && M > Mr) || (Y == Yr && M == Mr && D >= Dr));
            if (!ret)
            {
                MaskedEditSetMessage(value,value.MinimumValueMessage,value.MinimumValueText);
                MaskedEditSetCssClass(value,value.InvalidValueCssClass);
            }
       }
       if (ret && MaxVl != "")
       {
            m_arr = MaxVl.split(AttibDtSep);
            Dr = parseInt(m_arr[AttibDtFmt.indexOf("D")],10);
            Mr = parseInt(m_arr[AttibDtFmt.indexOf("M")],10);
            Yr = parseInt(m_arr[AttibDtFmt.indexOf("Y")],10);
            if (Yr < 100)
            {
                Yr = parseInt(Yr + value.Century,10);
            }
            else if (Yr < 999)
            {
                Yr += parseInt(value.Century.substring(0,1) + Yr,10)
            }
            ret = (Dr>0 && Mr>0 && Yr>0 && Y < Yr || (Y == Yr && M < Mr) || (Y == Yr && M == Mr && D <= Dr));
            if (!ret)
            {
                MaskedEditSetMessage(value,value.MaximumValueMessage,value.MaximumValueText);
                MaskedEditSetCssClass(value,value.InvalidValueCssClass);
            }
       }
    }
    return ret;
}
function MaskedEditValidatorDate(value)
{

    MaskedEditSetMessage(value,"","");
    MaskedEditSetCssClass(value,"");
    MaskedEditMessageShow(value,true);
    if (value.IsMaskedEdit == "false")
    {
        return true;
    }
    var target = $get(value.TargetValidator); 
    if (value.ValidEmpty  == "false")
    {
        if (Sys.Extended.UI.TextBoxWrapper.get_Wrapper(target).get_Value() == value.InitialValue)
        {
            MaskedEditSetMessage(value,value.EmptyValueMessage,value.EmptyValueText);
            MaskedEditSetCssClass(value,value.InvalidValueCssClass);
            MaskedEditMessageShow(value,false);
            return false;
        }
    }
    if (Sys.Extended.UI.TextBoxWrapper.get_Wrapper(target).get_Value() == "")
    {
        return true;
    }
    var ret = true;
    var mask = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(target).get_Value();
    if (value.ValidationExpression != "" )
    {
        var rx = new RegExp(value.ValidationExpression);
        var matches = rx.exec(mask);
        ret = (matches != null && mask == matches[0]);
        if (!ret)
        {
            MaskedEditSetMessage(value,value.InvalidValueMessage,value.InvalidValueText);
            MaskedEditSetCssClass(value,value.InvalidValueCssClass);
            MaskedEditMessageShow(value,false);
            return false;
        }
    }
    ret = MaskedEditValidatorPartDate(value,mask,value.MinimumValue,value.MaximumValue);
    if (ret && value.ClientValidationFunction != "")
    {
        var args = { Value:mask, IsValid:true };
        eval(value.ClientValidationFunction + "(value, args);");
        ret = args.IsValid;
        if (!ret)
        {
            MaskedEditSetMessage(value,value.InvalidValueMessage,value.InvalidValueText);
            MaskedEditSetCssClass(value,value.InvalidValueCssClass);
        }
    }
    if (!ret)
    {
        MaskedEditMessageShow(value,ret);
    }
    return ret;
}
function MaskedEditValidatorTime(value)
{
    MaskedEditSetMessage(value,"","");
    MaskedEditSetCssClass(value,"");
    MaskedEditMessageShow(value,true);
    if (value.IsMaskedEdit == "false")
    {
        return true;
    }
    var target = $get(value.TargetValidator); 
    if (value.ValidEmpty  == "false")
    {
        if (Sys.Extended.UI.TextBoxWrapper.get_Wrapper(target).get_Value() == value.InitialValue)
        {
            MaskedEditSetMessage(value,value.EmptyValueMessage,value.EmptyValueText);
            MaskedEditSetCssClass(value,value.InvalidValueCssClass);
            MaskedEditMessageShow(value,false);
            return false;
        }
    }
    if (Sys.Extended.UI.TextBoxWrapper.get_Wrapper(target).get_Value() == "")
    {
        return true;
    }
    var ret = true;
    var mask = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(target).get_Value();
    if (value.ValidationExpression != "" )
    {
        var rx = new RegExp(value.ValidationExpression);
        var matches = rx.exec(mask);
        ret = (matches != null && mask == matches[0]);
        if (!ret)
        {
            MaskedEditSetMessage(value,value.InvalidValueMessage,value.InvalidValueText);
            MaskedEditSetCssClass(value,value.InvalidValueCssClass);
            MaskedEditMessageShow(value,false);
            return false;
        }
    }
    ret = MaskedEditValidatorPartTime(value,mask,value.MinimumValue,value.MaximumValue);
    if (ret && value.ClientValidationFunction != "")
    {
        var args = { Value:mask, IsValid:true };
        eval(value.ClientValidationFunction + "(value, args);");
        ret = args.IsValid;
        if (!ret)
        {
            MaskedEditSetMessage(value,value.InvalidValueMessage,value.InvalidValueText);
            MaskedEditSetCssClass(value,value.InvalidValueCssClass);
        }
    }
    if (!ret)
    {
        MaskedEditMessageShow(value,ret);
    }
    return ret;        
}
function MaskedEditValidatorNumber(value)
{
    MaskedEditSetMessage(value,"","");
    MaskedEditSetCssClass(value,"");
    MaskedEditMessageShow(value,true);
    if (value.IsMaskedEdit == "false")
    {
        return true;
    }
    var target = $get(value.TargetValidator); 
    if (value.ValidEmpty  == "false")
    {
        if (Sys.Extended.UI.TextBoxWrapper.get_Wrapper(target).get_Value() == value.InitialValue)
        {
            MaskedEditSetMessage(value,value.EmptyValueMessage,value.EmptyValueText);
            MaskedEditSetCssClass(value,value.InvalidValueCssClass);
            MaskedEditMessageShow(value,false);
            return false;
        }
    }
    if (Sys.Extended.UI.TextBoxWrapper.get_Wrapper(target).get_Value() == "")
    {
        return true;
    }
    var ret = true;
    var AttibThSep = value.Thousands;
    var AttibDcSep = value.Decimal;
    var AttibCuSyb = value.Money;
    var AttibLastPos = value.LastMaskPosition + AttibCuSyb.length + 1;
    
    var mask = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(target).get_Value();

    if (value.ValidationExpression != "" )
    {
        var rx = new RegExp(value.ValidationExpression);
        var matches = rx.exec(mask);
        ret = (matches != null && mask == matches[0]);
        if (!ret)
        {
            MaskedEditSetMessage(value,value.InvalidValueMessage,value.InvalidValueText);
            MaskedEditSetCssClass(value,value.InvalidValueCssClass);
            MaskedEditMessageShow(value,false);
            return false;
        }
    }
    ret = false;
    var cleanInput = null;
    var exp  = null;
    var m = null;
    var num = null;
    var Compnum = null;
    mask = mask.replace(new RegExp("(\\" + AttibThSep + ")", "g"), "");
    mask = mask.replace(new RegExp("(\\" + AttibCuSyb + ")", "g"), "");
    m = mask.match(/^\s*(\S+(\s+\S+)*)\s*$/);
    if (m != null)
    {
        mask = m[1];
    }
    exp = /^\s*[-\+]?\d+\s*$/;
    if (mask.match(exp) != null) 
    {
        num = parseInt(mask, 10);
        ret = (num == (isNaN(num) ? null : num));
    }
    if (ret)
    {
        if (value.MaximumValue != "")
        {
            Compnum = parseInt(value.MaximumValue, 10);
            if (Compnum == (isNaN(Compnum) ? null : Compnum))
            {
                if (num > Compnum)
                {
                    ret = false;
                    MaskedEditSetMessage(value,value.MaximumValueMessage,value.MaximumValueText);
                    MaskedEditSetCssClass(value,value.InvalidValueCssClass);
                }
            }
        }
        if (ret && value.MinimumValue != "")
        {
            Compnum = parseInt(value.MinimumValue, 10);
            if (Compnum == (isNaN(Compnum) ? null : Compnum))
            {
                if (num < Compnum)
                {
                    ret = false;
                    MaskedEditSetMessage(value,value.MinimumValueMessage,value.MinimumValueText);
                    MaskedEditSetCssClass(value,value.InvalidValueCssClass);
                }
            }
        }
    }
    else
    {
        exp = new RegExp("^\\s*([-\\+])?(\\d+)?(\\" + AttibDcSep + "(\\d+))?\\s*$");
        m = mask.match(exp);
        if (m != null)
        {
            cleanInput = null;
            if  (typeof(m[1]) != "undefined")
            {
                cleanInput = m[1] + (m[2].length>0 ? m[2] : "0") + "." + m[4];
            }
            else
            {
                cleanInput = (m[2].length>0 ? m[2] : "0") + "." + m[4];
            }
            num = parseFloat(cleanInput);
            ret = (num == (isNaN(num) ? null : num));            
        }
        if (!ret)
        {
            MaskedEditSetMessage(value,value.InvalidValueMessage,value.InvalidValueText);
            MaskedEditSetCssClass(value,value.InvalidValueCssClass);
        }
        if (ret)
        {
            if (value.MaximumValue != "")
            {
                Compnum = parseFloat(value.MaximumValue);
                if (Compnum == (isNaN(Compnum) ? null : Compnum))
                {
                    if (num > Compnum)
                    {
                        ret = false;
                        MaskedEditSetMessage(value,value.MaximumValueMessage,value.MaximumValueText);
                        MaskedEditSetCssClass(value,value.InvalidValueCssClass);
                    }
                }
            }
            if (ret && value.MinimumValue != "")
            {
                Compnum = parseFloat(value.MinimumValue);
                if (Compnum == (isNaN(Compnum) ? null : Compnum))
                {
                    if (num < Compnum)
                    {
                        ret = false;
                        MaskedEditSetMessage(value,value.MinimumValueMessage,value.MinimumValueText);
                        MaskedEditSetCssClass(value,value.InvalidValueCssClass);
                    }
                }
            }
        }
    }
    if (ret && value.ClientValidationFunction != "")
    {
        var args = { Value:mask, IsValid:true };
        eval(value.ClientValidationFunction + "(value, args);");
        ret = args.IsValid;
        if (!ret)
        {
            MaskedEditSetMessage(value,value.InvalidValueMessage,value.InvalidValueText);
            MaskedEditSetCssClass(value,value.InvalidValueCssClass);
        }
    }
    if (!ret)
    {
        MaskedEditMessageShow(value,ret);
    }
    return ret;        
}
function MaskedEditValidatorNone(value)
{
    MaskedEditSetMessage(value,"","");
    MaskedEditSetCssClass(value,"");
    MaskedEditMessageShow(value,true);
    if (value.IsMaskedEdit == "false")
    {
        return true;
    }
    var target = $get(value.TargetValidator); 
    if (value.ValidEmpty  == "false")
    {
        if (Sys.Extended.UI.TextBoxWrapper.get_Wrapper(target).get_Value() == value.InitialValue)
        {
            MaskedEditSetMessage(value,value.EmptyValueMessage,value.EmptyValueText);
            MaskedEditSetCssClass(value,value.InvalidValueCssClass);
            MaskedEditMessageShow(value,false);
            return false;
        }
    }
    if (Sys.Extended.UI.TextBoxWrapper.get_Wrapper(target).get_Value() == "")
    {
        return true;
    }
    var ret = true;
    var mask = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(target).get_Value();
    if (value.ValidationExpression != "" )
    {
        var rx = new RegExp(value.ValidationExpression);
        var matches = rx.exec(mask);
        ret = (matches != null && mask == matches[0]);
        if (!ret)
        {
            MaskedEditSetMessage(value,value.InvalidValueMessage,value.InvalidValueText);
            MaskedEditSetCssClass(value,value.InvalidValueCssClass);
            MaskedEditMessageShow(value,false);
            return false;
        }
    }
    var exp = /^\d+\s*$/;
    var num = null;
    if (value.MaximumValue != "")
    {
        if (value.MaximumValue.match(exp) != null) 
        {
            num = parseInt(value.MaximumValue, 10);
            if (num == (isNaN(num) ? null : num))
            {
                if (mask.length > num)
                {
                    ret = false;
                    MaskedEditSetMessage(value,value.MaximumValueMessage,value.MaximumValueText);
                    MaskedEditSetCssClass(value,value.InvalidValueCssClass);
                }
            }
        }
    }
    if (ret && value.MinimumValue != "")
    {
        if (value.MinimumValue.match(exp) != null) 
        {
            num = parseInt(value.MinimumValue, 10);
            if (num == (isNaN(num) ? null : num))
            {
                if (mask.length < num)
                {
                    ret = false;
                    MaskedEditSetMessage(value,value.MinimumValueMessage,value.MinimumValueText);
                    MaskedEditSetCssClass(value,value.InvalidValueCssClass);
                }
            }
        }
    }
    if (ret && value.ClientValidationFunction != "")
    {
        var args = { Value:mask, IsValid:true };
        eval(value.ClientValidationFunction + "(value, args);");
        ret = args.IsValid;
        if (!ret)
        {
            MaskedEditSetMessage(value,value.InvalidValueMessage,value.InvalidValueText);
            MaskedEditSetCssClass(value,value.InvalidValueCssClass);
        }
    }
    if (!ret)
    {
        MaskedEditMessageShow(value,ret);
    }
    return ret;        
}
�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.Undo = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.Undo.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.Undo.prototype = {
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.Undo.callBaseMethod(this, "callMethod")) return false;
        this._designPanel.undo();
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.Undo.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.Undo", Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);

�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.SubScript = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.SubScript.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.SubScript.prototype = {
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.SubScript.callBaseMethod(this, "callMethod")) return false;
        this._designPanel._execCommand("subScript", false, null);
    },
    
    checkState : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.SubScript.callBaseMethod(this, "checkState")) return false;
        return this._designPanel._queryCommandState("subScript");
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.SubScript.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.SubScript", Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton);

Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveStyles=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveStyles.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveStyles.prototype={callMethod:function(){var b=false;if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveStyles.callBaseMethod(this,"callMethod"))return b;var a=this._designPanel;setTimeout(function(){var s="function",w="size",v="face",u="color",t="class",l="_right_",k="_left_",h=true,c=null,d="",O=!Sys.Extended.UI.HTMLEditor.isIE?Sys.Extended.UI.HTMLEditor.Trim(a.getSelectedHTML()):d,q=a._getSelection(),o=a._createRange(q),f=c,J=b;if(!a.isControl()&&(Sys.Extended.UI.HTMLEditor.isIE&&o.text.length>0||!Sys.Extended.UI.HTMLEditor.isIE&&O.length>0))f=a._getTextNodeCollection();else{f=a._tryExpand();J=h}if(f!=c&&f.length>0){var K=b,C=h,R=c;a._saveContent();var m=a._doc.createElement("span");m.id=k;var j=a._doc.createElement("span");j.id=l;var P=f[0].parentNode,N=f[f.length-1].parentNode;P.insertBefore(m,f[0]);if(f[f.length-1].nextSibling)N.insertBefore(j,f[f.length-1].nextSibling);else N.appendChild(j);while(C){C=b;for(var n=0;n<f.length;n++){var g=f[n].parentNode;if(g)if(f[n].previousSibling==c&&f[n].nextSibling==c){var z=g.tagName.toUpperCase();if(Sys.Extended.UI.HTMLEditor.isStyleTag(z)&&z!="A"&&(g.className!=Sys.Extended.UI.HTMLEditor.smartClassName||z.substr(0,1)=="H")){var D=Sys.Extended.UI.HTMLEditor.differAttr(g,[t,u,v,w]);K=h;if(D.length==0){var x=g.parentNode,r=g.firstChild?g.firstChild:c,F=c;if(z.toUpperCase().substr(0,1)=="H"&&Sys.Extended.UI.HTMLEditor.isIE){F=a._doc.createElement("p");F.className=Sys.Extended.UI.HTMLEditor.smartClassName;x.insertBefore(F,g);while(g.firstChild)F.appendChild(g.firstChild)}else{while(g.firstChild)x.insertBefore(g.firstChild,g);if(z.toUpperCase().substr(0,1)=="H"){var Q=a._doc.createElement("br");x.insertBefore(Q,g)}}x.removeChild(g);C=h}else{for(var x=g.parentNode,I=a._doc.createElement(z),E=0;E<D.length;E++)I.setAttribute(D[E][0],D[E][1]);x.insertBefore(I,g);while(g.firstChild)I.appendChild(g.firstChild);x.removeChild(g)}}}}}for(var n=0;n<f.length;n++){var r=f[n],i=f[n].parentNode!=c&&typeof f[n].parentNode!="undefined"?f[n].parentNode:c;if(i){var p=c;while(i&&i.tagName&&i.tagName.toUpperCase()!="BODY"&&Sys.Extended.UI.HTMLEditor.isStyleTag(i.tagName)&&i.tagName.toUpperCase()!="A"&&Sys.Extended.UI.HTMLEditor.differAttr(i,[t,u,v,w]).length==0){p=i;i=i.parentNode}if(p){K=h;function H(f,e,g,h){var a=g.cloneNode(b);if(f)if(f.push&&typeof f.push==s)for(var j=0;j<f.length;j++)a.appendChild(f[j]);else a.appendChild(f);while(e){var q=h?e.previousSibling:e.nextSibling;if(e.nodeType==1||e.nodeType==3&&Sys.Extended.UI.HTMLEditor.Trim(d+e.data+d).length>0){if(e.nodeType==1){Sys.Extended.UI.HTMLEditor.isStyleTag(e.tagName)&&e.tagName.toUpperCase()!="A"&&(!e.id||e.id!=k&&e.id!=l)&&Sys.Extended.UI.HTMLEditor.spanJoiner(e);if(Sys.Extended.UI.HTMLEditor.isStyleTag(e.tagName)&&e.childNodes.length==0&&(!e.id||e.id!=k&&e.id!=l))e=c}if(e)if(a.childNodes.length==0||!h)a.appendChild(e);else a.insertBefore(e,a.firstChild)}e=q}if(a.childNodes.length==0){delete a;a=c}else if(a.childNodes.length==1&&a.firstChild.nodeType==3&&(d+a.firstChild.data+d).length==0){delete a;a=c}else if(Sys.Extended.UI.HTMLEditor.isStyleTag(a.tagName)){for(var n=a.childNodes.length,i=0;i<a.childNodes.length;i++){var m=a.childNodes.item(i);if(m.nodeType==1&&!Sys.Extended.UI.HTMLEditor.isStyleTag(m.tagName))n--}if(n==0){var o=[];while(a.firstChild){var m=a.removeChild(a.firstChild);o.push(m)}a=o}}return g==p?a:H(a,h?g.previousSibling:g.nextSibling,g.parentNode,h)}i=r.parentNode;if(r.previousSibling==c&&r.nextSibling==c&&i&&i.tagName&&i.tagName.toUpperCase()!="BODY"&&Sys.Extended.UI.HTMLEditor.isStyleTag(i.tagName)&&Sys.Extended.UI.HTMLEditor.differAttr(i,[t,u,v,w]).length>0)r=i;var A=H(c,r.previousSibling,r.parentNode,h),B=H(c,r.nextSibling,r.parentNode,b),g=p.parentNode;if(A){if(A.push&&typeof A.push==s)for(var y=0;y<A.length;y++)g.insertBefore(A[y],p);else g.insertBefore(A,p);if(Sys.Extended.UI.HTMLEditor.isIE){m=a._doc.getElementById(k);j=a._doc.getElementById(l)}}g.insertBefore(r,p);if(B){if(B.push&&typeof B.push==s)for(var y=0;y<B.length;y++)g.insertBefore(B[y],p);else g.insertBefore(B,p);if(Sys.Extended.UI.HTMLEditor.isIE){m=a._doc.getElementById(k);j=a._doc.getElementById(l)}}g.removeChild(p)}}}if(J){if(Sys.Extended.UI.HTMLEditor.isIE&&a.__saveBM__!=c){try{var e=m.parentNode;e.removeChild(m);while(e&&e.childNodes.length==0){e.parentNode.removeChild(e);e=e.parentNode}e=j.parentNode;e.removeChild(j);while(e&&e.childNodes.length==0){e.parentNode.removeChild(e);e=e.parentNode}m=c;j=c}catch(S){}var q=a._getSelection(),o=a._createRange(q);o.moveToBookmark(a.__saveBM__);o.select();a.__saveBM__=c}else if(a.__saveBM__!=c){if(a.__saveBM__[0].nodeType==3){var q=a._getSelection(),o=a._doc.createRange();o.setStart(a.__saveBM__[0],a.__saveBM__[1]);o.setEnd(a.__saveBM__[0],a.__saveBM__[1]);a._removeAllRanges(q);a._selectRange(q,o)}else{a._trySelect(a.__saveBM__[0],a.__saveBM__[0]);a.__saveBM__[0].parentNode.removeChild(a.__saveBM__[0])}a.__saveBM__=c}}else if(!Sys.Extended.UI.HTMLEditor.isIE){f=[];var C=b;function M(a,e){while(a){if(a==j){C=h;return}if(a.nodeType==3){while(a.nextSibling&&a.nextSibling.nodeType==3){a.data=d+a.data+d+a.nextSibling.data+d;a.parentNode.removeChild(a.nextSibling)}Sys.Extended.UI.HTMLEditor.Trim(d+a.data+d).length>0&&f.push(a)}else M(a.firstChild,b);if(C)return;var g=a.parentNode;if(e)while(a&&a.nextSibling==c)a=a.parentNode;a=a.nextSibling}}M(m,h);o=a._doc.createRange();o.setStart(f[0],0);o.setEnd(f[f.length-1],(d+f[f.length-1].data+d).length);a._removeAllRanges(q);a._selectRange(q,o)}else try{q=a._getSelection();var G=a._createRange(q),L=a._createRange(q);G.moveToElementText(m);L.moveToElementText(j);G.setEndPoint("EndToEnd",L);G.select()}catch(S){}try{var e;if(m!=c){e=m.parentNode;e.removeChild(m);while(e&&e.childNodes.length==0){e.parentNode.removeChild(e);e=e.parentNode}}if(j!=c){e=j.parentNode;e.removeChild(j);while(e&&e.childNodes.length==0){e.parentNode.removeChild(e);e=e.parentNode}}}catch(S){}a.onContentChanged();a._editPanel.updateToolbar()}},0)}};Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveStyles.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveStyles",Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyRight = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyRight.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyRight.prototype = {
    checkState : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyRight.callBaseMethod(this, "checkState")) return false;
        return this._designPanel._textAlignState("right");
    },
    
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyRight.callBaseMethod(this, "callMethod")) return false;
        this._designPanel._execCommand("JustifyRight");
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyRight.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyRight", Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton);

�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColorSelector = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColorSelector.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColorSelector.prototype = {
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColorSelector.callBaseMethod(this, "callMethod")) return false;
    },
    
    setColor : function(color) {
        Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColorSelector.callBaseMethod(this, "setColor", [color]);
        this._designPanel._execCommand("forecolor", false, color);
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColorSelector.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColorSelector", Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorSelector);

�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColorClear=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColorClear.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColorClear.prototype={callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColorClear.callBaseMethod(this,"callMethod"))return false;this._designPanel._execCommand("forecolor",false,"")}};Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColorClear.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColorClear",Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);ZType.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColor = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColor.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColor.prototype = {
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColor.callBaseMethod(this, "callMethod")) return false;
    },
    
    setColor : function(color) {
        Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColor.callBaseMethod(this, "setColor", [color]);
        this._designPanel._execCommand("forecolor", false, color);
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColor.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColor", Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorButton);

�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModePopupImageButton=function(b){var a=this;Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModePopupImageButton.initializeBase(a,[b]);a._relatedPopup=null;a._autoClose=true;a._forclose_onmousedown$delegate=null};Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModePopupImageButton.prototype={set_activeEditPanel:function(b){var a=this;a._editPanel!=b&&a._editPanel!=null&&a.closePopup();Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModePopupImageButton.callBaseMethod(a,"set_activeEditPanel",[b])},get_autoClose:function(){return this._autoClose},set_autoClose:function(a){this._autoClose=a},get_relatedPopup:function(){return this._relatedPopup},set_relatedPopup:function(a){this._relatedPopup=a},openPopup:function(h,j,i){var c=null,a=this;if(a._autoClose&&a._forclose_onmousedown$delegate!=c)return;if(a._relatedPopup!=c){a._bookmark=c;if(Sys.Extended.UI.HTMLEditor.isIE){var e=a._designPanel._getSelection();a._selType=e.type.toLowerCase();var d=a._designPanel._createRange(e);if(a._selType=="text"||a._selType=="none")try{a._bookmark=d.duplicate()}catch(k){}else if(a._selType=="control"){a._bookmark=d.item(0);d.remove(0);e.empty()}}if(typeof a._relatedPopup.set_relatedElement=="function"){a._relatedPopup.set_relatedElement(a.get_element());a._forclose_onmousedown$delegate=Function.createDelegate(a,a._forclose_onmousedown);if(a._autoClose){var f=a._designPanel.get_element().contentWindow,g=f.document.body,b=a;setTimeout(function(){var d="keydown",a="mousedown";if(b._forclose_onmousedown$delegate!=c){Sys.Extended.UI.HTMLEditor._addEvent(g,a,b._forclose_onmousedown$delegate);Sys.Extended.UI.HTMLEditor._addEvent(g,d,b._forclose_onmousedown$delegate);Sys.Extended.UI.HTMLEditor._addEvent(document.body,d,b._forclose_onmousedown$delegate);Sys.Extended.UI.HTMLEditor._addEvent(window,d,b._forclose_onmousedown$delegate);Sys.Extended.UI.HTMLEditor._addEvent(f,a,b._forclose_onmousedown$delegate);Sys.Extended.UI.HTMLEditor._addEvent(document.body,a,b._forclose_onmousedown$delegate);document.documentElement&&Sys.Extended.UI.HTMLEditor._addEvent(document.documentElement,a,b._forclose_onmousedown$delegate)}},0)}a._relatedPopup.open(h)}else a._relatedPopup.open(h,j,i)}},_forclose_onmousedown:function(e){var d="keydown",c="mousedown",a=this;if(a._forclose_onmousedown$delegate==null)return true;if(a._relatedPopup.isOpened)a._relatedPopup.close();else return true;if(a._editPanel==Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel)try{if(a._bookmark){if(Sys.Extended.UI.HTMLEditor.isIE){var b;if(a._selType=="control"){b=a._designPanel._doc.body.createControlRange();b.add(a._bookmark)}else b=a._bookmark;b.select()}a._bookmark=null}if(!Sys.Extended.UI.HTMLEditor.isIE){var f=a._designPanel._getSelection(),b=a._designPanel._createRange(f);a._designPanel._removeAllRanges(f);a._designPanel._selectRange(f,b);a._designPanel.focusEditor()}}catch(j){}var i=a;setTimeout(function(){if(i._editPanel==Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel)try{i._editPanel.updateToolbar()}catch(a){}},0);if(a._autoClose)try{var g=a._designPanel.get_element().contentWindow,h=g.document.body;document.documentElement&&Sys.Extended.UI.HTMLEditor._removeEvent(document.documentElement,c,a._forclose_onmousedown$delegate);Sys.Extended.UI.HTMLEditor._removeEvent(h,d,a._forclose_onmousedown$delegate);Sys.Extended.UI.HTMLEditor._removeEvent(document.body,d,a._forclose_onmousedown$delegate);Sys.Extended.UI.HTMLEditor._removeEvent(window,d,a._forclose_onmousedown$delegate);Sys.Extended.UI.HTMLEditor._removeEvent(h,c,a._forclose_onmousedown$delegate);Sys.Extended.UI.HTMLEditor._removeEvent(g,c,a._forclose_onmousedown$delegate);Sys.Extended.UI.HTMLEditor._removeEvent(document.body,c,a._forclose_onmousedown$delegate)}catch(j){}a._forclose_onmousedown$delegate=null;if(e&&e.type)if(e.type==d){Sys.Extended.UI.HTMLEditor._stopEvent(e);return false}return true},closePopup:function(){this._forclose_onmousedown$delegate!=null&&this._forclose_onmousedown$delegate(null)},dispose:function(){this._forclose_onmousedown$delegate!=null&&this._forclose_onmousedown$delegate(null);Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModePopupImageButton.callBaseMethod(this,"dispose")}};Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModePopupImageButton.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModePopupImageButton",Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeImageButton = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeImageButton.initializeBase(this, [element]);
    this._designPanel = null;
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeImageButton.prototype = {
    _onmousedown : function(e) {
        if(this._designPanel == null) return false;
        if(this._designPanel.isPopup()) return false;
        if(Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeImageButton.callBaseMethod(this, "_onmousedown",[e])===null) return false;
        this.callMethod();
        return false;
    },
    
    onEditPanelActivity : function() {
        this._designPanel = this._editPanel.get_activePanel();
    },
    
    callMethod : function() {
        if(this._designPanel == null) return false;
        if(this._designPanel.isPopup()) return false;
        return true;
    }   
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeImageButton.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeImageButton", Sys.Extended.UI.HTMLEditor.ToolbarButton.ImageButton);

Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.Copy=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.Copy.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.Copy.prototype={canBeShown:function(){return Sys.Extended.UI.HTMLEditor.isIE},callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.Copy.callBaseMethod(this,"callMethod"))return false;var a=this._designPanel;if(Sys.Extended.UI.HTMLEditor.isIE){a.openWait();setTimeout(function(){a.isShadowed();a._copyCut("c",true);a.closeWait();a._ifShadow()},0)}else a._copyCut("c",true)}};Sys.Extended.UI.HTMLEditor.ToolbarButton.Copy.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.Copy",Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);kType.registerNamespace("Sys.Extended.UI.HTMLEditor");Sys.Extended.UI.HTMLEditor.ActiveModeChangedArgs=function(d,c,b){var a=this;if(arguments.length!=3)throw Error.parameterCount();Sys.Extended.UI.HTMLEditor.ActiveModeChangedArgs.initializeBase(a);a._oldMode=d;a._newMode=c;a._editPanel=b};Sys.Extended.UI.HTMLEditor.ActiveModeChangedArgs.prototype={get_oldMode:function(){return this._oldMode},get_newMode:function(){return this._newMode},get_editPanel:function(){return this._editPanel}};Sys.Extended.UI.HTMLEditor.ActiveModeChangedArgs.registerClass("Sys.Extended.UI.HTMLEditor.ActiveModeChangedArgs",Sys.EventArgs);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor");

Sys.Extended.UI.HTMLEditor.Editor = function(element) {
    Sys.Extended.UI.HTMLEditor.Editor.initializeBase(this, [element]);
    
    this._editPanel = null;
    this._changingToolbar = null;
    if (Sys.Extended.UI.HTMLEditor.isIE && Sys.Browser.version == 8 && document.compatMode != "BackCompat" || Sys.Extended.UI.HTMLEditor.isOpera) {
        this._onresize$delegate = Function.createDelegate(this, this._onresize);
    }
}

Sys.Extended.UI.HTMLEditor.Editor.prototype = {
    get_autofocus: function() {
        return this._editPanel.get_autofocus();
    },
    set_autofocus: function(value) {
        this._editPanel.set_autofocus(value);
    },

    get_content: function() {
        return this._editPanel.get_content();
    },
    set_content: function(value) {
        this._editPanel.set_content(value);
    },

    get_activeMode: function() {
        return this._editPanel.get_activeMode();
    },
    set_activeMode: function(value) {
        this._editPanel.set_activeMode(value);
    },

    get_editPanel: function() {
        return this._editPanel;
    },
    set_editPanel: function(value) {
        this._editPanel = value;
    },

    get_changingToolbar: function() {
        return this._changingToolbar;
    },
    set_changingToolbar: function(value) {
        this._changingToolbar = value;
    },

    add_propertyChanged: function(handler) {
        this._editPanel.add_propertyChanged(handler);
    },
    remove_propertyChanged: function(handler) {
        this._editPanel.remove_propertyChanged(handler);
    },

    initialize: function() {
        Sys.Extended.UI.HTMLEditor.Editor.callBaseMethod(this, "initialize");

        var element = this.get_element();
        var oldStyle = element.className;

        Sys.UI.DomElement.removeCssClass(element, oldStyle);
        Sys.UI.DomElement.addCssClass(element, "ajax__htmleditor_editor_base");
        Sys.UI.DomElement.addCssClass(element, oldStyle);

        if (!Sys.Extended.UI.HTMLEditor.isIE && document.compatMode != "BackCompat") {
            this.get_element().style.height = "100%";
        }

        if (Sys.Extended.UI.HTMLEditor.isIE && Sys.Browser.version == 8 && document.compatMode != "BackCompat" || Sys.Extended.UI.HTMLEditor.isOpera) {
            $addHandlers(element, {
                resize: this._onresize$delegate
            });
            var editPanel = this.get_editPanel();
            this._saved_setActive = editPanel._setActive;
            editPanel._setActive = Function.createDelegate(this, this._setActive);
            var editor = this;
            if (Sys.Extended.UI.HTMLEditor.isOpera) {
                setTimeout(function() {
                    editor._ensureVisibleResize();
                }, 0);
            } else {
                editor._ensureVisibleResize();
            }
        }
    },

    _setActive: function(par) {
        var editor = this;
        (Function.createDelegate(this.get_editPanel(), this._saved_setActive))(par);

        if (!Sys.Extended.UI.HTMLEditor.isReallyVisible(this.get_element())) {
            setTimeout(function() {
                editor._ensureVisibleResize();
            }, 0);
        } else {
            editor._ensureVisibleResize();
        }
    },

    _ensureVisibleResize: function() {
        var invisible = false;
        var save;
        if (!Sys.Extended.UI.HTMLEditor.isReallyVisible(this.get_element())) {
            invisible = true;
            save = Sys.Extended.UI.HTMLEditor.setElementVisibility(this.get_element());
        }

        this._onresize();
        if (invisible) {
            Sys.Extended.UI.HTMLEditor.restoreElementVisibility(save);
            delete save;
        }
    },

    dispose: function() {
        if (Sys.Extended.UI.HTMLEditor.isIE && Sys.Browser.version == 8 && document.compatMode != "BackCompat" || Sys.Extended.UI.HTMLEditor.isOpera) {
            $common.removeHandlers(this.get_element(), {
                resize: this._onresize$delegate
            });
            this.get_editPanel()._setActive = this._saved_setActive;
        }

        Sys.Extended.UI.HTMLEditor.Editor.callBaseMethod(this, "dispose");
    },

    _onresize: function(e) {
        try {
            var editPanelTD = this.get_editPanel().get_element().parentNode;
            if (typeof e == "undefined" || e == null) {
                editPanelTD.style.height = "";
            }
            var height = Sys.Extended.UI.HTMLEditor.Editor.MidleCellHeightForIE(editPanelTD.parentNode.parentNode.parentNode, editPanelTD.parentNode);
            editPanelTD.style.height = height;

            if (typeof this.get_editPanel().get_activePanel()._onresize != "undefined") {
                this.get_editPanel().get_activePanel()._onresize();
            }
        } catch (ex) {
        }
        return true;
    }
}

Sys.Extended.UI.HTMLEditor.Editor.registerClass("Sys.Extended.UI.HTMLEditor.Editor", Sys.UI.Control);

Sys.Extended.UI.HTMLEditor.Editor.MidleCellHeightForIE = function(table, row) {
    var height = "100%";
    if (Sys.Extended.UI.HTMLEditor.isIE && document.compatMode != "BackCompat" || Sys.Extended.UI.HTMLEditor.isOpera) {
        try {
            var decrease = 2;
            for (var i = 0; i < table.rows.length; i++) {
                if (table.rows[i] != row) {
                    decrease += (table.rows[i].offsetHeight + 1);
                }
            }
            var clientHeight = table.clientHeight;
            if (Sys.Browser.version == 8 || Sys.Extended.UI.HTMLEditor.isOpera) {
                var styleHeight = table.style.height;
                var parentStyleHeight = table.parentNode.style.height;
                if (styleHeight.indexOf("px") > 0) {
                    clientHeight = parseInt(styleHeight);
                } else if (styleHeight == "100%" && parentStyleHeight.indexOf("px") > 0) {
                    clientHeight = parseInt(parentStyleHeight);
                }
            }
            height = ((clientHeight - decrease) * 100.00 / (clientHeight * 1.00)) + '%';
        } catch (e) {
            height = "";
        }
    }
    return height;
}
��Type.registerNamespace("Sys.Extended.UI.HTMLEditor");

Sys.Extended.UI.HTMLEditor.DesignPanelEventHandler = function(ev) {
    try {
        var editor = this;
        if (editor._editPanel != Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel) {
            return true;
        }
        if (Sys.Extended.UI.HTMLEditor.isIE) {
            try {
                var selka = this._doc.selection;
                var rrr = this._createRange(selka);
            } catch (e) {
                Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                return false;
            }
        }
        if (ev.type == "mousedown" || ev.type == "dblclick") {
            this._focus(true);
        }

        if (!Sys.Extended.UI.HTMLEditor.isIE && ev.type == "keydown" && ev.keyCode == Sys.UI.Key.tab && this._editPanel.get_suppressTabInDesignMode()) {
            Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel = null;
            return true;
        }

        if (this.isPopup()) {
            Sys.Extended.UI.HTMLEditor._stopEvent(ev);
            return false;
        }
        var contextMenuRemoved = false;
        if (editor._contextElement && editor._contextElement != null) {
            Function.createDelegate(this, Sys.Extended.UI.HTMLEditor.RemoveContextMenu)();
            if (ev.type == "keydown" || ev.type == "keypress") {
                Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                return;
            }
            contextMenuRemoved = true;
        }
        if (typeof editor.captureInDesign == "function") {
            if (editor.captureInDesign(ev) === false) {
                Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                return;
            }
        }
        if (Sys.Extended.UI.HTMLEditor.isIE && ev.type == "mousedown" && ev.ctrlKey) {
            var sel = editor._getSelection();
            var savedX = ev.clientX;
            var savedY = ev.clientY;
            setTimeout(function() {
                var sel = editor._getSelection();
                if (sel.type.toLowerCase() != "control") {
                    var range = editor._doc.body.createTextRange();
                    range.moveToPoint(savedX, savedY);
                    range.select();
                }
                sel = editor._getSelection();
                var range = editor._createRange(sel);
                var parent = Sys.Extended.UI.HTMLEditor.getSelParent(editor);
                while (parent != null && parent.tagName.toUpperCase() != "BODY") {
                    if (parent.tagName.toUpperCase() == "A" && parent.href != null && typeof parent.href != "undefined" && parent.href.length > 0) {
                        window.open(parent.href, "LinkViewWindow");
                        break;
                    }
                    parent = parent.parentNode;
                }
            }, 0);
            Sys.Extended.UI.HTMLEditor._stopEvent(ev);
            return false;
        }

        var el = (!Sys.Extended.UI.HTMLEditor.isIE) ? ev.target : ev.srcElement;
        if (el.tagName != null && typeof el.tagName != "undefined" && (el.tagName.toUpperCase() == "HTML" || el.tagName.toUpperCase() == "BODY")) {
            if (editor.__kkoka != true) {
                editor.__kkoka = true;
                setTimeout(function() {
                    if (editor._editPanel == Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel) {
                        if (!editor.toEndOfProtected()) {
                            try {
                                editor.focusEditor();
                            } catch (ex) { }
                        }
                    }
                    editor.__kkoka = false;
                }, 0);
            }
        }
        else {
            if (Sys.Extended.UI.HTMLEditor.contentEditable(el) != null) {
                setTimeout(function() {
                    if (editor._editPanel == Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel) {
                        editor.toEndOfProtected();
                    }
                }, 0);
            }
        }

        if (contextMenuRemoved && (Sys.Extended.UI.HTMLEditor.isIE)) {
            var sss = this._getSelection();
            var rrr;
            try {
                rrr = this._createRange(sss);
                if (sss.type.toLowerCase() == "control") {
                    Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                    return false;
                }
            } catch (ex) {
                Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                return false;
            }
        }
        var keyEvent = (Sys.Extended.UI.HTMLEditor.isIE && ev.type == "keydown") || (ev.type == "keypress");
        var rere = ev.type + "--" + keyEvent;

        if (keyEvent && !this._editPanel.get_keyboardEnabled()) {
            Sys.Extended.UI.HTMLEditor._stopEvent(ev);
            return false;
        }

        var key = String.fromCharCode(Sys.Extended.UI.HTMLEditor.isIE ? ev.keyCode : ev.charCode).toLowerCase(); ;
        if (keyEvent && editor._editPanel.get_hotkeys() != null) {
            if (editor._editPanel.get_hotkeys().length > 0) {
                var keysn = editor._editPanel.get_hotkeys().length;
                var cake = key;
                if (ev.keyCode == 18 || ev.keyCode == 17 || ev.keyCode == 16) {
                    cake = null;
                }
                for (var i = 0; i < keysn; i++) {
                    var item = editor._editPanel.get_hotkeys()[i];
                    if (item[1] == cake && item[2] == ev.altKey && item[3] == ev.shiftKey && item[4] == ev.ctrlKey) {
                        if (typeof item[0] == "function") {
                            setTimeout(function() {
                                (item[0])(editor);
                                editor.onContentChanged();
                                editor.focusEditor();
                            }, 0);
                        }
                        Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                        return false;
                    }
                }
            }
        }
        if (keyEvent && ev.shiftKey && ev.keyCode == 45) {
            this._commonPaste(ev);
        } else {
            if (keyEvent && ev.ctrlKey && ev.altKey && ev.keyCode == Sys.UI.Key.home) {
                var prot = null;
                var el = Sys.Extended.UI.HTMLEditor.getSelParent(editor);
                while (el && (el.nodeType == 3 || (el.tagName && el.tagName.toUpperCase() != "BODY"))) {
                    if (el.nodeType == 3 || !el.tagName) {
                        el = el.parentNode;
                        continue;
                    }
                    var tagName = el.tagName.toUpperCase();
                    if (!Sys.Extended.UI.HTMLEditor.canBeInsideP(el) && tagName != "P") {
                        if (tagName == "TD") {
                            while (tagName != "TABLE") {
                                el = el.parentNode;
                                tagName = el.tagName.toUpperCase();
                            }
                        } else {
                            if (tagName == "LI") {
                                while (tagName != "OL" && tagName != "UL") {
                                    el = el.parentNode;
                                    tagName = el.tagName.toUpperCase();
                                }
                            }
                        }
                        prot = el;
                        break;
                    }
                    el = el.parentNode;
                }
                if (prot != null) {
                    var sel = editor._getSelection();
                    var range = editor._createRange(sel);
                    var tempText = editor._doc.createTextNode("");
                    prot.parentNode.insertBefore(tempText, prot);
                    if (Sys.Extended.UI.HTMLEditor.isIE) {
                        var range1 = editor._createRange(sel);
                        var range2 = editor._createRange(sel);
                        var span1 = editor._doc.createElement("span");
                        var span2 = editor._doc.createElement("span");
                        tempText.parentNode.insertBefore(span1, tempText);
                        if (tempText.nextSibling) {
                            tempText.parentNode.insertBefore(span2, tempText.nextSibling);
                        } else {
                            tempText.parentNode.appendChild(span2);
                        }
                        try {
                            range1.moveToElementText(span1);
                            range2.moveToElementText(span2);
                            range1.setEndPoint("EndToEnd", range2);
                            range1.select();
                        } catch (e) { }
                        tempText.parentNode.removeChild(span1);
                        tempText.parentNode.removeChild(span2);
                    } else {
                        editor._removeAllRanges(sel);
                        range.setStart(tempText, 0);
                        range.setEnd(tempText, 0);
                        editor._selectRange(sel, range);
                    }
                }
            }
            else
                if (Sys.Extended.UI.HTMLEditor.isIE && ev.keyCode >= 33 && ev.keyCode <= 40 && !ev.shiftKey) {
                var after_pos = (ev.keyCode == Sys.UI.Key.pageDown || ev.keyCode == Sys.UI.Key.end || ev.keyCode == Sys.UI.Key.right || ev.keyCode == Sys.UI.Key.down);
                setTimeout(function() {
                    var sel = editor._getSelection();
                    var range = editor._createRange(sel);
                    if (sel.type.toLowerCase() == "control") {
                        var el = range.item(0);
                        if (!el.contentEditable || el.contentEditable == "false") {
                            range.remove(0);
                            sel.empty();
                            range = editor._createRange(sel);
                            var span = editor._doc.createElement("SPAN");
                            span.appendChild(editor._doc.createTextNode(""));
                            if (after_pos) {
                                if (el.nextSibling == null)
                                    el.parentNode.appendChild(span);
                                else
                                    el.parentNode.insertBefore(span, el.nextSibling);
                            } else {
                                el.parentNode.insertBefore(span, el);
                            }
                            range.moveToElementText(span);
                            range.select();
                            setTimeout(function() {
                                editor.focusEditor();
                                span.parentNode.removeChild(span);
                            }, 0);
                        }
                    }
                }, 0);
            }
            else
                if (((keyEvent && !Sys.Extended.UI.HTMLEditor.isSafari) || (Sys.Extended.UI.HTMLEditor.isSafari && ev.type == "keydown")) && ev.ctrlKey && !ev.altKey) {
                editor._a_prize = false;
                var sel = null;
                var range = null;
                var key = String.fromCharCode((Sys.Extended.UI.HTMLEditor.isIE || Sys.Extended.UI.HTMLEditor.isOpera || Sys.Extended.UI.HTMLEditor.isSafari) ? ev.keyCode : ev.charCode).toLowerCase();
                var cmd = null;
                var value = null;
                if ((Sys.Extended.UI.HTMLEditor.isIE || Sys.Extended.UI.HTMLEditor.isSafari) && ev.keyCode == 17) { // Ctrl
                    return false;
                }
                else
                    if (!Sys.Extended.UI.HTMLEditor.isIE && ev.keyCode == Sys.UI.Key.end && !ev.shiftKey) {
                    editor._setToEnd();
                }
                else
                    if (ev.keyCode == 46 && this.isShadowed()) {
                    Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                    return false;
                }
                else
                    if (ev.keyCode == 46 || ev.keyCode == Sys.UI.Key.backspace) {
                    if ((Sys.Extended.UI.HTMLEditor.isIE && ev.type == "keydown") || (!Sys.Extended.UI.HTMLEditor.isIE && ev.type == "keypress"))
                        this._saveContent();
                }
                else {
                    switch (key) {
                        case "a":
                            if (!Sys.Extended.UI.HTMLEditor.isIE) {
                                sel = this._getSelection();
                                this._removeAllRanges(sel);
                                range = this._createRange();
                                range.selectNodeContents(this._doc.body);
                                this._selectRange(sel, range);
                                Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                                return false;
                            } else {
                                editor._a_prize = true;
                            }
                            break;
                        case "z":
                            this.undo();
                            Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                            return false;
                            break;
                        case "p":
                            if (!Sys.Extended.UI.HTMLEditor.isIE) {
                                setTimeout(function() {
                                    editor._contextMenuCallP();
                                }, 0);
                                Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                                return false;
                            }
                            break;
                        case "y":
                            this.redo();
                            Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                            return false;
                            break;
                        case "x":
                            if (this.isShadowed()) {
                                Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                                return false;
                            }
                            this._saveContent();
                            if (Sys.Extended.UI.HTMLEditor.isIE) {
                                if (ev.type == "keydown") {
                                    editor.openWait();
                                    setTimeout(function() {
                                        editor._copyCut(key, false);
                                        editor.closeWait();
                                    }, 0);
                                    Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                                    return false;
                                }
                            }
                            break;
                        case "c":
                            if (this.isShadowed()) {
                                Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                                return false;
                            }
                            if (Sys.Extended.UI.HTMLEditor.isIE) {
                                if (ev.type == "keydown") {
                                    editor.openWait();
                                    setTimeout(function() {
                                        editor._copyCut(key, false);
                                        editor.closeWait();
                                        setTimeout(function() {
                                            editor._ifShadow();
                                        }, 0);
                                    }, 0);
                                    Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                                    return false;
                                }
                            }
                            break;
                        case "v":
                            if (this.isShadowed()) {
                                Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                                return false;
                            }

                            if (Sys.Extended.UI.HTMLEditor.isIE) {
                                this._saveContent();
                                return true;
                            }

                            this._commonPaste(ev);
                            break;
                        case "b": // KEY bold
                            this._execCommand("bold", false, value);
                            Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                            return false;
                        case "i": // KEY italic
                            this._execCommand("italic", false, value);
                            Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                            return false;
                        case "u": // KEY underline
                            this._execCommand("underline", false, value);
                            Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                            return false;
                        case "s": // KEY strike through
                            this._execCommand("strikethrough", false, value);
                            Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                            return false;
                        case "l": // KEY justify left
                            cmd = "justifyleft";
                            break;
                        case "e": // KEY justify center
                            cmd = "justifycenter";
                            break;
                        case "r": // KEY justify right
                            cmd = "justifyright";
                            break;
                        case "j": // KEY justify full
                            cmd = "justifyfull";
                            break;
                        case "q": // test KEY
                            alert(this._doc.body.innerHTML);
                            Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                            return false;
                            break;
                        case "0": // test KEY
                            var str1 = "Your browser:\n\n" + navigator.userAgent;
                            alert(str1);
                            Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                            return false;
                            break;
                        case "9":
                            if (!Sys.Extended.UI.HTMLEditor.isIE) {
                                var sel = editor._getSelection();
                                var range = editor._createRange(sel);
                                var p1 = range.startContainer;
                                var p2 = range.endContainer;
                                var Str = "";
                                Str += "startContainer: " + (p1.nodeType == 1 ? p1.tagName : "text") + "\n";
                                Str += "endContainer  : " + (p2.nodeType == 1 ? p2.tagName : "text") + "\n";
                                if (p1 == p2) {
                                    Str += "startOffset: " + range.startOffset + "\n";
                                    Str += "endOffset  : " + range.endOffset + "\n";
                                    if (p1.nodeType == 1) {
                                        p1 = p1.childNodes.item(range.startOffset);
                                        if (p1 && p1.nodeType) {
                                            Str += "startOffset node: " + (p1.nodeType == 1 ? p1.tagName : "text") + "\n";
                                            if (range.startOffset != range.endOffset) {
                                                p1 = p2.childNodes.item(range.endOffset);
                                                if (p1 && p1.nodeType) {
                                                    Str += "endOffset node: " + (p1.nodeType == 1 ? p1.tagName : "text") + "\n";
                                                }
                                            }
                                        } else {
                                            Str += p1;
                                        }
                                    }
                                }
                                alert(Str);
                            } else {
                                var sel = editor._getSelection();
                                var range = editor._createRange(sel);
                                alert("boundingLeft: " + range.boundingLeft + " boundingTop: " + range.boundingTop + "\n" + "boundingWidth: " + range.boundingWidth + " boundingHeight: " + range.boundingHeight);
                            }
                            Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                            return false;
                            break;
                    }
                }
                if (cmd) {
                    this._execCommand(cmd, false, value);
                    if (cmd == "formatblock" && !Sys.Extended.UI.HTMLEditor.isIE) {
                        this._saveContent();
                        this._undo(false);
                    }
                    Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                    if (cmd == "delete" || cmd == "paste") {
                        this._clearP();
                    }
                }
            }
            else
                if (keyEvent || ((Sys.Extended.UI.HTMLEditor.isSafari || Sys.Extended.UI.HTMLEditor.isOpera) && ev.type == "keydown")) {
                if (Sys.Extended.UI.HTMLEditor.isIE && this._tryForward) {
                    var range = this._createRange(this._getSelection());
                    range.select();
                    this._tryForward = false;
                }
                var key = String.fromCharCode(Sys.Extended.UI.HTMLEditor.isIE ? ev.keyCode : ev.charCode).toLowerCase();
                if (editor._a_prize) {
                    editor._a_prize = false;

                    function test_a() {
                        var r = editor._createRange(editor._getSelection());
                        var parent = r.parentElement();
                        if (parent && parent.nodeType == 1 && parent.tagName.toUpperCase() == "P") {
                            while (parent.firstChild) {
                                parent.parentNode.insertBefore(parent.firstChild, parent);
                            }
                            parent.parentNode.removeChild(parent);
                        }
                    }
                    setTimeout(test_a, 0);
                }
                if (this.isShadowed()) {
                    Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                    return false;
                }

                switch (ev.keyCode) {
                    case Sys.UI.Key.tab:
                        if ((Sys.Extended.UI.HTMLEditor.isSafari || Sys.Extended.UI.HTMLEditor.isOpera) && ev.type != "keydown") break;
                        if (!this._editPanel.get_suppressTabInDesignMode()) {
                            if (!this.isControl())
                                this.insertHTML("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
                            Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                        }
                        else {
                            if (Sys.Extended.UI.HTMLEditor.isSafari) {
                                Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                            }
                            Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel = null;
                            return true;
                        }
                        break;

                    case 46: case Sys.UI.Key.backspace:
                        if ((Sys.Extended.UI.HTMLEditor.isSafari || Sys.Extended.UI.HTMLEditor.isOpera) && ev.type != "keydown") break;
                        if (((Sys.Extended.UI.HTMLEditor.isIE || Sys.Extended.UI.HTMLEditor.isSafari) && ev.type == "keydown") || (!Sys.Extended.UI.HTMLEditor.isIE && ev.type == "keypress")) {
                            this._saveContent();
                        }
                        if (!Sys.Extended.UI.HTMLEditor.isIE) {
                            var range = this._createRange(this._getSelection());
                            var p1 = range.startContainer;
                            var p2 = range.endContainer;
                            if (ev.type == "keypress") {
                                if (Sys.Extended.UI.HTMLEditor.contentEditable(p1) != null || Sys.Extended.UI.HTMLEditor.contentEditable(p2) != null) {
                                    Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                                    return false;
                                }
                            }
                            if (p1 == p2 && p1.nodeType == 1 && p1.tagName.toUpperCase() == "TD" && range.startOffset == range.startOffset && p1.childNodes.item(range.startOffset) && p1.childNodes.item(range.startOffset).tagName && p1.childNodes.item(range.startOffset).tagName.toUpperCase() == "BR") {
                                var span = p1.childNodes.item(range.startOffset);
                                var left = 0, right = 0;
                                var nb;
                                nb = span.previousSibling;
                                while (nb) {
                                    left++;
                                    nb = nb.previousSibling;
                                }
                                nb = span.nextSibling;
                                while (nb) {
                                    right++;
                                    nb = nb.nextSibling;
                                }
                                if ((ev.keyCode == 46 && right == 0) || (ev.keyCode == Sys.UI.Key.backspace && left == 0)) {
                                    Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                                    return false;
                                } else {
                                    if (ev.keyCode == 46 && p1.firstChild == p1.lastChild && p1.firstChild.nodeType == 1) {
                                        Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                                        return false;
                                    }
                                }
                            }
                            if (p1 == p2 && p1.nodeType == 3 && range.startOffset == range.endOffset && !Sys.Extended.UI.HTMLEditor.isOpera) {
                                var data = p1.data + "";
                                if (ev.keyCode == 46) {
                                    if (range.startOffset == data.length && !(p1.nextSibling && p1.nextSibling.nodeType == 3)) {
                                        if (p1.nextSibling) {
                                            p1.parentNode.removeChild(p1.nextSibling);
                                            editor.onContentChanged();
                                        }
                                        Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                                        return false;
                                    }
                                }
                                if (ev.keyCode == Sys.UI.Key.backspace) {
                                    if (range.startOffset == 0 && !(p1.previousSibling && p1.previousSibling.nodeType == 3)) {
                                        if (p1.previousSibling) {
                                            p1.parentNode.removeChild(p1.previousSibling);
                                            editor.onContentChanged();
                                        }
                                        Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                                        return false;
                                    }
                                }
                            }

                            if (ev.keyCode == Sys.UI.Key.backspace && p1.nodeType == 1 && p1 == p2 && range.startOffset == range.endOffset) {
                                var mel = p1.childNodes.item(range.startOffset);
                                if (mel != null && mel.nodeType == 1 && mel.tagName.toUpperCase() == "BR") {
                                    mel = mel.previousSibling;
                                    if (mel != null && mel.nodeType != 3) {
                                        mel.parentNode.removeChild(mel);
                                        editor.onContentChanged();
                                        Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                                        return false;
                                    }
                                }
                            }

                            setTimeout(function() {
                                var sel = editor._getSelection();
                                var range = editor._createRange(sel);
                                var p1 = range.startContainer;
                                var p2 = range.endContainer;
                                if (Sys.Extended.UI.HTMLEditor.contentEditable(p1) != null || Sys.Extended.UI.HTMLEditor.contentEditable(p2) != null) {
                                    editor._undo(false);
                                    return;
                                }
                                if (Sys.Extended.UI.HTMLEditor.isOpera && p1 == p2 && p1.nodeType == 3 && (p1.data).length == 0) {
                                    p1.parentNode.removeChild(p1);
                                }
                                else
                                    if (p1 == p2 && p1.nodeType == 1 && Sys.Extended.UI.HTMLEditor.isStyleTag(p1.tagName) && range.startOffset == range.endOffset && p1.childNodes.length == 0) {
                                    while (p1.parentNode.nodeType == 1 && Sys.Extended.UI.HTMLEditor.isStyleTag(p1.parentNode.tagName) && p1.parentNode.childNodes.length == 1) {
                                        p1 = p1.parentNode;
                                    }
                                    var next = p1.nextSibling;
                                    var prev = p1.previousSibling;
                                    var parent = p1.parentNode;
                                    parent.removeChild(p1);
                                    editor.onContentChanged();
                                    if (next == null && prev == null) {
                                        range.setStart(parent, 0);
                                        range.setEnd(parent, 0);
                                    }
                                    else
                                        if (next != null && prev != null) {
                                        if (next.nodeType == 3 && prev.nodeType == 3) {
                                            var l = ("" + prev.data + "").length;
                                            prev.appendData(next.data);
                                            parent.removeChild(next);
                                            range.setStart(prev, l);
                                            range.setEnd(prev, l);
                                        } else {
                                            if (prev.nodeType == 3) {
                                                var l = ("" + prev.data + "").length;
                                                range.setStart(prev, l);
                                                range.setEnd(prev, l);
                                            } else {
                                                if (next.nodeType == 3) {
                                                    range.setStart(next, 0);
                                                    range.setEnd(next, 0);
                                                } else {
                                                    if (next.childNodes.length > 0) {
                                                        range.setStart(next, 0);
                                                        range.setEnd(next, 0);
                                                    } else {
                                                        var l = Sys.Extended.UI.HTMLEditor.__getIndex(next);
                                                        range.setStart(parent, l);
                                                        range.setEnd(parent, l);
                                                    }
                                                }
                                            }
                                        }
                                    } else {
                                        if (prev != null) {
                                            if (prev.nodeType == 3) {
                                                var l = ("" + prev.data + "").length;
                                                range.setStart(prev, l);
                                                range.setEnd(prev, l);
                                            } else {
                                                var l = prev.childNodes.length;
                                                if (l > 0) {
                                                    range.setStart(prev, l);
                                                    range.setEnd(prev, l);
                                                } else {
                                                    l = Sys.Extended.UI.HTMLEditor.__getIndex(prev);
                                                    range.setStart(parent, l);
                                                    range.setEnd(parent, l);
                                                }
                                            }
                                        } else {
                                            if (next != null) {
                                                if (next.nodeType == 3) {
                                                    range.setStart(next, 0);
                                                    range.setEnd(next, 0);
                                                } else {
                                                    var l = next.childNodes.length;
                                                    if (l > 0) {
                                                        range.setStart(next, l);
                                                        range.setEnd(next, l);
                                                    } else {
                                                        l = Sys.Extended.UI.HTMLEditor.__getIndex(next);
                                                        range.setStart(parent, l);
                                                        range.setEnd(parent, l);
                                                    }
                                                }
                                            }
                                        }
                                    }
                                    editor._removeAllRanges(sel);
                                    editor._selectRange(sel, range);
                                }
                            }, 0);
                        }
                        else { // IE
                            var sel = editor._getSelection();
                            if (sel.type.toLowerCase() == "control") {
                                if (ev.keyCode == 8) {
                                    setTimeout(function() {
                                        editor._ifShadow();
                                        editor.onContentChanged();
                                    }, 0);
                                    Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                                    return;
                                }
                                var r = editor._createRange(sel);
                                var eln = r.item(0);
                                if (eln.tagName.toUpperCase() == "EMBED") {
                                    eln.src = "";
                                    eln.parentNode.removeChild(eln);
                                    while (r.length > 0) {
                                        r.remove(0);
                                    }
                                    try {
                                        r.collapse(false);
                                    } catch (e) { }
                                    Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                                    editor._saveContent();
                                    setTimeout(function() {
                                        editor._undo(false);
                                        editor.onContentChanged();
                                    }, 0);
                                    return;
                                }
                            }
                            var tempCollectionLength = editor._doc.body.getElementsByTagName("EMBED").length;
                            if (tempCollectionLength > 0) {
                                var popup = editor._body.ownerDocument.createElement("div");
                                editor._body.appendChild(popup);
                                var evKeyCode = ev.keyCode;
                                setTimeout(function() {
                                    editor._body.removeChild(popup);
                                    var tempCollectionNew = editor._doc.body.getElementsByTagName("EMBED");
                                    if (tempCollectionLength != tempCollectionNew.length) {
                                        editor._saveContent();
                                        setTimeout(function() {
                                            editor._undo(false);
                                            editor.onContentChanged();
                                        }, 0);
                                    }
                                }, 0);
                            }
                            setTimeout(function() {
                                editor._clearP();
                            }, 0);
                        }
                        break;

                    case Sys.UI.Key.enter:
                        if ((Sys.Extended.UI.HTMLEditor.isSafari || Sys.Extended.UI.HTMLEditor.isOpera) && ev.type == "keydown") break;
                        if ((!Sys.Extended.UI.HTMLEditor.isIE && ev.type == "keypress") || (Sys.Extended.UI.HTMLEditor.isIE && ev.type == "keydown")) {
                            this._saveContent();
                        }
                        if (Sys.Extended.UI.HTMLEditor.isIE && ev.type == "keydown") {
                            var sel = editor._getSelection();
                            if (sel.type.toLowerCase() == "control")
                                break;
                            var r = editor._createRange(sel);
                            if (!ev.shiftKey) {
                                var prnt = r.parentElement();
                                if (prnt.tagName.toUpperCase() == "TEXTAREA") {
                                    break;
                                }
                                while (prnt && prnt.tagName && prnt.tagName.toUpperCase() != "BODY" && Sys.Extended.UI.HTMLEditor.isStyleTag(prnt.tagName)) {
                                    prnt = prnt.parentNode;
                                }
                                if (prnt && prnt.tagName) {
                                    var tagName = prnt.tagName.toUpperCase();
                                    if (tagName == "P" || tagName == "LI") {
                                        if (tagName == "LI") {
                                            function test() {
                                                r = editor._createRange(editor._getSelection());
                                                var parent = r.parentElement();
                                                while (parent && parent.tagName && parent.tagName.toUpperCase() != "BODY" && Sys.Extended.UI.HTMLEditor.isStyleTag(parent.tagName)) {
                                                    parent = parent.parentNode;
                                                }
                                                if (parent && parent.nodeType == 1 && parent.tagName.toUpperCase() == "P") {
                                                    var span1 = editor._doc.createElement("span");
                                                    var tempText = editor._doc.createTextNode(" ");
                                                    var inner = parent;
                                                    while (inner.firstChild != null && inner.firstChild.nodeType == 1) {
                                                        inner = inner.firstChild;
                                                    }
                                                    if (inner.nodeType == 1) {
                                                        inner.appendChild(tempText);
                                                        inner.appendChild(span1);
                                                        while (parent.firstChild) {
                                                            parent.parentNode.insertBefore(parent.firstChild, parent);
                                                        }
                                                    } else {
                                                        parent.parentNode.insertBefore(tempText, parent);
                                                        parent.parentNode.insertBefore(span1, parent);
                                                    }
                                                    parent.parentNode.removeChild(parent);
                                                    r.moveToElementText(span1);
                                                    r.select();
                                                    span1.parentNode.removeChild(span1);
                                                    editor.onContentChanged();
                                                }
                                            }
                                            setTimeout(test, 0);
                                        }
                                        break;
                                    }
                                }
                                try {
                                    var mn = Sys.Extended.UI.HTMLEditor.smartClassName + "_middle_add";
                                    var mn_element = null;
                                    var mn_span_text = "<span id=" + mn + "></span>";

                                    function testNextBlockElement() {
                                        var sel = editor._getSelection();
                                        var range = editor._createRange(sel);
                                        if (mn_element != null) {
                                            mn_element.innerHTML = "&nbsp;";
                                            range.moveToElementText(mn_element);
                                            range.select();
                                            mn_element.parentNode.insertBefore(mn_element.firstChild, mn_element);
                                            mn_element.parentNode.removeChild(mn_element);
                                            editor.onContentChanged();
                                        }
                                    }
                                    r.pasteHTML(mn_span_text);
                                    var needTest = false;
                                    mn_element = editor._doc.getElementById(mn);
                                    if (mn_element != null) {
                                        var nextSibling = mn_element.nextSibling;
                                        var curPar = mn_element.parentNode;
                                        while (nextSibling == null && curPar != null && Sys.Extended.UI.HTMLEditor.isStyleTag(curPar.tagName)) {
                                            nextSibling = curPar.nextSibling;
                                            curPar = curPar.parentNode;
                                        }
                                        if (nextSibling != null && !Sys.Extended.UI.HTMLEditor.isInlineElement(nextSibling) && nextSibling.tagName != null && typeof nextSibling.tagName != "undefined") {
                                            var tag = nextSibling.tagName.toUpperCase();
                                            if (tag != "BR" && tag != "UL" && tag != "OL" && tag != "P") {
                                                needTest = true;
                                            }
                                        }
                                        mn_element.parentNode.removeChild(mn_element);
                                    }
                                    r.pasteHTML("<br/>" + (needTest ? mn_span_text : ""));
                                    if (needTest) {
                                        mn_element = editor._doc.getElementById(mn);
                                    }
                                    r.select();
                                    if (needTest) {
                                        setTimeout(testNextBlockElement, 0);
                                        Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                                        return false;
                                    }
                                } catch (ex) { }
                            } else {
                                break;
                            }
                            Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                        } else {
                            if (!ev.shiftKey && (Sys.Extended.UI.HTMLEditor.isSafari || Sys.Extended.UI.HTMLEditor.isOpera)) {
                                var prnt = Sys.Extended.UI.HTMLEditor.getSelParent(this);
                                if (prnt.nodeType == 3) {
                                    prnt = prnt.parentNode;
                                }
                                while (prnt && prnt.tagName && prnt.tagName.toUpperCase() != "BODY" && Sys.Extended.UI.HTMLEditor.isStyleTag(prnt.tagName)) {
                                    prnt = prnt.parentNode;
                                }
                                if (prnt && prnt.tagName && (prnt.tagName.toUpperCase() == "P" || prnt.tagName.toUpperCase() == "LI")) {
                                    break;
                                }

                                var mn_span_text = "<br />";
                                if (Sys.Extended.UI.HTMLEditor.isOpera) {
                                    var sel = editor._getSelection();
                                    var range = editor._createRange(sel);

                                    if (range.startContainer == range.endContainer) {
                                        if (range.startContainer.nodeType == 1) {
                                            var firstCh = range.startContainer.childNodes.item(range.startOffset);
                                            if (firstCh.nodeType == 1 && firstCh.tagName.toUpperCase() == "BR") {
                                                mn_span_text += "<br />";
                                            }
                                        } else if (range.startContainer.nodeType == 3 && range.startOffset == range.endOffset && (range.startContainer.data).length == range.endOffset && !(range.startContainer.nextSibling && range.startContainer.nextSibling.nodeType == 3)) {
                                            mn_span_text += "&nbsp;";
                                        }
                                    }
                                }

                                this.insertHTML(mn_span_text);
                                Sys.Extended.UI.HTMLEditor._stopEvent(ev);

                                if (Sys.Extended.UI.HTMLEditor.isOpera) {
                                    var sel = editor._getSelection();
                                    var range = editor._createRange(sel);

                                    if (range.startContainer == range.endContainer && range.startContainer.nodeType == 3 && range.startOffset == range.endOffset && (range.startContainer.data).length == 0) {
                                        var nbsp = range.startContainer.previousSibling;
                                        range.startContainer.parentNode.removeChild(range.startContainer);
                                        editor._removeAllRanges(sel);
                                        range = editor._createRange();
                                        range.setStart(nbsp, 0);
                                        range.setEnd(nbsp, 1);
                                        editor._selectRange(sel, range);
                                    }
                                }

                                editor.onContentChanged();
                            } else if (Sys.Extended.UI.HTMLEditor.isSafari) {
                                this.insertHTML("<br/>");
                                Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                                editor.onContentChanged();
                            }
                        }
                        break;
                }
            }
            else {
                editor._a_prize = false;
            }
        }

        if (Sys.Extended.UI.HTMLEditor.isIE && ev.type == "keypress" && !ev.ctrlKey) {
            var key = ev.keyCode;
            var selT = editor._getSelection();
            var rangeT = editor._createRange(selT);
            if (rangeT.text.length > 0) {
                var chr = String.fromCharCode(key);
                var caps = Sys.Extended.UI.HTMLEditor.capLock(ev);
                var upper = (ev.shiftKey && !caps) || caps;
                if (!upper) {
                    chr = chr.toLowerCase();
                }
                var tid = Sys.Extended.UI.HTMLEditor.smartClassName + "StyleForTyping";
                var elT = editor._doc.getElementById(tid);
                if (elT != null) {
                    chr = "<span id='" + tid + "'></span>" + chr + "<span id='" + tid + tid + "'></span>";
                    elT.parentNode.removeChild(elT);
                }
                rangeT.pasteHTML(chr);
                if (elT != null) {
                    editor.trickWithStyles(tid);
                    elT = editor._doc.getElementById(tid + tid);
                    elT.parentNode.removeChild(elT);
                }
                Sys.Extended.UI.HTMLEditor._stopEvent(ev);
                editor.onContentChanged();
                return false;
            }
        }

        if (ev.type == "mouseup" || ev.type == "mousedown" || ev.type == "keydown") {
            var need_update = true;
            if (ev.type == "keydown" && !ev.ctrlKey) {
                var key = ev.keyCode;
                if ((key >= 0x30 && key <= 0x5a) || (key == 0x20) || (key == 0x0d) || (key >= 0xba && key <= 0xde) || (key >= 0x60 && key <= 0x6f)) {
                    if (editor._StyleForTyping != null) {
                        editor.n_arr = [];
                        for (var im = 0; im < editor._StyleForTyping.length; im++) {
                            editor.n_arr.push(editor._StyleForTyping[im]);
                        }
                        var tid = Sys.Extended.UI.HTMLEditor.smartClassName + "StyleForTyping";
                        var needItNow = true;
                        if (!Sys.Extended.UI.HTMLEditor.isIE) {
                            editor.insertHTML("<span id='" + tid + "'></span>");
                        } else {
                            editor.insertHTML("<span id='" + tid + "'>&nbsp;</span>");
                            var elT = editor._doc.getElementById(tid);
                            if (elT && elT.nextSibling && elT.nextSibling.nodeType == 3) {
                                needItNow = false;
                                var selT = editor._getSelection();
                                var rangeT = editor._createRange(selT);
                                rangeT.moveToElementText(editor._doc.getElementById(tid));
                                rangeT.select();
                            } else {
                                if (elT) {
                                    elT.removeChild(elT.firstChild);
                                }
                            }
                        }
                        if (needItNow) {
                            setTimeout(function() {
                                editor.trickWithStyles(tid);
                                editor.onContentChanged();
                            }, 0);
                        }
                    }
                }
            }

            if (need_update || !Sys.Extended.UI.HTMLEditor.isIE) {
                if (!editor._updated_now) {
                    if (editor._updateTimer) {
                        clearTimeout(editor._updateTimer);
                        editor._updateTimer = null;
                    }
                    editor._updateTimerLimit = 3;

                    function xyz() {
                        if (editor._editPanel == Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel) {
                            try {
                                if (Sys.Extended.UI.HTMLEditor.isIE) {
                                    try {
                                        var selka = editor._doc.selection;
                                    } catch (e) {
                                        return false;
                                    }
                                    if (editor._getSelection().type == "None" && editor._doc.queryCommandValue("backcolor") == 0 && editor._doc.queryCommandValue("forecolor") == 0) {
                                        editor._updateTimerLimit--;
                                        if (editor._updateTimerLimit > 0) {
                                            editor._updateTimer = setTimeout(xyz, 100); // delay for toolbars updating
                                            return;
                                        }
                                    }
                                }
                                editor._updated_now = true;
                                editor._editPanel.updateToolbar();
                                editor._updated_now = false;
                                editor._updateTimer = null;
                                if (!Sys.Extended.UI.HTMLEditor.isIE) {
                                    editor.focusEditor();
                                }
                            } catch (e) { }
                        }
                    }
                    editor._updateTimer = setTimeout(xyz, 300); // delay for toolbars updating
                }
            }
        }

        if (!((!Sys.Extended.UI.HTMLEditor.isIE && (ev.type == "keydown" || ev.type == "keyup")) || (Sys.Extended.UI.HTMLEditor.isIE && (ev.type == "keydown" || ev.type == "keyup") && (ev.keyCode == 16 || ev.keyCode == 20)))) {
            editor._StyleForTyping = null;
        }

        if (Sys.Extended.UI.HTMLEditor.isSafari) {
            setTimeout(function() {
                editor._createRange(editor._getSelection());
            }, 0);
        }

        if (!Sys.Extended.UI.HTMLEditor.isIE) {
            setTimeout(function() {
                if (editor._editPanel == Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel) {
                    var sel = editor._getSelection();
                    var range = editor._createRange(sel);
                    if (range.startContainer.nodeType != 3 && range.startContainer == range.endContainer)
                        if (range.startOffset == range.endOffset)
                        if (range.startContainer.childNodes.item(range.startOffset))
                        if (range.startContainer.childNodes.item(range.startOffset).nodeType == 3) {
                        var container = range.startContainer.childNodes.item(range.startOffset);
                        sel.collapseToEnd();
                        editor._removeAllRanges(sel);
                        sel = editor._getSelection();
                        range = editor._createRange(sel);
                        range.setStart(container, 0);
                        range.setEnd(container, 0);
                        editor._selectRange(sel, range);
                    }
                }
            }, 0);
        }

        if (!Sys.Extended.UI.HTMLEditor.isIE) {
            var sel = editor._getSelection();
            var range = editor._createRange(sel);
            editor._saved_startContainer = range.startContainer;
            editor._saved_startOffset = range.startOffset;
        }

        setTimeout(function() {
            try {
                if (editor._editPanel == Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel) {
                    editor._ifShadow();
                }
            } catch (e) { }
        }, 0);

        if (ev.type == "keydown") {
            if (editor._AfterOnContentChanged == null || typeof editor._AfterOnContentChanged == "undefined" || !editor._AfterOnContentChanged) {
                editor._AfterOnContentChanged = true;
                setTimeout(function() {
                    if (editor._editPanel == Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel) {
                        editor.onContentChanged();
                        editor._AfterOnContentChanged = false;
                    }
                }, 0);
            }
        }
        return true;
    } catch (ex) {
        Sys.Extended.UI.HTMLEditor._stopEvent(ev);
        return false;
    }
};
�M// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />
/// <reference path="../DynamicPopulate/DynamicPopulateBehavior.js" />
/// <reference path="../HoverExtender/HoverBehavior.js" />
/// <reference path="../Animation/Animations.js" />
/// <reference path="../Animation/AnimationBehavior.js" />
/// <reference path="../PopupExtender/PopupBehavior.js" />

(function() {
var scriptName = "ExtendedHoverMenu";

function execute() {

Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.HoverMenuBehavior = function(element) {
    /// <summary>
    /// The HoverMenuBehavior is used to display a popup whenever the target is hovered over
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// DOM element the behavior is associated with
    /// </param>
    Sys.Extended.UI.HoverMenuBehavior.initializeBase(this, [element]);

    this._hoverBehavior = null;
    this._popupBehavior = null;
    
    this._mouseEnterHandler = null;
    this._mouseLeaveHandler = null;
    this._unhoverHandler = null;
    this._hoverHandler = null;
    
    this._inHover = null;
    this._oldClass = null;
    this._popupElement = null;
    this._onShowJson = null;
    this._onHideJson = null;
    
    this._popupElement = null;
    this._hoverCssClass = null;
    this._offsetX = 0;
    this._offsetY = 0;
    this._popDelay = 100;
    this._hoverDelay = 0;
    this._popupPosition = null;
}
Sys.Extended.UI.HoverMenuBehavior.prototype = {
    initialize : function() {
        /// <summary>
        /// Initialize the behavior
        /// </summary>
        Sys.Extended.UI.HoverMenuBehavior.callBaseMethod(this, 'initialize');

        this._hoverHandler = Function.createDelegate(this, this._onHover);
        this._unhoverHandler = Function.createDelegate(this, this._onUnhover);
        this._mouseEnterHandler = Function.createDelegate(this, this._onmouseover);
        this._mouseLeaveHandler = Function.createDelegate(this, this._onmouseout);
        
        var e = this.get_element();
        $addHandler(e, "mouseover", this._mouseEnterHandler);
        $addHandler(e, "mouseout", this._mouseLeaveHandler);
        
        if (this._popupElement) {
            this._popupBehavior = $create(Sys.Extended.UI.PopupBehavior, { "id":this.get_id()+"_PopupBehavior" }, null, null, this._popupElement);
            if (this._popupPosition) {
                this._popupBehavior.set_positioningMode(Sys.Extended.UI.HoverMenuPopupPosition.Absolute);
            } else {
                this._popupBehavior.set_positioningMode(Sys.Extended.UI.HoverMenuPopupPosition.Center);
            }
            
            if (this._onShowJson) {
                this._popupBehavior.set_onShow(this._onShowJson);
            }
            if (this._onHideJson) {
                this._popupBehavior.set_onHide(this._onHideJson);
            }
            
            this._hoverBehavior = $create(Sys.Extended.UI.HoverBehavior, { "id":this.get_id()+"_HoverBehavior", "hoverDelay":this._hoverDelay, "unhoverDelay":this._popDelay, "hoverElement":this._popupElement }, null, null, e);
            this._hoverBehavior.add_hover(this._hoverHandler);
            this._hoverBehavior.add_unhover(this._unhoverHandler);
        }
    },
    
    dispose : function() {
        /// <summary>
        /// Dispose the behavior
        /// </summary>

        this._onShowJson = null;
        this._onHideJson = null;
        if (this._popupBehavior) {
            this._popupBehavior.dispose();
            this._popupBehavior = null;
        }
        if (this._popupElement) {            
            this._popupElement = null;
        }
        if (this._mouseEnterHandler) {
            $removeHandler(this.get_element(), "mouseover", this._mouseEnterHandler);
        }
        if (this._mouseLeaveHandler) {            
            $removeHandler(this.get_element(), "mouseout", this._mouseLeaveHandler);
        }        
        if (this._hoverBehavior) {
            if (this._hoverHandler) {
                this._hoverBehavior.remove_hover(this._hoverHandler);
                this._hoverHandler = null;
            }
            if (this._unhoverHandler) {
                this._hoverBehavior.remove_hover(this._unhoverHandler);
                this._unhoverHandler = null;
            }
            this._hoverBehavior.dispose();
            this._hoverBehavior = null;
        }   
        Sys.Extended.UI.HoverMenuBehavior.callBaseMethod(this, 'dispose');       
    },
    
    _getLeftOffset : function() {
        /// <summary>
        /// Get the left offset of the popup
        /// </summary>
        /// <returns type="Number" integer="true">
        /// Left offset of the popup (in pixels)
        /// </returns>
 
        var defaultLeft = $common.getLocation(this.get_element()).x;
        var offsetLeft = $common.getLocation(this.get_popupElement().offsetParent).x;
        var delta = 0;
        
        switch(this._popupPosition) {
            case Sys.Extended.UI.HoverMenuPopupPosition.Left:
                delta = (-1 * this._popupElement.offsetWidth);
                break;
            case Sys.Extended.UI.HoverMenuPopupPosition.Right:
                delta = this.get_element().offsetWidth;
                break; 
        }
        return delta + defaultLeft - offsetLeft + this._offsetX;

    },
    
    _getTopOffset : function() {
        /// <summary>
        /// Get the top offset of the popup
        /// </summary>
        /// <returns type="Number" integer="true">
        /// Left offset of the popup (in pixels)
        /// </returns>

        var defaultTop = $common.getLocation(this.get_element()).y;
        var offsetTop = $common.getLocation(this.get_popupElement().offsetParent).y;
        var delta = 0;
    
        switch(this._popupPosition) {
            case Sys.Extended.UI.HoverMenuPopupPosition.Top:
                delta = (-1 * this._popupElement.offsetHeight);
                break;
            case Sys.Extended.UI.HoverMenuPopupPosition.Bottom:
                delta = this.get_element().offsetHeight;
                break;
        }
        return defaultTop - offsetTop + delta + this._offsetY;       
    },
        
    _onHover : function() {
        /// <summary>
        /// Display the popup when the target is hovered over
        /// </summary>

        if (this._inHover) return;

        var eventArgs = new Sys.CancelEventArgs();
        this.raiseShowing(eventArgs);
        if (eventArgs.get_cancel()) {
            return;
        }
        
        this._inHover = true;
        this.populate();
        
        this._popupBehavior.show();
        if ($common.getCurrentStyle(this._popupElement, 'display') == 'none') {
            this._popupElement.style.display = 'block';
        }
        this._popupBehavior.set_x(this._getLeftOffset());
        this._popupBehavior.set_y(this._getTopOffset());
        
        this.raiseShown(Sys.EventArgs.Empty);
    },
    
    _onUnhover : function() {
        /// <summary>
        /// Hide the popup when the target is no longer hovered
        /// </summary>
        
        var eventArgs = new Sys.CancelEventArgs();
        this.raiseHiding(eventArgs);
        if (eventArgs.get_cancel()) {
            return;
        }
        
        this._inHover = false;
        this._resetCssClass(); 
        this._popupBehavior.hide();
        
        this.raiseHidden(Sys.EventArgs.Empty);
    },
    
    _onmouseover : function() {
        /// <summary>
        /// Handler to change the CSS class when hovered over
        /// </summary>

        var e = this.get_element();
        if (this._hoverCssClass && e.className != this._hoverCssClass) {
            this._oldClass = e.className;
            e.className = this._hoverCssClass;
        }    
    },
    
    _onmouseout : function() {
        /// <summary>
        /// Handler to reset the CSS class when no longer hovering
        /// </summary>
        this._resetCssClass(); 
    },
 
    _resetCssClass : function() {
        /// <summary>
        /// Reset the CSS class if we changed it while hovering
        /// </summary>

        var e = this.get_element();
        if (!this._inHover && this._hoverCssClass && e.className == this._hoverCssClass) {
            e.className = this._oldClass;
        }
    },

    get_onShow : function() {
        /// <value type="String" mayBeNull="true">
        /// Generic OnShow Animation's JSON definition
        /// </value>
        return this._popupBehavior ? this._popupBehavior.get_onShow() : this._onShowJson;
    },
    set_onShow : function(value) {
        if (this._popupBehavior) {
            this._popupBehavior.set_onShow(value)
        } else {
            this._onShowJson = value;
        }
        this.raisePropertyChanged('onShow');
    },
    get_onShowBehavior : function() {
        /// <value type="Sys.Extended.UI.Animation.GenericAnimationBehavior">
        /// Generic OnShow Animation's behavior
        /// </value>
        return this._popupBehavior ? this._popupBehavior.get_onShowBehavior() : null;
    },
    onShow : function() {
        /// <summary>
        /// Play the OnShow animation
        /// </summary>
        /// <returns />
        if (this._popupBehavior) {
            this._popupBehavior.onShow();
        }
    },
        
    get_onHide : function() {
        /// <value type="String" mayBeNull="true">
        /// Generic OnHide Animation's JSON definition
        /// </value>
        return this._popupBehavior ? this._popupBehavior.get_onHide() : this._onHideJson;
    },
    set_onHide : function(value) {
        if (this._popupBehavior) {
            this._popupBehavior.set_onHide(value)
        } else {
            this._onHideJson = value;
        }
        this.raisePropertyChanged('onHide');
    },
    get_onHideBehavior : function() {
        /// <value type="Sys.Extended.UI.Animation.GenericAnimationBehavior">
        /// Generic OnHide Animation's behavior
        /// </value>
        return this._popupBehavior ? this._popupBehavior.get_onHideBehavior() : null;
    },
    onHide : function() {
        /// <summary>
        /// Play the OnHide animation
        /// </summary>
        /// <returns />
        if (this._popupBehavior) {
            this._popupBehavior.onHide();
        }
    },
    
    get_popupElement : function() {
        /// <value type="Sys.UI.DomElement" domElement="true">
        /// Popup that is displayed when hovering
        /// </value>
        return this._popupElement;
    },
    set_popupElement : function(value) {
        if (this._popupElement != value) {
            this._popupElement = value;
            if (this.get_isInitialized() && this._hoverBehavior) {
                this._hoverBehavior.set_hoverElement(this._popupElement);
            }
            this.raisePropertyChanged('popupElement');
        }
    },
    
    get_HoverCssClass : function() {
        /// <value type="String">
        /// CSS class used when hovering
        /// </value>
        return this._hoverCssClass;
    },
    set_HoverCssClass : function(value) {
        if (this._hoverCssClass != value) {
            this._hoverCssClass = value;
            this.raisePropertyChanged('HoverCssClass');
        }
    },
    
    get_OffsetX : function() {
        /// <value type="Number" integer="true">
        /// The number of pixels to offset the popup from it's default position horizontally
        /// </value>
        return this._offsetX;
    },
    set_OffsetX : function(value) {
        if (this._offsetX != value) {
            this._offsetX = value;
            this.raisePropertyChanged('OffsetX');
        }
    },
    
    get_OffsetY : function() {
        /// <value type="Number" integer="true">
        /// The number of pixels to offset the popup from it's default position vertically
        /// </value>
        return this._offsetY;
    },
    set_OffsetY : function(value) {
        if (this._offsetY != value) {
            this._offsetY = value;
            this.raisePropertyChanged('OffsetY');
        }
    },
    
    get_PopupPosition : function() {
        /// <value type="Sys.Extended.UI.HoverMenuPopupPosition">
        /// Where the popup should be positioned relative to the target control.
        /// Can be Left (Default), Right, Top, Bottom, Center.
        /// </value>
        return this._popupPosition;
    },
    set_PopupPosition : function(value) {
        if (this._popupPosition != value) {
            this._popupPosition = value;
            this.raisePropertyChanged('PopupPosition');
        }
    },
    
    get_PopDelay : function() {
        /// <value type="Number">
        /// The time delay from when the mouse enters the target to when the popup is shown, in milliseconds. Default is 100.
        /// </value>
        return this._popDelay;
    },
    set_PopDelay : function(value) {
        if (this._popDelay != value) {
            this._popDelay = value;
            this.raisePropertyChanged('PopDelay');
        }
    },

    get_HoverDelay: function() {
        /// <value type="Number">
        /// The time delay after the mouse enters the target and before the popup is shown, in milliseconds. Default is 0.
        /// </value>
        return this._hoverDelay;
    },
    set_HoverDelay: function(value) {
        if (this._hoverDelay != value) {
            this._hoverDelay = value;
            this.raisePropertyChanged('HoverDelay');
        }
    },
    
    add_showing : function(handler) {
        /// <summary>
        /// Add an event handler for the showing event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('showing', handler);
    },
    remove_showing : function(handler) {
        /// <summary>
        /// Remove an event handler from the showing event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('showing', handler);
    },
    raiseShowing : function(eventArgs) {
        /// <summary>
        /// Raise the showing event
        /// </summary>
        /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
        /// Event arguments for the showing event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('showing');
        if (handler) {
            handler(this, eventArgs);
        }
    },
    
    add_shown : function(handler) {
        /// <summary>
        /// Add an event handler for the shown event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('shown', handler);
    },
    remove_shown : function(handler) {
        /// <summary>
        /// Remove an event handler from the shown event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('shown', handler);
    },
    raiseShown : function(eventArgs) {
        /// <summary>
        /// Raise the shown event
        /// </summary>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="false">
        /// Event arguments for the shown event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('shown');
        if (handler) {
            handler(this, eventArgs);
        }
    },
    
    add_hiding : function(handler) {
        /// <summary>
        /// Add an event handler for the hiding event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('hiding', handler);
    },
    remove_hiding : function(handler) {
        /// <summary>
        /// Remove an event handler from the hiding event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('hiding', handler);
    },
    raiseHiding : function(eventArgs) {
        /// <summary>
        /// Raise the hiding event
        /// </summary>
        /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
        /// Event arguments for the hiding event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('hiding');
        if (handler) {
            handler(this, eventArgs);
        }
    },
    
    add_hidden : function(handler) {
        /// <summary>
        /// Add an event handler for the hidden event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('hidden', handler);
    },
    remove_hidden : function(handler) {
        /// <summary>
        /// Remove an event handler from the hidden event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('hidden', handler);
    },
    raiseHidden : function(eventArgs) {
        /// <summary>
        /// Raise the hidden event
        /// </summary>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="false">
        /// Event arguments for the hidden event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('hidden');
        if (handler) {
            handler(this, eventArgs);
        }
    }
}
Sys.Extended.UI.HoverMenuBehavior.registerClass('Sys.Extended.UI.HoverMenuBehavior', Sys.Extended.UI.DynamicPopulateBehaviorBase);
Sys.registerComponent(Sys.Extended.UI.HoverMenuBehavior, { name: "hoverMenu" });

Sys.Extended.UI.HoverMenuPopupPosition = function() {
    /// <summary>
    /// Where the popup should be positioned relative to the target control
    /// </summary>
    /// <field name="Center" type="Number" integer="true" />
    /// <field name="Top" type="Number" integer="true" />
    /// <field name="Left" type="Number" integer="true" />
    /// <field name="Bottom" type="Number" integer="true" />
    /// <field name="Right" type="Number" integer="true" />
    throw Error.invalidOperation();
}
Sys.Extended.UI.HoverMenuPopupPosition.prototype = {
    Center: 0,
    Top: 1,
    Left: 2,
    Bottom: 3,
    Right: 4
}
Sys.Extended.UI.HoverMenuPopupPosition.registerEnum('Sys.Extended.UI.HoverMenuPopupPosition');

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedDynamicPopulate", "ExtendedHover", "ExtendedAnimationBehavior", "ExtendedPopup"], execute);
}
else {
    execute();
}

})();
jsType.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.ComboBoxAutoCompleteMode=function(){};Sys.Extended.UI.ComboBoxAutoCompleteMode.prototype={None:0,Append:1,Suggest:2,SuggestAppend:3};Sys.Extended.UI.ComboBoxAutoCompleteMode.registerEnum("Sys.Extended.UI.ComboBoxAutoCompleteMode",false);Sys.Extended.UI.ComboBoxStyle=function(){};Sys.Extended.UI.ComboBoxStyle.prototype={DropDownList:0,DropDown:1,Simple:2};Sys.Extended.UI.ComboBoxStyle.registerEnum("Sys.Extended.UI.ComboBoxStyle",false);Sys.Extended.UI.ComboBoxTextSelectionStrategy=function(){};Sys.Extended.UI.ComboBoxTextSelectionStrategy.prototype={Unknown:0,Microsoft:1,W3C:2};Sys.Extended.UI.ComboBoxTextSelectionStrategy.registerEnum("Sys.Extended.UI.ComboBoxTextSelectionStrategy",false);Sys.Extended.UI.ComboBox=function(d){var c=false,b=null,a=this;Sys.Extended.UI.ComboBox.initializeBase(a,[d]);a._comboTableControl=b;a._textBoxControl=b;a._optionListControl=b;a._buttonControl=b;a._hiddenFieldControl=b;a._autoPostBack=c;a._autoCompleteMode=b;a._dropDownStyle=b;a._caseSensitive=c;a._originalSelectedIndex=b;a._listItemHoverCssClass=b;a._popupBehavior=b;a._supressFocusHide=true;a._doingPostBack=c;a._textSelectionStrategy=b;a._highlightSuggestedItem=c;a._highlightedIndex=b;a._optionListItems=b;a._optionListItemHeight=b;a._optionListHeight=b;a._optionListWidth=b;a.clearDelegates()};Sys.Extended.UI.ComboBox.prototype={initialize:function(){var a=this;Sys.Extended.UI.ComboBox.callBaseMethod(a,"initialize");a.createDelegates();a.initializeTextBox();a.initializeButton();a.initializeOptionList();a.addHandlers()},dispose:function(){var a=this;if(a._popupBehavior){a._popupBehavior.remove_showing(a._popupShowingHandler);a._popupBehavior.remove_shown(a._popupShownHandler);a._popupBehavior.remove_hiding(a._popupHidingHandler);a._popupBehavior.dispose();a._popupBehavior=null}a.clearHandlers();a.clearDelegates();Sys.Extended.UI.ComboBox.callBaseMethod(a,"dispose")},createDelegates:function(){var a=this;a._listMouseOverHandler=Function.createDelegate(a,a._onListMouseOver);a._listMouseOutHandler=Function.createDelegate(a,a._onListMouseOut);a._listMouseDownHandler=Function.createDelegate(a,a._onListMouseDown);a._listClickHandler=Function.createDelegate(a,a._onListClick);a._listDragHandler=Function.createDelegate(a,a._onListDrag);a._listSelectStartHandler=Function.createDelegate(a,a._onListSelectStart);a._listMouseWheelHandler=Function.createDelegate(a,a._onListMouseWheel);a._textBoxClickHandler=Function.createDelegate(a,a._onTextBoxClick);a._textBoxFocusHandler=Function.createDelegate(a,a._onTextBoxFocus);a._textBoxBlurHandler=Function.createDelegate(a,a._onTextBoxBlur);a._textBoxKeyPressHandler=Function.createDelegate(a,a._onTextBoxKeyPress);a._textBoxKeyDownHandler=Function.createDelegate(a,a._onTextBoxKeyDown);a._buttonClickHandler=Function.createDelegate(a,a._onButtonClick);a._buttonBlurHandler=Function.createDelegate(a,a._onButtonBlur);a._buttonKeyDownHandler=Function.createDelegate(a,a._onButtonKeyDown);a._buttonKeyPressHandler=Function.createDelegate(a,a._onButtonKeyPress);a._documentClickHandler=Function.createDelegate(a,a._onDocumentClick);a._documentMouseWheelHandler=Function.createDelegate(a,a._onDocumentMouseWheel);a._popupShowingHandler=Function.createDelegate(a,a._popupShowing);a._popupShownHandler=Function.createDelegate(a,a._popupShown);a._popupHidingHandler=Function.createDelegate(a,a._popupHiding)},clearDelegates:function(){var a=null,b=this;b._listMouseOverHandler=a;b._listMouseOutHandler=a;b._listMouseDownHandler=a;b._listClickHandler=a;b._listDragHandler=a;b._listSelectStartHandler=a;b._listMouseWheelHandler=a;b._textBoxClickHandler=a;b._textBoxFocusHandler=a;b._textBoxBlurHandler=a;b._textBoxKeyPressHandler=a;b._textBoxKeyDownHandler=a;b._buttonClickHandler=a;b._buttonBlurHandler=a;b._buttonKeyDownHandler=a;b._buttonKeyPressHandler=a;b._documentClickHandler=a;b._documentMouseWheelHandler=a;b._popupShowingHandler=a;b._popupShownHandler=a;b._popupHidingHandler=a},addHandlers:function(){var d="mousewheel",c="DOMMouseScroll",a=this,b=a.get_optionListControl();$addHandlers(b,{mouseover:a._listMouseOverHandler,mouseout:a._listMouseOutHandler,mousedown:a._listMouseDownHandler,click:a._listClickHandler,drag:a._listDragHandler,selectstart:a._listSelectStartHandler},a);$addHandlers(a.get_textBoxControl(),{click:a._textBoxClickHandler,focus:a._textBoxFocusHandler,blur:a._textBoxBlurHandler,keypress:a._textBoxKeyPressHandler},a);(Sys.Browser.agent==Sys.Browser.InternetExplorer||Sys.Browser.agent===Sys.Browser.Safari||Sys.Browser.agent===Sys.Browser.WebKit)&&$addHandler(a.get_textBoxControl(),"keydown",a._textBoxKeyDownHandler);$addHandlers(a.get_buttonControl(),{click:a._buttonClickHandler,blur:a._buttonBlurHandler,keydown:a._buttonKeyDownHandler,keypress:a._buttonKeyPressHandler},a);$addHandler(document,"click",a._documentClickHandler);if(typeof b.onmousewheel==="undefined"){$addHandler(b,c,a._listMouseWheelHandler);$addHandler(document,c,a._documentMouseWheelHandler)}else{$addHandler(b,d,a._listMouseWheelHandler);$addHandler(document,d,a._documentMouseWheelHandler)}},clearHandlers:function(){$clearHandlers(this.get_optionListControl());$clearHandlers(this.get_textBoxControl());$clearHandlers(this.get_buttonControl());$clearHandlers(document)},initializeTextBox:function(){var a=this.get_textBoxControl().style;if(a.margin=="")a.margin="0px"},initializeButton:function(){var b=this,a=b.get_buttonControl().style;if(a.height==""&&b.get_textBoxControl().offsetHeight>=0)a.height=b.get_textBoxControl().offsetHeight+"px";if(a.width=="")a.width=a.height;if(a.margin=="")a.margin="0px";if(a.padding=="")a.padding="0px";b._buttonControl.style.visibility="visible"},initializeOptionList:function(){var a=this;if(a.get_optionListControl()==null){var k=document.createElement("ul");a.get_element().appendChild(k);a.set_optionListControl(k)}var c=a.get_optionListControl();if(Sys.Browser.agent===Sys.Browser.Safari||Sys.Browser.agent===Sys.Browser.WebKit){a.get_element().removeChild(c);var g=a.get_element().parentNode;while(typeof g!=typeof document.forms[0])g=g.parentNode;var j=document.createElement("div");j.className=a.get_element().className;j.appendChild(c);g.appendChild(j)}var h=c.style;h.display="block";h.zIndex="10000";a._optionListItems=[];for(var l=c.childNodes,i=0;i<l.length;i++){var d=l[i];if(d.tagName==undefined||d.tagName.toUpperCase()!="LI"){c.removeChild(d);i--;continue}var m={},b=d.innerHTML.trim(),e=b.indexOf("\r");while(e>=0){b=b.substring(0,e).trim()+" "+b.substring(e+1,b.length).trim();e=b.indexOf("\r")}var f=b.indexOf("\n");while(f>=0){b=b.substring(0,f).trim()+" "+b.substring(f+1,b.length).trim();f=b.indexOf("\n")}b=b.replace(/\&amp;/g,"&").replace(/\&quot;/g,'"').replace(/\&gt;/g,">").replace(/\&lt;/g,"<");m.text=b.trim();Array.add(a._optionListItems,m);a.initializeOptionListItem(d)}h.width=a._getOptionListBounds().width+"px";h.width="0px";a._popupBehavior=$create(Sys.Extended.UI.PopupBehavior,{id:a.get_id()+"_PopupBehavior",parentElement:a.get_textBoxControl(),positioningMode:Sys.Extended.UI.PositioningMode.BottomLeft},null,null,c);a._popupBehavior.add_showing(a._popupShowingHandler);a._popupBehavior.add_shown(a._popupShownHandler);a._popupBehavior.add_hiding(a._popupHidingHandler);if(a.get_selectedIndex()>=0){a._highlightListItem(a.get_selectedIndex());a.get_textBoxControl().value=a._optionListItems[a.get_selectedIndex()].text}else a.get_textBoxControl().text="";a._popupShowing();c.style.display="none"},initializeOptionListItem:function(a){a._textIsEmpty=false;if(a.innerHTML.length<1){a.innerHTML="&nbsp;";a._textIsEmpty=true}},_popupShowing:function(){var l="hidden",e=this,c=e._getWindowBounds(),d=Sys.UI.DomElement.getBounds(e.get_comboTableControl()),k=e._getOptionListBounds(),o=30,u=c.y+c.height/2,t=d.y+d.height,s=c.x+c.width/2,r=d.x+d.width/2,b=d.y-c.y,j="Top";if(t<=u){j="Bottom";b=c.height-d.height-b}var m=e._getOptionListItemHeight();if(b>=k.height)b=k.height;else b=m*(Math.floor(b/m)-2);var q=b/m,n=q<e._optionListItems.length,p=20;if(j=="Top"&&b<c.height-d.y)j="Bottom";var a=d.x-c.x,i="Left";if(r<=s)a=c.width-a;else{i="Right";a=d.width+a}a-=o;var g=k.width;if(n){g+=p;if(a>=g)a=g}else if(a>=g)a=g;if(i=="Right"&&a<c.width-d.x)i="Left";if(b<0)b=0;if(a<0)a=0;var f=e.get_optionListControl().style;f.height=b+"px";f.width=a+"px";if(n){f.overflow="auto";f.overflowX=l}else f.overflow=l;var h=j+i;if(h=="BottomLeft")e._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.BottomLeft);else if(h=="BottomRight")e._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.BottomRight);else if(h=="TopLeft")e._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.TopLeft);else h=="TopRight"&&e._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.TopRight);f.visibility=l},_popupShown:function(){var a=this,b=a.get_optionListControl();b.style.display="block";var g=Sys.UI.DomElement.getBounds(a.get_comboTableControl()),e=Sys.UI.DomElement.getBounds(b),c=Sys.UI.DomElement.getBounds(a.get_textBoxControl()),f=e.y,d;if(a._popupBehavior.get_positioningMode()===Sys.Extended.UI.PositioningMode.BottomLeft||a._popupBehavior.get_positioningMode()===Sys.Extended.UI.PositioningMode.TopLeft)d=c.x;else if(a._popupBehavior.get_positioningMode()===Sys.Extended.UI.PositioningMode.BottomRight||a._popupBehavior.get_positioningMode()===Sys.Extended.UI.PositioningMode.TopRight)d=c.x-(e.width-c.width);Sys.UI.DomElement.setLocation(b,d,f);a._ensureHighlightedIndex();a._ensureScrollTop();b.style.visibility="visible"},_popupHiding:function(){this._highlightSuggestedItem=false;var a=this.get_optionListControl().style;a.display="none";a.visibility="hidden"},_onButtonClick:function(b){var a=this;if(a.get_dropDownStyle()==Sys.Extended.UI.ComboBoxStyle.Simple)a._popupBehavior.show();else if(a._popupBehavior._visible)a._popupBehavior.hide();else a._popupBehavior.show();b.preventDefault();b.stopPropagation();return false},_onButtonBlur:function(){var a=this;if(a.get_autoPostBack()==true&&!a._doingPostBack&&a._originalSelectedIndex!=a.get_selectedIndex()){a._doingPostBack=true;__doPostBack(a.get_element().id,"")}},_onButtonKeyDown:function(a){var b=this;if(a.keyCode==Sys.UI.Key.tab||a.keyCode==16)return true;if(!b._popupBehavior._visible&&(a.keyCode==Sys.UI.Key.enter||a.keyCode==Sys.UI.Key.down))b._popupBehavior.show();else b._popupBehavior._visible&&(a.keyCode==Sys.UI.Key.enter||a.keyCode==Sys.UI.Key.up)&&b._popupBehavior.hide();a.stopPropagation();a.preventDefault();var c=b.get_textBoxControl().id;setTimeout(function(){document.getElementById(c).focus()},0);return false},_onButtonKeyPress:function(a){if(a.charCode==Sys.UI.Key.tab||a.charCode==16)return true;a.stopPropagation();a.preventDefault();return false},_onListMouseWheel:function(a){var b;if(typeof a.rawEvent.wheelDelta==="undefined")b=a.rawEvent.detail>=1?1:-1;else b=a.rawEvent.wheelDelta>1?-1:1;this.get_optionListControl().scrollTop+=this._getOptionListItemHeight()*b;a.stopPropagation();a.preventDefault();return false},_onListMouseOver:function(d){var b=this.get_optionListControl();if(d.target!==b)for(var e=d.target,c=b.childNodes,a=0;a<c.length;++a)if(e===c[a]){this._highlightListItem(a,true);break}},_onListMouseOut:function(){var a=this;a._popupBehavior._visible&&a.get_autoCompleteMode()==Sys.Extended.UI.ComboBoxAutoCompleteMode.SuggestAppend&&a._highlightListItem(a._highlightedIndex,false)},_onListMouseDown:function(b){var a=this,c=a.get_optionListControl();if(b.target==c||b.target.tagName=="scrollbar")return true;if(b.target!==c){var e=c.childNodes[a._highlightedIndex],d=a._optionListItems[a._highlightedIndex].text;a.get_textBoxControl().value=d;a.set_selectedIndex(a._highlightedIndex);a._supressFocusHide=false;a._handleTextBoxFocus(null)}else return true;b.preventDefault();b.stopPropagation();return false},_onListClick:function(a){if(a.target==this.get_optionListControl())return true;a.preventDefault();a.stopPropagation();return false},_onListDrag:function(a){a.preventDefault();a.stopPropagation();return false},_onListSelectStart:function(a){a.preventDefault();a.stopPropagation();return false},_onTextBoxClick:function(a){this.get_dropDownStyle()==Sys.Extended.UI.ComboBoxStyle.Simple&&this._popupBehavior.show();a.preventDefault();a.stopPropagation();return false},_onTextBoxFocus:function(a){this._handleTextBoxFocus(a)},_onTextBoxBlur:function(){var a=this;for(var d=a.get_textBoxControl().value.trim(),b=-3,c=0;c<a._optionListItems.length;c++){var e=a._optionListItems[c];if(a._isExactMatch(e.text,d)){b=c;break}}if(a._highlightSuggestedItem==true&&a._highlightedIndex!=null&&a._highlightedIndex>=0){a.set_selectedIndex(a._highlightedIndex);a.get_textBoxControl().value=a._optionListItems[a.get_selectedIndex()].text}else if(b==-3&&d.length>0&&a.get_dropDownStyle()!=Sys.Extended.UI.ComboBoxStyle.DropDownList)a.set_selectedIndex(-2);else if(a._optionListItems.length<1&&(d==""||a.get_dropDownStyle()==Sys.Extended.UI.ComboBoxStyle.DropDownList)){a.set_selectedIndex(-1);a.get_textBoxControl().value=""}else if(a._optionListItems.length>=0&&b==-3&&a.get_dropDownStyle()==Sys.Extended.UI.ComboBoxStyle.DropDownList){a.set_selectedIndex(0);a.get_textBoxControl().value=a._optionListItems[0].text}else if(b>=0){a.set_selectedIndex(b);a.get_textBoxControl().value=a._optionListItems[b].text}a._popupBehavior.hide();if(a.get_autoPostBack()==true&&!a._doingPostBack&&a._originalSelectedIndex!=a.get_selectedIndex()){a._doingPostBack=true;__doPostBack(a.get_element().id,"")}},_onTextBoxKeyDown:function(a){var c=this._handleEnterKey(a);if(c!=null)return c;this._handleArrowKey(a);var b=this._handleErasureKeys(a);return b!=null?b:true},_onTextBoxKeyPress:function(c){var g=null,a=this,l=a._handleEnterKey(c);if(l!=g)return l;var k=a._handleArrowKey(c);if(k!=g)return k;var i=a._handleNonCharacterKey(c);if(i!=g)return i;a.get_dropDownStyle()==Sys.Extended.UI.ComboBoxStyle.Simple&&!a._popupBehavior._visible&&a._popupBehavior.show();if(a.get_selectedIndex()==-1&&a.get_dropDownStyle()==Sys.Extended.UI.ComboBoxStyle.DropDownList){a.get_textBoxControl().value="";c.preventDefault();c.stopPropagation();return false}var b=a._getTextSelectionInfo(a.get_textBoxControl(),c),e=b.selectionStart,f=b.selectionEnd,m=b.selectionPrefix+b.typedCharacter+b.selectionText.substring(1)+b.selectionSuffix,d=b.selectionPrefix+b.typedCharacter,h=a._suggestIndex(m,d);if(a.get_autoCompleteMode()==Sys.Extended.UI.ComboBoxAutoCompleteMode.Suggest||a.get_autoCompleteMode()==Sys.Extended.UI.ComboBoxAutoCompleteMode.SuggestAppend){a._highlightSuggestedItem=true;!a._popupBehavior._visible&&a._popupBehavior.show()}if(h>=0)if(a.get_autoCompleteMode()==Sys.Extended.UI.ComboBoxAutoCompleteMode.Append||a.get_autoCompleteMode()==Sys.Extended.UI.ComboBoxAutoCompleteMode.SuggestAppend){a.get_textBoxControl().value=a._optionListItems[h].text;e=b.selectionStart+1;f=a.get_textBoxControl().value.length}else{a.get_textBoxControl().value=a._optionListItems[h].text.substring(0,d.length);e=a.get_textBoxControl().value.length;f=a.get_textBoxControl().value.length}else if(a.get_dropDownStyle()==Sys.Extended.UI.ComboBoxStyle.Simple||a.get_dropDownStyle()==Sys.Extended.UI.ComboBoxStyle.DropDown){a.get_textBoxControl().value=d;e=d.length;f=d.length}var j=a._handleErasureKeys(c);if(j!=g)return j;a._ensureHighlightedIndex();a._ensureScrollTop();a._setTextSelectionRange(a.get_textBoxControl(),e,f);c.preventDefault();c.stopPropagation();return false},_onDocumentClick:function(){this._popupBehavior._visible&&this._popupBehavior.hide()},_onDocumentMouseWheel:function(){this._popupBehavior&&this._popupBehavior.hide();return true},_handleTextBoxFocus:function(b){var a=this;if(!a._supressFocusHide&&a._popupBehavior._visible){a._popupBehavior.hide();a._supressFocusHide=true;if(a.get_autoPostBack()&&!a._doingPostBack&&a._originalSelectedIndex!=a.get_selectedIndex()){a._doingPostBack=true;__doPostBack(a.get_element().id,"")}}a.get_dropDownStyle()==Sys.Extended.UI.ComboBoxStyle.Simple&&a._popupBehavior.show();a._setTextSelectionRange(a.get_textBoxControl(),0,a.get_textBoxControl().value.length);if(b!=null){b.preventDefault();b.stopPropagation()}},_highlightListItem:function(b,d){var a=this;if(b==undefined||b<0){a._highlightedIndex!=undefined&&a._highlightedIndex>=0&&a._highlightListItem(a._highlightedIndex,false);return}var e=a.get_optionListControl().childNodes,c=e[b];if(d==true){if(a._highlightedIndex==b)return;if(b>=0)if(a.get_listItemHoverCssClass()==undefined||a.get_listItemHoverCssClass()==""){c.style.backgroundColor="Highlight";c.style.color="HighlightText"}else c.className=a.get_listItemHoverCssClass;a._highlightedIndex!=null&&a._highlightedIndex!=b&&a._highlightedIndex>=0&&a._highlightListItem(a._highlightedIndex,false);a._highlightedIndex=b}else{if(a.get_listItemHoverCssClass()==undefined||a.get_listItemHoverCssClass()==""){c.style.backgroundColor="";c.style.color=""}else c.className="";if(b==a._highlightedIndex)a._highlightedIndex=-1}},_suggestIndex:function(g,d){var e=this;for(var f=-1,a=false,c=false,b=0;b<e._optionListItems.length;b++){itemText=e._optionListItems[b].text;if(itemText.length<1)continue;if(itemText.substring(0,1).toLowerCase()!=d.substring(0,1).toLowerCase())continue;var i=itemText.substring(0,g.length);c=i==g;if(!c&&!e.get_caseSensitive())c=i.toLowerCase()==g.toLowerCase();if(c){f=b;break}else if(!a){var h=itemText.substring(0,d.length);a=h==d;if(!a&&!e.get_caseSensitive())a=h.toLowerCase()==d.toLowerCase();if(a)f=b}}return f},_getKeyboardCode:function(a){return a.type=="keypress"?a.charCode:a.type=="keydown"?a.keyCode:undefined},_handleArrowKey:function(b){var a=this;if(b.shiftKey==true)return null;var e=a._getKeyboardCode(b);if(e==Sys.UI.Key.up||e==Sys.UI.Key.down){if(a._popupBehavior._visible){var d=e-39;if(d==-1&&a._highlightedIndex>0||d==1&&a._highlightedIndex<a._optionListItems.length-1){var c=a._highlightedIndex+d;a.get_textBoxControl().value=a._optionListItems[c].text;a._highlightListItem(c,true);a.set_selectedIndex(c);a._ensureScrollTop()}}else a._popupBehavior.show();if(b.type=="keypress"){b.preventDefault();b.stopPropagation();return false}return true}return null},_handleEnterKey:function(b){var a=this,c=a._getKeyboardCode(b);if(c==Sys.UI.Key.enter){if(a._popupBehavior._visible){if(a._highlightedIndex>=0){a.get_textBoxControl().value=a._optionListItems[a._highlightedIndex].text;a.set_selectedIndex(a._highlightedIndex)}a._popupBehavior.hide();b.preventDefault();b.stopPropagation();return false}else if(a.get_dropDownStyle()==Sys.Extended.UI.ComboBoxStyle.Simple||a.get_dropDownStyle()==Sys.Extended.UI.ComboBoxStyle.DropDown)return true;else if(a._highlightedIndex==a.get_selectedIndex())return true;b.preventDefault();b.stopPropagation();return false}return null},_handleErasureKeys:function(d){var b=this,j=b._getKeyboardCode(d),h=j==Sys.UI.Key.backspace,g=j==Sys.UI.Key.del;if(typeof window.event==="undefined"&&d.type=="keypress")g=d.rawEvent.keyCode==46;if(h||g){var a=b._getTextSelectionInfo(b.get_textBoxControl(),d),e,f;if(a.selectionStart<a.selectionEnd){b.get_textBoxControl().value=a.selectionPrefix+a.selectionSuffix;e=a.selectionStart;f=a.selectionStart}else if(a.selectionStart==a.selectionEnd){var c;if(h&&a.selectionStart>0){var i=1;if(a.selectionPrefix.charCodeAt(a.selectionPrefix.length-1)==8)i=2;c=a.selectionPrefix.substr(0,a.selectionPrefix.length-i);c+=a.selectionSuffix;b.get_textBoxControl().value=c;e=a.selectionStart-1;f=a.selectionStart-1}else if(g&&a.selectionStart<a.textBoxValue.length){c=a.selectionSuffix;c=a.selectionPrefix+c.substr(1,a.selectionSuffix.length-1);b.get_textBoxControl().value=c;e=a.selectionStart;f=a.selectionStart;b._setTextSelectionRange(b.get_textBoxControl(),a.selectionStart,a.selectionStart)}}b._ensureHighlightedIndex();b._ensureScrollTop();b._setTextSelectionRange(b.get_textBoxControl(),e,f);if((b.get_dropDownStyle()==Sys.Extended.UI.ComboBoxStyle.Simple||b.get_dropDownStyle()==Sys.Extended.UI.ComboBoxStyle.DropDown)&&(b.get_autoCompleteMode()==Sys.Extended.UI.ComboBoxAutoCompleteMode.Suggest||b.get_autoCompleteMode()==Sys.Extended.UI.ComboBoxAutoCompleteMode.SuggestAppend)&&b._highlightedIndex>=0){var k=b._isExactMatch(b._optionListItems[b._highlightedIndex].text,b.get_textBoxControl().value);!k&&b._highlightListItem(b._highlightedIndex,false)}d.preventDefault();d.stopPropagation();return false}return null},_handleNonCharacterKey:function(a){var b=this,c=b._getKeyboardCode(a),e=c==Sys.UI.Key.backspace,d=c==Sys.UI.Key.del;if(a.type=="keypress")d=c==46;if(e||d)return null;if(b._isNonCharacterKey(a)){if(c==Sys.UI.Key.esc){b._popupBehavior.hide();b.get_textBoxControl().blur();a.preventDefault();a.stopPropagation();return false}return true}return null},_isNonCharacterKey:function(c){var b=true,a=this._getKeyboardCode(c);if(a==Sys.UI.Key.enter||a==Sys.UI.Key.esc)return b;else if(Sys.Browser.agent==Sys.Browser.Safari&&Sys.Browser.version<500){if(a==8||a==9||a==63272||a==63276||a==63277||a==63275||a==63273||a==63234||a==63235||a>=63236&&a<=63243||a==63248)return b}else if(Sys.Browser.agent==Sys.Browser.WebKit){if(a==8||a==9||a==19||a==33||a==34||a==35||a==36||a==37||a==39||a==45||a==46||a==91||a==92||a==93||a==113||a==115||a==118||a==119||a==120||a==122||a==145)return b}else if(Sys.Browser.agent!=Sys.Browser.InternetExplorer)if(a==8||a==9||a==33||a==34||a==35||a==36||a==37||a==39||a==45||a==46){if(!c.shiftKey)return b}else if(a==145)return b;else if(a==19)return b;else if(Sys.Browser.agent==Sys.Browser.Opera){if(a==0||a==16||a==17)return b}else if(Sys.Browser.agent==Sys.Browser.Firefox)if(a==91||a==92||a==93)return b;return false},_ensureScrollTop:function(){var a=this,b=a.get_optionListControl();if(a._highlightedIndex>=0){var c=a._getOptionListItemHeight(),d=c*a._highlightedIndex,e=b.scrollTop+b.clientHeight;if(d<=b.scrollTop||d>=e)b.scrollTop=a._highlightedIndex*c}},_ensureSelectedIndex:function(){var a=this,b=a.get_hiddenFieldControl().value;if(b==""){b=a._optionListItems.length>0?0:-1;a.get_hiddenFieldControl().value=b.toString()}if(a._originalSelectedIndex==null)a._originalSelectedIndex=parseInt(b)},_ensureHighlightedIndex:function(){var a=this,c=a.get_textBoxControl().value;if(a._highlightedIndex!=null&&a._highlightedIndex>=0&&a._isExactMatch(a._optionListItems[a._highlightedIndex].text,c))return;for(var d=-1,f=false,b=0;b<a._optionListItems.length;b++){var e=a._optionListItems[b].text;if(a._isExactMatch(e,c)){a._highlightListItem(b,true);f=true;break}else if(d<0&&a._highlightSuggestedItem)if(a._isPrefixMatch(e,c))d=b}!f&&a._highlightListItem(d,true)},_isExactMatch:function(b,c){var a=b==c;if(!a&&!this.get_caseSensitive())a=b.toLowerCase()==c.toLowerCase();return a},_isPrefixMatch:function(b,a){return this._isExactMatch(b.substring(0,a.length),a)},_setTextSelectionRange:function(d,b,c){var e="character",f=this._getTextSelectionStrategy();if(f==Sys.Extended.UI.ComboBoxTextSelectionStrategy.Microsoft){var a=d.createTextRange();a.collapse(true);a.moveEnd(e,c);a.moveStart(e,b);a.select();Sys.Browser.agent==Sys.Browser.Opera&&d.setSelectionRange(b,c)}else f==Sys.Extended.UI.ComboBoxTextSelectionStrategy.W3C&&d.setSelectionRange(b,c)},_getTextSelectionStrategy:function(){var a=this;if(a._textSelectionStrategy==null)if(a.get_textBoxControl().createTextRange)a._textSelectionStrategy=Sys.Extended.UI.ComboBoxTextSelectionStrategy.Microsoft;else if(a.get_textBoxControl().setSelectionRange)a._textSelectionStrategy=Sys.Extended.UI.ComboBoxTextSelectionStrategy.W3C;else a._textSelectionStrategy=Sys.Extended.UI.ComboBoxTextSelectionStrategy.Unknown;return a._textSelectionStrategy},_getTextSelectionInfo:function(b,e){var c="character",a={};a.strategy=this._getTextSelectionStrategy();if(a.strategy==Sys.Extended.UI.ComboBoxTextSelectionStrategy.Microsoft){var d=document.selection.createRange();a.selectionStart=0;a.selectionEnd=b.value.length;while(d.moveStart(c,-1)!=0)a.selectionStart++;while(d.moveEnd(c,1)!=0)a.selectionEnd--}else if(a.strategy==Sys.Extended.UI.ComboBoxTextSelectionStrategy.W3C){a.selectionStart=b.selectionStart;a.selectionEnd=b.selectionEnd}a.typedCharacter=String.fromCharCode(e.charCode);a.textBoxValue=b.value;a.selectionPrefix=a.textBoxValue.length>=a.selectionStart?a.textBoxValue.substring(0,a.selectionStart):"";a.selectionText=a.textBoxValue.length>=a.selectionEnd?a.textBoxValue.substring(a.selectionStart,a.selectionEnd):"";a.selectionSuffix=a.textBoxValue.length>=a.selectionEnd?a.textBoxValue.substring(a.selectionEnd,a.textBoxValue.length):"";a.selectionTextFirst=a.selectionText.substring(0,1);return a},_getOptionListItemHeight:function(){var a=this,b=a.get_optionListControl();if(a._optionListItemHeight==null&&b.scrollHeight>0)a._optionListItemHeight=Math.round(b.scrollHeight/a._optionListItems.length);else if(Sys.Browser.agent===Sys.Browser.InternetExplorer&&Sys.Browser.version<7&&Math.round(b.scrollHeight/a._optionListItems.length)<a._optionListItemHeight)a._optionListItemHeight=Math.round(b.scrollHeight/a._optionListItems.length);return a._optionListItemHeight},_getOptionListBounds:function(){return{width:this._getOptionListWidth(),height:this._getOptionListHeight()}},_getOptionListHeight:function(){var a=this;if(a._optionListHeight==null||a._getOptionListItemHeight()*a._optionListItems.length<a._optionListHeight)a._optionListHeight=a._getOptionListItemHeight()*a._optionListItems.length;if(a._optionListHeight<0)a._optionListHeight=0;return a._optionListHeight},_getOptionListWidth:function(){var a=this,d=a.get_optionListControl();if(a._optionListWidth==null){var i=1,h=1,g=0,f=0,c=d.style;c.overflow="auto";var b=a.get_comboTableControl().offsetWidth;b-=i+h;if(b<0)b=0;var e=c.width;c.width=b+"px";if(a.get_comboTableControl().offsetWidth<d.scrollWidth)b=d.scrollWidth+f+g;c.overflow="hidden";c.width=e;a._optionListWidth=b}if(a._optionListWidth<0)a._optionListWidth=0;return a._optionListWidth},_getWindowBounds:function(){var a=this;return{x:a._getScrollLeft(),y:a._getScrollTop(),width:a._getWindowWidth(),height:a._getWindowHeight()}},_getWindowHeight:function(){var a=0;if(typeof window.innerHeight=="number")a=window.innerHeight;else if(document.documentElement&&document.documentElement.clientHeight)a=document.documentElement.clientHeight;else if(document.body&&document.body.clientHeight)a=document.body.clientHeight;return a},_getWindowWidth:function(){var a=0;if(typeof window.innerWidth=="number")a=window.innerWidth;else if(document.documentElement&&document.documentElement.clientWidth)a=document.documentElement.clientWidth;else if(document.body&&document.body.clientWidth)a=document.body.clientWidth;return a},_getScrollTop:function(){var a=0;if(typeof window.pageYOffset=="number")a=window.pageYOffset;if(document.body&&document.body.scrollTop)a=document.body.scrollTop;else if(document.documentElement&&document.documentElement.scrollTop)a=document.documentElement.scrollTop;return a},_getScrollLeft:function(){var a=0;if(typeof window.pageXOffset=="number")a=window.pageXOffset;else if(document.body&&document.body.scrollLeft)a=document.body.scrollLeft;else if(document.documentElement&&document.documentElement.scrollLeft)a=document.documentElement.scrollLeft;return a},set_comboTableControl:function(a){if(this._comboTableControl!==a){this._comboTableControl=a;this.raisePropertyChanged("comboTableControl")}},get_comboTableControl:function(){return this._comboTableControl},set_textBoxControl:function(a){if(this._textBoxControl!==a){this._textBoxControl=a;this.raisePropertyChanged("textBoxControl")}},get_textBoxControl:function(){return this._textBoxControl},set_buttonControl:function(a){if(this._buttonControl!==a){this._buttonControl=a;this.raisePropertyChanged("buttonControl")}},get_buttonControl:function(){return this._buttonControl},set_optionListControl:function(a){if(this._optionListControl!==a){this._optionListControl=a;this.raisePropertyChanged("optionListControl")}},get_optionListControl:function(){return this._optionListControl},set_hiddenFieldControl:function(a){if(this._hiddenFieldControl!==a){this._hiddenFieldControl=a;this.raisePropertyChanged("hiddenFieldControl")}},get_hiddenFieldControl:function(){return this._hiddenFieldControl},set_selectedIndex:function(b){var a=this;if(a.get_hiddenFieldControl().value!==b.toString()){a.get_hiddenFieldControl().value=b.toString();a._ensureSelectedIndex();a.raisePropertyChanged("selectedIndex")}},get_selectedIndex:function(){this._ensureSelectedIndex();var a=this.get_hiddenFieldControl().value;return parseInt(a)},set_autoPostBack:function(a){if(this._autoPostBack!==a){this._autoPostBack=a;this.raisePropertyChanged("autoPostBack")}},get_autoPostBack:function(){return this._autoPostBack},set_autoCompleteMode:function(a){if(this._autoCompleteMode!==a){this._autoCompleteMode=a;this.raisePropertyChanged("autoCompleteMode")}},get_autoCompleteMode:function(){return this._autoCompleteMode},set_dropDownStyle:function(a){if(this._dropDownStyle!==a){this._dropDownStyle=a;this.raisePropertyChanged("dropDownStyle")}},get_dropDownStyle:function(){return this._dropDownStyle},set_caseSensitive:function(a){if(this._caseSensitive!==a){this._caseSensitive=a;this.raisePropertyChanged("caseSensitive")}},get_caseSensitive:function(){return this._caseSensitive},set_listItemHoverCssClass:function(a){if(this._listItemHoverCssClass!==a){this._listItemHoverCssClass=a;this.raisePropertyChanged("listItemHoverCssClass")}},get_listItemHoverCssClass:function(){return this._listItemHoverCssClass}};Sys.Extended.UI.ComboBox.registerClass("Sys.Extended.UI.ComboBox",Sys.UI.Control);�2// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedAccordion";function a(){var k="selectedIndexChanged",j="selectedIndexChanging",i="none",g="hidden",c="auto",f="px",h="block",b="",a=null,d=true,e=false;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.AutoSize=function(){throw Error.invalidOperation();};Sys.Extended.UI.AutoSize.prototype={None:0,Fill:1,Limit:2};Sys.Extended.UI.AutoSize.registerEnum("Sys.Extended.UI.AutoSize",e);Sys.Extended.UI.AccordionSelectedIndexChangeEventArgs=function(b,a){Sys.Extended.UI.AccordionSelectedIndexChangeEventArgs.initializeBase(this);this._oldIndex=b;this._selectedIndex=a};Sys.Extended.UI.AccordionSelectedIndexChangeEventArgs.prototype={get_oldIndex:function(){return this._oldIndex},set_oldIndex:function(a){this._oldIndex=a},get_selectedIndex:function(){return this._selectedIndex},set_selectedIndex:function(a){this._selectedIndex=a}};Sys.Extended.UI.AccordionSelectedIndexChangeEventArgs.registerClass("Sys.Extended.UI.AccordionSelectedIndexChangeEventArgs",Sys.CancelEventArgs);Sys.Extended.UI.AccordionBehavior=function(f){var c=this;Sys.Extended.UI.AccordionBehavior.initializeBase(c,[f]);c._selectedIndex=0;c._panes=[];c._fadeTransitions=e;c._duration=.25;c._framesPerSecond=30;c._autoSize=Sys.Extended.UI.AutoSize.None;c._requireOpenedPane=d;c._suppressHeaderPostbacks=e;c._headersSize=0;c._headerClickHandler=a;c._headerCssClass=b;c._headerSelectedCssClass=b;c._resizeHandler=a;c._isIE8InStandardMode=Sys.Browser.agent==Sys.Browser.InternetExplorer&&Sys.Browser.version>7&&Sys.Browser.documentMode!=0};Sys.Extended.UI.AccordionBehavior.prototype={initialize:function(){var c=this;Sys.Extended.UI.AccordionBehavior.callBaseMethod(c,"initialize");c._headerClickHandler=Function.createDelegate(c,c._onHeaderClick);var h=c.get_ClientState();h!==a&&h!==b&&c._changeSelectedIndex(parseInt(h),e,d);var g=c.get_element().childNodes,f={};for(f.value=0;f.value<g.length;f.value++){var j=c._getNextDiv(g,f);if(!j)break;var i=c._getNextDiv(g,f);if(i){c.addPane(j,i);f.value--}}c._requireOpenedPane&&!c.get_Pane()&&c._panes.length>0&&c._changeSelectedIndex(0,e,d);c._initializeLayout()},_getNextDiv:function(d,c){var b=a;while(c.value<d.length&&(b=d[c.value++]))if(b.tagName&&b.tagName.toLowerCase()==="div")break;return b},addPane:function(g,f){var d=this,e={};e.animation=a;e.header=g;g._index=d._panes.length;$addHandler(g,"click",d._headerClickHandler);var i=d.get_element(),c=document.createElement("div");i.insertBefore(c,f);c.appendChild(f);c._original=f;e.content=c;c.style.border=b;c.style.margin=b;c.style.padding=b;Array.add(d._panes,e);d._initializePane(g._index);f.style.display=h;return e},_getAnimation:function(g){var c=this,b=g.animation;if(!b){var h=a,i=a;if(!c._fadeTransitions)b=h=new Sys.Extended.UI.Animation.LengthAnimation(g.content,c._duration,c._framesPerSecond,"style","height",0,0,f);else{h=new Sys.Extended.UI.Animation.LengthAnimation(a,a,a,"style","height",0,0,f);i=new Sys.Extended.UI.Animation.FadeAnimation(a,a,a,Sys.Extended.UI.Animation.FadeEffect.FadeOut,0,1,e);b=new Sys.Extended.UI.Animation.ParallelAnimation(g.content,c._duration,c._framesPerSecond,[i,h])}g.animation=b;b._length=h;b._fade=i;b._pane=g;b._opening=d;b._behavior=c;b._ended=Function.createDelegate(g.animation,c._onAnimationFinished);b.add_ended(g.animation._ended);b.initialize()}return b},_onAnimationFinished:function(){this._behavior._endPaneChange(this._pane,this._opening)},_initializeLayout:function(){var a=this;for(var d=0;d<a._panes.length;d++){var i=a._panes[d].animation;i&&i.get_isPlaying()&&i.stop()}var h=a.get_element();a._initialHeight=h.offsetHeight;var b=h.style;if(a._autoSize===Sys.Extended.UI.AutoSize.None){a._disposeResizeHandler();var e=Sys.Browser.agent==Sys.Browser.InternetExplorer&&Sys.Browser.version>=7;if(!e||e&&b.height&&b.height.length>0)b.height=c;if(!e||e&&b.overflow&&b.overflow.length>0)b.overflow=c}else{a._addResizeHandler();b.height=h.offsetHeight+f;b.overflow=g}for(var d=0;d<a._panes.length;d++)a._initializePane(d);a._resizeSelectedPane()},_initializePane:function(k){var a=this,l=a.get_Pane(k);if(!l)return;var d=l.content,e=d._original,f=k===a._selectedIndex;d.style.height=f||a._autoSize===Sys.Extended.UI.AutoSize.Fill?c:"0px";d.style.overflow=f?c:g;d.style.display=f?h:i;e.style.height=c;e.style.maxHeight=b;e.style.overflow=f?c:g;var j=f||!a._fadeTransitions?1:0;if(a._autoSize===Sys.Extended.UI.AutoSize.Fill){$common.getElementOpacity(e)!=j&&$common.setElementOpacity(e,j);$common.getElementOpacity(d)!=1&&$common.setElementOpacity(d,1)}else{$common.getElementOpacity(d)!=j&&$common.setElementOpacity(d,j);$common.getElementOpacity(e)!=1&&$common.setElementOpacity(e,1)}l.header.className=a._selectedIndex===k?a._headerSelectedCssClass||a._headerCssClass:a._headerCssClass},_addResizeHandler:function(){var a=this;if(!a._resizeHandler){a._resizeHandler=Function.createDelegate(a,a._resizeSelectedPane);$addHandler(window,"resize",a._resizeHandler)}},dispose:function(){var b=this;b._disposeResizeHandler();b._disposeAnimations();for(var d=b._panes.length-1;d>=0;d--){var c=b._panes[d];if(c){if(c.header){c.header._index=a;$removeHandler(c.header,"click",b._headerClickHandler);c.header=a}if(c.content){c.content._original=a;c.content=a}b._panes[d]=a;delete b._panes[d]}}b._panes=a;b._headerClickHandler=a;Sys.Extended.UI.AccordionBehavior.callBaseMethod(b,"dispose")},_disposeResizeHandler:function(){if(this._resizeHandler){$removeHandler(window,"resize",this._resizeHandler);this._resizeHandler=a}},_disposeAnimations:function(){for(var c=0;c<this._panes.length;c++){var b=this._panes[c].animation;if(b){b.get_isPlaying()&&b.stop();if(b._ended){b.remove_ended(b._ended);b._ended=a}b.dispose();b._length=a;b._fade=a;b._pane=a;b._opening=a;b._behavior=a;this._panes[c].animation=a}}},_resizeSelectedPane:function(){var g=this,i=g.get_Pane();if(!i)return;g._headersSize=g._getHeadersSize().height;var a=i.content._original;switch(g._autoSize){case Sys.Extended.UI.AutoSize.None:a.style.height=c;a.style.maxHeight=b;break;case Sys.Extended.UI.AutoSize.Limit:var h=g._getRemainingHeight(e);a.style.height=c;a.style.maxHeight=h+f;break;case Sys.Extended.UI.AutoSize.Fill:var h=g._getRemainingHeight(d);a.style.height=h+f;a.style.maxHeight=b}},_onHeaderClick:function(e){var b=this,a=e.target,f=b.get_element();while(a&&a.parentNode!==f)a=a.parentNode;e.stopPropagation();b._suppressHeaderPostbacks&&e.preventDefault();var c=a._index;if(c===b._selectedIndex&&!b._requireOpenedPane)c=-1;b._changeSelectedIndex(c,d)},_changeSelectedIndex:function(d,h,i){var a=this,c=a._selectedIndex,e=a.get_Pane(d),f=a.get_Pane(c);if(!i&&e==f)return;var g=new Sys.Extended.UI.AccordionSelectedIndexChangeEventArgs(c,d);a.raiseSelectedIndexChanging(g);if(g.get_cancel())return;if(f)f.header.className=a._headerCssClass;if(e)e.header.className=a._headerSelectedCssClass==b?a._headerCssClass:a._headerSelectedCssClass;a._selectedIndex=d;a.set_ClientState(a._selectedIndex);h&&a._changePanes(c);a.raiseSelectedIndexChanged(new Sys.Extended.UI.AccordionSelectedIndexChangeEventArgs(c,d));a.raisePropertyChanged("SelectedIndex")},_changePanes:function(j){var c=this;if(!c.get_isInitialized())return;for(var i=a,h=a,g=0;g<c._panes.length;g++){var f=c._panes[g],b=c._getAnimation(f);b.get_isPlaying()&&b.stop();if(g==c._selectedIndex){b._opening=d;i=b}else if(g==j){b._opening=e;h=b}else continue;c._startPaneChange(f,b._opening);c._fadeTransitions&&b._fade.set_effect(b._opening?Sys.Extended.UI.Animation.FadeEffect.FadeIn:Sys.Extended.UI.Animation.FadeEffect.FadeOut);if(c._autoSize===Sys.Extended.UI.AutoSize.Fill){b.set_target(f.content._original);b._length.set_startValue($common.getContentSize(f.content._original).height);b._length.set_endValue(b._opening?c._getRemainingHeight(d):0)}else{b.set_target(f.content);b._length.set_startValue(f.content.offsetHeight);b._length.set_endValue(b._opening?c._getRemainingHeight(e):0)}}h&&h.play();i&&i.play()},_startPaneChange:function(i,e){var d=this,c=i.content,a=c._original;if(e){c.style.display=h;if(d._autoSize===Sys.Extended.UI.AutoSize.Fill&&d._isIE8InStandardMode)a.style.display=h}else{c.style.overflow=g;a.style.overflow=g;if(d._autoSize===Sys.Extended.UI.AutoSize.Limit){c.style.height=d._getTotalSize(a).height+f;a.style.maxHeight=b}}},_endPaneChange:function(j,h){var b=this,a=j.content,e=a._original;if(h){if(b._autoSize===Sys.Extended.UI.AutoSize.Limit){var g=b._getRemainingHeight(d);e.style.maxHeight=g+f}e.style.overflow=c;a.style.height=c;a.style.overflow=c}else if(!b._isIE8InStandardMode)a.style.display=i;else if(b._autoSize===Sys.Extended.UI.AutoSize.Fill)e.style.display=i;else a.style.height="0px"},_getHeadersSize:function(){for(var a={width:0,height:0},b=0;b<this._panes.length;b++){var c=this._getTotalSize(this._panes[b].header);a.width=Math.max(a.width,c.width);a.height+=c.height}return a},_getRemainingHeight:function(e){var b=this,a=0,c=b.get_Pane();if(b._autoSize===Sys.Extended.UI.AutoSize.None){if(c)a=b._getTotalSize(c.content._original).height}else{a=b._headersSize;if(e&&c)a+=b._getGutterSize(c.content._original).height;var f=b.get_element();a=Math.max(f.offsetHeight-a,0);if(c&&b._autoSize===Sys.Extended.UI.AutoSize.Limit){var d=b._getTotalSize(c.content._original).height;if(d>0)a=Math.min(a,d)}}return a},_getTotalSize:function(b){var a=$common.getSize(b),c=$common.getMarginBox(b);a.width+=c.horizontal;a.height+=c.vertical;return a},_getGutterSize:function(c){var a={width:0,height:0};try{var b=$common.getPaddingBox(c);a.width+=b.horizontal;a.height+=b.vertical}catch(d){}try{var b=$common.getBorderBox(c);a.width+=b.horizontal;a.height+=b.vertical}catch(d){}var b=$common.getMarginBox(c);a.width+=b.horizontal;a.height+=b.vertical;return a},add_selectedIndexChanging:function(a){this.get_events().addHandler(j,a)},remove_selectedIndexChanging:function(a){this.get_events().removeHandler(j,a)},raiseSelectedIndexChanging:function(b){var a=this.get_events().getHandler(j);a&&a(this,b)},add_selectedIndexChanged:function(a){this.get_events().addHandler(k,a)},remove_selectedIndexChanged:function(a){this.get_events().removeHandler(k,a)},raiseSelectedIndexChanged:function(b){var a=this.get_events().getHandler(k);a&&a(this,b)},get_Pane:function(b){var c=this;if(b===undefined||b===a)b=c._selectedIndex;return c._panes&&b>=0&&b<c._panes.length?c._panes[b]:a},get_Count:function(){return this._panes?this._panes.length:0},get_TransitionDuration:function(){return this._duration*1e3},set_TransitionDuration:function(d){var a=this;if(a._duration!=d/1e3){a._duration=d/1e3;for(var b=0;b<a._panes.length;b++){var c=a._panes[b].animation;c&&c.set_duration(a._duration)}a.raisePropertyChanged("TransitionDuration")}},get_FramesPerSecond:function(){return this._framesPerSecond},set_FramesPerSecond:function(d){var a=this;if(a._framesPerSecond!=d){a._framesPerSecond=d;for(var b=0;b<a._panes.length;b++){var c=a._panes[b].animation;c&&c.set_fps(a._framesPerSecond)}a.raisePropertyChanged("FramesPerSecond")}},get_FadeTransitions:function(){return this._fadeTransitions},set_FadeTransitions:function(c){var a=this;if(a._fadeTransitions!=c){a._fadeTransitions=c;a._disposeAnimations();if(!a._fadeTransitions)for(var b=0;b<a._panes.length;b++){$common.getElementOpacity(a._panes[b].content)!=1&&$common.setElementOpacity(a._panes[b].content,1);$common.getElementOpacity(a._panes[b].content._original)!=1&&$common.setElementOpacity(a._panes[b].content._original,1)}a.raisePropertyChanged("FadeTransitions")}},get_HeaderCssClass:function(){return this._headerCssClass},set_HeaderCssClass:function(a){this._headerCssClass=a;this.raisePropertyChanged("HeaderCssClass")},get_HeaderSelectedCssClass:function(){return this._headerSelectedCssClass},set_HeaderSelectedCssClass:function(a){this._headerSelectedCssClass=a;this.raisePropertyChanged("HeaderSelectedCssClass")},get_AutoSize:function(){return this._autoSize},set_AutoSize:function(b){var a=this;if(Sys.Browser.agent===Sys.Browser.InternetExplorer&&b===Sys.Extended.UI.AutoSize.Limit)b=Sys.Extended.UI.AutoSize.Fill;if(a._autoSize!=b){a._autoSize=b;a._initializeLayout();a.raisePropertyChanged("AutoSize")}},get_SelectedIndex:function(){return this._selectedIndex},set_SelectedIndex:function(a){this._changeSelectedIndex(a,d)},get_requireOpenedPane:function(){return this._requireOpenedPane},set_requireOpenedPane:function(a){if(this._requireOpenedPane!=a){this._requireOpenedPane=a;this.raisePropertyChanged("requireOpenedPane")}},get_suppressHeaderPostbacks:function(){return this._suppressHeaderPostbacks},set_suppressHeaderPostbacks:function(a){if(this._suppressHeaderPostbacks!=a){this._suppressHeaderPostbacks=a;this.raisePropertyChanged("suppressHeaderPostbacks")}}};Sys.Extended.UI.AccordionBehavior.registerClass("Sys.Extended.UI.AccordionBehavior",Sys.Extended.UI.BehaviorBase);Sys.registerComponent(Sys.Extended.UI.AccordionBehavior,{name:"accordion"})}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedAnimations","ExtendedBase"],a);else a()})();~ h(  J@.0J@.0J@.0J@.0J@.0J@.0J@.0J@.0DKD=+%I�K�p��r��t��v��x��z��}���Ʋ�����Os��	�?�s����������������������-���f��f������J@.0�v�������������������-���u�-���u��ܸ��J@.0�y����������������-���u���:��-����`1��R#ʝOV�}�������������-���u���:��-��������b�ŃU��[*��R!�樁����������-���u���:��-���/Yt��j-��T��ŗ��|��[*��U#R笅�������-���u���:��-���Y�������΄P��r?��S&��j-��e>��\+�诉����-���u���:��-���?\i�������U��j-��X��_1���d��d3���-���u���:��-�������,T]�n�r������ze�m]T��j-��i>��o��l;�-���	y���:��-�������}�Zki�q��,���+}��~��6Zq��T��zA��uC�Ů��-���:��-������������l�P��R��K��H��x{{��k6��sA��~LP�����-����������̭��ˬ�Șl���m��ſ�����Ց_�эX�̋Y�������������̭��������粅��u�ݡn�ڜj�֘fR�ģ�����������̭������̭��ո\�ǧ��ɩ��ˬ��ͮ��ϱ��ѳ��ҵ��Է��ֹ\��\���qiqi����5���?�'  �f(N  �vh
   �� h.#( @���������������������������GGGGGGGegeg������vV4vVv������ggF�ltw��������g|v|v������|�vrh��tp�����h��FG��g�l��~��rfw�bt�����Ȍ�&%h�vwp��������&6�v6rp�l~�|�wfv��bBgp������gg'��&&&P����w�w6�~|rgc`�l|�~w�g���v&'p�����vzww��&&������gr7v��vre�l|��w��4�|�rv�����wx�sF�vvh������xx�2gg�p�g�x��z�sgx�������xx�!g��������w�vp�l|������x� �����������s`������������!��������fgs��p��������x�hx�7��������x�����������px����������pxxxxw��xp�������?������������������?��?�������À������( �������������������������������geh��lv�g����vv�`����hfp���w�r`��g~�F0��v7wv`��w�|vp���x6w�����p����� ����g�������p���������������������9��( @
)+' 8,"<1@:<,@/)D37F1AyBiDqF{HuI}DZ.H\-G[1J\2QY5W\9YX9cI5gM9jP=W?s^=De!Db(Nd.On,Sa,Lz![z#[}-Kh3Gk?Qi8Zm=Xr3Qx6Uq:Uz:^<on2ed<`i<yd6tj1}d9)\C*fI.rQ7tRnTAg[@pWDsYEKh@MzCRwGlcAgeOnnM|aI~hW[zelb�\?�X;�X6�X9�X3�[5�\8�_8�i;�o=�}<�x=�n>�b:�f=�h?�y?�n6�s;�[D�`H�dL�dH�gS�hV�lZ�mX�nU�p]�u^�bA�lE�oJ�tC�tb�xg�~d�}l�lB�oD�rF�rI�uI�yK�{M�{V�x@C�D�P�L�L�P�^�$Q�*U�5[�0[�9T�9^�=_�=f�6o�9e�=x�;[�AN�DY�MY�Vq�Hf�Vj�US�[O�WO�mx�kx�zZ�wo�|j�}\�{��L��Z��E��f��t��t��y��x��k��|��y��z����{��}��}��J։O�Q�T�V�X��Z�\��]̈dߛcۛx�a��a��`��d��j��j�rȥt��o�t��q��y��5w�@��g��x��O��I��R��]��\ۙeÆk��u�����������������������������������������������������������ԭ�ְ�í�Ʊ����̵�׳�ض�ڻ��͙�à�����Ļ�����������������������������������������������������������]77977^�����������ޠZXEKJIGF_^���������YcT.SRLJIIGA�a��������[dmmM2kdRRJIGX�g����������`npppNQmkSRJI9g����������r�����fmlTRJ]h��sssV��՞�����Ut polT2@8j��������㯪����
u
�pol0��j��������ܲ�����$w{+O��1 ��j��ssVV��ͳ����(�}����U
#'B���������͵���<������-ut!+9���������з�=����������""(B����ssV��и������������O+vx(�����������D�6�ȋ������+wut/�����������D��C�������|zwt8����ssV��ᥐ�ȑ�	�������y(>����������Ҕ����4=�*,��~>�������������������5;&�pn>����ssV�����ӥ������4%�eZ��������������i����4Yb��������������������3���ssV��������������3�����������������������4�����������������������5�����������������?����5���������������������7��ۑÿ�������������������A��������������������a������������������������������������������������?������������������?��?�������À������( )N7DyChDjSsS]1l\4]7\r.^t/Ux*B`:Ub0Vw1fe/<bL6wU5{X6}YlaFinE~xT�Z:�_>�Y7�\6�k:�e=�h?�\@�mS�wR�tW�l@�qB�|I�~D�w[�uc�tG�tH�|LI�O�P�\�7`�3n�>{�>\�SR�PQ�eb�c�ew�x��W��G��X��r؂ŇW܁R�Q�T��[��^ԓpԛ|��a��a��f��n�x��ty��y��K����������������������������������Ϝ�ɧ�쮏�﷛��ճ�Դ�ξ�����Ϯ�ү�����ƶ�ȹ�˾������������������������������������������������������������������������������������sqokkbcz}zwq&)#"cz][tZ>@<(�zYAF$+	?
�^]vCG:.0E%�`]vD832IHA
-����b546JF1,�`^xi7KV =9/�`^ynURQh* ������nSdg;�`^ypn��|fg��������S'Kg��������XOeWM�������SlN����������������9��( @ ��hV�cI5�cI5�cI5�cI5�cI5�cI5�cI5�cI5�cI5�cI5�cI5�cI5�cI5�cI5�gM9�jP=�mS@�oVB�pWD�oVB�mS@�jP=�pWDG�kY�������ܾ��ۼ��ۻ��ٹ��ط��ص��׳��ֱ��ְ��ԭ����y��dL��YA��\?�QY5��\8��[5��Y6��X7��X;�W?�~W?݇W=s�n[������������������������������������`H��bA��i?�da9�M\3��e=��c;��`9��]6��Z4��X3��X9�|W@��W>��p^��������������������������������dH��lE��rF��rF��i;�G[1�g9��kA��h?��d<��_8��[5��X3��X6��W>��W>��sa���������������������������nU��sI��yK��zL��zL��o=�DZ.�DZ/��n>��pE��lB��g>��a:��\6��X3�s^=�sYC��W=s�vd������������������������{��{V��O��Q��R��R��R�DY/�Bi�H\-��tC��tG��nC��h?��b:��\6�DY/�WZ9�yYB��xg��������x@��u=��q9��n6����Į��������k��R��T��V��W��X��y?�D[-�C��Df �Qa-��zL��uI��oD��h?�{b9�H\2�nnM�gX@�pWDG�{i���������������������Ϸ��̈d��W���Z���\���^���^�F\.�F�E��Fx�EZ/��Q��{M��uI��nC�yd6�G[1���Z�YX9�pWD��}l��������������������������a���]���`���d���f���g�Kh3�K��Q�*�Tz9��|<��U��Q�tj1�Ub,�F[-�On,�q�H�W^:�pWD��o��������x@��u=��q9��n6����Į��������a���c���h���m���o�Xp3�f�6�[�0�e�=��Y���^���Y��x=�D[-�Dd#�Dq�Ay�[}-�Zm=�pWD���q������������������������������c���j�ߛc�[�A�MzC�T�9�_�=�^�?���L���j���c���J�on2�Db(�D��C��Hy�Lz!�Wz:�pWD���s��������������������������������j���p�R}I�N�D�[�L�j�U�[�L��s���x���p���h���`���Z�Nd.�Hu�J�]|$�Zx#�Xw7�pWD���v��������x@��u=��q9��n6�����Į�������r�k�U�V�O�O�W�R�Z�U�\�Y�R�Ȩv������v���m���d���\��<�Qx6�P��L��J�Xr4�pWD���y��������������������������������ø�ۛx�j�^�Y�[�
�?uR�Z�~�d���b�U�Ȣs���y���o���f���^�։O�U{<�M��E��C��`i<�pWD���{�����������������������������������|�lb�Z�q�O�m��,@/�[ze�o�|�c�S���{���p���g���^�o�9�U�5�^�$�M��C��g^@�pWDG��~�������x@��u=��q9��n6�����Į��í����}�x�k�\�{�gNj�t�v����@:<�/*,�7F1��u���o���f���^��W�y�;�_�<�P��[r1�j_<������������������������������������������������j�}�fƒ������������h���%dF�$,"�SqE��_�Uq:�^<��Q�w�;�[�9�ib@��^<�����������������������������������������������������x����͙������à����\ۙ�.sR� 7*�Kh@�Qi8���E��O��rI�gg?�sg;��������������x@��u=��q9��n6�����Į��í��������������������x���}�g��������\ۙ�-iL�&E2�Gk?��R��oJ��^E��_C����������������������������������������������������������z��~d�����g��������\ۙ�*cH�.F3�bG��`FݖbDs���������������������������������������������������������������Ū������g��������\ۙ�(ZA�8+�'fH$�������������x@��u=��q9��n6�����Į��í����������������������������������g��������\ۙ�*_F�4(�,sR%-uR���������������������������������������������������������������������������g��������\ۙ�-iL�0%�/zW(fH������������������������������������������������������������������������ɴ����������g��������\ۙ�.rP�/$�&`>����������������������������������������������������������������������v�cI5�cI5�cI5�geO�g��������\ۙ�/rQ�5w��-w�3����������������������������������������������������������������������y��Ž�DZ������lR>�k|f�g����������}��O���5w������������������������������������������������������������������������|�����ż�y`L�lR>ft��Qg�������w��k��@�������������������������������������������������������������������������~����p]�y`Lfg��OP�����t��I���¯���������������������������������������������������������n��p]fd��\R���S���d��$ű��ï��®���������������������������������������������������������������nf�������������������������?���������À�����(  @���?������������������������������������µ�����������˾��ȹ�ճ���mS��_>�]7��]7��Y7��W:���n�ĸ��������������w[��tH��qB�S]1��l@��e=��\6��Y9���o�ƻ�����쮏����ɧ��܁R��T�؂N�Ch�fe/��tG��h?�l\4�i^B����ɽ����������Ϝ����[���a��|I�I��\r.��Q��k:�Ub0�inE����Q˿����������ԓp���f���X�\�7�n�>���a��~D�Dj�Dy�Vw1����x�¹��������ԛ|���W�R�P�\�S��x���n���^�^t/�P��Ux*����h�ļ����������������Դ��b�c�)N7�Q�e��e���t���b�{�>�O��Ss����3�ǿ�����﷛�����ƶ�w�x�y�������<bL��wR�̌W���G�`�3�kd:���������﷛���������������������5{X�B`:��|L��eD����1����������������������������������������7wU�SX@������������﷛���������������������ү���2uT�'dHN����������������������������������������uc�y�����3{W�a��R���������������������������������������������x~}ƞә���K���������������������������������������r���f���]������?�������������������������ļY?�g���JFIF,,��
aExifMM*bj(1r2��i��-�'-�'Adobe Photoshop CS4 Windows2011:08:26 14:04:01��P�P&(.	+HH���JFIFHH��Adobe_CM��Adobed����			



��PP"����?	
	
3!1AQa"q�2���B#$R�b34r��C%�S���cs5���&D�TdE£t6�U�e���u��F'������������Vfv�������7GWgw�������5!1AQaq"2����B#�R��3$b�r��CScs4�%���&5��D�T�dEU6te����u��F������������Vfv�������'7GWgw������?麏P���eՋKٻn�9�.�0�%S���:#��m[���=�����eY��Q�09��s��u�{�g�p|q�i�c?�[�Qr2TC�L1c�9b�Ǫ_��仫�vW�mp�[�`��ݵ�p��_s��k#�o׌C��њv��b��������p�Y:�E�A�bd�b�鸆��{>��	�P&���-'$��ˋ�ۉ�������ʾ����9��W���Cu��{��$�W��Q��-a�k�?!N�g�����/ז������8sr���4��o�U�;�&���OZ�#�G����ZY�Mt=3�Af��7��~J��C,zߓk5�d4c����g���9��W���Һ���=���5���Gx��9s�s\��ZD�5��{�M��!2���y���r� h_����}��R�D��`��w�'#gu�.��F
mn�ґ�w�7������r�>�X�~��7C}�a���������
I��ˊ�a�r�c�xa�~��f�\4���o�nX�g�[�[��b��[=��Աsq�!��������;��p3����}����U�\d���OS��S1�.i!��#�gح?�Zm{�cR��~TF,�Q	�Aˌo8����tzp/Ϯ��9���i�~����b��=�,{K\�iA!2a�,$#(ʄ�7�~Y>���F;q��2`8�u��{�M��!r?U���?Ӵ�F41�o�;]�{�M��!R��w����>O��1#�������.����T�}|q��غ�~ W���.����T僝�0�����z��oh����j�$#��G�8e����@���m'��W~�79�3/�4����4;��,]^>)ݏK*$m%�����J�B���:l��?���V��-���s1nuo�5� ���.���(��!|G~'���_&3�&<#������Q��?*fUm�+c�|	��͍ڴvqz����
��ym;���l�ɮ&�m��SsK,a�4�^��'�zn��\�.qc���P�������m����Hq���Z�G��	FYb@1�~?�{�͐J8�	5��+���r�Y�7k��b��N����c�/J���&���o��ȧй����#薟�ڶ��I����,.>)����9|���g�w�������.����T喵>��K��,�9e����r��C���sӺ�}O���FY���.?�Ҿ�u��q�k�ȡ�_��Go����MW�nh}vsO,V;�t���� �s�H���{��)�BX���Ѽs�����ò�1�9x��c�}�䗞��]P������g���Z�R���(�}-����V�}�'x��r>�����s��=֎�^#�*p9W���0��������~�5���ʝ�;G����55�=G��ŸR�;ݛd�,���w��#��65�3��V!�
o��<G#�e���C��e˞<�1C��g�Z�W���O�R���&�����9��'����:�K�̽�T��m;�d��w���7�~����$�q&˵o,"#(x<����������ٿ�W���Cڊ�f�>Ǔ��FK�_F3�yt�k�h������Q������.�$����g�e|\��{�<O?�7�~�����o���� ��}����n��y������}��+�+�_�s�k�C��m$���kV�H�q���ygG�����Photoshop 3.08BIMi8BIM%�
�`P���$�8BIM�,,8BIM&?�8BIM
x8BIM8BIM�	8BIM'
8BIM�H/fflff/ff���2Z5-8BIM�p��������������������������������������������������������������������������������������������8BIM8BIM&8BIM08BIM-78BIM@@�8BIM8BIMMPPgravatar-defPPnullboundsObjcRct1Top longLeftlongBtomlongPRghtlongPslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenumESliceOrigin
autoGeneratedTypeenum
ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongPRghtlongPurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT	horzAlignenumESliceHorzAligndefault	vertAlignenumESliceVertAligndefaultbgColorTypeenumESliceBGColorTypeNone	topOutsetlong
leftOutsetlongbottomOutsetlongrightOutsetlong8BIM(?�8BIM78BIM	GPP�K	+���JFIFHH��Adobe_CM��Adobed����			



��PP"����?	
	
3!1AQa"q�2���B#$R�b34r��C%�S���cs5���&D�TdE£t6�U�e���u��F'������������Vfv�������7GWgw�������5!1AQaq"2����B#�R��3$b�r��CScs4�%���&5��D�T�dEU6te����u��F������������Vfv�������'7GWgw������?麏P���eՋKٻn�9�.�0�%S���:#��m[���=�����eY��Q�09��s��u�{�g�p|q�i�c?�[�Qr2TC�L1c�9b�Ǫ_��仫�vW�mp�[�`��ݵ�p��_s��k#�o׌C��њv��b��������p�Y:�E�A�bd�b�鸆��{>��	�P&���-'$��ˋ�ۉ�������ʾ����9��W���Cu��{��$�W��Q��-a�k�?!N�g�����/ז������8sr���4��o�U�;�&���OZ�#�G����ZY�Mt=3�Af��7��~J��C,zߓk5�d4c����g���9��W���Һ���=���5���Gx��9s�s\��ZD�5��{�M��!2���y���r� h_����}��R�D��`��w�'#gu�.��F
mn�ґ�w�7������r�>�X�~��7C}�a���������
I��ˊ�a�r�c�xa�~��f�\4���o�nX�g�[�[��b��[=��Աsq�!��������;��p3����}����U�\d���OS��S1�.i!��#�gح?�Zm{�cR��~TF,�Q	�Aˌo8����tzp/Ϯ��9���i�~����b��=�,{K\�iA!2a�,$#(ʄ�7�~Y>���F;q��2`8�u��{�M��!r?U���?Ӵ�F41�o�;]�{�M��!R��w����>O��1#�������.����T�}|q��غ�~ W���.����T僝�0�����z��oh����j�$#��G�8e����@���m'��W~�79�3/�4����4;��,]^>)ݏK*$m%�����J�B���:l��?���V��-���s1nuo�5� ���.���(��!|G~'���_&3�&<#������Q��?*fUm�+c�|	��͍ڴvqz����
��ym;���l�ɮ&�m��SsK,a�4�^��'�zn��\�.qc���P�������m����Hq���Z�G��	FYb@1�~?�{�͐J8�	5��+���r�Y�7k��b��N����c�/J���&���o��ȧй����#薟�ڶ��I����,.>)����9|���g�w�������.����T喵>��K��,�9e����r��C���sӺ�}O���FY���.?�Ҿ�u��q�k�ȡ�_��Go����MW�nh}vsO,V;�t���� �s�H���{��)�BX���Ѽs�����ò�1�9x��c�}�䗞��]P������g���Z�R���(�}-����V�}�'x��r>�����s��=֎�^#�*p9W���0��������~�5���ʝ�;G����55�=G��ŸR�;ݛd�,���w��#��65�3��V!�
o��<G#�e���C��e˞<�1C��g�Z�W���O�R���&�����9��'����:�K�̽�T��m;�d��w���7�~����$�q&˵o,"#(x<����������ٿ�W���Cڊ�f�>Ǔ��FK�_F3�yt�k�h������Q������.�$����g�e|\��{�<O?�7�~�����o���� ��}����n��y������}��+�+�_�s�k�C��m$���kV�H�q���ygG���8BIM!UAdobe PhotoshopAdobe Photoshop CS48BIM��!�http://ns.adobe.com/xap/1.0/<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.2-c063 53.352624, 2008/07/30-18:12:18        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:exif="http://ns.adobe.com/exif/1.0/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmp:CreatorTool="Adobe Photoshop CS4 Windows" xmp:CreateDate="2011-08-23T21:52:04+07:00" xmp:MetadataDate="2011-08-26T14:04:01+07:00" xmp:ModifyDate="2011-08-26T14:04:01+07:00" dc:format="image/jpeg" xmpMM:InstanceID="xmp.iid:C176304EB1CFE0118EADDB079BF6CD0A" xmpMM:DocumentID="xmp.did:ACDA3B7797CDE0119B3BB1CB33EA20D3" xmpMM:OriginalDocumentID="xmp.did:ACDA3B7797CDE0119B3BB1CB33EA20D3" tiff:Orientation="1" tiff:XResolution="3000000/10000" tiff:YResolution="3000000/10000" tiff:ResolutionUnit="2" tiff:NativeDigest="256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;FE235FC6662B0F66281378ABB4D66653" exif:PixelXDimension="80" exif:PixelYDimension="80" exif:ColorSpace="1" exif:NativeDigest="36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;EE10C350724BE0305260295EBCF555B9" photoshop:ColorMode="3" photoshop:ICCProfile="sRGB IEC61966-2.1"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:ACDA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T21:52:04+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:ADDA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T21:53:26+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:AEDA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T21:58:18+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:AFDA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:00:42+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:B0DA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:00:54+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:B1DA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:26:40+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:B2DA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:33:16+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:B3DA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:34:30+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:B5DA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:35:36+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:1D2520989DCDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:35:56+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:1E2520989DCDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:38:29+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:1F2520989DCDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:39:01+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:202520989DCDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:39:30+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A1A00195AECFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T13:42:35+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A2A00195AECFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T13:42:35+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A3A00195AECFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T13:49:33+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A4A00195AECFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T13:50:39+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A5A00195AECFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T13:57:23+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A6A00195AECFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T13:59:37+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:C076304EB1CFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T14:04:01+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="converted" stEvt:parameters="from application/vnd.adobe.photoshop to image/jpeg"/> <rdf:li stEvt:action="derived" stEvt:parameters="converted from application/vnd.adobe.photoshop to image/jpeg"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:C176304EB1CFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T14:04:01+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:C076304EB1CFE0118EADDB079BF6CD0A" stRef:documentID="xmp.did:ACDA3B7797CDE0119B3BB1CB33EA20D3" stRef:originalDocumentID="xmp.did:ACDA3B7797CDE0119B3BB1CB33EA20D3"/> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 <?xpacket end="w"?>��XICC_PROFILEHLinomntrRGB XYZ �	1acspMSFTIEC sRGB���-HP  cprtP3desc�lwtpt�bkptrXYZgXYZ,bXYZ@dmndTpdmdd��vuedL�view�$lumi�meas$tech0rTRC<gTRC<bTRC<textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ �Q�XYZ XYZ o�8��XYZ b����XYZ $����descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view��_.���\�XYZ L	VPW�meas�sig CRT curv
#(-27;@EJOTY^chmrw|�������������������������
%+28>ELRY`gnu|����������������&/8AKT]gqz������������!-8COZfr~���������� -;HUcq~���������
+:IXgw��������'7HYj{�������+=Oat�������2FZn�������		%	:	O	d	y	�	�	�	�	�	�

'
=
T
j
�
�
�
�
�
�"9Qi������*C\u�����


&
@
Z
t
�
�
�
�
�.Id����	%A^z����	&Ca~����1Om����&Ed����#Cc����'Ij����4Vx���&Il����Ae����@e���� Ek���*Qw���;c���*R{���Gp���@j���>i���  A l � � �!!H!u!�!�!�"'"U"�"�"�#
#8#f#�#�#�$$M$|$�$�%	%8%h%�%�%�&'&W&�&�&�''I'z'�'�(
(?(q(�(�))8)k)�)�**5*h*�*�++6+i+�+�,,9,n,�,�--A-v-�-�..L.�.�.�/$/Z/�/�/�050l0�0�11J1�1�1�2*2c2�2�3
3F33�3�4+4e4�4�55M5�5�5�676r6�6�7$7`7�7�88P8�8�99B99�9�:6:t:�:�;-;k;�;�<'<e<�<�="=a=�=�> >`>�>�?!?a?�?�@#@d@�@�A)AjA�A�B0BrB�B�C:C}C�DDGD�D�EEUE�E�F"FgF�F�G5G{G�HHKH�H�IIcI�I�J7J}J�KKSK�K�L*LrL�MMJM�M�N%NnN�OOIO�O�P'PqP�QQPQ�Q�R1R|R�SS_S�S�TBT�T�U(UuU�VV\V�V�WDW�W�X/X}X�YYiY�ZZVZ�Z�[E[�[�\5\�\�]']x]�^^l^�__a_�``W`�`�aOa�a�bIb�b�cCc�c�d@d�d�e=e�e�f=f�f�g=g�g�h?h�h�iCi�i�jHj�j�kOk�k�lWl�mm`m�nnkn�ooxo�p+p�p�q:q�q�rKr�ss]s�ttpt�u(u�u�v>v�v�wVw�xxnx�y*y�y�zFz�{{c{�|!|�|�}A}�~~b~�#��G���
�k�͂0����W�������G����r�ׇ;����i�Ή3�����d�ʋ0�����c�ʍ1�����f�Ώ6����n�֑?����z��M��� ����_�ɖ4���
�u��L���$�����h�՛B��������d�Ҟ@��������i�ءG���&����v��V�ǥ8��������n��R�ĩ7�������u��\�ЭD���-�������u��`�ֲK�³8���%�������y��h��Y�ѹJ�º;���.���!������
�����z���p��g���_���X���Q���K���F���Aǿ�=ȼ�:ɹ�8ʷ�6˶�5̵�5͵�6ζ�7ϸ�9к�<Ѿ�?��D���I���N���U���\���d���l���v�ۀ�܊�ݖ�ޢ�)߯�6��D���S���c���s���
����2��F���[���p�����(��@���X���r�����4��P��m��������8��W��w����)���K��m����Adobed@�����PP��
���	
	
	u!"1A2#	QBa$3Rq�b�%C���&4r
��5'�S6��DTsEF7Gc(UVW�����d�t��e�����)8f�u*9:HIJXYZghijvwxyz����������������������������������������������������m!1"AQ2aqB�#�R�b3	�$��Cr��4%�ScD�&5T6Ed'
s��Ft����UeuV7��������)����������(GWf8v�������gw�������HXhx�������9IYiy�������*:JZjz��������?�o�? ;w�;/l��Vl�V���Qs�b��{�r�*���f�J
����jjzW����@v-��o���c�[�m�i3��hwbj��#����^}�����j��y��6�{[��\[[�Å���B�3<�Gx�^%�v|�7��=��m��QRص�]{��`䖏�*�<f�-�
SS�ǫG�omB�\��Z>�j�-\5�*֜i��i�ԝ�{�_3��˼�y��_���O�Ut��N�V���ӾO�˜.�^g�S�#����td����6�tU�P�>r�=1i+^�%�C.���B�I�\��]�V�ufC��/J��#��g�n���{�4��; �=�ny��K(�m˖P��i���`�_�
܌����+����_��{,����m��������{tEF��S�k[�]�Âw/��=c��m�٧�^��F��y����O��[���>��	ܿ����y�W�f���{�����g^��?ۯ�=o_�����8'r��3�?���_��{���w��ko�����{��n���ko�c�����<�X��u�i��׽�Q���_��u�������9��폯Âw/��=c��m�٧�^��F��y��׿�O��[���>�ş�;�f��N�������I��34�/RrTtz'|�{-A�ceEm@z��r�1�o7W]E�G�h
jj͌�	{���+�i���-��߄���e��DpDCUGE+�>��вߞ������[[%>#q����T�ii2�q�S��������J�*H8��2���u�.VT�H#ȇ~���s�,9��~r�7;u�o��f�Dn�kn���hEYv՟=�3�w�۲��nV�|lIQG.���b�^�2�F�d�~b����TV���ń���t	c�^�wsV����h˞*H#�)��n���W=s/웡I�7��%��C�%�fE*�Ҩ��4��?�ٿ��R��_�j��lwOu�a�]����$���e����H��-�$jij��
=\�P�$q�����]�}��%ۍb��#�f�P��P�N�	���{��^�{��Xs�i�� Q%�a���m/
H�I�e*��xՆ'ӫ/��������=9����vm#l��7�~7l�̭5V���;r�
m���i ����+�[Ȝ�ee�[��Tgt���t�V�*��(
X��g�]���~f�?y���#�;⷏�n�;{�CO1h,��f���H�����7v뫙�*�>ᩨ��$����HUB�yd�gr@?A�B[keV�����;�|ާ���x�yO��I��-Sҷo�gsm*��v�m�nڬ�cH�;�t�'D���Yq�Zw��-����;Uʔ��-�S�ѣ��6�p��d�n6nx�-'Pho." �"�N�i_4�Ҧ��i���Bљp�����U��>m��2�|y(�M͏�����*_�Sn�$?�&)O��Oڧ�Ӕ>�_xQ�-\���H�7�%�jz�]���x��q_��Nve^;j��
�[s�H��nt�l�Z�T?�Z�%$p嶗�F}�U4q(--bqn��f鷫���}]�Ίi���_�!�������\�=���>�yx���[c�r%����,�(�<�:�
�,�&GYK����A[C_CQ]mTK55]%T$4���H���A��-txݣ�J��E#� �#����������t��T��XUYYI� �A�ӫ�^��1��+���g��!�B��h��ìX��ʟ�?�?�bN��ѹ���ȿ�{f�}����/+�71�p�y7N��OO3#¹��#S�#��ҕh���lR��e��Kui�u�?�7�����{�a�G�<ϻ9I7���X�!'�IM��q|(�)�ν	���ץ~��R�w���a:�CK����
C��sTt���ƽL���|�^���+=C����I���r�q���n�g/��(�B���o�z���nc�~E�x7��/{�i�*�����8��.4i�
h�]U;���`�e�v�������������hO����z)����RV�iX�4���&H*Ij�*��:�	���Y'��+�$��Z���Mu�~��{ߺ�^��њ���z/���glo�٭ͷv��ٍ����~�uV�{z<�G'�ɥݯ��M<��<R���IJ��=��c�]^lqF���E\��HU���P���b�n9�ܭ��=��/-yj��K-��Ŧ��	�H��cvP
�#D�tN��͏Нy���Qm�������2���'�U�]VEfZ��X���wq^:x����Ou�/7���Sr�U
0(0�y&�����9��s�NV۹;�!�=��W���$��v�X�t���QSթ�/_��������3ا���{�4���	����?��d�ĝ�Ұ��3����ӊp����ě�����x���mJ��8���]���y��J1���߭g?��돈�kb�CY�]��6�BFJ�l:W�:�C�۔q8�'��f����e-�w隑���.�?~��S�8l�t[��u��`0|(��9�5��P��OZ�{�޸�Օ���>R�ɾ�����vv/�7gV����������c'�U3Ƿ3S�IO]�J��ii�+>�;țW�����,Q�0Ɩ�ZLGr:�ᐞ")	E�dd="R����_o9��7襑�~G���{][�*�xc�3���
�R�����Ssn<���td��qY�NLu�T��
������?Y
>�$ѐ�Do�V"��qg�?n�m���~�Q�����І���dq/C�OR-��ac�w��	k$j��]��AXԙ�`t`r���v+&q��\�@�<^���q���c��0i�UEM4�9����ms�y�Z�ͯ/��*cI�i󢇣�3�z[����[A��h$x&X��J����I���epJ�&w_�����br�u��:��F������8�i*��R����,@>᫛k�+��/-�+�ث��WV�YX�@#�������;���E��YH�e`H ��
M����W?+��#�qm�א������Ot�<�J�JYhn�˖�Z����n��%e�5��=��|�6��l�ۮ���^� �E`<����ީ=��6���_8�>��&�4%O�ܚ䳢4rIibw4��c��3|ᒿ���{k���{�4���߽������K#�V$�Ӳ?��3ch��<��ޗs{Ş|��������Ϻo��{��-����;���U&�ӏB�eU��:ʅ�5T;

2��,�dg��������}���>�d��X��.������q��zjD�����P�������:����F~�J��-��q��R�7�~*�J,�N^��X��v������U̍f�$
?C���Bߜ�9���a�b�X��d%X�)"Vh�;�9U~���m�&O'*r�Ә�+K3(+�ԡ�+)
R
"��bBl	���}OU-wY���ؕ�8��Օ�_o��tU�82�tpEQ�d���
$���{͍���W��i���,�h�3C�2�P��'���|��<�ÿ���+!uY�gUb(J+��>]
�ĝ:��u�7�=��wS��Zc��w������)�b�O�ݦ(�
��tyX��IA���w�6�n�H�ۛ�N��G5<鄗%p��)�u���}�����Խ�(�����9��W/e�K�V���fn���3{/y`�ot�ں��)�����3+#��I��J��M���#+w�[V��7{N�f���VH�Q��_��ECI���~��n�U�\mӨd�
U�4��8 ЩX��1u�m/�=/Q����GA�h��:9��������LLX-ӷ�O�=D3�'���H��B���m���۪�v�$�c?����FMT#Ε�u��g�?���>����|^D���n���#@��n ��K��~!��0��z�����d���q��nB�������Y�����?��d�ĝ�Բ?��3ch��<��ޗs{Ş|��������Ϻo��{��-�����ӟ#��^��ފn�܏��T[SKCQU52��c�4��)��0���9	3@����9������.<6�=h	�I��4>U4��=�����<�9�g��v��q
eFb�Y%U#ĉ��8b���X���=��-5wL|��:u����u���NOåD0�i�j�5Q���qﵿs�g��������n�Z����9D�����^��{}���]���Y���(
�<�8�=����b�[N?��|����|?A��gi�h����n��j�2�%��)N��eK�2�IQ���� ����m����6طX��#+B�S�pW��N@狍��u��
�]�e�%����T0ҧ����H�'��=�w^՘��}��v�B��A����}zŐ��p��ks��C�Ei�mۂ밿�t�����R}GA۽�p��E���?���c�z��۟s�)����n��<FC-1q��PS�9`$^-P���w�XX.���aOYP~�#������i���������ߓ���}�G�p�59L�[!�;�KM����Y_z�];�GI��$a�4Ff +�\NB7��zs��ײ�EE���f4��N4$�H�M����,�7���l�B��m*��*[�E@$T	<TW��z��+ou]za<۽{_a���btC��Rn܅Bd�DR�����'�+QO��������o�}���8�[�$�"����x�4�V�G +̭�?sH9����ٽ��'g�)�^2�Ib�$��\���a��2ۦ��ػ;�����wj���M��3�����ar��Y`�b򘪊tzz�yc�&[����q�����I�\�y�� �A��ߘy;���a���Lw;(����'�ԇ�H�AI�Ԍ���z�����d���q��܅�%���?���i�*,���Չ:�ղ?��3ch��<��ޗs{Ş|��������Ϻo��{��-���!��e'Uu�Y*>1|��_*[�M�#�? j��M��
G����+�>5��*�5KL�٥��w�i��#sSr��q�g��
	��挄��𥔀t������øs�˷���&[�U"��%�tE�4������Ԑe�w��/�Skv�Tm��[�5EGٝo���EELK���t�����*���Ņ���.�CU)�}LJ%����^l���<m0ywp�ĕ�"��-J���ޯ�[2vj�����=�b���a0��q+`�|!kOԅ{8�Uq^�7'�:�N���{���h_56�C�F������n�V`�I4sM�v~n�Z,����h�k���O���J��j�!=�������ϙwvNX��d�E�FC$I�J�JE@A�����B˔�z��~f��Ǥ�!pU��fRV hI:�:up?,�b�
$jކ��kl쌾��
���qӊ-ϙ�Ԃ)2x͋�T�9�a�x\��7�g�;^e��低�I�ZjB�j�3�8�2,Q��VRU�]��o���i�]���{c�
�m�D#T쌱 �	��G�Q�%��3KR��~��z���3|ᒿ���{r��/��:�/�������K#�V$�ֲ?��3ch��<��ޗs{Ş|��������Ϻo��{��-���!��e'I��6�a�\���,~��{�Q�����+g�@
I����M��F��Z�\���wi3GsVA��8#o���;.�˼ö�w�^D�M����A�A*�C#�CEba�~A�.|�=��?��b�!�ݍ�+*�����*M����_o��TD>�%H�%

�E���uco��r7�������P�%~�a#��tX�D
����������w�Y�1/�X�x�5K:�5�"O��Z)(�8�Ff;�[��͒���:���}�IOI
��e�D}}ى
*�7$�9�ҜTaa�w�V��!/=��K���|��X����6U��-�1�sB�GU�y�{��_# �y˒%�X�&h�Vj�� �au,�OO?%?�F�x�]/xt_A��R�$̮��[��T����T㖠�~���TEo��^�{3Ɍ��9s�W���&�8��
��y?ң� �귞���J�o'r4����U�I]+�
�R��:c�*sּ;��>E1<�Z�b���.��y9�{3��9
.��t�3E��uf+4�e��8�<3f��Le�"�5-D+���d�v{�G��
���փ�:)M
�O"8���N�1������K�v�q}��yt�&y&�R���A���
�J�X-p��>��==�v�[���m��LvK��F����������W�H�����5D�<�33y��_���Ld���� �:�[�Q��D彧��WmKM�� �F�4,�Ƭ�;�HĻ�31$����>��X����?��_���=���J��G�~b���T�Y�����u�׻��w�wo|�ڙ}����mZ|�n��%[�×�״�Ǎ�e�jsA-"��ޛN<�/-�o7��Z����,
u1�V�}z�g��򯶼�����߸Ku5�L���!�$�'��d�)#5������������������?�k�g���ۯ�2�_���:��7�r��M�?���_�����w���o����}{�n��˽�o�l����}�=7X���u����M�Rm�ޟ����,=���.��8m�����bv�l�M����i��Q�Z,�+5V�̄�fp�#����6�W��}��m|� �ϘBD8/�!Q�+F@��Q?3���c���=�{��5i~��9Xֽ��w���c��c�"�������ɏ�G"�O����g�r�R�c�w����G04g���{Ϳ���ú�0��$��0�^���8}�9R�^�^�<W��d{+9�O�<�r2����}�/���c�����_���w���o����}L�X{u�F]�p��g^����_���?;����~��n��m������a��w���m�m�{��������������M���־����_�e޿�
���th>,�fߝ!�7{u嶎B�1�F"�=�_���J�����:d�8��;��j#�n@��yr�f����X�=#AbkPsU\c�K�y�_ܽ�g�+��-�V7	
�_
Ҋc�RZ�8�)\�u���w�_�vu�~��{ߺ�^��׽��u�~��{ߺ�^��׽��u�~�����b���JFIF,,��	�ExifMM*bj(1r2��i��-�'-�'Adobe Photoshop CS4 Windows2011:08:26 14:02:29��P�P&(.|HH���JFIFHH��Adobe_CM��Adobed����			



��PP"����?	
	
3!1AQa"q�2���B#$R�b34r��C%�S���cs5���&D�TdE£t6�U�e���u��F'������������Vfv�������7GWgw�������5!1AQaq"2����B#�R��3$b�r��CScs4�%���&5��D�T�dEU6te����u��F������������Vfv�������'7GWgw������?��Ƶ�`i������fXb��σZ�R�L�~��(�`=�� \�"uN�Δ����ZӣZ����ܢ�Stu�n�B��Z��㖴j\X��:�A��}�$�������'��NvNX{���:��ַ��^a���^OS������E�5�	{�F}��zpȚ�_[��������I/�?�ϸ�䗁��q�c�=ˊ-]G�RwS�udwe�o�K��?��ۗ�>�_'�Y���_��u�q��/����~��.�m��"�?���nm=A�c��,�����_��Lf<V�u�'���������IY�ͷ&�5�4H�>>d����hsHs\%��p�:G����M�##cW����7P������.k��L�<>���Ӑem0G�Na��]�:����r�?�ͣ�
ۣ�mk�D����ֻ��1�]��e}R����+1����_a���]�X�o����^6���]6�����@
}wo��Qߜ��9���іs��U�\d���OS��S1�.i!��#�gح?�Zm{�cR��~TF,�Q	�Aˌo8����:?L��uc�7��{}�� C��{���ѹP{�=��i�4� ��0�ۇ�zO��،��m5���N㫖�H�y��+����U�b��9X�]������mr�:G����PQծ�����S��y��s�.���.���G�R�^��!��.X}K����Tc�{$	���7R����󯫿W��љ��He`�y�}.��ǥ�6�ƀH�T}%W�3�g`.U���>�N���oJ�o��3�V�-sX�����c�8�!@�_߉���$�J:�?Dm��IN�m�Ōs���3*����>
�Ef��z;8�w�]E��b�������m6�k����0Úy/Y���=7Zq.h�8��@�\��N����xle�s(����>��kZ��x!(�,H:��Bn��1�|��?�_�a�}Y���o�a�*�}H5�߹evl^��?���������5��դ4�-�k���j���?���d]����=_����S��QW���S��QU�j�r��XiwM�u��%���?������K�Փ��\E
���X�;�Ƭ\�z2�~>C��6���Kq����70Y����i��7P;5�����W9|Ж?c)�x�[ꌆH�p�?�����^{��Au@:�r�;e���j]K�c��Cl��o�?�Z��;LJ���'���p�'�������~%N*���������zOV�m����]��C����X��_�vK�����H����k����Q�����^.+t�!�����a~�#�f�O����R��1F�a܏yY:��?�������_��p�;�����mȵ�ah��'��~���}�"��Q��\��?�ϼ��R������Ek��Wy���];1��1q���Ï��k\��?L�v�11��� ����I�O��\��?�ϼ��R������Ek��Gr?dd��>��Vpp�Ʊ�yi6Ϗ�
�H���5����Photoshop 3.08BIMi8BIM%�
�`P���$�8BIM�,,8BIM&?�8BIM
x8BIM8BIM�	8BIM'
8BIM�H/fflff/ff���2Z5-8BIM�p��������������������������������������������������������������������������������������������8BIM8BIM"8BIM08BIM-/8BIM@@�8BIM8BIMMPPgravatar-defPPnullboundsObjcRct1Top longLeftlongBtomlongPRghtlongPslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenumESliceOrigin
autoGeneratedTypeenum
ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongPRghtlongPurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT	horzAlignenumESliceHorzAligndefault	vertAlignenumESliceVertAligndefaultbgColorTypeenumESliceBGColorTypeNone	topOutsetlong
leftOutsetlongbottomOutsetlongrightOutsetlong8BIM(?�8BIM58BIM�PP�K|���JFIFHH��Adobe_CM��Adobed����			



��PP"����?	
	
3!1AQa"q�2���B#$R�b34r��C%�S���cs5���&D�TdE£t6�U�e���u��F'������������Vfv�������7GWgw�������5!1AQaq"2����B#�R��3$b�r��CScs4�%���&5��D�T�dEU6te����u��F������������Vfv�������'7GWgw������?��Ƶ�`i������fXb��σZ�R�L�~��(�`=�� \�"uN�Δ����ZӣZ����ܢ�Stu�n�B��Z��㖴j\X��:�A��}�$�������'��NvNX{���:��ַ��^a���^OS������E�5�	{�F}��zpȚ�_[��������I/�?�ϸ�䗁��q�c�=ˊ-]G�RwS�udwe�o�K��?��ۗ�>�_'�Y���_��u�q��/����~��.�m��"�?���nm=A�c��,�����_��Lf<V�u�'���������IY�ͷ&�5�4H�>>d����hsHs\%��p�:G����M�##cW����7P������.k��L�<>���Ӑem0G�Na��]�:����r�?�ͣ�
ۣ�mk�D����ֻ��1�]��e}R����+1����_a���]�X�o����^6���]6�����@
}wo��Qߜ��9���іs��U�\d���OS��S1�.i!��#�gح?�Zm{�cR��~TF,�Q	�Aˌo8����:?L��uc�7��{}�� C��{���ѹP{�=��i�4� ��0�ۇ�zO��،��m5���N㫖�H�y��+����U�b��9X�]������mr�:G����PQծ�����S��y��s�.���.���G�R�^��!��.X}K����Tc�{$	���7R����󯫿W��љ��He`�y�}.��ǥ�6�ƀH�T}%W�3�g`.U���>�N���oJ�o��3�V�-sX�����c�8�!@�_߉���$�J:�?Dm��IN�m�Ōs���3*����>
�Ef��z;8�w�]E��b�������m6�k����0Úy/Y���=7Zq.h�8��@�\��N����xle�s(����>��kZ��x!(�,H:��Bn��1�|��?�_�a�}Y���o�a�*�}H5�߹evl^��?���������5��դ4�-�k���j���?���d]����=_����S��QW���S��QU�j�r��XiwM�u��%���?������K�Փ��\E
���X�;�Ƭ\�z2�~>C��6���Kq����70Y����i��7P;5�����W9|Ж?c)�x�[ꌆH�p�?�����^{��Au@:�r�;e���j]K�c��Cl��o�?�Z��;LJ���'���p�'�������~%N*���������zOV�m����]��C����X��_�vK�����H����k����Q�����^.+t�!�����a~�#�f�O����R��1F�a܏yY:��?�������_��p�;�����mȵ�ah��'��~���}�"��Q��\��?�ϼ��R������Ek��Wy���];1��1q���Ï��k\��?L�v�11��� ����I�O��\��?�ϼ��R������Ek��Gr?dd��>��Vpp�Ʊ�yi6Ϗ�
�H���5��8BIM!UAdobe PhotoshopAdobe Photoshop CS48BIM��!�http://ns.adobe.com/xap/1.0/<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.2-c063 53.352624, 2008/07/30-18:12:18        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:exif="http://ns.adobe.com/exif/1.0/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmp:CreatorTool="Adobe Photoshop CS4 Windows" xmp:CreateDate="2011-08-23T21:52:04+07:00" xmp:MetadataDate="2011-08-26T14:02:29+07:00" xmp:ModifyDate="2011-08-26T14:02:29+07:00" dc:format="image/jpeg" xmpMM:InstanceID="xmp.iid:BD76304EB1CFE0118EADDB079BF6CD0A" xmpMM:DocumentID="xmp.did:ACDA3B7797CDE0119B3BB1CB33EA20D3" xmpMM:OriginalDocumentID="xmp.did:ACDA3B7797CDE0119B3BB1CB33EA20D3" tiff:Orientation="1" tiff:XResolution="3000000/10000" tiff:YResolution="3000000/10000" tiff:ResolutionUnit="2" tiff:NativeDigest="256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;54EEC36622820E977150D38B66C8FEE0" exif:PixelXDimension="80" exif:PixelYDimension="80" exif:ColorSpace="1" exif:NativeDigest="36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;EE10C350724BE0305260295EBCF555B9" photoshop:ColorMode="3" photoshop:ICCProfile="sRGB IEC61966-2.1"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:ACDA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T21:52:04+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:ADDA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T21:53:26+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:AEDA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T21:58:18+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:AFDA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:00:42+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:B0DA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:00:54+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:B1DA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:26:40+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:B2DA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:33:16+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:B3DA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:34:30+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:B5DA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:35:36+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:1D2520989DCDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:35:56+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:1E2520989DCDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:38:29+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:1F2520989DCDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:39:01+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:202520989DCDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:39:30+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A1A00195AECFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T13:42:35+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A2A00195AECFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T13:42:35+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A3A00195AECFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T13:49:33+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A4A00195AECFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T13:50:39+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A5A00195AECFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T13:57:23+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A6A00195AECFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T13:59:37+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:BC76304EB1CFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T14:02:29+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="converted" stEvt:parameters="from application/vnd.adobe.photoshop to image/jpeg"/> <rdf:li stEvt:action="derived" stEvt:parameters="converted from application/vnd.adobe.photoshop to image/jpeg"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:BD76304EB1CFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T14:02:29+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:BC76304EB1CFE0118EADDB079BF6CD0A" stRef:documentID="xmp.did:ACDA3B7797CDE0119B3BB1CB33EA20D3" stRef:originalDocumentID="xmp.did:ACDA3B7797CDE0119B3BB1CB33EA20D3"/> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 <?xpacket end="w"?>��XICC_PROFILEHLinomntrRGB XYZ �	1acspMSFTIEC sRGB���-HP  cprtP3desc�lwtpt�bkptrXYZgXYZ,bXYZ@dmndTpdmdd��vuedL�view�$lumi�meas$tech0rTRC<gTRC<bTRC<textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ �Q�XYZ XYZ o�8��XYZ b����XYZ $����descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view��_.���\�XYZ L	VPW�meas�sig CRT curv
#(-27;@EJOTY^chmrw|�������������������������
%+28>ELRY`gnu|����������������&/8AKT]gqz������������!-8COZfr~���������� -;HUcq~���������
+:IXgw��������'7HYj{�������+=Oat�������2FZn�������		%	:	O	d	y	�	�	�	�	�	�

'
=
T
j
�
�
�
�
�
�"9Qi������*C\u�����


&
@
Z
t
�
�
�
�
�.Id����	%A^z����	&Ca~����1Om����&Ed����#Cc����'Ij����4Vx���&Il����Ae����@e���� Ek���*Qw���;c���*R{���Gp���@j���>i���  A l � � �!!H!u!�!�!�"'"U"�"�"�#
#8#f#�#�#�$$M$|$�$�%	%8%h%�%�%�&'&W&�&�&�''I'z'�'�(
(?(q(�(�))8)k)�)�**5*h*�*�++6+i+�+�,,9,n,�,�--A-v-�-�..L.�.�.�/$/Z/�/�/�050l0�0�11J1�1�1�2*2c2�2�3
3F33�3�4+4e4�4�55M5�5�5�676r6�6�7$7`7�7�88P8�8�99B99�9�:6:t:�:�;-;k;�;�<'<e<�<�="=a=�=�> >`>�>�?!?a?�?�@#@d@�@�A)AjA�A�B0BrB�B�C:C}C�DDGD�D�EEUE�E�F"FgF�F�G5G{G�HHKH�H�IIcI�I�J7J}J�KKSK�K�L*LrL�MMJM�M�N%NnN�OOIO�O�P'PqP�QQPQ�Q�R1R|R�SS_S�S�TBT�T�U(UuU�VV\V�V�WDW�W�X/X}X�YYiY�ZZVZ�Z�[E[�[�\5\�\�]']x]�^^l^�__a_�``W`�`�aOa�a�bIb�b�cCc�c�d@d�d�e=e�e�f=f�f�g=g�g�h?h�h�iCi�i�jHj�j�kOk�k�lWl�mm`m�nnkn�ooxo�p+p�p�q:q�q�rKr�ss]s�ttpt�u(u�u�v>v�v�wVw�xxnx�y*y�y�zFz�{{c{�|!|�|�}A}�~~b~�#��G���
�k�͂0����W�������G����r�ׇ;����i�Ή3�����d�ʋ0�����c�ʍ1�����f�Ώ6����n�֑?����z��M��� ����_�ɖ4���
�u��L���$�����h�՛B��������d�Ҟ@��������i�ءG���&����v��V�ǥ8��������n��R�ĩ7�������u��\�ЭD���-�������u��`�ֲK�³8���%�������y��h��Y�ѹJ�º;���.���!������
�����z���p��g���_���X���Q���K���F���Aǿ�=ȼ�:ɹ�8ʷ�6˶�5̵�5͵�6ζ�7ϸ�9к�<Ѿ�?��D���I���N���U���\���d���l���v�ۀ�܊�ݖ�ޢ�)߯�6��D���S���c���s���
����2��F���[���p�����(��@���X���r�����4��P��m��������8��W��w����)���K��m����Adobed@�����PP��
���	
	
	u!"1A2#	QBa$3Rq�b�%C���&4r
��5'�S6��DTsEF7Gc(UVW�����d�t��e�����)8f�u*9:HIJXYZghijvwxyz����������������������������������������������������m!1"AQ2aqB�#�R�b3	�$��Cr��4%�ScD�&5T6Ed'
s��Ft����UeuV7��������)����������(GWf8v�������gw�������HXhx�������9IYiy�������*:JZjz��������?ُ���uu���a�Tz���RY2�)�Y��di#z<�b"�
�O6���Og2G!R��>�y��S��;u�p�eJW�kR<�zt�P��z-��q;��0L��wjn��J����L�4!<��'��$[��9�6�����þ��,���Q���_��F"��'�霎CTWd��m�x�u:[\�u����SB�坕G����o�w���$��?:��h�I��@2Lr>�[��_.;dY
�J��#�<�I�'�������.��Y����o�����7��vW�{����{��ۿ�����.��h��|�������7��vW�{����{��ۿ�����.��h��|�������7��vW�{����{��ۿ�����.��h��|�������7��vW�{����{��ۿ�����.��h��|�������7��vW�{����{��ۿ�����.��h��|����o����=���b��
J|~ d!|E.F	�c[OO�V��ףE�RlM���ٖٸ�{,�* k�}~d�q�n�;���: UJ��<��c���ϻ6a�o��_��SA�0�둨��xq�ɕ˴��:��Pʱ3U���~�9������{J
���?�unvb�|��c�ъ���?�c�����_�8͛�]W�|���cjrx�]D��m�����_�3"���n�)[��	��V�Yf�U�����(� 
0<���'�U�A}�P[������|�?��_�#>^1����=k��:���N�����쎽��e/W���M�����ɑ��a��T�VCE8��D
�'��X7[���1�"�2Id�W�f���e��/6��x"@AR̾d��3Z}��C���1�����b�/�-��]����D}Y��m���T��wN䩪ڙ*jM��	���Z�v���HlS;��0Cg�V�n��u($!��瞔r��mo��5��%���V�21�S���t��[޺�J��庫*�*e���9z��J���&���r���`�~"�
֟`�R!�EJ�:]mo� �5dY
�ޝŴ+�H㊳lvn���<Eϋ���"�p�@���{KIE$����A��,,ff������t|�s��0ޟ��/�MژJv��۝Á��:j�j7G�ߨn×�Q776>��9wi��[Cz�#�e�D�\����)Ὺ��+��>�z���[+���;ʾX���Q�?�
����r��O���q+{
^>篍}��Z��4�o��<�?��ߕ���rE�i��<x��}��~T>���?1���b+貘��6C��UA]���VB�u�5��-5]U<�$r�̎�Iab
��a��%���YH`hA�ϣ{�#�?����ҋ����M�����/+��w�O�~��أ��ܝ_��;��ۘH)I
<�l�n���E:3$rUŌ�J�2��V�}Duys��v���K��Q.�x,w��;Db�a.�?���~uO����~���f/ul�_TT��K������?�1��c�(rS��LԒG%QY�N�--�qEp5z��b���6����]��g�S�J�-j���C�"�^�z�:���N���O���hf����?�8�����s�om�����V.�|IM4�(E����p�#D�kEg'���L�n�׽��u�~��{ߺ�G�o_�j�o�[��U��:�{TI�h�?-���둖�-���f19���y:�ԕ3�rA5D2<�@�H�����Y�5�+L���΀�������m�{��4k���8�*È�	�_B���m��R�f��j���Q�w&ot�B�J��u�d3���A��RH��xib.|q��⛫��g{��2�8}�A�׷�̗w$�����x�c??����m/��(���?�D��?�:<��.�i��ï�ҿ���o�
��hR��\�Ż����=B|��A�4��y�ճ�	���y�o��p�;����͙c'8$]���Wa�v�}KSb4��g+Fe�K�4'�4Q��:_�4��v�"���4Q��?�ZI����z�����g�^��7����.�������< Vb�T�Z�d���x��jy))�ЉR}
-<%g�gyj�����e�4���kI��G_2�E!(����dJ@��s����0���?/�0��k�x\/,`;FppR�]�U�_>JnmǐژN����+#W�ɏ�J�A_CP�0�g�!��S�2�H����X��,�����m�Ӕ/��9�X"���0��%�|��E��#��,aܮ���-d�]?YK���+�!�����S�_|��`��?Yc����ޛC!��4R�,tpf
=t꣈���G<"�=��~�>�[Y����rLi<
 tP�c�FbxO@���w7�h7�@M��?6)U6U� tC2،�)_���+�ٜU\�LNV����WR��T��P��M%U<�U�UՅ��5smseq5���utu*�Ы+T��u1�\�^��wgp��ȡ�у+)�	�A���?���{�G˟��]����?�zTT�e�n}�-����KH�,ՙ\~6z��I��}"��Øv�a{�%���a�?�.#�@���͠m{�����e��/�H#�@��co����6��v�^����(꼯����?��u������4)�u��o��T_�L��	�G�������L�S&B�=��8�Vn��U('�kq�޲��f_�u�-R�?���'�_��	������<]ѿX��/_����y/<o}���dg�뫨�����MK�����(�9z�b��m�
�^RGYW25��4������|��-^[�*�5�!*��H)�+E!݁ʨ��~�{�qɓ�ʜ���2����
��5(E`C��CT���a���u�E��S�K]�}c�v%uN.<5ev���=nG@���]Te*a%CI-���cd�U�n_�K9�0��Ĩ̠�*|�I���{�7�O2F��wy
�]Vi�X��Ą�(��B��'Aν��{����k|����m������ �y�E��o�jX���i�2©#AD�h�BE{����
����#���ӵ�%��O:a%�\+jJi�}���q���=�u/q�2?rq{rNd��U�ŀ�e�ի��ٛ�bn����X<���;v���3��@`��������r�E,@<R�4SD�$l��ǝ��ո��Ӻٽ���7e W�dP��RA��m��߼m����v�t�$CU`M?"4*AV�:�#�Nw��`?���A����u�bb���l�!�1��S��r���7���*��?r��K� n���v"�����i�G�"��ҹ�)����&�| ��.T�+��Ue��Ez�s�G�~;��
��ݥ����M������+��w�O�~������4)�u��o��T_�L��	�G������ꮾI�:��笗�vo�ҏ�7t��mc$��Qcj�j)���)i$�s;w"`����B#���W��9��V7�ɤ�П�C��o�ovϨ�)tWI4��=��}z�o����L��ώ��gF���v'���׻�%����J,fqՓ�j�N��Ͼ���9�-��G�@nl�G�L��9�����[{�4�{�Z��m�޲�Lr/̪�u�Mդc�+|���\N���o�v�v��;���і��c*bY鲔��T�c*�`�T�ʌ���op9�p�ڮy�m�q���oq2�4(u0�~ p@�,��9��o��m�Cr�n�C$�o+�)4��#!�2	�$�m׵f4��ln�P���g��,<��^�1d)��3x����?�Zn[v��/�=cuq�T�Q�v�n�6��a4�"2�z�`�����
m��3ۆ��A��L\h%T�X	�_�?�������S�GT��궻}��h���g�Dg?�A�e�e7�����rQ��5
NS%��u���R�ch�3�W޿N�Q�@���t���
�����ޜ�5�QnbbY�����
	$�:��>;���;s[8��;[J�*���QPIO�2����=5.��]�ܝu�{=�	C!O����d�s�L&#�51� 
C5�ȑ�*K}�6�Y��蹪��/1�2��@΅]�$���(�i`����g1s
�0n[4WE�a-%��6ʣ&���c��V����˳�bt�X��a�[G�vLg-&"����ݷ==V���TS�e0��%U$rR�R�
L�W7�LWA/��I��׈>D0z������� ���ϭx�8|����H���s�ᴿ����o�����(��ܻ����?�������4)�u��o��T_�L��	�G�������$�5�
0ݡ[�{�^��M��}ф��Z�M6��ʏQv�B+�F1���'�3G#���5l���{�"sx�I�l��”�	ST���''Q�I�:'�~Vn}䋝��=\÷�\�9�����J?�
�	�n��/�Skv�Tm��[�5EGٝo���EELK���t�����*���Ņ���.�CU)�}džc��{ey�o�|�e���OV\�g��+�s7z�
l�i٨���e���ZrF�0��v��8��f�>���B���t*��~����d�^���S4/��o���pt����W�7h`+0k���9��;?7M-_sfj4u���d��D�%yd5����{]}���g̻��',XL�j"�y�!�$�%V�"�������e�\�y�{}¿3_�c�
L�*��)+4$�c	�,�m~a��~�Jy+>;�/�;���2�>��h�?s�p�Wyl_\`
Ʋ ��Ji�r��/��v���0���r$�l5&�5W���8#��V$9$�������r����/%�z9�y)$�p�ڥLHÊ���a��N���]
:6?����m/��(���?�D��?�:�q�4���������4)�u��o��T_�L��	�G�������$�5�;�z�ev����q��k�6>��U`�.�����2�m$2�d�	�p�C<O��K����Y �&��Ȧ��.��y����	
L��� ���<T�z�����Κ�7�;�����Rd�ﲶ=]^S��7Qy�����O��[KkTD.b�����Y�'�H3g�o��;N�&s�������8ȡM/�44�Bb���*o:{icη�̼�|�_<)��S7)��90�NI��Bhڤ7a�o�{6Kkc���I��%=$+O]����f$(�@�T�x�gJpIQ�����Y[W����?d����ɜ��I�aY#eZ���c�g4-�pUP:Ai�׽|��m�.H��c����Y�i��B$�Ly��x�1=<����U㶭t���}KUK0�2���}o�R��IPc�Z�a�8j��}Qe��Y{1��&2�|��Q^"w�X�G��*&y�J���c��{��'9+m�����;��V)%t��6UH#�L� ��Te���K��7A6��n��ͺ�����~�\�?���%\��0}7��$�u�<�I��1B��&�ڊ�3���9�.�7%�im�POʣ�c)�(֞Dq8����-W�?ڸ9op����z��7�ط���r%����ȧ!T�|2�7Ot�]t'Z�.��}�E�v��lj�a(��x���V�U�<��<�R�i*k*�J���^Y]�؜����i'��JƤ���Cˡ�����\�Zw5$��p`��l�a�#�?����ҋ����M�����?+��w�O�~��ُ�zKu�f��f�9
�IKE��,yz��
QC#V�Q�k�0���\6�x���7=�{ɒH���I�'�^���g��nc�	#
�ăZ��נ_�������ώw���e߸��ߑ���z(��������@u�S;�w[+�>9������?���^��������@u�S;�w[+�>9������?���^��������@tR{K�,|x����/�[�9Q!��p.ߪ�n*��Kd7����B�16�y�Su����L;��S�
�ѝ��2�.�}�*zkr? T��o[�$��K�\������U��1���n��>d*V\^Gu��f*PPz��#������}�t˸�}50�W�����t�&�O@��@A_ϣ���gc��e��;��߲��W��k�=U�����:��)���;�����c~�����o��U�����:��)���;�����c~�����o��U�����:�3��OYg�L�~��!��SU��e�V��j�k1T�h���c{q��e�m��K#��AZ`�_�l�E��<���U����0|�u����_�o^��׽��u�~��{ߺ�^��׽��u�~��{ߺ�^����*GIF89a����,�GIF89a��,��<��<��������������������������������������!�	 ,A�  ��4`�@A 0  ;(GIF89a��1�<��8��9��<ݡS��������Ǝ��������������������������������������!�	 ,EA(0��PąB�т��*D�@!�	%H�!BD">p�A��D\� �
�4;<GIF89a� �,��<��<������������������������������������!� ,(`��
0h����" ;eGIF89a��.�1��8��8��<ݡS����������Ǝ���������������������������������!� ,B
D�@��0`p�A�x��"D8 A	P�p�B�,�T��� ͛ ;�GIF89a
�d�ml�un�wn�wr�zp�ys�|w�w��{��|������������������������������Ě�Ɯ�ĝ�Ɵ�ɠ�ơ�ɣ�̢�̥�Χ�Ω�ѫ�ӭ�֯�ر�س�۵��»�Ŀ��������!��,
�5,��A:x��D"F�ѡ�Rh�ȱc��4p���8X��˗0c��`�C�
N��ɳ�	
6@���ѝ(``��̧/'L�  @X�j�j��HB��$ҖM��8�
�.��N��ׁ;�GIF89a
�			





   !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������,
����5K�+W�Z�u땪T�LmR$jX�U�N�ڔ��2y�މ|Gn�*e��|7nY*d�T�$��1�+K�"�re�R�b�\FʗЙ�D�)r��P�p�l	jWϙ�<�*��'\R�.�d�hSe�h�e�L���l/��JR��P�,-*�'0u}��h��;l�ܑ��N�9q�i�( ;FGIF89a

�?���������l��������������ƈ�̩�섐������������g��q������`�����p�������d�����U~������W������i�����������u��|������[�����_������������������䍲Ϣ���?��*������!�?,

c����"$��Ri(�&��A[�V���R��<V�U8%8$��3S����F%2�� �.vq9tK,61/>VB:><=��V�������?��J>�A;`GIF89a	�d��t�E��Mx����!�,	%HJ����k@UW�u�h\��}����HZ��3N;�GIF89a�?���a����ꎺ�������������l������������?��*����������V��q�������������p����㋲΄���������������g��[���������������u����|�������_����像��������������������������!�?,���pH,���r�l
���3JUN���K1��WC�R%4��H�[�J��lA��K�kF'PxJ"	&lJ
,~$#'�J+�����B:�:4'6<����66��B<���<���<B7����6��B8��8
�� �6�B9���;�66�9B�����;B=���������G;�GIF89a����p��s�����������������Kw�Ny�]��a��������:l�=n�������r��t��d��f��[��\����������������������X�傷�������������������������������������������������������������������������������������������������������������՗����)^�5g�Z����μ�������!�a,��a������0245������6:=>������;BEG������AFK������KMN�Z�������GQ�[^`�`]\`���KOS�W`V�SX_��S�R!T�TYT������"U������I� ����	"a��-^��a�+T�H���'V��1�F�lԐ��+�P�q������a�ɒ�V�p9�0@�d�c�5��cȈ�P�>��n�Ȁ�
 0@@���)����E=�h�PaB��@�
�,Q"���&P�H	��2)R�@y�AH�D��g�/;D�t ;�GIF89a���h������������_�������e������������Hs���*W�v�������Fn�}��������U~���������Gy���������������;g����[����͂�����������������M{�������Dw�������������������!�,�@g�+�H#m �9���sZ��ج��x`@@���h	�ع
&X�r��>D���$
&%{}|;98�

55��8<:66'
����77
�20���l:99��8.��*# ,13�  +#4(	=����K?!2/4�8��`3�!b@���;�/* base layout */
.ajax__htmleditor_editor_base .ajax__htmleditor_editor_container
{
	border-collapse: separate;
	empty-cells: show;
	width:100%;
	height:100%;
}
.ajax__htmleditor_editor_base .ajax__htmleditor_editor_toptoolbar
{
	cursor:text;
}
.ajax__htmleditor_editor_base .ajax__htmleditor_toolbar_button
{
	height: 21px; white-space: nowrap; border-width: 0px; padding:0px; cursor:pointer; float:left;
}
.ajax__htmleditor_editor_base img.ajax__htmleditor_toolbar_button
{
	width: 23px;
}
.ajax__htmleditor_editor_base div.ajax__htmleditor_toolbar_button span.ajax__htmleditor_toolbar_selectlable
{
    padding:0px 2px; vertical-align:middle; cursor:text;
}
.ajax__htmleditor_editor_base div.ajax__htmleditor_toolbar_button select.ajax__htmleditor_toolbar_selectbutton
{
    vertical-align:middle; padding:0px; margin:0px; height: 20px; width:120px;
}
.ajax__htmleditor_editor_base div.ajax__htmleditor_toolbar_button select.ajax__htmleditor_toolbar_selectbutton option
{
    vertical-align:middle;
}
.ajax__htmleditor_editor_base .ajax__htmleditor_editor_editpanel
{
	height:100%;
}
.ajax__htmleditor_editor_base .ajax__htmleditor_editor_bottomtoolbar
{
	cursor:text;
}

/* default theme */
.ajax__htmleditor_editor_default .ajax__htmleditor_editor_container
{
	border: 1px solid #C2C2C2;
}
.ajax__htmleditor_editor_default .ajax__htmleditor_editor_toptoolbar
{
	background-color:#F0F0F0; padding: 0px 2px 2px 2px;
}
.ajax__htmleditor_editor_default .ajax__htmleditor_editor_toptoolbar .ajax__htmleditor_toolbar_button
{
	background-color:#C2C2C2; margin:2px 0px 0px 0px;
}
.ajax__htmleditor_editor_default .ajax__htmleditor_editor_toptoolbar .ajax__htmleditor_toolbar_button_hover
{
	background-color:#3C8AFF;
}
.ajax__htmleditor_editor_default .ajax__htmleditor_editor_toptoolbar div.ajax__htmleditor_toolbar_button span.ajax__htmleditor_toolbar_selectlable
{
    font-family:Arial; font-size:12px; font-weight:bold;
}
.ajax__htmleditor_editor_default .ajax__htmleditor_editor_toptoolbar div.ajax__htmleditor_toolbar_button select.ajax__htmleditor_toolbar_selectbutton
{
    font-size:12px; font-family:arial; cursor:pointer;
}
.ajax__htmleditor_editor_default .ajax__htmleditor_editor_toptoolbar div.ajax__htmleditor_toolbar_button select.ajax__htmleditor_toolbar_selectbutton option
{
    font-size:12px;
}
.ajax__htmleditor_editor_default .ajax__htmleditor_editor_editpanel
{
	border-width: 0px;
	border-top: 1px solid #C2C2C2;
	border-bottom: 1px solid #C2C2C2;
}
.ajax__htmleditor_editor_default .ajax__htmleditor_editor_bottomtoolbar
{
	background-color:#F0F0F0; padding: 0px 0px 2px 2px;
}
.ajax__htmleditor_editor_default .ajax__htmleditor_editor_bottomtoolbar .ajax__htmleditor_toolbar_button
{
	background-color:#C2C2C2; margin:0px 4px 0px 0px;
}
.ajax__htmleditor_editor_default .ajax__htmleditor_editor_bottomtoolbar .ajax__htmleditor_toolbar_button_hover
{
	background-color:#3C8AFF;
}

.ajax__html_editor_extender_button { background:url(<%=WebResource("HtmlEditorExtender.Images.html-editor-buttons.png")%>) no-repeat; cursor:pointer; display:block; float:left; border: none; background-color:#c2c2c2; }
.ajax__html_editor_extender_button:hover { background-color:#3c8aff; }
.ajax__html_editor_extender_buttoncontainer
{
    background-color:#F0F0F0;     
    padding: 2px 2px 2px 2px; 
    border: 1px solid #c2c2c2;    
    overflow: auto;
}
.ajax__html_editor_extender_texteditor
{
    border-width:1px;
    border-color:#c2c2c2;
    border-style:solid;
    padding: 2px 2px 2px 2px;
    border-top:none;
}
.ajax__html_editor_extender_container
{  
}
.backcolorclass{float:left;}
.forecolorclass{float:left;}
.fontnameclass{float:left;}
.fontsizeclass{float:left;}

.ajax__html_editor_extender_Undo{ background-position:-0px 0px;}
.ajax__html_editor_extender_Redo{ background-position:-23px 0px;}
.ajax__html_editor_extender_Bold{ background-position:-46px 0px;}
.ajax__html_editor_extender_Italic{ background-position:-69px 0px;}
.ajax__html_editor_extender_Underline{ background-position:-92px 0px;}
.ajax__html_editor_extender_StrikeThrough{ background-position:-115px 0px;}
.ajax__html_editor_extender_Subscript{ background-position:-138px 0px;}
.ajax__html_editor_extender_Superscript{ background-position:-161px 0px;}
.ajax__html_editor_extender_JustifyLeft{ background-position:-230px 0px;}
.ajax__html_editor_extender_JustifyRight{ background-position:-276px 0px;}
.ajax__html_editor_extender_JustifyCenter{ background-position:-253px 0px;}
.ajax__html_editor_extender_JustifyFull{ background-position:-299px 0px;}
.ajax__html_editor_extender_insertOrderedList{ background-position:-345px 0px;}
.ajax__html_editor_extender_insertUnorderedList{ background-position:-368px 0px;}
.ajax__html_editor_extender_createLink{ background-position:-414px 0px;}
.ajax__html_editor_extender_UnLink{ background-position:-437px 0px;}

.ajax__html_editor_extender_FormatBlock{ background-position:-897px 0px;}
.ajax__html_editor_extender_RemoveFormat{ background-position:-460px 0px;}
.ajax__html_editor_extender_InsertImage{ background-position:-621px 0px;}
.ajax__html_editor_extender_SelectAll{ background-position:-644px 0px;}
.ajax__html_editor_extender_UnSelect{ background-position:-667px 0px;}
.ajax__html_editor_extender_Delete{ background-position:-690px 0px;}
.ajax__html_editor_extender_Cut{ background-position:-483px 0px;}
.ajax__html_editor_extender_Copy{ background-position:-713px 0px;}
.ajax__html_editor_extender_Paste{ background-position:-736px 0px;}
.ajax__html_editor_extender_BackColor{ background-position:-760px -1px; text-indent:-9999px}
.ajax__html_editor_extender_ForeColor{ background-position:-783px -1px; text-indent:-9999px}
.ajax__html_editor_extender_FontName{  background-position:-0px 48px;}
.ajax__html_editor_extender_Indent{ background-position:-575px 0px;}
.ajax__html_editor_extender_Outdent{ background-position:-552px 0px;}
.ajax__html_editor_extender_InsertHorizontalRule{ background-position:-391px 0px;}
.ajax__html_editor_extender_separator{background:url(<%=WebResource("HtmlEditorExtender.Images.html-editor-buttons.png")%>) no-repeat -920px 0;display: block;float: left;border: none;width:13px;height:21px;}O�PNG


IHDR�w=�IDATx���KHo��L#L36��Q�hE�BEݸ�ʭ�t�֕[7�E�e�
�Z(�֍Ɛ���#5&~]����v�0�o��{�\�NJ���_�yqE"���'����b�666�����|��EQ��l��̔�P�>??/WVV�����t]��|���SWW���RI5%	����ڢ���X,Fuu5B�����\.b�X�ZJ������@KK��]׉F�%	��`uuU���ob�`���s)%�!_�|��ME	�}�&���y��Bl6��"�Da>�������D��$ �ˉ�	:;;��~�v;RJ��������p�z����d�t:�ׯ_����fA���ikk������|躎��fgg���.�n7'''!xxx��������������S�N��͆�i�<6�����
@ee%.�EQ0�����,J���'���ijjB��ifc������4�������DUU�v;B������D"3�Oq|j���	�B�}�!���������G�")%�����+dA4���777H)���%����8;;#�Jq||@*�����{3Yn�����B�Ì��(d2����f��B!z{{e���A�� ###��i���j��ϟ?M3EB<�ϣ(
��Ǽ~��\.���$�D���3\.sss\__szzj�@6�}6�&A&�!�ϣ�*�� �$�����S���
H)���x6twwwx<�B�:;;�\?)B��*��aN���$�n&�ɦT*E�( ������|>��b�j���:^����*jkkimm����ՊaTWW���D�uNNN���(�`0(B��X�7o����@mm-����(
����܌�n�b���*���������舁��g�����L&���1��d	<�L<gmm�>�������ܔh�F0���MӰ�l�c 2��d�h4Jcc#���E��������9�L�\.�����r�V+uuu

�h��o�;[��2��IEND�B`�W\�PNG


IHDRl�7�	tEXtSoftwareAdobe ImageReadyq�e<[�IDATx��
�TU���T7�M�

H��(#��9����e�L��a�.�^���`�h0�b4�\	\�D"�#�+��90Á�GEqP��?�������MY�]�������յ���j�^뿞�D�Q�D"5"2ä�&�2i���!�8�6��1��!&�0i�i#��3��U;gjMe��֛v�s�B	��riR���TlR�&\��To���L���:��N�>@���2m/
��=mm��m��жs<)�3v��Nw��l�BH��w�&��A���k�E��O�K�Ç&��󳦍���DH^������q��դ�M[�c.B!���%6�ˑ�x�?������nT7��s��t�����&U��z.�k��+��h�6BH��9��&��{4�k˴8e�%��B!$��嫸�;w�|��g���-���=�8N����eɒ%N�3g���sj�N	�Bw��u�}������2z�h�j�I�K�BH`�&u/�N`�:6N��S\a�;�'�	9�&u�c<�����2��YFH�@�� [O��v��K�⊶E�2B!$�`�SƅuuuRVV&/^�n�0O�3��0�H�n �&���~��TWW����g��?��1�]j���)BB��j�.\�P����ܹSn��&хm_��O2�!�����Eך�7�Xy�F�Hq��ɕ�T�>�i^D�#�͝A&�`�r};�j���>��e{!$'�V�W�tڴ�S���Pxt<�5=!�0p��jk&O�,�F��m۶ٿm���:�W�t̤�f@���#��+�Z0n�8�–n�V��_���_�1B���Q����P_��YE!��]�b^���U�Z�ʶD�G�����$1q����;��^����'�e���y_���pFT_��_�yJ�$(�B!�ۙ&}�nݺ!&���6�!3hO4�07�u��`���<>c��F���$��+Vȴi�Z~�r�J{��YDH�9�E�#GdȐ!W���ٳ��B!$x�J����I�#v�aqt�IX�B�=f�	��jm���ŵ6�$�8���8�Pd�z�����g�V�C�ڦ ���.���1*�X�B��.�lK���$���a�f�B!$}����B������c�IK�wR^^.��٧O9~��|����ڻ�{P�"y�i���q=k�,'��ڵk��ǯL����u��.9��߭md�y�6�&!�m�����S����˥��
���K/�O<���&]c�q�������1��9I!���(Mq���ؠ�c��&��WXU�s���q���^%�ZĻ��{��%$��[{Y�����hCd�x�[]���S�i/q�^�H�ıHg{!$'�$�3�δ��c����o3�;q$j��k�Mh�q\�uB!$��:��q$�/#�7�ì���ˣ�>���+..n���={���իW��J�`֓<nT�ŵ4/��[Į�d�<�jc�\�>`��n�(!�k�0��̤�8�t�-���/[�n�/��i����Fj_0I\K/XЮ0i�I;���BH��4��l��ĵ��x"���H��k�P��m��q����}	I�}t�vq�IGL�OO;�����d0��z����k޷��O���&�wBr���&��֚vx!��0~1A\���g��x�
!p��Σl�yQg�EuA��;�DY!$��:���O[����Ѥ¯��ʉ�X��z�ΥI�rK�a�jv��'�qB����L�4ɉuk���޽[6m�$p5�k�c�l��:OK<B������c<�F�}�^��4[�`ưaä��5�=y�s���#&��\�; ��}v��B!������36�!�b�ֵp�w�Tso�>����/��H��YLZ!�\/�a���z���{�������q-/��VM��i����H'$wkX{�6�G� ��C�}]������=ccG
�j]���Vk[��ܔ�Wh-�s+�Fb�&�S����IM�4h�m#���cR���(�B:�x���8�`���-cƌ�-[��}�3g��}��'k�s��b�c�zFR��v��v�*!�Ο?�q�K�.����e�*h��H'$�(�hq��q�M�OE]��5��ٳ��h,X�@-Zd����@�C5賱�oO�
ײ����
��Y�?��>�y�M�z
�v�ƣ@�dLeBH��'�𵛓���-Zڍ���I����{���`�G����g��}c6i��
Y��I�A�h��U�����C_m�W[�u���A�w����]s}�]�A4V3Br�`,�m�Zq�b�¡
X���)����9I<^� ���e[��c�x�cl��u���
�v.pI<�,����]�u\�?]u����.k�l�V��9���.!$o��
��:��8q����:q;�⸇�H�t�Rٻ���Ƿ�$݂���SCl�b�n4��������48E
�Vލ�X�3zO�c��v邅�1i����)S�Ȼ����8 �\���NL���yBB3�~`&�;�9�1nܸv_�x�b�9s�K����yH��n��:�ѿ���]�'�A�{�o`�}�vill�㖬�k�6}��?g� ���;��/6�����\o�
�_�kytH�M�R}�&]�6�{o0�k]0cñ���ƴbzꦭ��U,F�nЊ�.�|o�֊��j��
�&�s
�ᛛ��o�n���B��us)l�]�M��6�h�1��&���$�t�6�K�^�܎����I��P��:F�6�.'� �M�1?��t|����<V{�^�!9�V��;�i�<��9!$��db�²�cq�ֶ����&���&�w�#�bH�}�����Z��4‡�ńb�.]�Cp�j�?�!�Te{ný���K׮XK��̒4�\�����Ɓ��͛eРA	��/�Kٶm�s�cI����c����uq"o0`���ꫝ>��7�p�����JKK��Nj��e����:tH<�򼡡Av�p
l����o�q������y�����ٳ��a�x���MX�!a�'����8�ŵjX֎�u�>q7J�`�������:C���h�9Y"��ݐ�d���yU��_���"5s�3�Ӕ�U�
0�F��%q��R���[�N�d	�F��S�^c|�����O����5ĩ�7's����>�&;�[Y|�F�8�coBs�"��V�^D���a4Z�BB3��]ui�;�!X}�IS���b�~,ט׬�| ^�C'���㥦��I��F�p�|���N<O��ܳg��C�U���f�xa�;A�p]XUU%���r��׷l�^{�WX��36?-ǎ�}��91G���1<P?ǂ�h�m>H��Bҹp*�V"��������tEZ�섄�,���\�'*֒��`;B��`\�+z�
�[o���a	~�_H�.]��!&#y�EwGX�������ȑ#�玁��Ì��WX��mB�\BH��<s�K��A�E8`�+ȳ���⺍��6a%h��㵍I����$�5�I��hsw�H���ZΞϔ�BXǮ�ͭ`���X(���ė�`s�-w��x?�.�ҥ�u�vkd���F�{��I��6L�^�FƳ$��L�ZGE;��\d�����{�
��In���^rY� �m?��L?��EI]l��=�R�̧�+�8�
�
�v�@ޟɇ15��=;�9S�sDW�X�|�7��KK\�y�7�	���IV�y�Z�
\(Ϙ1C&O���?~�yͦM�D�+�(t�g!O�A�>}��͛o�ٱ�AJ��#�񉸄o���_�{��ez�\�O�m�n`x7�;r/i�3�{{�Jw١��I��fFϛ7O�̙��kq@��O�Y\��x`���5�+4��|E�[�zc��b��a!$ �7�v��<L_�l�#�&�2����cr%d�x�����8����q�����\JJJ���a>��I�e���^k^
:�l����E`bC���v�aU�G����ﰙ��l�'4A(���9��5�
��Ӛ����2֊ֺZF�{��)�,=�>�}���6ƪ)֥�����6�;�{�<^K�&��%OV<0���L:�l�5��u-&��j����x��
�6n�s/k���v,���ZO=�!�Ƈ�
�^��"W���IV��M�p%Ah�o���ۓ��bl�穯���3�����H�G�� 6���VV�-�Vq�Q���l�9/+�I��C��t�x��=���ď1��3#1s�x�"1�
���ۘy���M���d�N�%r6�<�����*?�p���K/�O<�\��D;/��ow�-��֊���:!K�8y�lذ����b�lv.6i��'�-60�a�L�y<���`��Z�*�&�V	H\�4ۉ��C\O�6ͩ��z����;�,QW�gM�S���!�A5Ҏ5���
�Hv��*��=����&�+�^@��)tK��~�h�8�1/�Xհl�a$�O6�b�c��H�{���k�X+�qС�\)�"Uľ��f�ףF��o�Q�u�Ɗ�3G�u�A��������Z�ƲSZ
!c�4���*�z�M������';��A��P����`1���,��6�`E�CZ7�`wIS�>��b�^�u�݈� ԰�{*("m;�yV�@4������,+�V����=�n�bC��ϟ�M�ܨG~���Y7�n:��
,�)��,,e?J�=~��	V�G5�<m�\G�d����ǝx��xK��n��M|{�>�vi��Z�G<��{8�ѓ(�\��Y?�1�S��[ĵ`�%�:<}��.�c���D�=$u��ޢ�Z�'�X�XS�gn��s!�c9i)O�݆Tj�2l�ƸM_?�O�^B
<��H��b�o4y�F;����4�����8*W�:)��-���x�����W��|�%�4.ܸq��7.�����W��ݦ��M�G�� �N�0A�N����0�lݺձ��oqZ�/J�,T @l���V�?��Ϝ
s���XXض�-,y�������f�?��XS��y��P37�q�ȴ��ë�=�պc6�Q1iy�[��*=�TfB��w�Nڻw�c)�c����Ll�c�F�D�ђ�(kcEzA����vS�s�@@2�~l��3�|֬Y�믷�b<{���~P��]���x�&��z�h��CT,��L�ǟ-d���An��63f��r�-�p]�� �_���_��W��ԩS?��h�\'��K6���
O2�3�������ׯ�\s�5r��Eٹ�W[�-f���wJ����|���;�b�+�ɕ.�J���8bQ2�k>��
���;���E:�*J��͠:ɑp#�y���M��2Qrp_eZ��`a-�3��G��sݟ�~�V��[�o�=�`7Oi=O���k<%IĀn�,"reLh��� YX<�~�P  Yl��*��E;G��ō�l?9@׵����H�w��u���TZ��6H��Sc�<m��z?���B׎�c��K�q��k���y���b�3��I��Ds�鐆'�s�g~d�@it�c��B<��߂��a6��|�ͤ�wϞ=�kú:g/�#��"�Y�f��"m�c�5�U�d�����`	��������<�@x��96l��q��E�ۊ�~����X��-[�?��?���l��ִV�h}�Kpk>M�_0����bi��09xG\��9�Cp�
��=��g�q
��>eN\����
JX8ď<x�\u�U	ȉ'�~pD}Xw�^@�E|�m���⋮�z��]<�bδq��o�/���_��W����b��@�.xS�o|��6��������owD`�'�����<p�1	�{e�g��FLy�*c�8��gϞ��!"
!�>��:����G�a��5���0��=l`�X����s��K�
�����';u*�ɓ��9�!C�I0/I��8�i=��k�~������쫵O;����T>�<��>R�۫��s��[�z-���d7W��t6���9�]�����7��G���0���Ȉs���Vx�S[�N7�k�7X\7�?hX�m�T:���S�~&W9�_u�Ƅ�h��.@usf�=��~����Jx�sL��Sl�w��6�:��I�3,7�k]�Mp}~�����K��=�Ѿ�7���{�˺r�pLy�6U��+�}��mx�k!+�v�Cl���h-�u�N)����Bn�o�[�P��c���={��TԄ���OP���
���&�P>����N�� 	K�իW{7w`E��dO��80K\��E�@�.��y�����,y�[�^8!P�
��Q�g�����:•�Hl@>���NOX��6
wK�qm!�Bh� Ui٫W/�뮻�zBm2�l:����m���X��MbO\x��vʕ��n	�В���i�h+8HT����_����8���m��1�a����x��o�SO=%��ΰ���`���cKMl�`^���p�
�gI~�~���7c�`]x�о���J�	��y\pp�� �4��N_��:4T�4:��yƁ̳���+gޅ4p!����ֿb,�x�M�Z\�cAgy�NB̊�s���ޯ��_�k��S�䅨y"��,͉�����d�f}��~�>��D����6��
�cE:�Fr܁����`k�N��}�5�3~v��}���>�I�#Z��t�^�G�6�u�~��8q7��/��SGl�eԑ��
�@�a?���+�ySẠ��3�m���H�{]+�{�=z�eɃ��ۈ�gN��-ܐ���^��}<�v����΋��N����>��>��9B�~��?��R*4ɻ��@ۈo/J�g�U�G���a2
<c��j���%�\By�E�@�\)rې#6H��[�/㷟�-v���&�7�|��}���N�O��b��:!�`ײ��܁��y󜍠0Qn2=����M�L��W�6��J�n�C�
����|���7MzM2(�e@�mX���T��˗/w,TS��g��?���$��y$���+���۲	{�w:"��
 �^@��~ÂE@@��Ln�{k��}���xL7Ɵ7��^}ܩ�{��ٞ��ú
/�|C���I�����un�@�]�pa���~�;��0S�|.�w��cLK߁q�ƙlǔ'�����}��'N�]�b�k�>6x��p#�U�mx^�|��k�ua���8�4`����:}�_|�C�u;��p�M��	���d��ҹ_=̌1ֵ�u�{)W�,͉��Ħ;6������n���e��s~ơ�a~A��1��8��每��m���Mj�gwi�m�^��Y��f�.��<�n��g�y����~1ִ��p/gü	k�V����R�ϋM�6bN�G뚱�S����M���~Nll�PY� ؊�5�5D[k)��~R�[���?���.��h^j�o�cl3��{�|��~��툴��;H�ۚo�Xc�[����8ⵔ��9i�mȇ9c��ν�(��	;��*=���O���+{���P{��,N!P�dX�+�X�D�M`�8q���ݞ�QY�r�,X���5E�
k���M���p�%�Yl�C�S~B��1�Qodb�.�fQ�E�����ɓ'�ҥK�G�).6����<�'��X���b�G�
�Q��6��}���V��_��)c*��I��Ǻ4�u�u��M�K�Z�$�}���� iE�Aɜ\�:h��u|+D{��W����}�Y����h9���;0��G{��I�+�+V8}�瀚�&�RM;�S9@
�<�2���",YX��9�����ӎ����ʅ���fqbAc��o1w9���+@�-�,���{���g�=��O�Z����Kאo<`æ�n�`B����)�#6ް�^��?g��=�
�=4��K
­ς��=XAúƳ<kQѨ�DŽ"�E?۷�/�s����B̽Hk�L'&4��T�[���#�����x9d�����Ԋ�6�p.bN�h���Y۠�߁�hNQ�����}4ك$�8���Oh:��[���7KX���ɿ��}�E��G�[�!���I�"ퟋ�ϰ.�)Nen)���X��Ƥ��y^V6�K���j�V�t�|Hp��;�-����klFC�6vΝ;�r��w��;s���&�.�M�wMֿy�駝8��
\�͘1���j�/�ż�bi����92�hQ��f ��k��Dzb�3�w��0Jb��:�	���G�}ߨG���M.(�k祈���hLh��ִa}
bF�~x�§��Y���ZfV�-����:��/~!7�t�#B<K7�_}}��V�8(!���}��',��7k>�����`���煩�y��‹��6p&�%�Y��p�j��[�PDZ8	�>	�a������Ϡ���P����R��8��,�k1K2�n�l�"��_��-�
����z	f��Ќ�I
�ظƩ���#�
��L�C�B8����_4[�7 ֽ%6�/&�"ٳ���n����r@��
��z5a�;C�ml��>�
��h�>�w�6�5T܍��{�
V�����CL��L��!��iK��"�*������N�!�B��K`!&E�ֶg۞J�MYKz+�6�v^�K�o�;��;�i���O}���֒���+grq@��m��]Z����>���TZ}��r������
Ey�9�=�g�Tk��i�ӳ&��A���}G@XzQ\+�@��Q)D#/�
���L��ݳsg��ݨI,���l�a}�ܹ���LXg���*}D�/�F	.��t"Z��g��.p��1�q�!��66��Z��Jb1b�擵�,�a�퉅!V�;C��w��>q��l��
���o�;�ù�E�i��[�1,�w����Viʪ�P@[b�C��t��M.^t������W���R� �N�4�y$$0f�:<��8�c��\��3�6�4�ٟ�S��ġ��/��qاo߾̹�RV��������������S��	��:ncrk���l�������!q��#:>7m���9��)��6�����q3N�nl��i�u�������1n��8�M�����:O�A��Z�"`�y��֏r��EWP6:c6٭H�����؞U�����9@���ڎ5}l�Lj�i�#Mz�|��}�F���0�V4�{���Nߖ߅�p���-������u���Ih�@*���C#�x�!�,����CQM�*�v:�۬
����0��F��9L'���Am���5��kamXX[[+K�,�t���������@��ݜ�c3
�����9s�t���/��#Ω�:pq}I҈��%�v�I�a����o��w�hg?�:d����0W/��:�,��:����z�e��ɟ ����4m�-�Eb�BmIII��n���?;��7n����Rq�d|�P��Z-�վ��;�|�Ud�����_�Z����s�úӧHK��-�����W,_uz�\{��C�D����v[�ҳgO�Z���`��nݺ�?ֵ�*]O充H@[�E��טt��փ߉k)��G�8ָp�x���6N��oz�
��A��dq^T��sF�)?9t��X�y�w��n
�0�b��&9G�-�
&�e�F|m����W�꽧���w�
pm3蛊�~\�
��kEZ�cii��(߭x.H@��|l�D�$�;߭�=m���7�@R�뱦��֚�4ݤ���tnsA�,�Oc��M~��UD�;K��ԅbiu�l����y/��B�M��]�?-���HBH��.hai۞h������k-f����ڏ<�׵4�(���T�Y��p�=%�x����Z+��?�B�M�\;�k�������\i?����oe�1��+����%-�0�t��U�V9	��J�(�W$�.�(�B@�&V!�J�e͎�O>�$.�2�^�b8H��۸����Ԁ����T��P�=�챱�n�J����v���~�1^�P�x�5-	?�����x�8����0�	�^�b�F�d�
؄��B(��\����c����1���p3�qp�k�:ke籨��:,5a)x������8�[��[\q(G�mW-�K�=�e�J�b@c����Vi��G�ϖ�#��.t�~�t�[��A�^Z?/J�Ř,�֚�'����f��:�ϻ$�}{��K��?�
�K=�^�丯��1
B��+:����/�V�6�9�hϳ�t��R�cM�֋��*���a�d[��$��>�lٲ(q�>}zT�'���m�$���hiii�����F���mޡQ�9K��=|�{w�w>|���;o����޶�k�ĉ�-[�t�}���I�l^!}"�uD.��u��	&D_~���ѣG�*ߗ,Y?~�7�1���4#.�m�h�A�~�/�����G���9)�,�U�v[>C�q�u�ƍ�I�h�Ǧ�2�W���sL�X�6-�ӫW/g\[�pa�b%�$����Ο??ZSS�^�.�/1B~X��؜��46
`M���n��&��1���h���u�\�F$��̏����F�u�Y���;[�$�w�G}U+�!��k�Y�3��}&�������'���^��X��g�8�ݴ\�G��n�о̺��Ds��ls�I�.�����f�'�~����������5�������w�R;���ʳm��>/`�`j��`�P�u���)ʷ6��x��Eq��xz뭷��ôi����7�R\��-B�w�}��0c����q�/�-�<;��*TF�e��W�V7��
g#�\)�>ܻ��-�tL��f�[?�����>�,���uʔ)����fg>�o�=�����ےF]���xc�q��E���h}}=;	�s1�t�GO_�i��\�[�'��1}�#��U��7�D�Ν���1u��ד�4>Kk���>���S7��&va��+9�#��g݊"���TR��5"���/|��؜����(񄊡`�n��� ���Ԍ#���@�
�|��Ӓl��7	�Uǹk35�遃��(�@t�u�L�!��R�C���=<�m�|n=m�T�����˟)�z��#�̧vD�v�Z��%X�3


ޓ�zE-Vy8]O���;�Dh���v,�s%؎���t=t�P�(�W���]����!ǎ�N�<ٛ��'�і$UTw>o�رѧ�~:�ia����ٳg;����_�צr\�~���߬Y�l���Έ$��7�O�w�P��믳S ��#��#F�
��$��&�t��5y�7X�?���a�.�b�6��_�������x�`�*<UQ7T�Γ*�b�v7�Rڴ��
�K�	��t��ϱr�b̓&�O����b�u��<�o,?DCiucY�V.i��n~�<�Ȅp�#��L��2��1�T�W�ۗ�#�պޕ��)���5�8�!���G��}`�e��s}�*u��%�,h�m�n�9�e�m��������-�[���:��㏙A	�DKͿ��U�⦐ce[^^��O�n��|��'�e]ee����<]���
��X)y647�d�]Y~j?��"�D��Ν�>��ÎKwO}~9Y�����`��.��t�&�5S��JK]�w�����:F�}+�.�\��������3�!��9#�Y�Ë��,i
�A�6=�[��S�;v����=�񔖸�3k����	�E*L���4����&��:6�VQ���'-!�,1]��㺜�6�|�Թjy�TgZ��w�����>�,k�cji�>��K.�|�f}	�S���v(\�z�Ċ�=��)Ku��ǂ;��lP۴Oiv�Qlʏ1B�n�*eeeB�fǎr��7�<7n�,_�\��I���F�>}��\�O��p��Т5��k�Z�H�>}䮻�r���:9s�=zT>,�7o��Ǐ{�w�IϚ�SP���.--���~[&O���O�
6�#�<�5�6�t8���V��������pΜ9��v��-�>���X���Iu�N3�~���i��`�Gcƌ�M�6IQQ�F8�s�Ny��'e͚5x� ����	��=��RSS#���N}$$L477�c�=&�-��4�3�E�^��=�j�0]K�&N�(�&M��S�JEE���ɓ'��^�u��9c�rL��b��I���؜.]t����0�WH�1u��ΛtVZ�3�TSl#���X�}c����Cߎ�������vu	�?�O�u���S�Ӌ&Ϛ��_��
Ql�^2����t�|�t��h��r�Ǹ��K�m��D *}�W{4����к��I��O��Uoh�ų��βv�<ӭ��:;�E4��P�s�]��:�l&�6B���ҧ��4EC2Qlo��2)�B�FL��w�}W�L��ڕ����v�ȑ̐����e�ҥ���?��"S(),x'�k�0���m5i��B�n�]�N�GC|�����g�'����¸�"8NxN����k!&0�t�8�p�B),,dF�����*J��xD��(آ�kv4Ę7�xC��{�ٳG,X�T��N�ޤM	�;��/|���a֬Y�裏���P�k�.y�gdժU�W{Mz��q=Ǡ�8�!��j��7a�G��6m���ݛ�K2
|b.�~�z�+�����@�͡��k�6���
+�c���k�ќu1K�m�l��������ü�����hE\L�G�{|o�q=O\�|?Du}62!�^HD�5��
x�=ts4����S��↯BL[�3����8�n{4�[��b��]��1/i�~�늻��ǣl�$��
����cn�SʗsU�u�a][��P��3H�ڎ=L[ =���m��.�0���l�8‡z=Vgb��)~����Nf�NX!VA��,?�Z�ZX�A�MT"?�ȑ#�e,nu��kIN��)wXLcc�ـ�7o�TUU1s�ॗ^�^x��
�:�ve��@�׶:�u�Qc�U����gG�B�����II�j����)M����:
��b�ڵN�A��c�zJh�8�5]<.SǏ���*++Y�$�`lY�x����:ψkq�3B$�B�@�<�|��Er<����$E�6
�ֹq7q!�^���)6u���>憐h?،�d���7�YX�ѿE�<�Y)�5ʡM��cU[��u浧������������Fr�Bm�pg���ۤө�G�w��c�����yھu�
���jX�H'�/p`	��E?��?ߎE:&t��"m#K�|����:s/U�
�`;P���>�LF�͚D��̙3�M*�Y�
^_�p�,�>6i�Z�;�
b�	�NC�U�����=����r�M�ː!C��wD9�p�T{KX�͔ܞT�l�I�%��Q�!.��:�f��~ڑ��c��h�nX�=��soI^�u�|��p�+q-ns��[���P[cY]]툴_0F0ׁ~PЈ�כK�	�`�X=t]�
ݿ� ������PK��~�?c�� D�^����Ez?M:�?����z�_��'�5�v��!�#(�>҆{d�ۊ=ev��2V���	����,���a���Jb���&�:���l�i_��Kwӱ���l�hs]�d�bP�kM[�m�ݐ���n:��cL�;�k0	�`׌s�Y��;����q��	�]#��D����Ib jQ����u'@�r7Sju��W�^�H�ק3ŵ��W:�`��2N\�;�:�|��0�WI�.�qh�����	����3��u��Y�,��~B-\�������<4A���8��q��)ɲ�zH[O��j^�=k	
Z7� <���dڞ�W��a9%�ܺx�=�2�^�(s^B%�uĺGF^_���*�����M��̭��ցm/H�"L[�V!s�&��9��ܿ0�q>�{�<�A�Ҿ���qH�|o�jC�~�m�t��si��=���"��0�NӲ��A���r�kb�mXl���L	�����'�HMM
k
�)��w��Xᄻ��6�X�@��k�stb�R���S�N	���%\g�.�˰�Ф��U�ڇ~���3����:T��u�}Ҏ�O�XF�}��>�������¡���2V��رc�<��S^W�l!���Gb�-�r,p��? ��PHh@8�����%
��c����ju����?��ױ֐ �"��0,Y/'�|^�Z�P�k���A ���/H�E��l�C�+�ziu���8Ot#+�}�C�c<iLu9K��x�6������>/�z���!�B`���	��I]�:n^�}�^��zy�m�����^:��k�=�=�A++ԢM������z�8'�%��5j�[Xm���;���	�)w�}���Ć�~M3,�N׺V>��c'�?��7�q�+nl�<��Yx����e��̴q��y�1c��\鄲m��x1�i��0F\����˝��<4@��^vcS��>~�R����c94y�d���P"	3uuuΡ�E�IC���
��ɂ�z[lj�"j�y�v�D�}bWm�>r/��+�x���A�/:A��VK�b-�C&O�;Y/4<��M:_M��'��-��u[�T��N���kM���:M�.ɕq��@���{\���6O��^�^�j��>�>q5�P��z2ʆF��X�tLʹ�m��mA�Q���.����s�d��-#^b`���)�f�o���}
��c�z�IM�
zXrQ��,��+}X��+��ת�33[��0�۷o�XK���;mn���~]���4�n�pH��j�!^�_|!��Zzp���W_u��8��}O��~'���|�5��h4zL��=��
�5Y�ν,���fX�\�尟bm��+��`���@PI$˧'R�NtA`��H���:ijE8�������{��,�G`*�:�>��/�V�n�Ѥ}�%��{�Z?�~#�R�sx\(���>�Z�	��:E��C!w[�p,?6i<-I�@��{�u�k1�	�[�b�l2�@g�x��4��B,,���e˖1���{��>]n���6Y�	���Z<���`!$�?x��w�:�ɤ��- �"NE�
>�ϙ3G�
�L&y��aq�ֶؔ���q�3����؜��-,�tʼ�k	*j9s��b
,p.wT���W��F1\�B <�����k�1i'7�S&��>�2�R2�e۶ڶ}D�zR<�Gٸɰ�=�6OHJc}_}zV������KsX��B�8]�N�~�p�ἦ�\̇����I�ٳgO�(�~�����wT����{���Cee%.�x�g;����7�d��/w�q��Q\7�_�\�Ť�]�&���:7k��>�����:�9m7b�L��v��8�H���R[[+�=��TUU1cI�`׮]��c��ڵN�x�BH�?Ir�:$�-��`�qB�5��ՅMY���F�C�M���+Gl�6����DH�v�ˆ�z)Q1%�m2�x��(��䓹�#�~�_p��'“
���D�^C�mb���}�ӧΡ�6��|I�{~��9{�_�~6�!��ҥK2j�(gC�p���+2��R+�/\�p���d�իW;1���"Y����:�`���X�Ţq��@(���7�Ȋ@H�ݼ��N_��"nL�8/�|�Qp�(O�8Q�Ν+cƌaF�N������ߋ�}��,���C�붰6�0`���
?HM��L�چ`��?������m��������&�?�o�z���F=g�0G $O�X�v�v�ɗ�5��	����m;e:.��?5g��6ׂ�(��� �_��7�xCz�!\Ÿ�
�
�e���,{��0a�|��G,,B�o��V�.�쁗FYmҽ�>��E/L�>1i��ѣe�ʕ2t�PVBR�'�p\�*���	�}����MzԤBA|h��IH�fÆ
��3��C�+#F�?�;�-,p���-	��m��o�m��gA�-7^XW��=,B�m/W�|�$�9���+��Q�1G $����:��L��9��8���n��Pgu�۔�6��`[����:P���XH`��D?���[���ٸ�e-!Wr���˺u�d�@4[���y�5q�	�����k	Ix����츏��#8]����?�����(���N���ӧ�5�Ǣ1������������4���7'�u-6��yK���.�ZB����H�'y��&���!��O�� �t�q�c��� ܞ6ϏR�%�öӬsT�o��q�[�u��._f,klf�h�ig�vY�ۚ��!�B����A�v���׃+Vl���`�j�*0`���:��y��I���?��&}�v��-[�0V9!q(**�e˖�y3��KL��	��m		�} ��j�	�`���GHb��rH�N`7�AcW�ųk�Y��d���E�&�gn�p��l�>�3��.��������o�a
 ����v,3M;X�C�Owq��I?���M%�֬Y#��s�}�;�~W�hQ��[���h�S�L�w�}��LH�8p�X�B6n�(w�u�̞=��BH,^�XfΜi�.�Y�n
�䜎���Ć���ư��%O„��؏A�HX�5ū��r��]�3�~�eK��������C�W/�.��i���+M:�?�(!�������I�s��F�F�&�ׯ�>|��N�ҥK����N�n�%	|5~�s�~�)��X�`�<�䓸��;Lޖ��ݏ���b�0Ԁe-,�!����S������E��֤ߋ�').�b����u�Y�$L���C��>�#Gc�~[�Ĭ�k^�%K����/��`��clU��I�q�l5�;�Z�e=���BB6���bl<������V�]"C�=s��9}�4K����Z�M�a�i8�s|;N�0�B&$1`�6l(5�]ӆ+B�5�^�N���˗S�%�X����?�!C��)�Qe�}M����uu�+K����F�g�C�Ώ���
����:Ò $���{�8��5��=q����ZB!!a]{J��R=��S2q�����7�8	<�ƍ��Srx8I�M/�>}:��Y�d�=�0̤0�|դ�#F8bm�=X��B͍7���9�H�>Wʛ5���m�I}Y�$�@0�p�%[��
���&e���ơD
dL�8��{���K�BHH�_x�¡Cx��k�6c���͛Y�$� ^�29��1֤�w�y�TUU�PI����ze�P����g!:1kJ�B	�v\����1&} �m>,֭`��{�Y�$�W�ͦ�ke��[�,B���h{��� ޣ��8������!��|����s�Zږ���T&�uΏu�X�$�:@E���J-�3�BH�4H��y��Uӎ��G��2.`%[B!$L��ʕ+e�08���X�G_�Q\+�>,i6��(��j��FD�Rm;����+@�f��L\K�},.B!y2�>i�uΙh�)��$\emݺ�%M,[�q9��<��[oea�>��L�:Ut@��۵qkK��n�	!����C�ʚ5k���	#/�����m�Y�wcI���m���`���<����F�p�+�EAr��q��{;��w	!��|�mx���'Ȅ`���R\���+,ex<B���-l	I����l��tb�o�9�FTWW;�	!��0s���ˇ~h���v �Bx:m�M,eB��;�����eKB|B���K@\#�5h`��l��K�BH���u���.��2�ZJm�+dϞ=,eh<�Hs��a���֥!$��|Μ�=�f,
b��Q&���8��!���񈶰���t٤�&�%֐���$�=p�BO�L�G�)Vw̄��h/R����x���+dB!y�����1�ڻds����V�⩧�b	�@3dȐ��|�os�,B��-,W
�M��ۃ��&g͚�lnB!��ĉ��_�O�6��Y�Gō]kAX��%LB\zgE�U�9f;!��G�0&u��[�ZW����XI!��3�8!ؖes��ia(�u+W��
6�xI`�ׯ��쟃��t~TV� �����H$R�[�aҘѣG˛o�ɂ"��w ����x�o���V�Τ�&�d�%,a" ���5���Y��̰_�S���lT�=s$��9!���njw�oWaΖ�L~|=;Alae����R&��gϞ��"�|f�=X����i�d������X�B8���G}��D!$oy뭷k[C���mX��[���Z�K�����BV���T��!��v�d�=#&5b������1��,B!�hƚ�d1DA�'�2i��͛�ikBȕ8���B�!>ᱲ�m����Tځ��O��"���,Z�Ȇ� �=����Yq7��9c��0���lX�E��Y�tV`K�\Y���Fݸ&�B:
f�;��oV��fZ�m0�&�-_�\^{�5�0!���2e�����%6V'�v�6�٬�u-!������_�O�7iDH�p�ײGM�Ѥ������dO���-!$3��mg�$�V�ֺ��~�!��N�>�2=��Ƥz�I3q��#�Ț5kX�$P\�p�^��`�󣮎A��L�ܢ�>��[�5���	��HB!$�4i�7��ɝ�t�JX�º�I�I�D"]�����qB�!�bFg���ƮmVw�BH�C�b,�k�LZ�f��J����=��#�֭c)��p��{y88�!>���ˈ�A�83��ʲ�[Ǻ�����B!�S�ȣG������B6�O��G\X�a钀q岦L��@;)b�����K5eK���D/q.B!�y,>��^�	���l��yѤp����-	�v�j���;��C�X��̸q����������e�ԩ,B!�����;w�}
���B�0o6�u��I}#�H
K��+��f����6B[B2���@F���Ѯ�ܡ0z��O!�8�r0��fք�V�g�����̙3�̙3,b�s�m��r���G#8p��Y9p�	�i�Zt�\	��/H��%�B:#p��^&���R�ĵ0�!�*ZڒWm�Zo3
,l�h�Dwf=!'��똚
+[X��
�If=!����"��g�5rA�,m��ݻW6m��R&9g����2Wr��c�N!>�֑#G�r�?Gf��Lr�o4�!��)y�嗥�
â�5�1`�52D)�����k�
f~q3K�l �k����d�U�zB2:Չ+�v����X�e�B!-��Q�黗�l
���u��u,�=�*	�	���uύ��st[�[��@��8��
bX��ʷ���A!��RQQ!>��}�0���uj��l7�q�w���X��&�����ɂ��f�`���%@Hƹ�m<�c)�.c#���sB!��rP\�6�[�fC��n�;�
�Oc_SS�dX��K/^l/��9��݆cٻa�!>3qb�N;>�����e&�B:-s��q<_��4+,��q� �V��h�
?�p�@H{���&���佨��YN�+�e�s�p�|�YN!�\�Yb�ձ��CT�l���I�ݸ.D�O?�T>������Y�$�;vL��}�tqoJ�Eb�=B��W�����E��}O��B��̚բ��5cr��O�U-��&�1��,��t��F$�`
�QP/g�3!â��i7E,B2�	q-_3��q�����B�Tq����V��lq�r�I_�4aȐ!Ή��˻�kOV�s�|�I9|!��}3	ݑ�[�bz-.V�X��!�G�w�.�G��e�I���JK���BH+�:1~����r�=�P�E�
�lj
q�gX�$蘺{����O�c���2[X\˒ $s���ƦΤ`���l��BH�c�%q=�je�`�cӈ��8&����}�v�7o�8��H�ʕ+e�ҥ��X�dn�Qj=������n/Gf�#��ֵ�Bȕxb������?.1�����q�?j�e�	:j����+�6e���F�a��
?ci�q�t�ʔ�D�'��=Ŭ&�B��I=M*���֯�V���I��I�e�Y�d������H���䡇�O��F��p[Pj�"��ڵkYH���M7�d/Gd��p��l	!��+�<yr�lժ�7bª�I�7��H�����Qq�]��[݄���w7�'�������U|��g�Eq�w˴?!�BH��`b�X�׸�`_�_�4	V�˖-�?�Pƌ�#����2}�t9y�	ñ�4��rkp#��-bA�#Ço����aL,�XQQ��'�Bb�X�>���q�S�p�7V�?tqjYJ$L�j�Z6�'�;dle;�2>���${^m��PF��_�w)�Z�b��YM!�t�!q�4��ae��`k>�a��W��L�0A6o��a��S�N9��6mڄ��Y;3`���n��	!>�qɟ
�c���og�B!q��muu5.�L������46�a
K��zB���`���p�Iߋk
�:�7�L�H'L���W	K���qQǯLz��k�̈́BHǘ5�yqK��16�,ؚ	����ULf̘!}�4�%D�ٳg���֭�S�@��Iu�M�Fv,~_x�!>1`�{�
��q/q�m�1�	!��6�2�E�͉[dk!(��6b����
S�+��oM�#n�,�$ΉE��-�)M������61la���<��BI��↍-J��6�n�Lz�.��y�y뭷X$$� f-bI�Y�O���k��v��C�+V���O,�lU�5�O!���"�ᄖ�6kˬ��.d��(c��a�1ܫ��MB̟ɾ+d/�q(��Iך{,gI��P2ca��q�0�	!���0k�c:~v7�@ʤr��4��۾}�L�:�%B˶mۤ�����.qO,p���lϟ�FBҥ{��2ӛF8�<C�e�B!mPXX��ѕ����^�Z���Y$lD"x����
�p��
�K�[��Z��U+�H��"$#m
�3
%�
�6��"q7��2�	!����a�rKS&)��,�����R'^�ȑ#Y$� �/�Kٳ�d�.�����v�Ν;e֬Y,HB���bX��0l!��?ܢ�N1���,|�7fm���$������u-B��2nm<`e{ΤC&�6�{-K���P �������,&�B���$��	��3f���q�駟ʍ7��" �eѢEr�ڧ�{�/fm[`b|�Ig�y���,PB�A~0�;!��1Ç���Nj.j'e��`�&t��F��C,6"��8�Pm�7&}'����~1V���e�@!��K�{�j�ӝBI~ܠ��n�F؂�[3�m^��%Kd̘1,X �>���&=�El��,�1\̜9Sv���%$E����eC�?�l�����BHL�Ԣ�N��Ga�[&�8��9O�F$��L�R*�z�=������`	�k�M�L�@�XY$��?#�B��I��Kn�;l�4��&Ϙ1Cjkk��$�lܸ�^�Ѥ�B�U���.~���˾}�X���2R�<�43I���꫙�BHL�ޢ�N0���}��[{�I���(-�H�0mc��3��֘��b
���V��:�F��2�ngI�ا�X�h�=bx�hbB!)��8(��[�D,l�7ixMM����[�rx��.{9C'�aV��w���lh�:u�LH�<x�^��G�v~���L'�B���B&O��KXM����t3,k��hs������ӻ�‚��e���0,�!2��D�cQ����Ȅ`�1��-!����\L�-r����P3�z޼y�q
`	>b�\"��n�.\�w�
dʔ)m	I�ZtZ
��BH���V����/��r�,���hV����9�[����v���H$ҟ%JHڔi����}6��ńBHʜ�pUJn�;��}٤b�Af�Z
e���2l��xq]z����Ƥ]�ׯ�njB�:��˝���tB!$A&Nl�ik4�_D�պ�]!�0c��1]�d`��@�U@ƉcĎ��I��vޏ%JHZ�Զ��~�-c�B!�sT�=��"�)ؚ���sUU������f*�*k׮������|ȿN%�-*�>�,dBd۶m�2ӂm�󣸘�N!�$�"��3��W�I>�5ǰ�-�F�G��$�z|\/!�IxD[��ý�׵��Җ���&0[�]G4�!�����I�i�o�v�ܞ���1i�$gMH؀h��;�اOKfܬe��O�Լh�"ijbXBa�ƍ�rs�B	Xs�K��V��2�I��F����MaH��Dۓ�����?E"��(!)�ݤ��%,�ڰ�^'�B��Y���#ؚ�3��L��?��%������-��!b�&}��>k�,�ҥ��X�n�9r�;���a�!�<<������]�u�|�9L���W�{j?Тg��bm��֛y��K7儤Ԧ�RV;����	!�������:N� T[�{��-��yȐ!�^j�̙c7��v���:���W��1b�#@���,XB`Ŋ�rU>����f<!���3r�H\��D"#}xK�d�;�&�B$�0uB
N��@B ]#{�ZX@\v��ͽO儤ŵ�3!�F51�!���|�e��v[�<y2s��o��TVV�r�I�~�8)=�$���U�q��9B�����1uuu�t�Rх�,|��`nn�AgB!$Y0�U���CĂ����Y��D�Q�ڷ��ce�jq`�*�Ǔ�tc��!i�/�u"X�6���E��B�x�I:�mA�	ޠ�lI�0`�y�����x?p}�]ﱲ��F�,Y���P[XX��$$A�}�Y{�.����Gs~;��'�B�d���v\�o��fX�۱��<�>z�T"XTLBۃ�oOq-j���Ȣ"�`]k-�3Ѯ �^�>�B!�qN�C�E�S������3f�TTT0[I�0w�\;v,.G�ki$�LzO\��ða���'�|"���,<B�d�޽�x�b���,},����Y�BH��y�����(�|��o���2��d���V�}L�l��IYJ���/�=�TgRS�b-�EueVB!is\|l����_�,%yǴi�����%�@��cĩ�ܿ���l��BRֵKvE4ݚ��=�8y�@!�$I߾}e�pg)Z�D���VX�B�e�Z��x�SוY��Ump��[\���O�X��,�H{B2��х9N!��9�������)��p�
�U�w�-���0"�1�r	���?.�������ڵkm��ɞu-��س��@!���-��b/G��6� ��3GI��FqR�pM�&�zb�B�E��s�^���R!����6B\�N8��)�h�MB�ȄB�_4긚�7�x��@����N��TWW��9�
��~�I7���~�m���d�gϞ�'�x�>�S�b�Z��ڽ{7�BI�[o��^�+�K�6�		�X\w�E�0(��Y6V-��,B2B@��E�yɜ��:v3�	!�_��mWIS�-w~��3;I^2cF�N;E]8e��&}�f6}�tY�n���f͒�;w�r�I/f��q���r��9!��$�F�j�L�m0��5-�Hg�I=$n�U���\ G�ѽ&5��X�j�ѵ�iq�h�>�
�Q�m	!���A�y�	��'ؖ:?JK��$/1b��;Vt��M��8��9<�?�,[�L���X(���< +W��%\�1G.�v�Ǘ_~�!�B��'���-cؒN����7�v2��I}Lj�d�>!�#���8�k0�I2<�Y�1r�BI�:GO8>|<�������$y���n/�f�#���y܍���2{�l!>��oȢE�p	�b����V��֭,B!$Iz��)Æ
�eE$���D42GI'V����V�E�ړ;��!����ߚtԤ��>ϴ5;,w�`ۗ�@!��9��+A�$x�2�`{�q�"s��-��v��̆�-Bb��ٴi��?��@�O�Y�Fz�!�b�ގ��nٲ�C!����7�h/G��6
��swkI��O�X{��j	�
��=��G\�zɜ+d/��!\�" �B|,J]�R�%���Ç�\f���F�c��L�0AV�^-�f�6l�{��>}*����-m���/,B!$n��t��vC��-�L�X~���2���f�͍"B2L$���1�w��
��i{�r�[��2�!���:��,�s~;Ƭ$yKeeK8�L��D��#���eŊRV�9/!~�������f�bn����ݻWv��B"�B�D]";�i�
���27I'"����b-b֞0s�:f3!�%���<�7�[��{�9���ς`�l�K�B��<=�`{?���Ϭ$yK�=�e�ܼ`a��I�Ǝ++W��^�8�%�/p�w���}�B4}2@��?ઙB!��'X!Q�%��q�k�l�
�����k�c�Y"�H�y�֤oL�'�ִ�ho��%�쟱T!�������0+I�ҽ{w{Y���G�{Ϥ��F�r��~��1�	�W^yE��>��I�~}&`��(��ׯgaB!I⃅-[��+bn�΂�7�:4����=���ۤ:��g�Äd�H$�[�Pe���zmB�k̲X�t'���27�!���Ǵb�"F�|����JBRc�I�"�V��A�1G��_{�1��!�~]�ۄR{rݺu�{�n!����r�L�H$���JX5ꢘ���w�l�ԅK�3�>�l%$������z|�I?�tʤ���+�v5�֍%D!������p:���l1Ah@��z�(�K.\�`//���#Mz����:��M�\�tI��?�ҥKm��������V���	!��m�e
�[l6E"�B�&����M ?������$��"$��ؤ?��
{�?H��Z/�ŵ�ƒ"�B|�K���+0s�Hށ�/����H��K?}�m��x�1c�L�8�M�O�M�����mҪ�߲���ʖB!���PS�¿c=���27I'1 �\N�=p���p�|8�^f��"�F�Qۭ���@�k�V��zڤkXZ�BH�ؐ=(.h���c�֭�J��xb4�)��3i�q�䭷�b&��O����X�ކ�)�
�v�M�d���,DB!$	Ҵ�p���櫘���=l�*�@��&R��q3�2K	��f��2	���6b�h?R��Wb�!���a(X�t�¶^��{�v�Zf%�K�m��r��[V��(..\�&�Gz��)ӦM�%6�����_�
��BHr\}���
���f+�V27I'�����ߺB��.]!�A��(bt�2\�1霸%��M�`{Ԥ�Yj�BH��j��!�B�m^�z�4551;Iޱy�f{釥L�_��Y�d̘1�`B|F[K�Y!�m(���yÆ
,DB!$A��Z<!W����!�#�0GI'1g/���,�����NB2�ifW
�uY��&]e��r�!��2���nak&��(Z��o���$y�ƍ�*�tQW�o��&3�����˖-�O_7iRn�=�p��k��	!���߿Ű��o+�:3���26U��!��2!Y�;��j�-�to8��x�p�|LheK!��B
�eaV�]9�|����|n��ư-6�9\���2s	� ӧOX�����Yώ�mC�m^�j��ر��H!�$@�޽[.S|�kO�4�9J�3' ��rA�w�l�k{�t��IH�Pk�}��<hֶ�O��l�c!��2��J��-���[ǎc����sa�o7դ����1c3��+v��Z�g���âV��<��BI��ʖг�Ơ�&8N1�Z���/2WI3T\+8X�&+آm�9�ƍ�I�"��5��*��L�j�rJ�P�d�B!)��Kd�4�-�\/X��YJ�={�,��=�����1u�Tf.!Yb�ҥ�C��&-	�-C�=�P+V�`B!ЫW/{�;���|�-��똫$����*�&ֵ����Ǚ���h4
+�s�Z��5r��D�̭uc�B!I���i[�G��&sCC����_|�^��	g:��1�a�Q���VBH(((pD[�o7ٴ�ڀ�2@9浌eK!�tLEE��t<i�8��n`��<�&q]�BPIv��P�I%�h�����a� \�Eq7tsk�@qԤ�XZ�BH�X���CYL���L���]E7

ͧ"(�"��(�B�`p��с��W_s͍�W��w}t�ȣ#W_�2r�
�a$!�00(ڈ4_�`����u����eTW�ǩ���yVש�S�������6�ú�;w�SO=�b%Y
�k_yŋL�ɛ����Y�c�~��42h� ���~�>�D���q�)ٸq�<�裬@B!��u�&�;w�f���	��M2#�cT�sK�t$,t*"�@詔��CFX6�9��$$�?�Da�B#׊��@�<˛M!��x�~
�N�[�)��
*++c钬% � &�$�r�̚5��KH@��3f�
j�����x���!��<EEE
���
����:װTIc����%�p�]�b��EIH�F��G�ذ�Fv��b��x�!��P�V�l[l��a�>,;~��<���,V��,Y�D�/Gdo�q����7��o��f;v,����_�R��C�.������\��b����ZV !��=z�p��lϊ��͒%m�[o�|k�%&�����gBB�����U��/L^�X����q��k'�!����[�����M�߿?��n����b��0��;�$�c����?˂C�5h���=aB!���bvK59:�tg�����v�b�*i�w-@8�n���"������2/[\/�я� -!�&�Ŷ���땣Q\��p�B)--e��l���ؾ���z!`���Y��d��{Lƍ�ͱ:h���ń�t�ʥK���ڄBI�E�NL�C��
<�j�S.蘧�bx�&*؞d�.���1;G��(/��)�l�T�l��BIq����%��zUU��}��r��Q�	=��͓իWc+&i������o��LH���;��Yp�;���v��
$�Bb8}��۬j� dA��8r�d(G��hۅ��uj���=���l�*_�=�R%$�@�s5,^�QE�V�?���dV!������`.ٸq�79~��	3	-����?tK2��kȐ!һwo4!!ࡇ���=�w�f����T��z��[��>c%B!��q��������,e�Mh�����%�]�	��Dv��Y�S4�a�>��Dnj���S��˅F�X��Z�^�Ʊ�!��VA�V"㴩��~����J׮]+�f͒S�N��I�X�d�5��l�MI�=[4h��1qb�N� K��V>|X&M�DіB1���/XԄM��'i��¿"��j�D���I6�ms7w�U�=
+	����,UBB<Y{�94X����r5��i��	!���<ҙ��8"�y��峽����2e�|��,u�Y{�=�4<U[���1��MH�X��A���%�nA�겲2�?ݵk+�BH�SZZڰ��ݺP��0�ݧ�z�З%N����sa��Hb���
�| ���E�oaX�"nje�"���n�C�*#�B�aZk��L��m�H7Ŋ�[�v�_��C�f�;�8�Y𬝧�$_3.��B8!!b��2m�4lbjF�6&ʦ�����ԩSe˖-�LB!9��ݻ6��k�!t!�#B#C���DxcOB	<k�p��U|Qm��X(dG���gY„��h4z�Ƌ��
ӱ���Q۩��^ѳ�B�&=��l�>�<�7c�|��*�������e���,~�v��ꮻ�
�E���S�uEޟ�"<!!cƌ�vJv�]���رC���z��B�I�m��6�'{�6���!�0'ڎbɓ0a9kg��q��Ux���2�0��l		?�e�ɧЅ17�����էj�z��j#�B�)�%���u�XىI��1�X6f�N4��/���bY�|9�V��{u
���-!!a���:P,̢C���mj/�	B�c!���|��nsc*�o��N�/�"��'j7��d��(����:����^��x��sv/��^=K����sP]��
&��:��So�k�wXu�BH����k퍝��?W�V�;�&L�ŋ�*HJY�h��r�-�}���~��hI��No���s9������K&M��M������i�c���A�~��TB!9�7m����ëhS��'F����V���~�D��&H�0�M�|�k�����
�炢,mB�U��E�U�7���c���K7�K�Oj��Z�.�"��{�����W�M��s���;7l� .�ѣG{�xNH�X�n��v�m��SO��~n�o���SSÊ $� ��1.K�R����V�^-eee�TB!9òe���USF@�=,�$3b1#�m6�<�5B҉�����dk�A���<ْ�5���'$+�GNa���&Dۏ�
�W�k�
	!��0C�Ok�芭�o�SpK͐k�۷o�Gxێ9қH�8q��8p�@ViUUU�Ȓ%K�K�j���K�aTz*+Y!����c�6lf�πgE?l�>Ƿ�Br�5kָ�e�>�`�H���f���4B;^�1���\7�۸���mg�ß�Sx{�v�M�$Q����=��	�
0������z@��k��O� ��ݏ�
	!��0��OqpF�p���ef��o��رc B&��}��+��B���j9��dȐ!�� 0��q�EɅ^�*�A�������+VHi)4Z�&�i��t�;&BH��� ���?�	�'�1w�\�֭+�BHN�~�z/��R��&]�kbXm$9i�'�B��t���C�*������-��]aN�V�+�iw[�;�Vm^k����-!��WcQG�l�����5l7��BH��cR����X�Q�ց䢏�a��oT��с�Od9��L^^��3��.��R/�Y��_�~l�+W����Z�ğ0����ǹH��02h� �99st��-�˱�
�x���˃>�
%��3���nsq&��wr�"T2D3�g�E�����!T-�R
�$�])�X�9x�"�‰�BL�W�9M݌��dXD�%��^��U�<}}Ԫ���UG!$ǹF�������@��c����j#������dž��9�<B����߿?�E��h#�1���j��%-!r"�_�}x����c$����?p�6/��<%����5��Z�F,6z��7eҤI�HB!9�n�^{-6=�2��S�7�{��w��U��P��۬���A8�6���a����Q=�c���D��p}�E|�m�?¤���͆@n�'vi��J�f륯��5BHV\7�ܰȹmk����k+�ϳ�b�q}�	�!���c�ڟ���H3�Zߚ��Y�n4K���y
�����i,�w�y��#�X�l�,]�4��
@��P�>$��?���g�Rz���6���p1a��j#5�߇�J$��S,Z��m.ID�M6&���@yP º0��¤t�+4���PO��ܘ5/�<�&�an�+��=�K=��l��a��]kC�<���C�{rã;�^�A��BH�\B}F4T�g����^�N��!�ox����_�=[b^�s{�V�\Y�j�*�:u*�GH�������_:�	��jpa����Z��#���^�z5l��Pe�]�����ޢ�k'�Br	����wQ���4XM$A�dLDcr�s�
�/��`��\1�S�kn�؆�[�߹]���$;��8;Nm��t�^rǬ=դ0Wm��Z���ά!B���"��\���A��g�Wz-�b5B���]{��޵q�C�9K0�yJ��~�a/�m�>}�RB¦M��P��ׯ�DڣG�I�o�e⋵�!�	�`�o�qVz���6�,�B�}Om��)S���qB!9��S��駟vO�F�a=ր�c�Y��N��A!V�Q�u�M�����8��j�Q[˖�]h��
rV!��/j��v�ȅ|6M^�A�汦��c��0\�X�ڃ\\D!�40A|���X���~~.���&�ܹs�ܹs�W��UN��%K�x�(��+dĈ��92�ߋ��ζm�&7n�h�& ��~�Zy'N��C�TWWK�.]x	"$d���4l���j�M�&˗/�Ν��@!$����{����7_ɶ�x�&�!iL,����Q��(��կ)ek	7ZO\� �V۸���� ���ǒ��q֎�e��Q��#$��˹��3}�sb�yB��B	��`1�6�-~G�����jժ��gϖ7�|3'ɼy���_o���F���Ç��媫�jx!E�
v���Ǐ��eeer��aٽ{�|�����#G�������?։?)����T��"4�n����e�ر�2jk��0
���S���k	!��*�/�"L(dܝ��Q@��v�΅��ŬEj7�s�<�V�N��p�ө] ~n*�m1Vt��0I���3j��3����l��8MBBO�]���9۝g�V!����]�ŶX��&�Z����k�����e�z!_�ҥK�{��9�@^lΜ9�r�J�Ʊ�5"`#�l��c%��~�X�[B�GEE�e&lכ~�笥XK!$�A䝅��DF���,�s��v�ƴm�"�,���Z�<[|����!��\���{��Ej���7�1`��ُlu��>N��(Z�6�l!�x�O7BBO�������q�]Q�%�B���l|r��m^����a�V�_�\�r&ȟ|�I?~|�����裏ʺupd�Vf߁��y�(��[��HF��a1Ϗ7�2k��d��G</�����L	6�;�)�:���uuҤI�GQ׮]YY�Br�]�v�̙3��g���2�ʹ@�D"Ձ��ʻ�w�_�s�L�c<:K|�┍_1^�f�ُI�h�|�.|�{��X ^buw��6��bϫ�;a��+�0���*�	�H[���<��
������X\�B/q�Y-�BHC?9�������tm�O~������}ݺu# b"W��/��!�E�䩧�rOw��e�Ҋu�J��+�z&B��ɓr���Ie�&41����8x��R�B!$��)S����C�*�GY*M��1gu��+���h���ʥ�����i�/�'�P
 dC@��D�n�x���yf��2�E��!�!�:��#⋽͙{>�l�E� ���aK	�����Q��`��d�]gq�8���!��f�j������C�1�Kd_�9Tn,�U{B���J^ii�<��c2q���!D?��3�f���sj���җ$�v���o~�WWW'���,BB&����#jS�+a����ϊ"���}4�ڝ;wz���r1omA����C\(��H�S}�]�ل���	�i��Tm�����ffx�S��1d�`�RgVx�	l��x�I	����ȅq�툐,�O�:��˰]_u׋#�B!�a�2\������l*%�PȎ\S� \b7����m1i0�|�6mZV��;vx^�+V�p/�a�m� $�
j���m��R\\�B!$$��4DcKX�qjOb��W_��C���!��k'O�,X4k��s=k����r�-r!��6n(���ҷ�w�߮�
"��c�:��q}C��Hc�1�Mj���l����m;/6g��.:P�:[���9"����Q���u�O���`�9��Bi�@��E�(���Fꔚ��:�hY"�+�m7���իe���r뭷za*���7�]w�%W]u�k+�7]!k�z�Y�v-K���aÆ�>�`P�P�yŏ�jB!$׀X���&���bm��`��
�X��P�3#��mj�:�����U��ts��yi��ov��ꂓ �F�:rEU�!d�I�j�̎6a�'��3j5�:�X DW���e���G;)\�Z�B�����BH�chp��Q��ֶk���kۚ47�`2}���*���?~�̚5Kƍ������e˖y
qӶDm�
bI���i�p�}�;���_���IHH��+\��+�ߙŽ9����6B����r!��XH5{�l)+����ez���x��l�k6oR������.RlcY��-D�,�mXP~�ڷ�_��G|�b�߄WqM���A��|m�R�A��5�Z��~���VБ�I�K�ځX�R�Q�9B!	��W��w��u)[�4�f��>�����m#�	�������#<��o��f�ݻw����RV�\���/G�4���j���� ���h���U�}���2d����7�t6��$ŝsko�W�EEE�m�6^#!��/���<���j�������~���E���y�{IT�@|��l�\ןS$~ާQj���/�b�������J�`�9���~�b^�	�9'��ն��Q�H���i����S����A!�x}�U�7óf!�5)ֶ�7�w糈@>�W�ƪ�R��s����Z�d����#Gʷ��-=z��3F���'�F�J�<xP>��COx���/ȑ�/3c(��'T��p�x��P�O<�������
��_b��g��XK!$�7o��������j�Kf�9v�q��gU�"֊�}�ż�̇`��:��D?�u�~��L�`��0��!��P��WG�6e�0���.?O0!$\�s4�!��(����%��B��/�a�4zֶ(�&��mx�NSo֫�7���_.��b>|���
!9��o߾�k���>�H���e�޽RRR"��߸�����0O��Mv���O҇w�����c��a���Z�:�M=�KR�I7�/x�^mB�曬B!9�͝;WV�ƺFo�y�R�R{��&~w��?�g�PL�#��f�8�$��-̈́7��<i����m�����'���R�M����c>��2T�"���d	�s�}�w���N�k������fMB���i���/֖�إU��!�S�Hl���c���0*�߁���I|`�d��11�I���O�<���̀���o��;�ܾ*
�us�Z���#�u���Y9�BrD��d���b�Xj�$�cӎ����L���a-{��߳B)S�שԲٛ��bg��ȱ;�����6����i�%�`
��l�-��&>����}����O��		���	7����2/�D����C!BaA���6�)���Q���x�2$r��a��4���1H_{�,�ux�����f���u�X�g�/�`KH	�]\���u�g�x衇(�B��z�)Y�h�{�Am��qH�0��.�`�rF�QxJA��nVd�n!�"4qW��Ab.�Tx���B��i��W���6�0���v�vv�I{���a���63�Y]��!ھ�"!$4�kx����6�D���5�V!��\F�G�gj��_<hc��T�]�aKr}R#�7��-Bxk�6&���;v�UWyN��w���)� n��{V�S�ʯ~�+V!��ϡC���{�U�V���?_mM*��;6�EM�<o�X���*�n����c�ux�"��+`���^>]3���U�^�6�H��6�R�o��x";BT_��?�}�,iB2~��Z�p�p�|�i��&Կ��ځk><{�t{X�Br�/���[�U���щ*�:�I��-�W�x��_W���g�a�JB2��O?�6��C�m�!�`��c�B��,[�L~�aٿQ���P�W�6��\�*�k�\�������ڠ��:����Xg��>�\����
��Q��n����BH�A�5�(G�jL��z�k=� ����B!����H�r��y�����Ԕ/8�Pp%�]'��D(1���m۶MF���!$MlٲE���zlbb�
��v���w��6Μ9��o�b!�tXjkk=��@:���#~>�ɴ�-i��0i�j�bm�{]e:���oEZ�#�[W��}����ގ'!$e}� W��cl{"�6	�����q��>�!��샱x�X���.2O�I���X
�$��x�?�8K��4��y��t��M�Es�A�ZB!��k��ĉ�X�U��_�|����8���V��W���턜�������>�'-	}�#\��V�ױH�(c�\�9y&M��w-o`B�%"�H��tݼY�S���}qU:3R�%$y@��@�.��#���_|���Ch��2x(��̚5KF���!��!��{��n�
6�)�C]���%CH�����D"�X$��;��ٹ�s�6M_
�^��'�aO!$�ށ��#�.����~�Y[Ms�b�D&�}'t�K�^7n�7�չsg!)�СC2f�)/�R�ޥ�����}�2��!�	!�tD֬Y�E�ظq#�"��՞��6��'!)�����F�?W�,eB�~^OՇ�j����&�s�!�]X�K𽺟:�!���s�X�{j����T1ɌS5�Z�ĐȄd�E޲i�&�?>K���`�'֮L�XN�©S�R�%�ҡ8{���U���߉�Xq���jQ�"$4`&�N]Պ�_��/º<ĭO>x���o$���JHO�H�*�{p�ӻ6Ϯg(�Bɑ>w��^��ݾUm��!���Ug2�[B���u�Cj��v��0�]ի�V�\�t����+,\BR�/� +W��&B!ߗ�C��^lp�!����g�}&��d�<�8��k��t	�pV|a����K�ƥp{�kyҺh�%��C�|��0�E��]X����$�D�[����Ui
���B�V��&!�t�6_��u�j�@
b���Vjכ���8F��"<Q#8)�5���x+�m�_s���۷���v�С,hB�O�0�=����];�0I����by�X9�B:��r��_����承��p�IHR�E�yx ���U�����Z���j[ܭ�^�������K�����!~(d��;$~(�h�|B�k��b��鯟��5A!���C�b�I�H!�]���)j����0w�ð��By��d�������M;v�TmyEE��y�r�6!I`׮]2s�L���L���8C&N���!��aرc�k!�N�$�������GSb���!��DZ/���g����G��	Iz������ŘN�\B�k�BH�k��QQ�?b�g�{՞Ls��*lI����A��)S��رceڴi�y��7<6mٲ�m�=��&���5kV0o�>$����9s氂!�tF�)�!��ݻ�{�B�V�d�t �vk�}��)� ��\x�}�6V�s	k������a��k.r���p�l�BH�E�V�?~M��Ǭϭ��,[���D���\ �_~���c;���?�Wێ�s�Ε'�h��D��Q!ƕ-⯊�4��zM�4I��J"�ҡx�W<�V�r���[BH����G�f��ė�6D[^*B�m�H�"5!I<q#�A�p��^>�H��s/]`N����h4Z�!�ґ1ѶD�E�X��i-�@�`Kr�DE����_]!����_�ݔ����!��_�j�����Ȅ�
x��K}���x�0Qw�� "���ɓ'��!�t8�.k׮,LR��/ڲ�#$3`2	�+&����1�K��^?����)?�9��x�מ3T?42�D}i6%��fU��:A�
�E�1.<}j���oד�B!��v��"�W�t!���6�62�_BRu3�|��Ԇ�`b�6��Gρ	��V}��6�7޷V�5��TX�r�7	Fi�#G�xb�u��t��-6��L�_z�cby��ٳG��"��!9{��)f�ҥx
ϟ�՞n� ��JH�ƚ؀���kժ�U�!�p���ە�^x@���1�l[px�a���i
����m���Ņ<џ�~��5������>��g#v�L��l5k�BH���oƂF,\J٢���料��-��'V-n�U�_�}_υO�y�5������By��ge���$B���3f̐�7��N�[ştju@��kˍ��o�Q~��߳�!�tx��>/L������OB�4�t9&�P��ϱ&ƢXH�<��3��>��"��j'��M���پ��o�X>g-����Q�X{*���Il���@��G�B!9�/�O<j���|G���|V�༡vq�~���B����IEE�^���_��Ǐ_��HO��"9U���/WUU�]�p� w��ŋ�O�>�)B W�y�dǎx��-^�CD>??~<+�BHN���/�ԩS��o���޻/dnV�h@,E�cx�j�����v٘"< �"Tr��'�	�z������{z,}t���UDH�}	ЉB�-�s�t<bm
�|p�]#!���D��C&��ѮB���^a�n[�I�9�6�wޑiӦ}�eee2{�lٰa��w=榩�#<�Kj��"�<��{ャ-B,b��c��t�'�b;�L��Ӈ�_���^njB!$W())�믿^�����j��/��;(Ne����O�o�a�w^`[��yS�l���ڜmX{�w�E�K-�s�9D|�Zx��%�'/ax���7=�Ӭ1BZ<�/?b��/�@z���m�&$Կ5�Yx�_��5&�YC�Br��F�,�Dd����i�r���j�챗�6,�-6��,��6?V[+�j7��Jm�a���'��Y�f}�
3gΔ+V`�?�|���?P�U5�;���e���2g���Y�U�w�9����I�L�;Z�Z���N��nݺ��!�����7N����'���8E[
���b�g���\cB\�+�}։��¨���۶{N!73uݖ��yc����t��)�ϨM�ᣝA��m�Y�G��:mJb���9��L#ş{�-�X[��6�kG[<��(B�o��ձ�!������$D�3�'�`{���n�g+���'L��KyP�H��|�
���R�<<9r��|���?Ξ=�y��ܹSlRc���2���>!�b�8q�̝;��-�)�����k�V��o�e�HS܁�Շ�cǎ�͛7��!��$�|� ���㈼*X�8[�����;������_�8�ULT%�
l�����rVO�6muߖ�;۫pډ�����/��sN�4k���⋵�W����=_��	i��"�\ _-B!�I�d_;� غ����3[XS�BHCy�4��I���1����9
G����<X��t���RTT�v�e�I߾}ރ	��?����Çe�޽��WYY�d9��R�Z��aS=�I��jwʹ+��4Gυw2���~���-V*ˈ#���o�'�td~��s�=�b��j�[�\[�/�G?�����+�@B!9D[D����F3��]��i��8�yΞJgXY����J؆'&rB��PN�T�wS�#kj�)]/I+�B;u��)p�8nx�!��jG�~+�m,�ĽIm���1�R�.��;~uE`e�c�0&X.��d�}�Q^%I�b�)~>i����0�Չ^_�(آ�B��muZ �Br�`�ḗ�i��#�H�_�{#	��?�|ou��ѣeԨQ������߿_JKK=�>�BY�� ���=.K����jP
��k�Jc����LMn@��S��٧i:^u�+!��W���������f7����޷��ի��$�Y�~�<��S�n�:��sv-�˓$���k8G_{�5oA!���l߾��?��<#�wX[��m��� ��K(J��i�Yc�cY�y](�`Hi'�:�ĕ}K����G|�.�
+�D;
�����	����o8�m�k��H,2?m�ih��l����a�BQ�0�5�17�~f��C�y�]}�Z�ho8���}��M�`���`��|�#�B��o���bV,��MU����-�Ͼ��-	���&Mj� ֦���
OdX�zu0�����j�I��Ehϙj��j�NȈ�"�#A���ޮ�
̈́��?vs`0�G��mK�M��?r�5�ǘ1c�k��<Ƈ�-P���+�K�deee�hѢ`�Z\H��nS[��A���0������B�uV�\)ӧO�&,l��D�&�6���90Ƃ�Ѱ��C��-�Fm,�Ɋ�0��r͓�����~Nh>����f߉�sBn�}�q[pc�)~�ڞ����.�>'�B���˯�����XD
��*	x׺��l�6P6�w@����P���������b���y�L�sB�^;/+%	�_�(��G�r�0'�B���G_y�,�~�#	���i5ؽqv���r�wz"U@�E�ČoQ���6KZ�1�n0��p��l��ԛ�|�%�x"`aa��ڵ�^+yyy��\���'555�7�={�ȑ#ͽ�!�B����O��"���^��O��F�8p ����>'Y�aa}"N������/�u�]w���/��O]�GqGAA��NH������~X�.]���ar���$�Elq�*:q���уK!�(��w�K��i�eݞ�;�m@P����L�WX��g����5#�mL(�`>^�"�O�!�d�|p\�m\
��y&���6UV�v��B�=�o=�B{v�h�}�{<m�y:�]+�a��i��lc�#(�b�	��a��#Dt�����g����lĮ�p�@�?x�#W-�j���]��ǵA��-����3��AB!�����*�E�A�E���f��7�����O�'m",Y�DV�X!k�4D�E�"��%s���{�^#�+�=.��"�C즛n�6Q���,���d�֭^hix�}�ᇲq��طa0	��_���/��3��>��y/�kS�u�>��?fig0�l��H��T|�Ʉ	d���ҧO^�I�A�c�������'!2�!��@�|B!�4r��w{�����
����;ӂ�	VvO���Y�Qh�� �ALi��eW�1Q�P��!,'g;f�9!��8����+�}(��^t�c�Y��q�ٖ�~*ۘ�ˋ9�A���^���}m��`�y>�	���oY�E�{��;b�em2��Il���֡��Y��BH�}/�"j�؜N$}6�然��3���fUEB |��eժ�H`��O|�6]�yj��]�y�ȅ
oT��([��|�ACX�e��O��n��˟��r���G�B�wi�_���l0p�Z�?���}�s\l���[o�jM�^��bKII�{y����Hol'�û��d�ڵ�dB!$�;�Í�����t�ߙl�)v�=_w�	��ژ��c�OQY:��=O�=�te��D�*i��̓��v"��f��b�v�����6�7=���o����=v�FOe��γrC[�$�9}�aGln�=G98�v<�`��Wg��s�P��9���O����D�ڶ\�lq^!��E��ͬIB!������F�L[��ll�W{7��z��/~�)**��ʄH��/=n��n�����M�?���<-J�~��|�;v��&uPN��R��f>�AX�W_}U�ϟ��͛7��΄x>����in���}�`)ؼysR��I��0qݺu^�Z����IS93$�"���?�я\�GB!�8z����X�t�ߙlM��l�xM�;�w��f��)y�Ƹ����iQ������C���p�r;�[�(ǡ�f��c�����[L"A�6��-���o0�p�4��v�^sb-,?��)浦�;�8?��}g����f��OBw>�-�sB-�]���NY�$	�80��[�_�%�B�ꃇظ�h[�	d�`����O�L�"�>�l��m���˗�3�<#[�l ��6'�_q�F|oH�B �“�w6�'[�8 ��y.�6��͇�0r	#Di��z뭞�����2��
,�x��o��6�����!����-�j���6$�;3$�>�O<����O��	!��&@*��3����FK BGlyU�5A�J�}4�&- �a�0&,�Z�`�0'Ԣ!`B�<�5�{Z�a��$"A8�_�l�n	���k��l��w�׌u�sWw�Eb�|i���(L|��c�Ҷ6��6�i�������"	\�1gU��50�}\��-����-���5K!�����l���d[��ll��	�:0@{�1/OmG�������Nޣ�����>��
D</�Y�fɜ9s���*++��_��C�5p���ފ�dV��^(�x��-<m�R=.�@��F�}����ko��m***dٲe^x�@$�_jK��Z���ϐ`�-i�g?!��k�� ���P�A�
��u<$�rt����4�h[o�d+C�h����d�Xi��v �c�'��?mGl�	!������
m$h�S�k-�G�\���m�_Ø���\�����Gh�S��B-<jO���hN�$	��^c��l>g-B!q��}���9[[�Sȥ�d�4hPNT,�E���ݻ����~���`%�+~���M��y{�3�Õr`���9ƒ��e���j��
塇�������6=�Is��f���o��ݻ�j�c�<D�Ë6F��$%�i�*e��!_w��w�u���^�E!���9s����?*~č�l�b�`.����	��i�4k6Dr@��be��}�K!j��|��"��%j��rؗ`aseVM��llSP��N�{ސ�㕚4�NF��܄��Wf�M~��1�w�F�xR$I��u�2���c�B!m�/�"���� �b2��ؘ;w����k9W�G��<`M�@ܧ��q~�o�0��Y�:u�<��#�dHG��?��.9*�?��	��v�)�z��<�G�%#G��a��o�.����P����T=�-��?�ɳ��������o߾r�u�I�޽Cu|�dENZ���:tN�gLNB�]f���<�	���0j۶m�5�B!̓(��~;61�}���mR�O��! ��+����٬`%��Q.7{��	�!�Z�A��D�#��39XV
��{�Al�T�B���� x7�2�ѻv�M�?��d��q�6bm�8B�o��SƳ�X.�Q�.p"?7��B�E�c��-LΞ�ĵ?I�-�/D�ۭ��O!����a��!4r��_�M�r�����9[�Xq��m%>�.�H9O H“4�<��?.<�@0�4�ݣ�/�/�;�N�_h�<����9P��f��%���n.�Ç7�6l�0O�����=Oq<��ꫥK�.)=��;w���=�b�֭[�G�7�*�8�ޮI��*�	���o�>A�lB!��L ��J���*��Z��+�gR�e�o�Vx�V:�ـW-Dn�F(�#9\N��.2BD���B�n�2�G���D�CR�>����~.�V~8���/X!Z�;��N������],��5Ƶ0��5�->�7-��R����}\��-B9b��O��J�B!��1"�`����5�D��L�^�?l���Y�c5Y�}��N|DE����Dc�G-ˆu*,,�<j�8��j�g�y��j����=V�G�����PSXɍ���1��Cj�2��9�/~(^zI,X�����[����sOW���n�������%�\�mC�u\p���79ƒ���ϳ<�C�駞H�w�^ٳg���%fk�h��R�l1�St��	�ѣ2!��
��=z�UD�������)��[�}Zw���l�eA��{A�kΫ�~kr��b_r�mÞo�v�
�>�c=h�	�7G� �����̛l�l�@Y#��V�o�RH���
�{�~�ez:d�6Xs#�EA�=j��"mƼi���lϳ����~-&�B��'_i���ZK�V��'j��
x�+�42{�lY�E�Pa���7��bcʔ)���{w��{��r ̎�)��8sX�����F�{̷�l����7N�f��9�3����"����vijCK��͖Ϩ�s�ΞN!���x��G�駽�A:!�}uJ��s+� �}�i/�,��@�b��FO�{8��i���p���J+���2����<+S�6>he]i��6�s]����d�	��Jk��e��\������.�c���Q��}���s���o?��vΜ�c���s�	�g�p|�aw�$������VK!�$�'cT/�?��}C�悔��2|j����z!��#R|e����_�'��/?��OYXM���?��O�p�vs�_�iO�8s\�m��A��n+����L�'~^�x�@ӹҎm�u�XE�
Uq{�~0 u����gcYf@�EYo�`kB!���l-�GʼlS!����,��ײ6�o�D��s%��N#f.O�`��{
"�lk�މNg��ֵ}
�
u�a�[�-a���	�%��ӭ����'^�f���]h�k�){�Ak�쵣����X�w�h�fEx��}Og�L��);?N���H�-�Ά='yۈ�Oe�B!$GZ�\Z�
�`[`7Y�g͚%o��&k��t���RV�D�$~����BH�Z��D�ay*Y��	��'[�⋶����s���Y*1���z���0�Ļ�V�d'�-&� 5BIB!$~^�k��~����?ĄO=���`M��>0�E�,�6�!�&Q!�V���bS�Bm��S�=�܆h�o����p%�Ķ�l>eW*��%ƺ`�.v
u����fyf�Ҹ(!?�:8k�ݵu���΍j�ڙ����g���h�5�$	��φQ�%�B��/�Oł�گ�I��΄`��2�F�)�6m��ݻ�&[+α���m/��RN�S���qk��j��r�I����F�ȡ��c�1Ou�?��,UU�zޭ3回���d@����h��L!��������:�w���˵/MA_�����+~��ݬE��v�y�p���	�`��zp��=����J.Έ���{��^�ȡ���hm�����D�NM<��z{t�N���s/8a�m�������z���-!����b�so.RK[�/�/���OR���Q�Fɶm�dÆ
�X��$~�W�ޒ��Br�o��s?K'�lR�^�;wN���=o�_��ү_��-LH>��òb�
���e"ه�G����%A!�����")..v�����|��<��vk�dM�d��%ڒF ��i�︕'�^����F��������m�6Chcx��DQ'��^W]��c���γ�v
<?G̍v�U)�:i�	!��~0Ǐ�X\��(-��Hm̌3���fՑ��г�j4~��x3��T��\�^�gՊ��П}�ٜ+�UF�7�]�J��jId���h���5�Bi��t�
��$��8١G��ak�>����~���G��N�"�s@KH���m���B�7g���
?���B��`�Excx�?r�]�1IYO�4�׎8<l��!��Y��BHR�.W�R���{��zئje�X�1�x�GXs$���2�|��1���RIPʑheyy�<��sr���SO=%�����û���n�~���K��M�6�)��$!��7n�L�8��2)�o�]��Xs$�`b&�� <m{�/,B`����ԇ����r��yV�����w]�G-gcq��a�Z�Q�͢�z�B!ɺ�t�
%IZk������;cDz�HFx��We�ܹ���j�Y*ic��7\(6���ȢE���e��j��:/��L�0A�͛'7n�K%���V+g� �B�4�A���ÄD���r�n�-���Ӎ�Sm����Z>����aН(yC$�k���X6����1{��<kO�]R�%�BHs�ƎII?���������֭�&$c̞=[�-[�M�\f�\70KE�'�3s�t.v/L�2E2}Μ9�����?������3��ڵk����PO�-a���D&�B����2��K�Y�v��P���}�`޵�p�{�5&���н�[%~�θ�>C"�U�.Dr7�C��W(~a��� ��j1�wO�ߎ��{���vG�6�u���|��e��,QB!$)�3�� ���DX䶆DN�`�<��t��7ˆ
Xc$�z뭲n�:l�GR�l�\�T�!^����g�ԩS=�իW�����e���j�*Y�zu�_p�Et�����v:�!C��_|�
 �BQW�o��mj�=�}u��t�Z�v���+�H(�v���ș/�j�#�)�6�1���_���m>M��}��\�!���$�I�E	��Y}|T|����2V7	��19l/���%J!�$����n_��'�U��O��݉?`	�+��Y�����_��R��"D�⋶s:T�b�
��o�Q���o�
7��m<8�
O�5k��ʕ+�ߗ#G��ap��[ұ�<�r!3!��JƏ�[Da������	+�h�p$�T�<��jY*I/�Z��!T2<J��.&��kԾ���\I6{��o�uф��^"X��~/�"
`a�Yz�fw�!�B��ᜆ(-�Zؖ
[(���D�d�mӧ7�����o�a
��s�.�^t�E�p{�M7��eذa2t�P�ݻwJ���Z>��coq�����ʖ-[b��v��*��L�6��a��c={��<�	!��X�7s�LoS��I��}���@�KՎ�{��HX1�����NJ+�C�mWY��:�X׈��>O
���/tB�E���7�k�>\-���	�CÎ�8B-Dk�?G}%|~�gц���J}�:�(!���>z��#"�NU��w�B"c�9z�h�Be޼y�����D�R�
%7����&]l;w��Ӄ�;`����k�Ʌ۷o_A�ڦ(--m�***��[�n�={�ȡC���ތ����#&�-�,**��'O�!������_�mj~y��v�?�-Ӷ��t<��B0�xѶ���l�R�(@B%#$5&����ܾf�m��>V�-��Cp�8�j��_��	�#f8>�=a�S�
_�K�����l�BI^�{���vi{"�;�-V�mEN���r�	gΜ�1c��Ν^���*o�IR�j_'����0�L����v�=�����=�R>���V���Y	�BH���y���O7�[���$���01�P}�XS$�f;\|qV�Rۧ`��rGab�0�n�]1��{��~¹!��LO��0X�X�"��v,X�\avԞc5*�㌵!�>g�kO��=������BI�}!��Jq����t�+���/d-�PҵkWy�e�…x��z����X2�9�V���yv �"��0;��yH3�,��P���V+?�W�������5f_G!�$=aeII	�݆�}X(���{��M�U$��E�ҀM�Aܬ�D"�H=i�'�Bn�ꪛ��ńU�IOY��&�#���{���}��׺۱������#����g6r ӛ6��Y���J	!����B��C�o�o	�S%[��jd�޽;k���ȪU�d͚5� Z�6�����v����, p�
��BH;@Z��O��⻰���g�lB��ɊD"���	񭎥��:��g��k	DS̻9��YA�u
�0����u
\���Vg��Z������3f��j�"m�r��P�%�B�xKh�~���M�d��^��Q5H��?>[lNE^�DðqlCH���/��-!�Bg��
�!;4'��M�+��xT�d�ʔ@�M�ab���4�������s�s�r�5�S�`����D8|�ck�Q�
��`�`����teQB!I�^Mܳ��d�X�'�jf̘!'N�u��a���\�
!$�����N!���޽{��^!;4�2���yP����\R��J]���R'�v�FOZ���gm����sb'�~C�%$�f�>
Y�BH��Zd�&:%���\ǎc���3g��yK�'l	!��$PTT԰�Av4�dB�A�s�be?�&�ẃ��P�[ixJ�|��Վ�5s�OHcNZ䣅X�'����¢ �B��džN�݆��C�Q�%�g�ܹ2v�Xlv�D"?d�B�Sj<Ȓ �B�AAAA�f��	':<�0\$�*��(�;�0�`Ki
���-!����d�S������֭[�����DB���e˖-����%Biz�B!{�
�9 /P+c��,^��Z?i����%!9�����BHr��x�]'S��K�ٸq#����5�ciB�`'�|��g,	B!����7l�嘢���aE���HrX|��b!�) �b1�HB!�%"I�r�
��W��v�ZV	=�<x06"�ȷY"��V�`[_RR"uuu,
B!��P��R<�EA��h4��g]��K��s�#��B!I�o�R�9�lݺu�i�&V	=7�|��d[BH˽n4Z%q�޽,B!$A��ak`E��H�k�d!c ��(!1������ �B�FRK�B��T�#6^x�V	=�_�ۤ�-!$���;w�dIB!�++���0����1��XS$AHo
��d1�H�����D�4!��4�}m¤*����l�2ٽ{7�����#G��KX��8(�����$!��9y���`�#DԨP�$����,
B:;�qn#Ou{�"��x�z0���նB!�$�<K��T
>?T��>�(����!C��M��!�#�l#�~P���jo��j�.=��O?���K!�$HX=l����Gՠ*_��"YBzS�%�����ix���z;�1��[�@��E$��!�B��lC�a~��[�|��_���EBK����fg�!�H$2P>R{^m��X5��m�U+L`��L!����D�v\�jW�B��"N�ؖ��d?A��2�Q;�vZ��a���U�x�:ۮ,^B!$�}v��-j���lkkkYe$�����mFX�t8^VY\\,o���l޼Y^z�%6l�7I�	��SR��%�B����a3l�f^��|D|O�o��H���B<�(���`�&���]��9�6{H|��N��b$B!$y�YZ�L�@w�ƍ2�|V!����D��Ô>}��ʕ+eƌ2v�XY�`����[�mm�l��ˎ9"eee,hB!$�=�6+Bz�Xq�I�j�Z�B��pA2!Y>�?�qo���W�S��m<��`[�}[/3!��\H�v�M�`�0R�բK�.�_|��F!$]x9yz��!m���-(Lpߛ�?�6��	!���ꫯ���0_4�@�eq�{�nehd�ED��-!���x����xދ�����	!�����`��?b��իW��H�8}�4��H4���nx��s�=
��v��-��w�{[�Iַx�laAB!	p�p�N{8ćY'���~�=����H؉D"�,BB{~�e����k�[y���"
L$#�B,�a�B!I?�����c������.k׮eՑ�p�С�	E�XܣV�d�����.�l���&^��~=�9q	!��6�][[��b9�Fk�z���a#�Vۭ��Dnc
���(3��F	���'�i>?-<p�?*D}�����Bi:F�f}pVx�:��l�v�mmIhعs��<�� �c�F���
�G{�k���T�Z���w͐ȄBH�L�g��ݧ�X?W�@�Y�$�cbL�EAH�W,�fr��=�z�!�l�������62�Y�׫���s�ƺ�k��^B!���"�[�m�o¤;T�x5L��)�m�&�z1�=�,%%%n���AH��n�	�6p-
��ՖkY�������!�|w{�W�q\�Uz�ĉa�������Bi�+p�YrȘ(?)~hd����������$!�����,
B�;�_�u9jѷ �D�4z��]��s7��.�7mW��
|i��1�G���j��jV�*!�B���vG��Dn��j�t�~��
d��"�eݺun�?X�d��6�@��ڨ&�=V�N�_���gt�pO��6D�a�A��B��x�mf��b���S`�-<mB�j}
ö�FI��m�EAHh�X���cڗ�����ab� ���E�Nv�#�Q�k!��;Q��ab$�wB!$1��m��t�D���n".<x��?�UI2ʖ-[\xn�^�G�!�G����=�Q�G�x�	y��|����zKf̀ӭ�=���>�l�0��>+�Bi��a����	�L�B�)֒�W@���$���T���ˏĊ�1`�
�,8})��*�w������k�1`�N���UB!�����_���;��Fm�{a�ĉ�x�b�C&gɒ%ns+C��5,P�7m�4Y�b�t�t�ڣ�c�ʝw��-���.�ׯ�7�ba��!�|�!�B���~�6w��8#�n2:�uߣ	�K{ڛ�����^x�C��k�M���<X�����q^F��I�7cQ��7�"&�O�!��8�KOH�C"�*~�����x��������UH2��Çe�ʕ���%�x	����D�X�6ȤI�d���r�7"��d=_GE���I<x�(++�}�v5jk�B��/���m�2$rĿ��lo���zq�5G�,�/UC:����y.�U��?h�Ow�������`[�\sja�	��_?Wu{��kE-"R�f
B!	����o���
�*@CA2d�7��v��:~�a)/Gj9�7��D�N�1��?�!�b�,[���_Z����o}��ʃл=�Dz�]�f
[B!$����l0*[j��
Ev�u�p�5GŽ6�+�p��#�Ŧ�o���l;�]�ۈ��gQ�NĚP�%-�7��ٗ���:)��g!��#s9l	!����c�{�P
�K�f�ٹs��/�K)**b͑P�|�ry����ӻY"����X�1Dm�Y�=�ۆ�`5�n��a���!�B�+a1�8yE��U�V
�={�<���ү_�)jw��%������Tx� ����Oʚ!�BZ��>s�;��hM���S�����+X�#ـ�_�?��
"N]���_��:�A�u޲(�Z{��c]��}"LzĮ���!��Ҙˬ�n�lg�~����QO���=�_�q�$��\[x�g�B!	q���I�ai�=�ݠ��v��gݔ)S�'��q�Ʊ�H�@6丬��R־��2p�f �NT�	<F|�6.Q���.�/�����'���㸠A�ݢ�Ό+<Is�}��V8`�/�ԩS�o_���߿�y;~�8^Z�����_�����J~~>k�Bi䟟9sf*�����.��N�{���H6��Ϭ�I
�/LEc�~{ǯa�a��8���8����4K7;�{��g'3�r�8��|�B"crw��Ej�ij@�>{�}���K��9?[8V�ӋծV�7F� �B�|?0��OՎ���t��Tߝ������}!��/~��3gk���#G�x���ڲ�����j��n�������B�_q�2b��s��K/���;/�/���=������WZZ�	��|򉔔�`��X�{�#X�Z|/�M�&`�
V�///���/
���ݓ������ys	!��<�����	<�S���:>�b-�lB�1<k1(�&����h�n'�B�u^���0�z.Wd�l�;�"��� �U�kq!���x��ziO-�����c�l���Qx�?r�\�ٛ���9,�G����e\��cA<m����
	!��6���d܋�K����oU��ɓ�W^�A���H(9z�̚5K6l؀�g���e ��RCІx�}��	&���e̘1�P�Q�%���o<WF>��[��ƍeݺu��G�g��G�u���٢�el��a�q�ց82�x��P���a��E�ΰ��]��%���
��8x�R�%�BZf���nsK&��D�<=�q=�H����v��}�Wv����f��‰�l!~
ks=.�s�v�8^��}��N�k���6 ���X��G׎��Γ4*�s�.��'����؜�^��4�o�Ƿ��B���1/Uf�o�[�4>�k{�ދ�<�k�[���F�����2
��BH[��rIRJ��C"�Vt]����˫��ʪ!��ĉ�X�z���aw�ڶ$��&�ޫp��^���=�b�ĉCs�k׮�5k�x"��M�8�bP�Xm��V��Vonem_{�g��D	�.���]���	�o��[��ر�d^��p��?p���dԨQ�m�6^p	!��@�yD�Q.Hv?oHd�	rK~Ś!ن6c��{�R}#rL�o�wfJO��-4�wB��L�!�C����j���L�gQw��G���ڬ���}G] �Bp�{jVom:ڎ�k��N��q`�ߧc>���A�Ӌ�O�e�.�6�㤝ߘF�E�g����	��8�KՆ�>��WWB!�M�S�OU�������Dn�`�_����֙�[o�%w�y'k����Ed���2V-nIƀ3�[J��Q����^���Iv��t�ҥ��nu)6!�\��
���c[��3:t����;��رCΜi����Ͻ���v�<�S��N/�M��d��i=�wf�C>E�������K!�4uSQV&�\r���}�%)}��b-¾T�qa͐lC�:n"���>?o-ľf��(�rL;���Bձ��o�������۵Ǭ
���|97��M].�[kC����%��<��e���gm��C?�gP^��A8���4�z��6TOK3a��!�v�������!������� ~��Cڇַ�N�`���0Y
�"B�JII�L�>]v��8ֻ��ڇ�pf�`O���&�f̘!��{oV�n�h�d�A�`u�=*~��l��IVgN�-��/��r��k䪫���}��ȑ#=O�N���j��㏽�˜H��qw�޽����w��3���$�~���
0`�̝;�k��4�i��S��S�=���Ua1��p�-X�@^z�%^|	!��&X�l�̞=���>{v���&�"�x�I�:NJ�lD�9q���^ik!�(`f�`k"��~���_�^L�ALD�	��m�H���
�9A�T�u=l�[�g�z��;.�6�|BZ��Us��͜�AO�~��OK����y�M�l��DZû�
���+-!���H�C?U�h�!����	�����Te�ﻊ�U���(AՀ(4�b�(=x�������CC�^�ru$�#B�
9p��+�9�:r$��i�JK��(
��GAQϼ��U�J���ʝ�{g��rgUV�����Z�m�6���kY*$�@́X�`�:��m�`�as�z*�����3��SOIQQQ֔1�x��޼y���V��8Gܐ�A:��S0Q��f���_�Bn��V縰�0�'���B�?q��g�Z�d�����I�&9eڣG�+��E��ڵk��9g���}�^oMS��}ʰȄB��Ʀ����c��^��'w3\g�e�����B؄��?HT�����E�U�z�:•�ܒ,kx�"4.�*�=]�V��W�����9ͪ^�z���a��z�ۘ�����}������-B!C���$S?�Q���ȼ�{lm	!������Xm��?/4�NJ�5o��<�����5jK�>�<�}
��fl�:��`��9c�c�`=�}�Yi׮]V��…�[��Ƃ�$�7v&`�����3�S�����g+Զj�*p��ٳ�o��o�f�'����u�o�W��E�D���h��}��
���c�=fsT�s2u{M:��_9(p]n�B!u>|��5��վ�Yh`l�?@X���|��	����,n(d�LH��s� �bU{�^��)�q�I7q�:שΔp�^�V�m�m�i���[�V���;V�^����y=�^�n�Z4��. L�E-��d�g�k�2#,�g�N��%�B�8f@�l�Dʟ���Ml͛���yeŊ�DHP�k�769U΀	��E�O��t���ŋ�p��Bii�̙3ǹ쯌-4�(���������@C.�d�g
x�� R9r�"9
�UI,d2�F�F��3g���?��C�r�Jх�R��6N��ؼ�\^{�56ƄB�O�Zt�W�bq���9���c_.@$��{�n���Ʒ?b�,���p=
�`��$#�^lOf"�i��?_�/Ļ�t�c1y�Q62Q6g��I�����Y��2�J�՞����`~�e�����~�F�+�R}OR�m��r�E�dXdB!��D�g���7.j�`�,�F���3gΤXK�#�������6����'Nt�౹"��Z/�7�|�	I�к:ᇈ��.pd��Z6XX���Bx�W^yEN�8!����e�ܹ�k�̾��;R\\��s���<c���#n>ކ��mYII�;����
E�0�6�W�4_ǫ��	!�R��7��
i�IJyk���Z6̘v��e�w?<kO�,�ny�K���Q,\S���L
�[�ש-�[^
w�{�s��:ǃ�$Oe�X�׽Rs�Ӿ��Z�����;9l��5�1��\�˘��늻	�l�N!��0�����m��,����|뭷X$��~��p�N*���:q�ֱcGy饗�>����#��{�9�b��v�|��+`'�L��?����ӦM�/��R>��C�={v�	�K!@c��\������؈�݉g����'u����a���vc��o�.�>cB!�æM����44<����KY$�|j쐸�r���(�)<�j��4ð6��>���q�:�-���]�|�T�-���Jp
��(�U���XW�h���=0en75��k��9���stc�#�B��D[���4��@��.zˋ/��" ���C���Y�W�Ex]�`��W�SO=�����LA�hg�(6��:�����M���G��(���~[F�����[�����Ç�a�I����W�:�����u��&v�-d֬Y��|}'"ŪU�X	!��������yA1K���H$�H=�9/��'r'���-gi't? �!�~[��g�e���[k�������.���^�s��5���, ��:
��<b@]��S�����	'���	!��i��fE�Ǽ!WD��xM��	����w[QQ��fG�}EL z���q
��a
��j�u�&������Wϊ�귐?R�LnƎ�����׿�u΅����Ne����ZPP�t)�{E<�|�NE�[���^�M.��(�?_Jm5�<y��B1�_���a����e��c����
��s�b`yN�0�$�­�Y:W�h�K��<�/�u,P�5�2i��%�
-�K��^�*>�׭��7΢�1�P����l�a��J��L!�d���}>Ҕ��&�Y�0�WAB�EB���eÆ
�0���Ʋ%�$&���B$r��+��s����'\�a��ym�PQ��#����»	�Y���¯���#�",�Nj��{cS</}��Z�7�p�����M��-[���c���L'2��	!��
�ʚtΣ��k�9		5*x?����1b�E�I����
���l�h�	�N��>ϫ���{����*@�៙�:��ϱbm�T��Q����	!����S������7n�����1i�$AnLB�D�w�y�>���?��+�"B�uDAx j�_� �z���0���S������ʣ⊎Na䥅(9o�<^�x=YQ�y|�Z����PQ�kw�����9s�ȝw�)˗/O�3v��%�-�O3��Qj7n��B'�B�N8�i�XZ!I�d
�H䰸�
��0�{�X{Vss���	�N;�׵M��������=���gxE�<l����Ɛ������뽓�H��C���"-!�������H1y���*���8޷o��?HH(�x��3ψn�C���&�Ig���Zx��Dx�u��I�޽Y�M���2u�Tټy3��6v�4��P�����x�«�a�<h.\(g�8�ؙ��D=o����	��?��a�`��ի����v66�7���T���$���{�eaB�Y��鮻�c�!��|��q��c;�d�>G��>:�(	�8�{��_�Z=b-<AK����+6�B��d�qu=���J��3 O�Y^A_�6S`��*q��!T�&
aݔ�{]k�q�����F�ֺ��sc���fiB!�}*Ƴ�о���'+9^h��O�]i�޵�K���ɓ';ym
�ur�Ԅ���ަb=kGA�En�>}��P��ԩS�h�i�&<��/�'��8����i5�/i�����O8��NX'�XH�n.˃���0˃���Rٽ{w����u��ߥi��{A��W�I�ӄBH���ʪUNЋ�-H�`�Б.:����R ن��{��E�M���b�ʔ`�b- x���X���-!��Ŋ�*�"=M{-�c�5U�r���Kx.�+7�`�k
�#ܚ���<�L����
�Xݔ��Ⱥ���s���}���M!�����!�K��9�/�9�Z�bs0���ȑ#2b�AnLqş���	g�ަ�]�F��Zk�#F��a
n}"v�B�u�Y��ҥK�s�μ�>�������9'2�vc���2�\k��<2�[`���jS��dp�n�Fli�Ш��BH.2`�ٿ��ұx�?M�-<Ǯ7G���F�1aKq,�lU �x�'/I�}a��b�̆��P�(��Z�L�|�
��E��6Z&Wi}E��۔��8�y$�7!1<v��Cy5�9�G���G�
��y�r�8!���#�f*�ϗ�9i�ּ�qx��Y�%YÂ�籱����n�猽PXX([�l�X�JJJ�\ݚ[
nؓ����&9m"�j�q^<���d���νn@���m���X��"Bx������F�^B!$�@��F�A�~k}�R��f��+��"$���O�#:�m�r�[�U�^��0la��K-m�rx�B ��fC C�=m��"�R��6�4��!ڶ�2���I��,KH4�%�׺�dzZ�5M��M��6R�u�Λ���'�¾?�63���X"sM?ۇ��@��/����@��[o�ՊA�{2��$q�k��������89R��0��Bϟ���Cc=����ׯ/Z��x�̜9S֬qR�Vky,j�4t�&�{�쑢�"0!����k��ր9��T���7#�*Ċ��g���@��������жl!�@T�d���V��
�E �]W,�@x���i�:/W�Dy��9.<�!޶ֲ���ƒ�/J����s8D��y>���Ά،v�՗�Bɡ����X�-�$08n�`�,��#A
� Y�'���?�Bc����ŋ)֦�o���}���Qz���9e�Y�~=��Ӷm[y�wd֬Y����үsPܜ��d�.!���b۶mV�E��5i�h�q�^�R 9��B�����Ҽ�֣� �)#��ax{i9�X���}��=*n���}kl���:ȹ�gc?��Y��Hfv*�3}B cQB�e������Q�r���x��1d���:�VsI"��C>�׌uD�Թs����	�"!�r\x�An�0���t�Ё*M����ا�j���@��^�l���&�Br�WV��!�.l�F
$�D"S�xq4��'2D�K��{���z0O�xU2[$Ǝi�2�b�q�=����
��x֦!W<p�\�s��n� �Brl^:�}cE�>$^g�?�3��ld�ر�0�J�XϞ=��^c�����ƍ�!B�,6��7��
/N�8q�|��7Ү���tc��{ L`��ZhmB!$�9s挬\����z�?>_��H�/<�[�|PJ�u$9����3�m$ӹd���k���-������	�i}��#���覥~�N���*ei�	�0�rB���T���4��Qi�Y۽{wX��裏��s�?!��1l�0ٺu�`����׹ d_Jm����e�޽,TB!YϢE���׋�1�@,j��I4!�y����]w�Q�X4���
�^�6�`��ymg���-!���g�.��7H�f�x�#`�HV2t�P=z��vzO+Dxާ�z���!&M����#�<�^{�l޼Y���+���+<�nc�p�`�(!���gÆ
�pQ�N��%9��%�9c3-�`���Js^e,B��� �bA���h��,:B!9�u�@8䔦��'�:XQQ�b Y�/~�{xw�N��h�f����eРA�q�F�Jz��C��X�j�|��',PB!YR�ر���d����Y$��:NA&�{�����I�]Kr8�$i�E4�{v<�z}����^��7R]s�>!��\��{׈���.�>9���	��R[V�͐${��[����,c퐷s���,$Bb8p�|��飦Ü���o�e,\���I!$+���5k�ا�Lގf
�$�@.-��RP��޵U,B�"��Zw����n|6�-�l
��!���FqS`�R�ǸlIN2x�`{�$�����Y�X@��r�~���f>���Pj�#L�'�!��5̟?_v�F&٤�	"��5!�[x�fD��䮅��!��"x�c�C{�]m��-�w?s�]Yr�B���
7z6-!E@����l��+'O�d����{�Z��e@N	.��cǎe�TB��БcXy�t�#Br�XH{K�.�s�α0	!�d
�?"�2?ç���Y*$�(׹m�6*`m�-#��%!��GqÉ���k���zٞ74�,2B!9�k�Y	&*"i�Qo��9|�0��d-:th�d��PȄ$�ܹseƌ8D�����uɩ��<xP�|�I$!����駟�c�)J�Ifr�Z��L�������L	��lxrG"!M ���B'
�����=o��X3s�CXr�B���
վ����]�U�𣸸��B������ֽ�&�p0}�t!	�b�
�ɡ�؛!:u(�+W��͛7� 	!���O>�DЯ�+=���D��Z�dH��D*t^����'2&�'X�4�_40�o4�V����Z\g������!�dڿ!�#DҴyׂx��V���X2����ƺ�v�mҷo_^
B���˥K�.8�j:�i!9�Ɩ�`��,DB!�g�…��e��2	����K��X�Ʉ��τG{^$)g1�tL:����g�SD�T?��G�h�!��,���a3"6Sդ��	��ǎ;���cm��\���:���F�`i$}��_����kyyy�!9u(�{7m�$�<��BHh��
6�p���8%L��m�Œ�YB$P/�H�>�iJ*Y���Acؕ\`�v��٪w�Xx�˶�9�n,2B!Y4�Fz�~�z�B��L�w-h��E��Y;w�d	���ȑ#�0�ʑ�q�M7�`i�>��L�:UtR�8$���Jm��e�d˖-,HB!�c����d���ZiN�Z��2cW��H�o<,$�d�~��E!ɣ��
��"���k������_MX&�B�`��b-�^\�~/m�סƏ�[��xHV����I%=l	I�ŋKǎq8�L'��7�:R�̙#555,HB!�����RG�]elc�N
�2!�ve)������3�ek=lKX��C$9*nh�v���ho΋����R���!������t<]��\ڝ��l�ɶ��"$�ؾ}�=<��S�Ķ���@���X0�4��7o�}�R�B �G��3f� 	!����~�
���ZD��mw����}_��U�?xض�D"�X���Q��-�e������⮫
Qz"B!$޸�}�k����<���-�	��~����RUU��"Y�'��>g@[X�q-!��v�ر8llVHN�0V�j�*y��WY��B���˗�~�qs�	WH�ӁaI��I\�$8ȟ��" �_"��"c�!σ�!!�f��c�4}n+�!���a�/�g�J���Ǵ��Ĺ4�gP�.����%F���?�����8���w��B�`֬Z��9����w{O>�$�B	4�'��u����&&�l�e{5K��t2!�bM�/?!)��Ex� z�b�6m2v���,2B!!d��z(r�#�GE&�k��>>��&$���#Gp����2|:N��:�`�iӦ���q�S��e֊�}��СC,LB!�����9ǡv��e=U�k��ǒ#�L^^^oq��/I�=  ��/’ �"��݈H/[]�.7t$R$47m��!����G��Ѡ;i�r��ZА`;? n�<y�%G��&���8�|!>��k:ݖ!:���mڽ{�#<����0	!���ӧ��͛q����T�2vI�Qn{B��@q=� �dB�m&�LH*)7�y��5�F�(nIDl,2���Xl�B�����s���ڏ]�~-c�+�jXd�
qɒ%,=��߿_֮]k��_�"�d��{��7�H=%D��6����'�x�gB!$�<��òz5�ja�>q�x�����1�Jt3Bw�
��ȓ�hKI�H�ֳ6\/�j@\Ƣ�X��'�B�:�F*�����^���Lz�J���x�VTT�I�Y�h�=�g�����UZZ��!�G�L��i٩cp�+c'��䡇baB�8K�.��˗��Bl.��ӶylO�R$Y�u:����3`Q�^설��kD��y���6� �"@�?������מEG!$h�����N>ȿ��d8o��fW�p�'��,`I�P��e�j�l=�ӂ��?~�D��<���2t�P�1��А�>vu�m�l�ʕm	!�d�y���StJ�Br�l���;b�X�$�0�4�s��k�muN�F�Z�!)��"l>*P��9��=llJ��B�
&���	@�Z/����'�x�����,JZ�y�{��
�i9��ѣGY@��̘1c����Vq=m)�B�k|�A��	c�C���
��1��Y�$�&�xd"��gB(��-!������A=�H$R������RS)�B	
�O��6ڼ���T��`k:�n�;wN�~�i�(	%�f�;�������ϟ���b!>2mZ�N;-�_a�P�%��!^}�U�X����C�5jt��cx�gɒl��˭�
�|D甕�c���>%$�`�?��ϼ��d$�&��%������-!�������)v��ЉR�Z�,��݋>��		B=�
���m;E'خ]�XX���رce�08H�!�׀h�0�h{���Kee%�BHJ�&�'��� �vYH��7�B37c��,a��������L2�]k�';<꺲XIa��`Q�gk	�`�@��bS�n=�[���B2����~�s��I�		��!p���_�w�^�0	
�<�9�(Q�����:?�nea�3���C�56���l��2e��:u��K!�w._��l�M����x»�>�Ʋ�I�QOqx�+���/#M���y+��tI9��H�Ðk����V�ŹO��)B!i;�46U����P4�$�a��v�y�[VV��*))ai����׋N"��4?��͛7���ku��!�*h'n5vm�7OB��+�ƍ�iD���Nck��aA�N�;�	�H�8	#���ln4���	q�L�ܪ����"$�/Âs��w�uE[l0�G�0mY%!��4���I�A�Z����D�4k��o�@|˖-2u�TA�MB�
<k=!�g�!��
��l�ƍr��I!>r�w��Q�����٭��6x�>\V�Z�B&��4˗/w���۵�ɦ�/� (A��gl���I��P�%�B<ְ S�S��h�ncαK���rZ�p���ck�G�E�u�i/��8	!��p���<����k}5����F	��{`���R��M�&/^d��E�e�j���7c+|�X<ڀ�իW������ȑ�M;c#��+�~x��x�H�BHS(..���O~�aA���E܈���`|��a&��JB��W�v3Y�<�XlBȳ��B�S�.i���"$uD"�J=�`��lE[oN[8T�mڶ[X��BR0v�E��7>���z��|�pY��a8���x�b�I������vݺu,@B|�믷�ò�+aE*�#8F$�[n�ņ�$�b(//�E�,p�j׮u��Ӿ�!�g�L�+��0�=l�?1,#		���)��d>��F���5,*BR��[I�t3���!�b2D�]Ɔ�~�� @!�$��O��>�/�vjS��Ou��Zij�n������ʑws̘1�a��$����Y��،��:�ڃ�O�K���u�]g�f�WCcW"����w���-���'$�����;�֭[;�Y�̙㌭***xq�O>�D��.y�����P�"�wm��	:��S�F�h���^�3H�g-�s���q�g�)0��]��.���vb��RʵM]��\��B��ڦ}���!�vp�!��d�������_{�Η�i(b-h�n,�C�ݓǰ8��_���*++yw��SRR����/h
�:J�Gp&����k����0v��'�������5�K�ڵK�~�i���[�ꫯ�ɓ'���y��c�ܹSF�-�g��f��_~ٙ�t���y\�d�l߾='��ɓ'�(4��~� ����zw�_'�9����|��uoE�a�E$H���4qC���{������T���_�%BR�%m������0�Ů�ɦݛ�(1!�Ԏ��*\�]e�?��>�1�7ڿ��)��B�>�
��b�3���СCe���2k�,�-$-`Q�'��;v�N\&�_(�q��EwmL�}��ǎ�:!$y�m�&7�t�sh�M>��U{{��T<?~�̛7Oƍ���\�ؤ�P�*<X0�/�6m����۬��[�lq���jg.�T����Ʃ�ҿg�5a�����={S�B��Fl�9v��e�n��1��I{��TnlN�o��o^���mt��� qC%o2��K6�(�lk�V\o�?��њ���~����o���8gl�Gx���k���Դ跮7�D�W?�~���n4׾����چt3������r�j��i���t;��zX�;�m�^�.|�+S{}Ї�i���u„�D繁��P���|�&��9�o����G}�wI���$�@�q	�&؂�����~�&��=*�{c�'�L��-�a[ĉ7��ɤI����J6qv��傍-G���F>��\)�������7��
+!Y�h�XA��G⼬���FN4��G�]Ǝ�lrɖ�.�$^�t�����V�H�1_ܼq!(����-B1"�-���Ƽ�Ϭ]$��c8x�c�O��:�E��H2u/U���wq7@@�-5����$$%m6G`q^Dg����U�E��V:V�J�c�ؠ��9T�����!���OHζ���M�v\ǀ�:������ƾ5����>#�í�
��]�&lv��hA9�F��y)����C��aÆՊ��$~�i�&Y�h�׫�Sq��>��-����0�BHr\�pA:t�C,�OG�0��g�)mW�3f��]AXS���܋�	�W��z��kl��ĉ�P�*�B���Ǐ;R�i�,1�t���;Y�nG��Ν;;޺n�v"�P�X�z��Z�����	�3:H����	�, ZE_q=n�@���X�H�0�#"�!�4�uw���Y�dƟil��� ,2�lKY����N`�Ն}<�`�z��̗� a��Bc��l>�r�)�7��fd��Ɔ2l�#�s��:a`��"��؂9K'5��1uH\��M{q)˯
�J��5���u����\�U�h�.������; �b��������Q &�ûJA�����21�L�`��7P_ R�mۖO�O�#ֹ����.ڦ���v#��Q�F��r �@�E�Z�E���r��
?�D���H��t
�d�E>Z�ŮbxծK�-�J�w��6|26�`����ׯwD�8�V[*�{��l�wR\7,#�N,�ç�.� 4�A�<��{^e�O��(1u¹Y���^���7��=K��������<�H��`�9Oxۢ�(a�$��cD��F�YR�h+o��''�<��s�I��+�/����'$��vl|�k������ �bSD���>@0��;JT���Ƒ{L��7K��/0��oc��v�nr��P�H�n��r����	�{����C��믿^�v��,�x9rd����իko�����;����mk����dd��"���#cc���;�l-�<5����v�@3	�Yx�Bl���O����C�k��ols#����+�8b��ŋC�-G��� ��=QV �B��3�+��������v[�.�Ζ-[��:<xЉ<��3h7O�:U�I7�/��y�Q����
��V��z�a7���hޣ����t�bA��z�bq
ӰI�s���B �� �`��pc[��cI�{ہ��.�'[O;b�	x�A��F*����r@ۖ�!,��:��
��tJt�vQ\q��~�ↈ�7���OHֶ�h�W���bVx6��0�?�T+й�_V���m'�;�O1�������<�\��+gu�|L��s�^V�]T0��+���l�`��%C�-������ˈ#�_�~�
�� �~'�B-��<V��olC��)l�{�+4�o���̜9�7!>��l�`G�c�E�nA�=��^��0u�7J�N�|����rٹs��[��/��?��O�m�6gcNf�Ȭ��=��]��;��g�v�[B�<H_�uo�_L���j3.C��q>�]�v��o�0���w6,"�
�M<z�h-���زJ�>�q�,�zB�u����7X�i��cx�W`�K�4�~�W�Z,�к����S�����z�XDĆ�"�ߚ�+c��k�q�y�V�P���ў@�l��
�a���PU��`k��n��l :Ա�m�HkE�|��`'�:�w�F�S����eLq��5�Z�ijێ�aECB�g��B�lt�޷v�pѾ�������+�w�r�ι����m����@�M��`�@]�C;��1�&�9:�f��qϞ=��`,@��c�Y�t��q�c��Yco��9l�qs0�7�|�1%�4��[��p:����+>@��G�Ft���;.���(꣸�؆(���
��i����䜬�-⊴�O��0R��e�x����k�B2�H�Q�V�Br�.������m;m�Z


j=p��s�D��D��@z��Q�=t�3��4��č<�I��0N)Al�,�؝��]�6�X�^{A.�}��&��R���J�y�e
�M̭5�<�)��{�?���{+$�m���`1aM�_Y�ֆ��X$+=l�iS�p�V�y�F*<�h[�+Ӟ��t!�b����[�������
�~Ul���y}�a�M�����S�BBݖcn��z���e��\��f�n�������]B۹�|�w��[A��cG��%"ފ�vcK��D�M��`�,�<�m���w�ȦL�"�.[��z�j'���{B�R����ߟ����H��O�>�Ii$X���h8f�oq��D��U��H�uL��`�v�@����4}O�X���I�0i�$y��g����p��g�ƃؼ�`qk���%Xa~�i{2�c~���	�U�˭p/�T������1�-u�@?�V��JI�����{�{͞�	��]��}��9�/�*d���z�C���Ɇ���ro�A���l&����y|�����-AݺA�0�m�q�F*�=�E����Ǵ}E[�c*��4���#��
��Y��s� Q��Q�sℼô=�w���M?���0��g�
BBՆcހ+�<��Qm�Ku<X�c�i�M+�ƆO��m��G0�ܟ��Esw[�͞ڦ5Ӷ�au༶�h3/k�Y&�6�>8��"��fy���K�	<	�9�|dȿ��h>g,e�{�4��P{
��τ��A�ݛn��94u��tt�YD�N@�`�7�Z�d��8+����L3Z��t��!��HI?�c
�cBO�_�4�H�L'oA]+܎Զ30�-���o϶r�`g�C$z�ZK�y�Y+��K]1�Y���ٿ��������B�s�`a�ņ믎��+SX��Hta.,���ks���v��O���]AH���k������ ����v#U+�n����"�Q0��:�:��.�,@6Կ�H�qݱɸ��os}�R��xI�<f�ji�g�Gx�w��/��ժ�}�����@��H�r���l�<���~4eŧ�36|��b�����x����?�����=$־L�H���,6�7�@�E�D��\l��&�3q˖-��n�[�rX�+)���	��{RO�^0J��F�3cC!"@��LH�`S��ɓ�CS�'���%��
��O��@J�K�5k�t�҅W����!
c�O?��
�~����]�Y�m`��+�z�X��Hk��?{l��~X�0缑wN�0���\\��D��[X��BTM#��%U��,��ð �J���5�q�w!I�/�O�Jڭ���g6	���6(6�X"�ٿ���z�����ǭR��G��j�ռ���Uz���/��ӮBH�� ���j��-棾b-!$P�ƃXw���@Gu\��n�H�0�v6���v��µ_�z��:��J�
��8m��Dc�+<�fV������&ض�J����e�/_�,��!C�89a��J���B<�hE(����o´`��^m���>b�GH�,\�P�ϟ��:??.	%�2S���G\�=�<�S�Nu�u�lْW��x�i∴ع�R\���W*;�6�֧�y�ua�3'��9シ{��)JL�ai���:��$؆vÂT���$�z�o,"Th�^���y����X�A<O�(����X֊��h�ъ��5���n�U�X�<h��m4����]��l�����i�c�!$#m6T �
"�@�<3&�P��c
�8�iWl�h�x��D7��Gl{i���63����&�b�@<m�4y��s��x衇d�ʕ��}ذa2h� ),,�뮻���;v����:�ϝ�i_��A9y��߿_N�>�<�:uJ�o�7�*�}�7c���̌���V���כo�������t��ίIG�KB�Dq��ڜ
ݺus��)S�8֮];^%B)06m�T��6f�am�:c��je?l�.X��b&d��|Ϝ�Y�A�*#l���4�XxC�M��򂘂�n��*����	�z�X܃��C��~z?�Ӗ���c��G��K���\l����x�a�^���ц����V�p��I�!F��G�[D4��-�%l��9ͯYsIy�ĸZ� t�w\��=;&�H�i_��o4��:�H��2v�d�8��>8[p�1���a�uժUҶmۜ�.^�(ӧOw��)��l_��[��40i�D�Z>7�J2(�=�������Ҽys���\�&�ؽ�\�`������
���m���	���}���"$x�"��ڍ�"�jq�S��1(�&�]�����p�k����c.v�? ];n�Kq�?������������mC� �k��0
�zޘ�b��Ư�u�U���%�ԩOw��Q,��ls�~��3�[��i�x{��~���M9~ǫF�o�"�Mi�ijΨ���7m�#����'��[sA�o�k�p�/��.�A>�g�y�Y$w���V��r�ڷ n^K[��ZZh�����	�Nc��4!��!��5���B[B"�]w݅���OW�K�Lv��M��l�[�3�}Kr���@�0��=r��56�!'�v^�܅�m��O3��a�`������z�{h��;�!���m���+������e}n)����E�7� ���Z��2�̋e�]Կ�l���xN�4$2�B{����|��!!Mj�i�wj�V�H��`�3���I�J�F��V��&Qǝ��2e��W��F�ͯW���I�V��8�gl�M5Uis��iTߚ+�-���F�(d����˂�SL��V��)��q�N7�����Q^����c�����ϛ�� ].�z����i�y۳΀�;�[n�Q�F�ȑ#����b$��p�|������>��yD:��oa^6�+Ԗ��?����a[/Q�D�\�K�p���]��U�����W(�s&��X���m+��(��2��
a������s���rf_gsr��k",��G�m��/��7��� !I������!6#��O
�9w�x�%�v�������U��#z?�f�[B����Vp1��H4��i/{Ɔ
��J}p����O����:���i�,Y��S��K��g���ף��k=��Ν+���,8B���Tڷǜ���b��tu�$�+ގ��俅p�7�|���ՋW���'N��_����/��ݻw�{)~	a-���T����C(�Z��z�P��ؿ�BHYs	�B�Z�sD�FDu�X���B��D��f�Ӽ��[J]���ZUj���
ϱ}���+�qAl=�+Dsr��J�~�$]�цM�1��䯽R��`���7ҁ��E�l�o;{�L�-����)�
^A��u�5��]#nHq4~f�I�z��+�tLZ��C���Q}0�(�g�!l�̙��ad׮]�W�ڵk�0y�?���*��g
�,��b�O���3f�`a�H�̙#/��27����tv�$���;�G��4�[佽��눸�:u��#a����/۶m�����g<菱�n1���x�W��c��l��5�b+6!�!v�#��w:���X<��t,Ҷʵ!��o�i�B�����X���zl�Z�H�IRu/����I�'!���L��\&��u"DZ�!n��F��@��$��	��V�m��6�z�v����yB�߃��x�d[�h�cj��{�8c�s����(Ғ&��)��޶�v���A�0�,lٲE^}�UY�f�w������I���q�_��Ǐ��\&M��B"�	@`>|��;�D������p	�� ܎�<��}QQQ�#��t�M���#�O���눲0x���СC�y�,�lWۦ��y%I�����a^O1��z.v�~;��h��$[����"V�D�c��;*�wC���չZ�(�zr&bC��\2�+akG��o�=D�(Lt#��olI=m�7JEk��h��y���;��i�M瀹/��j����$*�‹ֆ�Q���g1��8k�`�-ɝ�;����n�n�]��tA�iӦ9��DEE��^�ڱ�7z���}�j����?<�f{���={��ٳ����$��]m���p	Ilԉq;�{!�%�!C�8B.�_{�ҦM^E��G�ʁ����e�a��<6n�
�����$H��d�氯��+V�/��ڧ`sBd�ㅐ~7����fq��A�@n=�Eع�\_ �`��D��|�߉\�	Ia�G�DD�IJˍ��(ؒ����6|�q��k�q�KTĭ�~�%6Y�g�r�{z�Bq�w�{�I+�^���l��4�hI���l��Rq�S[�_³�-�%�v�m	W�<��֭s��?�S�NՖ��?{L܅5��g��?v��+n>&g��+��"ݻwg����_9�1����ܵY���0gV�-�~�^�:��~�34h�`����;�Æ
���b.]�$�}���9s�c���e߾}��*�����h�KT��#DYz͒P���훳a�EV!�a1�X��ǭ]���qXB%�����/����|!����X8�b�G��xfa�Ns�����{�h��s�][ݘ���-i�8�>�
�V�z�Bĵ�}��P�q�{��?Gye��iq7/"�jo��ޘc\bZ�0{�cV��޳�%i�S�M��7����k�T�Z��6G��k~/��+���?wB��g�駟ƾ���7���3��37�L�G��щ�;V�z�)�?&�Ο?/�G�v�|S�f��%�g�.��4�Oݺu�k��Fz��툸�.]�8��ڵk'�_��jՊW7` ,�A!�Ϟ=�k�/_����H!��%*�n�&a'�7g��'-N�8�+�=�ʵ
�n������⊴�l�s���
�XT�⢙?�O�[��7�P����CH��:�ߥc<����ol�Ocl�Q�'�_�a��y��o�����чT�
�z�;x�A��u��E�^��c��1�V���,�gI���l��q���
3����C���j�����r��,��wȭ�嫯��cǎ9�����:n!L`7���=ou�����/����/_.-Z�`a��������/S���-	��X!��>���w�!�rǎ�]lLkٲ�#�:��ׯ�t�ڕW�@l�\�N�XDM�|��cBDN�k��F�I�.]�[�����x�I����훳qM���h�[,na!��o,L��q�f�RC�MGi��q���wѦ]�6��h��?�lu=���cy�"$�u~�����mdMc�7
�$�����R��D�\�h��6�cXD�m8(]�	���tV�C�W
�~�ص��st��j������(��
����f��,	���?�����F�Kk�?�/���6�q��Ϥ����	�jW�ŋ�ܹsY���#�<"˖-��`�wJ�.R�%!��"n�
�>i�x�@4x����9�ܹ���������� �iN�8�l����ɓu6�!���~[�5;w�tX�g���?	��~m� �@��B,�`��'�7g�:�gᴥ�S��wP�,���g� �B0Ŧ�R�E��`�m��E=�� k=k�h��F�Xl�P�������r�dޏѾIm}�g"B!��!����M��(ؒ�E���5�7�њ]c�z���R}���Q90	;�H���H���k}Dyb3a��WT���e�+�z�c��e�!��c�!�Ih��lS�p5����Zm�����d��w��Nc��6<$
��G'����X�^�b��?�@�O,]�T{鼝��dS��g��%$d���z�+�ڜ��/��Ej����&��LR�[�n�n�ۡ㽃:.<��%����͹�~��=gG�a
a6Da{����(�&,�B�"�\�%i
�V\�}BD�������A�=�vA�.��5Xt��C�ǟI
�6_-��S�WKH��:"����߉+L]�8����(ؒ�Kl_�5��kC,�����^󊻱�ogXK���Gp��ѿ��q�Is?�1�qe�C�)�z�5�ѱ�i�{=����Z�y���g��+־�>z�e��1�ؑ�}�N����	�X��X�q��9!�V���ׯ����>}���ՙ�p	���.��|���I�=�#�y� �i �L�6�+��HK�y��lߜ��:�\��|s����O�ﱨ�EO{��1�pA�™]���O�zI؅;��i&!�Z��1��0�>!�����+Ɯ��pQ�	��H�F��|��͏��wXQ7_�/^q7��k-�9n�>͵n]��@�v�3�q��Jo����J�	sI;h�[i�:�ע�D7�E�y���:�k�b���h�+�V������^�j�1��p�H�y����V�����
�0a��]�Vڶm�G�Ol޼Y��N��ӧ-
P�'���$��u�G��l��z����EQ]��S���a��r��$u�	ue��O�#����3�WlA����p�W��lI�ևXA����o�^�
=6���<�u����{�Cb�T֮4���qQc+'*"�̫<Ͻ�H�0���ֿy��x�c�����"�w�_�g<H/Y�+�X��V
����‰Z��F�;V֭[��#����/�'O�O������B!�$8)e����_������´"l�w���@սF��=6Ia�i�x	I����O\�����
�[B�;�1����]������m3ʋy�f1�f1�w��^O�M�*�X˻N�Ǭ8j���j������9�\��{S�%$�>8^Ui�KFHJ��9kG�=Z֬YC��Y�z�<���B���U!�BI
�B_/GN�d�4��_	�ZBRO^^�8qS� 2<k�s���!	`�zb�0��9��k���~'1��*0����Sq�1;*b�U#���M��5��.3�}-� B�[B�;��56zĈ�XۣG^B|��W_�'�|�>}ڌ��B!��X8F�?�+5cm�e'$Օ./��
q���92Q�*)��:�"�P�㉿�>u��JH�B����klB������}���!�'z�!Y�r�}���.�U!�B�!I�d�u0��ԩ3�$������!�Rj��bm��

1�d�X5��+!�D��	Ij`��aƾ4��>��'�"��/_�3f8�2c��km��?!�B�矄z��hQ����k�+�	I]}�'�=Z�vKԳ6�X���BH���	A[B����8s�L����ꔊ���+c[yU!�B�
�2�7�1��������5g���Y{Xܜ��%�B�o���Y-��cm8t����U������aKHr�l�ӗ�=5f����yq�g�J�Νq���7ۋ'���aK!�4���ߦ�-2Ӎ���f���J�^yE	�e��?`����n��"$e���y�e숱�O�p�`�Zz�B!�g7��u����
��L/��[K4I��%+)��OEk�#c�_|�5��y�d���8|�آ L)�B!�'��[�Zl���˰��4�y�W���Ư����ݍ�!)�������Gܜ��W�wl	!��Ќ�!�B�m'�{���5�ǎ��l	I�"br���a�f͒7�|���Y�~��}���#ƖQ�%�B�Ǖ�ok�0֥��PƏ/�`3b��`�m�6ټy����t�y�b^]B�4~�/�󿗱��.��"$-�q�������-!��-�ll�B�Nư��2���?R�\E����+�c+
��Բj�*y�q��{L��~@:bB!�$H�-�֌�:u����ҥK���+..��{L���2� �.!M�����G{x�I[}D��'n�Zx�T3$2!��q6�WD��h�Β���ؾռ�[B���-�
a���ޒ�3g��By�Y�lK������B!	r�e��/�/++�֭[7�^����^�W�����+~�|�W;d��%^%B�Z'�a��1�qM�n��-!��qv{c���)ضj�KIHRL5�wܸqk	I9��U�V!���#�h{.��	+!��{�Za�v�i�g�6lX��߻w�=<g�L�2H��V��ZB���U�~����e�w5A<W���BHB4��us�wV6�[S�%$9��l#����+W:a7m�4�<]a�NX	!��p����Uc�����K/Ʉ	�h�ڵ2g��d3yjȇ��9}��H��xk<�'�{_����N�r��~���-�G����mE���	!���v�:����7���A�LHSg�yy���#F��������4r��!5j�;������Vf�
`AB!���^9�-�?46�nj#�^{��t�MR]]팻w��)[�l���^��Y�?[!���k-�^�
�X���@��J�U�U�U��\��ަ���� $�@^b�_0V����?S�����~���!��������ƾ4�/�����pL�>i���>	3�����<�~ꩧ�����|�ry��qx��u�>K󄚅�; &gK�y�!���},�ܹk�^����/2��7�_2��&�=Y+�B�m��M���<���r�`k�X+�B����0�����e�wk���
6>�?q/�2�o�}�.!�ߨ���1v1642�ܾ=$���>z-/�k����R7JG��sjy���h^׻�,6�G��	!$m1ȏio#1��g���X�=l��/����1���w�.��	>��v�;~�x^�|G{=ϱ������Jyf7I
�?����/e�ȑ���d����	�hXk��}i�P��AOc��.J�d��q�Pq�� �(�X��/�t��96$����v��(���Q��-��;��l��v���#=m!^��)�s������^��j��룵6⊫bK��yZ�$�.�:���/��/�u/�E{|Q�~Y�����Ql��N:v1��m"uCJ�z-gZ�q�����G�!$+�)B�f�о�8�bo��l��l���<)�D�3�c��3�
�x�Ծ���߶���r�O��k"������w���`���z�k�����q��;�йlKO{V�m���X���k�]��y�X��';�<�.��C�"�B���kC}x_\�������]�6���z����>����O>�$$C $������I�Y�W�No�pGN�G#t�
ZX��"Q!�+�&ŰaäeK�l��G9uʗTq�t��[�w�BH&A��Ӎ���F����~|��ϛ� ���.�Z/��u��Y��Y�v�9�#>|6��jX見t��wV�.$X7��z}m��ؐ��J�
)�6w�؆��!���X��Q�q��E���C���!�j�0��dᬟ$(�f���=�y��.�}�-ʲa������s]�^k�R:���%��D{]究Eh���16�\�����t�F�x��������m:�\촸��x�?NܼFX�E}����ݻˠA��];w}`��ҥK��ܹs�gϞ��X�Gn�ݻwKii)��B�v�nW�E�$.��&�=q���J�Az��)�gϖ������]�%ك���Պ���l�DޠG�r��W;���_�nȐ!�ァC�JA���v��Q����`{����\�w;v쐊�
9s��۷������z��Q�*�V_�l:���
g���[�[��b0G{S�
5�H�m����i��}��7RYY�
��yf���<�l&á�ky�;[���N�1!�ǘ�Ó��}�Sq�}���w�s�8|���E��` ����p/��c��*����bm���
%���{o8i�x2V���hio8i��<7�T�0, �ţr6W����G������T���X!�����<^��\C���.�sm[Kt�[[ϵ�2����������tm����iV3f����m>6���R�s�K��(&�|��O56I<�ݺu�ѣG;^V�a6Y���e�޽���W_}%;w��M�I�c�$��[��P!��B��7���/	�q?~��2a�6c�d�[n�E�n݊�{L�^��	/���f��5��{����|1b�3�-��ؐ�1���k�M�6Y}ю=*G�q�)�6������Ǐ;�
�W�iD�m�gB�`��.�����;c��ӧ;ib�ƍ�t�RY�n�w��~}���s:��<�"�6:w�Z�n���9�@l�Q/�Q�n��`������BCF�ۘP�V�m�ذ�mt[�� g$�tT��ދ��Z��޳�D�cAن�����̳�d_C9�8��Ax���(@I��wM���a���I6�w�
��b��v��j))�I��D�FWy�`\wz⒠�"uÜ�æ�޻i-{�\��J��g�~WKT���^���9�%�-D�Ǎ�O�YL�Ǎ'cǎu��tO�͛7����6fAj�rck%<��
ub��8B���	Ym�),CM٢��A��M��5'�KJJ�S�Nl��0/���̙3��i7<�9i=���Z\oY���v6a�p�
�b���e�l{�ΰ�l׮]��3x��s��,�6P�}��	ؑ�P|r�ܻx�2
��úϚ5K�|��F�ڬE�ɪUp�u�4}����T�y�B�S��u�a�!""'�W�.|�B�m�zޞ�2=���$*L�ԋ%�C�^�v��N:���x��Wڏ>�� p^�kWk��:�Pfg%�l�\����؏k���n�4�?���v���7�ڞE(�f�,���V��-��v��eQ^v���3i���	��
��7�y^�GoC�c�ym��NS+������&��O��x���y:����ƌ���Ϣ<%���"Ȃ-���z�:@���S�:�A]˖-�o1A���"qw�	,tM��"ya�a���k�q<�l�H,�ã�>��s��a'�#���чF	�-BK#�t���(���ۇ{a*	!�!�5
�/M�ޔ���4FJ]q�'��C��8���Hgp�UW�
��nar��?��?q�-��p�Y��j^=�H
u�#����ԗkڷ����9�������:f��"K�ݷhǿ��ۤ�����˗۲�a}��S�v�ɡZ��:1�zX��c>wG-��f�+�W<��-*����õ�"m{���պj��s�@���%�>Xx���� ��
azVۓ�z���=lEn'fS�|��3��G6[��
F�zD:��m5۴]w����0d7Z��7���<Q�6g$�6?p�������W��3b�{��U�	˭��,Qa�;޺�gj�*��q�F��ͅ��\-Q!���H���$~`ccosy�m�7��>ڷ_�sϸ�@�^�/���	o����O�'mS���ڵkeÆ����-1��d���x�^�{œG
���[F�%��z�Z������������_|!���l��}���6H��(�"����ۚ��yY�`ך�}_�:rRDi@9F����'�8�~a��x��7�[6���g�}V__�q�&�ي!���%��c��w����e}!ϑ�>�=��$�)=�"��wܸ�0�' T�#/�
S�T&O�,ᅬ)B�)2!��b &��u	���;���ɂ�,a���Z�Վh=A8�<u���k��S����s �~�������
��(Ѷ�D�J����m��[�ƟX#@��B
����-����(ئ�:{�94�k�B�q_iP�_�;_�k(g��*�O���;�m�>^�"��/�z�y����aݜa�z+����{��Z#���V��w�G�ż�gƶ� B�MypF��y��H��d�%qC;���{�̞=[
CU�X�D/]\��AEX��Ex1�W��
5�E�1c�8!��P��k��O?�
+�(�[�I��(�⺾������w5!$�˿W/Dt�W�����lk��$�1h���:tp6Yq6S�i<�.]r�[�ӛ6m��A	"�v>��Z �b�*.���z<4���@m���ot�ܶ�´�\����ϝsl�msl�|�WG��B�=����0��*1s@Fy�أ���bŊ&o����t6�
2������\����BHg����s���E�+���zq�m�a�!H���)^�����HQ�F�ٷaZ0W���n��\�Gu��1*<q!@7J��i��B�ӎ�c�f�EH`ۑf:�B;��L$�����O��|�z�ZAk���;0g���Ĭ���C_)o�V�csK�{�#
K��u�c=MI��Y+m�l�w�5\�Fs��#�#�b.�:�+��#u>p\�m`[�=~
�2�G��_|Qڵk�B�����E���N�G�M��x�J�~����O�۸N1¸p���ɓ�(�>g^x���^`�HH���{d�:��1S����#�E�����)�.D�v֝;wvBS��� �9�i@�B?m7[ńP�`�%�
��0�N'##��ZQC�TTT$;vt�X���]w���.{������O�<)۷ow�{����|�w����Y�{�]��s�
����ydʔ)N�$�G:�~�i��s���nO�`�Y�m�}c_��o��^�ձ�|�.��S���ҲDC$�5�;�!#�qO���y��y��,�^��#�t����j'��~IH�i���pl�����\��k�k�^T%ӿ�`n����hwʴ���$���:6��{�\�yԺ�dms��Š���.�5�6�\K�z#�p�V�u�q�P'R�6���;��i�K�/u�:�|��׃&�bR�B�E_�8q����KN�lb͚5�d���!��A���>��fǛ��X,����	����,��=/)n�(�.6s/^,s��eKNH�X�z�<�8\o��!,�"b����?�MA0�;$7����V��5��W�+�n�
�tؼ�x��l��*<���㈯Çw�X�36W����0��#69r$�˱Ck��J8qL�m�q��҉ ��+DP^^.;w�t�7n���b�}�OOx�k:[�Gh{�#Q��fC��F\,tc�0����t��RC�8��6,�caa�z�"Dvfc�I������
o�C��{V�[UC�_>�?��c������v���LJt\��-�����;�Hk��9�a��{���!^UH��9o�_��ይW��+[��r�y�SZ(��������i�ؐHߖ�)y���'
7���nʭH�џ���f׳�J����[cE؅���:;����9s��Z��
ޣ�䬩�={������h�M�&ӧO��*--��_��ۺu��5~���&
�N��7�xC}�Q�ڄ���|�LwM�b_�X|F�I:�p�֭��E;i�$�k
v$�����k��o�o#�\.���H^q��c_��6��O�!C�8�0+���8}��|��w�c�G����x��c���Y��s��uiL�.�����Z�������b� �TM�"	r��'�G��������ׯ��_���B#��W�Ә�l���P?�|@!v#�t�a�}b�
!�!���@�)�����`Xd
�u��X��`�q�wi�=�N��Ű���*��\�)���$�9kC�6חT�	a�+y�2^^hc�h5���ci�ܐ"�6O��U�f���1n��1є�{�ѵ�{�Nj;�w~�l����R]�|��{?�`������H���K�V�N�)5g����;bĈ��f�#���	�~ip�{�-�0��rDxBH��뮻�ݦ��,�z�
�6��c�I{��ሴ�-�6^�IB<oY�2l�P����v����a���O<g����������+�:��-ư_|�sN�֏MZ7։ᖂؿx�Q���	�
ˊ���7454a*[�X�I'��o�E#sY ��qE�]��s����\�|�f�~�2���pu� ������q�AUqo��#���N�X[�sqsݡ��nj��͂�'%�h�X �	#�`)�"��}�L�0��0��$�M��Z�Y�8������9���^�^�NHj[GRUOl�Ҷ���$�߸F��j}����zK/��:N?����4�9b���Ѧ�}���2N�@u}�k&�Y�ࡘ?c�Y�bE��ȁX�m���۹%�G(�7���,�ϛ7OF����m�…N�d]����˒�W=l	�>,X�l�����ϧp0�M�
�؁���9
a!��N���5�4�(�!���*��-'^M�.P1��?��hQ֊�7�|�\u�U�r��ѣ�".68lڴ)�%k6�mҹB����X5�{6���x�sܫϱ�;6��5���n��{��#
���H��Y���ѧ�q�['.�E���Bv�#�XI�_7\��7i���q���m['��O�����Ż������)�6����[6
�1޴6�"D��%)���j�>����*
�	����%�cN���f�n��N�Z���
�~Օ+�m���|�v�}I�B�H4��n.��@t>�^���7>�z;���
{������^���t��?{�$U����)�A��DAZlP����ƋM�=�z�ÀO>
��
	�z!���!�
��JK7##!��@��H[��� /A�7Ի�9�T�z�Nf���dV>��������2�[uɒ%9[i����5�P��Ӷ)��Uq����dzf�x(�w:s�LhiL0�8��1�-!�ġ��s�צ4�m��W?Bm]x�l	�O�r|;�*�n��K�Y�;Vm���YO�?�v�z�8;|�pz�f���ZM��h/�ѬQ��p�ZG��;q@��qܾ?&<عq6��w2���V6)�ؘ���k�O���m�c����1[����UV~�i�}�����\����}o}d�'<$���a;K���_��k�~q���߲I�5O�Ho��X�T�����D�D��PSE�'�g�e���gs�>t��u�������F�6O�E�;�܆�&��6R/�z!�~���{��w`���2�/�oS�4�ڠ%[L>w�7�|���#�<≏X�a��H�Au�'�P£�s2,p��qca`Q:�Z�����͛�BH�@�k�u֠�i�6���L-",�c��$o�q޴����
���׭ϫ�֊��KzŨ����Y��'��c�F<`��f�q���%�%�޽ۉƒ6��ЧO_�|�p��N_%��*P��Q����cƌq�/w��7�,��S��=�	����y)`<j�{/Ҿys�R1�ϳ�>ʤ���6��F�
��������M�2<e�e�Ş��nW�Ehi�JFȵ�R�-Q�`�O܍_��		������ڵ5��-�ۈ�ǘ�b�����B�p�
Ě�n}m��Jl+���.Ѓ�X]�ds����
�#1��
�m^�`vB߲"�H{o������*{ctH�j��J9��%��#�4R�)?���x)�X;"be��?^^}�U)**b�ӦMs
x<��6N��Pi�A��hK	���Һ5ƆNyY�v�e�`;X
ׯI��W��
a�	I'�x�4k֬�B;��m�
���13�\�z�r��c�:�޳��V����#G��ѿ!d2<W��6��:��P'q�6�/���Q��?9�!"4:����?�$�u�[[|��(�"���f��2�E��C�{[��^�m+K'���N�hX#�cǥ��L�P�������&��M�qC*�տe�`����$�=����C��^QW/���	��ٺ� ",��8d�2n�#Qԟ���������x�@��EE�x�p,p�d��6N��Y��M�`�-�U�	?[r)UUUNJ�6�jBxb������m���={�>��b�=Ұ�rR�Z�����ŋ�@ f�����S"�d�`�B����QX|G�/=BZ����?��"@��N��$��[��E���#�;w��h��СCYY���sժUN�de6@��DP�e�;�!�N_�q��E�����!ӵ�N��p
[L����wC�E]nȱ=M\�q����Y*1�6 '0<kw��m���ym��Y{/���K����&`N�㍵�ll}Bm�nA*���$c�l��QK�^�
g�o�{�z��!�B�:O�w�@��l�J729�o�hjGԗU's�]�{�����t��a����{뭷X����a���������	!�k�j�)���۽�]v���b��u��_~��_�=�!b�NXIj;ߝ�����v��&LpB���ۗ����[r_��6�v�b���!o�%
v���E�[Byo�V �"|��)���m���ʳj/�z�6g�'B�ѣ���G��^���9��-Ha���~d
��\ܫ7�r;�҈�����*_��]��DE�vV�{��Ē&$#�#����6��-�[[���%��O{�5�d`�E~�������$ᶁP��^�����$u�N6ֽh�
}�(�ZD�ٗ�yd3�M �Ci,c�t�O���\G�IݡCָ&رc�2��>\�@�ׯ'
ੌО�؋�^�Y�����|ذa�石�		 #F��<xF�*�^�[B������7��j�u���A?z饗��-�9�z�f*GOډ�>�0�I��y;vd 1���\ݲ�n�"DP�K%�\���3�E1�N%ǎs6[��0���_����9F�֛xw���b�#��� "<a�S\�(m!~ �C?��Xʄdĵ�-6��Ӿ&��-[����XD�t�5�dI~���s�Zd�6"�q{? �+6P��4��6F=�Znu0쵝��
�	�7���y6ƾ���=����R��)n؞��nܹ�r
,Tn޼�k����S�Jqq�� 9m�N�S�<�=z��<!��G}��{���OQG��
��30�.,,xI�������JA2��7:�>�Ax�Tۜ!?c�)�挮�!9�x#!�^��liV@���᭾3��xQ�YE^|�Ŵ|�iӦ9����&��N�`k�T�m����������3����
�O��_N[x�B���q2!$�ׁ⊵�SO�d��'�����C��,l�؈��t @U���ڢ�I���i/���ݴ�9.�b�����6�\�����-؆��a�B�WI��wϓX��`KH:�>}�,]
�g�jk�5�p�0�)//��m۲�		'���8�S��T|F��)j��]����W�G2l�B�����A
;!���<���e�c����&"�-�<-M����`c�T �r����F*�S��cl�P��|��%-��RƦ�5,@���
�tjb|;,z�P�Im����0!���!�F
���x�� 
�yj�׺�Or�M#Lr;�DZ��b�m}!�1��"�e�/�>˳E�v0��6<@�E�x�#�G����w������o�K��B�'#!�fɒ%�`a��w�r8&��:�4���+6!!ҍl��!D�gjo�����g�}&˖-�XK��)S�ȧ�~�'
0.w�Px�h�� 0Tm��^h�w#
6-�����}�vy���)֒����ޓ]�v�c�=��-��]�u��=
�
N��K�9���7�x@�h��6� �g�"-
v�[�EŁj���`�7�u�U�8�J�.!A^�� _�c�yyQ�uG(֒��O����8��؜J�g@��$ ru��6y\��Q��$�m����˭�1�4��m�n��w���6�[�!S��c�����IHK����E|!	��#�"�5!$x�:U�s*K"6���������5�>��Ç���c޼y��0�֯?+�p{}%|2�a�5���mq߾}N��&����,�P�`1Y� �����
�l*�N�~衇�]���JL���V�p�$(����Ɓ׋�ݏe��l����/?
���X�v
j�׷�j�<�$��5x�7�Fq���������h^�Sa&N2�ɀ��	��2�����h�Qm����Z�k��v�&���0ҹ3���x�7��]4�w�68J-�!��~��1���O՜O>��|���^TB�x	���[��'�x�_��=q7e�N���,���i�:Tf̘�x3b��b���y�H`�w�'���[��x�C���<��^1����J�ş���uM= ���&�'X�H�������]�v��9�;[����ZBH�P<9��ϣ��JM�"$��v�����_���
o[�����6'�2oZn� ��v�f��M�f��86۞�y�o-otKp�擱��S"؎R+��;d�ر�9����E�o$�m�aKH@9���;wNl�m!\���U;���6mrr��K �0�ї_~Yz�vtZ�R���~,�{���,�nw�}��M��_�…oFB��)����W�
��_��c�ڝj�7l� C���3gJYYYʾۿ�ۿy��R\�X�tq�5�
[�]�v���ƒ ��,p�Ö;�	8�	Wk�6��'�,�C���"!�����}������pk�$"�Zx����ZK�d�vJ���^c�=ք�߳�S��)c�_S!�:��ѣG����P\\,={:m�g%�-�`���GIuu5���w�^�pO�,/J6�t�<y�l޼YF��Nr�Y�f9�H�!��D"Dq2S  ��;�
��DtR~ W�~H�v���C��hn��v<�<̟��u�l®ğ�-ƝE�9��iӜ�'�l۶M�~�i��Ҁ<��C��p8���Kq[x�w��B#{!�ۧ:�"!$a�Z����O&A �":�k,2��i����	;%��s�*�zB��
��{�|a���d#�D����F�������ԁ�w�b<sg�O�Z$���#����wy��@�c�����e JJJ���'!)-�O�޽����oJ�֭y�I�ӭ[7y�wC.gk/_X_���� qC-ã�A|�Y�=�g1W4��L�"�~��?��V�MX(zB\�v��={d�����\�ܹs��q��Çe���r뭷�ѣN��:�nq���Z��'$Ȭw!��Z/qu�|��a��EIH����	���|�U	��O)!M��伸�<c�m{Y�a�}���QkB-�ɉ�vD��𼅧��j�k�x\�4�}��흗86[agE�_ �!'���ӧ�K�.�"$PL�:��U6�ݕH�׺/�gy��Y��x�`AYyB��v��9���m?~�xY�x����0ӧO��K��x�O�>?Z����+!�����~���d�ƍ2g��{B��W"����S���J:9h!�b3Cǎ�<΃
�{!�Y������g!�?"�xM�i��jm�nn�o�1{��?$�h}�����7q=n�I�P��Mt�P�`s��,�[Y�����+9�6�|�[B�#�3���k[�ABHlm	�/�1:�*�
4H_����
�'‰�?��}45��&\lL�d��Jq����V�,٩���w��ձ��l1q��G��.iBEyy�:Tv�F�������@��7����p�!�`�^�m|w
�b�.QˇBWB��<�֯_�=T���
��w�L��Mn��y��9^���
�͍ܩ�p^Y����6N�]��E[��|%�bQ[L�[8:B���w!��
�B�����Z���X����c�jkQ�@����e�8�ï���I�Zp��+l܀x���ako�p�����	n� 9�.�}��ޮݭ�x����y���;�ͫn~o7�P����+�����l񥾀 ��_�Ɛ@�'�@t7'��#º z����. ��,[�l��#G���kZxP�ω���FK�,��%$F��yY�`���9QM���7|d$؀�F�A�����^����IN�z�j��v�Ν����i;#N�0�Ŧl��{���ы��l���I;�$��
}w ��@�,�n���W����^�-�`�����}�u�"K�������C��d�K1y�$s��O��>B��L��k�D&�B�vM�rD_�v��9ɱ6�Ӥ��6dc��O]a���6>�`�i��*�]�}6+w���V
a��iqC1#3�1#
q�m���oM�`��Mw�q�N��@r�ʺu�&⧴
��@�So&ca���c���̜9S-Z��ڶ��� V0�F�m'� �j�]K���|ꩧd�ڵ�C8x���#�����رc����ƍc����…Ά��߮F��d�w�l�$�v��Ț@2����
����uR����7���y%�bI���sq�Ox��S'&/�d�_��M��G-��V�/%$e��1D�@�cG���dH����/}~�K������gͰ���/�'��s��^�MHYq��6<c�D�Y"V�6/�e����ֲ��@�裏z����I�6l�B%$�6���_ע����ϗ?��b-!	RTT$��,\�P��틇R�D�OG�E>��?��b-!F�䭷�rڎ1O�
뫲�l$�v#C|E��.�VCQ�ux�ca�/���@���hE�'�XO�r����p�{�|hs'(�u�9d}*�XD��7�w�n��!n�l�ܢ�W�MR!
�j��HGR�����0 �V%� ��%�k���k�.�h��.Oh���`y��;1���|��^BZx��w�}8Dށ�0!M���Z���޽{;b�A�xR	I"gϞuR"�<�~��_�aÆ��i�}�����w7q���ퟣ�@¦fx؞��'���]�F���Ծw�s��X�ܛ�>�z�%IH`�4��w�!�+���>M��O�E��r���B��W����:<i�����f��6�n����q��ǵ���-�a�]_r���x&O���J�m� ��q	!-Gqq�w�"��2��ݻww6�P�%$�8��E*�b��ZB�f���RRR"��HU+؝���O��M�	�4֋����X�j�k�Ȅ
Wnf(�7����2��X��X���XK!$`��OL�Cc��C����[x�z��O�8ٳ��:���+�u�>'��R���!�O��.]��F�@s뭷ʶmۜCm���/ێ_|�:�KH�ٹs��x��T��k�=MG��$f��۷w�G7�pO(!�����~gã�@h������������y�Ih�}Zo���m��NM�D��]רݤ�g��,IBZ�-#_�o�
���&,
���R�akb-B�C������#���2ѷh���gl�\#iLA�[�����_�Ɛ�3j�(�pbo�b,X���JH0�|�pE:��$W�?�a�)�B	*����5k�8��滄���,��U�v$$Ӏ��
�V���c��T��"$$�{��_N�n�80������S�%�������"9?��sJI�`�e��nx&N��i�O��� /ގ;X���x��X�DAF����o7�,Y�Ŀ��B	$]�v����K-�	�j�ǿ�&�dW����.�z��~^�G�k-�3!���6�:k���h���CQ)��B��r�w�~�E灩��w��_�SM��}�  tP�7��BX��8�3g��42w�\�pq8ޗ!_���Sk�裏�c�=�I!$cx��7�����>���i[���2!)E��G����Y�l�W.nN.x��’$�Efmm�<�޵�#F���ׯ���BZb�,C���ݬ�O�{�J��S6l��[��֐�s�wx����A�=�Pq�%���E�9��
M>7����j=�~Y�lO$!���c�ʕ2a�B��@\��l�5�P�^�$AX7x�C�m�k�I�jݿ��HH���Wdmm�*��џ��l8.�#���XvB��H�Z*�L*>�9�q��k��L��s뭷z��|+Fs��_UU��%$�;vL^z�%��ڱ�ʐ���ڸ��BY�x1O$!���$//O������ȵO�Y2Y��zR�"�[�s�E��&���"°�f1�"���j��&깊�
���}t���BH���҄�V�B\�6�lS�C�u�y�۷�g��A���n%#��"o�w9œBR��?.G���j�PWf���n�?������у'�BHƂ����
��{���dO�W���$���bmk�m�u����o7��W�(	I��nw��`P�kqM�f&x�2o-!���#c<|A�=m�:L�`�|�NL�g�y�g�x�y�Ix����JW�X!K�.e��žz�j«vz}�%jm�L���#�B2�>}�8�{�v��"FrV���-�`�p��e�u��^�5�;C�P['!�G����m��{׆����O0o-!��l�"HTZ��&��m(�����.���|�3�g��3g�8����蒤�?Y��nݺ9�����ς&$Il޼YF�������U-4a��%���0`����H�v�x2	!�d
_���i[V�Gf�-jd�ۢ�s,�o�DXD���i�)X��j�v��8ꗋ��S�T����JH���?��Eq�Q�2R�M�K�Z36�`�~ַ<k�Br��g�3�$Wdz�������Ke�\��p���˖�<IP�ҥN�-H�ۮP[y��)y��ȑ#,hB��޽{����o)�6:��B~��')�B�:n��y�7��/�"9�1��\�eK2��bQ	k=!��^.�7�� ��e�PhK��ԡm.a�v,WͻV�7s@���g�BH���y۱�7-��R��s�J�l��|�$���u۶m�h{��i�!	�64i�$��L��?C���q�ܻ�BH6�1��2�l�e�ϪV�
�Bmx�I��؃4?��/��Ԇi���EJH�Ѷ5X��\hk^(� Ft�wm'q���x�!��Ā�퓏ؼ��E`J)����|H,��E�x�I.�A�j;�9+ϝ;�R!$�v&O��W���+:S@��̘1�'�BHV�l�2�%q�3>��/�m�tL�	I]k��}=&�𤃐t��^,VB����>z3B�q��Z��W׻��л�BH�a�k�G#�D�T�MDŽs��4̜9S֮]˳L�ŋ��T�D()���׬Y#�ǏgxdBb���ر��(~����*f�L�0��B!����˥gO���������{t��%AǼ��y���z�z��&j��x}�.,aB��N�����6�=#
�
�E8�r�z�<{�Br
�~ԛ���44r�v�TsBW�w�}�~�z�e�;�M�G`��H1Oۻ�[���<!Qp��	�8q��[�w����6�) w�c8�5kO(!����W�^��s�yw��̂�Ѷ"
u�&I�`P!�y�A8B��J���6ЛELH�h�Bo����~q7�WT��{���G!$��+xٶOe�t�t�������$0�޽��0�
�N��;wC���ŋY��4��ᕺa��}����ILQ�Аcƌ�I%��3 g;6]���L�=��^�V���<�$�\�v^\��*��BHe��ȭ�����
\�b&$v����t�^���z�����E��J�][�3H!$W�(g%š�ӝ�g���8�6m��={�g��8%%%u�)�(�DțⲲ2y�'䡇r½B.�j፾e��m�)��Y��$�EkB!$�x�����'d���`��f�i�]�_�3L
[,� �O2�a��{!4շf��m`8��������?< �����p�6�_���w-!������)%���Z�w��v��a	ii�{��Bb'�T��1�^�r�6L�.]�A���#F�ѕ�jwI�B���aj�Ƒ��B�5�w��O	�������{�A�����@�eĦ'n>���M����ՆhxP�29!�%�J�O\��ol~{�r��k��G����"!��pD�(RmS�e�N�[�_7���}�ʨQ�xzI��m�6/<7�_7���V�Qmݾ}�d���r�wʊ+xRHN3u�T��xE\��T���I�þ�BH.��^Ǝ��"��I�n^�j��*��Cl_������.�a�z�Ao:�����W#��G��T?�F�>!��K��q7;�=kk��[��At�g�Bq����ŝ��L*�l�R���B�j�1a�HVPP�3LZ��˗{�+�������^�G0h߸q�<��#r�]wQ�%9B #�yqq1�-�}�$'�[K���[�I�x�	!��4>/�gC�P� Wj�Ejx*��$�w-<��E�
�l�NH�,��
[�Mj^L݊��I�}j;���h���ڕ<��'m���վW��X[�b-<�ڊ��pȄBȥT���"2%�N4�}^�؁�Pm���ĉeƌ2f��R��?~\�"G�:�V�h[ؑ�+wU{N�Y�0`�㙇ܗ��#���ٳ�W^��b��7�.�4I��W&�M��D����Ox�	!��<=� ��\��i-�?79~�?�v���1/����Y$AG��6��+nۤ���ڏ���R^�}��}��=�3Br�-��'k��?�a��Ho��D��h^��j=�}��B!?�W�����WV��6�w�B���,D���:�� ��ݛg��^5o���~��s`�h���ރȁ	�����N�x�ϝ;ןG��qw�7K��ej�>��s��/�dB�yv��-:)_�Ut���Z�nxR�b-ħ��z�b�i[xB�z<@���//�JI��m�gz���;�nt�-<������!9�)nd���n����y��p��4�m�-����Y%�B�CwSֹ�6d��`���<qwX:��.��;��@����/�04$��)l�`�=Ŭ��C���o�Y���Z���A��
7� �]vO.	<����0v�|k,�p�a��ڵ��'�B�8�?,�G���S[�nHp�y?�q����y�H&�ո���� A(E���dN���?XBhdx���}�����,���v�u�	j���?d�B'�]8�	lې�el�Ք�!���}��6>�X�R�-�޴���?^�U4|�p�58����x��:u
wgjX��s&n��1fM�+�k���[n���]w�%��ݻw��}���oӦ�<��$���2y�駝�ڳg��,�.P�k�1`�
g;���E!�x�ٳ����e;0a�cY�6�	ށ��q	���$��V�;�� �"qU*>�����-&�o���^���}�r�=���~�U/l�8 �W��K�6���k[x��c�����x�	!��&ǿ7�}/�x��*ضJ����Z!Bϛ7O&O�̳Eɉ'��ib��D��4��l��jVh6Ȭ��;a����mqx�^�d��Ѳx�b�ڵ++��>�P��Z�m�����m8�ۙ{�B����"'
Sqq1D�gզ��w��5�%n!�bq�S���"��V�����+��%��	R�}�!"B�»�"����B�>}�9{�7���|}�J�Y�!���z3���nH�b6'T�[z�q|x���x�	!���ǿ:�����̈́�R$�a�_yj_Vk3n�8Y�t���Ӈg��ӧO;��ׯ_��;�Fj�/Mppԟ��}#q��.&�����آ��y�V&�?��[�NJJJ����V+IB��ғ������������B���-���??����n��k!�",
vB�sՒLC�2�Vo7�*��b�(e��X�ߖ㶕�-۩]f�v{��7Cۄ�o�B�'dv�w�8V9�)�+�U�>��B���a�Nq#F�~���6$ͫ6�-��@�����B!$��.�le�\d�����A����8~��Geٲe<;$��;wN&M�$k׮�]x�7�xJ�YDo[h��;!�	i�-[�8x6l���ףv}�>'��-<z9rD���*VB!$�����z�j����4��uOWB�VD�9���k��ih]�����]�X��˵���֏<1",��6fm}�=扵�V�㼈���	ĭ|��τ����f
"q��⦩��	1�j�X�N�Wm[x�c��.�r'�B�꣱#
�i�Ym���V?�]䫝����!A9ky���b�ّ6�
�1�ړ'N�w�}��\�ѣG����P��$�mN�gT��N��}�VB!�0^���{�!��5�����Y����Ԏ3_-�D��wқ[l^뉵)�O�;T�P��<�Tp
I��������^�.�y{�+Bmf-"1�YD�]��hw��Q�P�hU
�K�3�������m�'�B�꣱1�Zq��R��t�o�͔��ٴi�<�g��a��}���.� �g
')�l{�}����/�Ǐg�q����v<ױ���r�����l����_��W�eB!�w�u������W��v�%�h�D�A>���-��4��CL(nTx��E�M�����ȋx���x�޻��ˈ�OKki�B�M�&q���a��Zx�^�����U�&��z�]�﷍��B����A�5�h.�
��b�P䫝Ҿ}{'��
7�3A¬A�5��< n>�� dݼ�^��N�СK%�غu�lܸ�Y`�$�޴+��U�h9�����B!�4�4�`���R
D^�	��b-�DB����FtA(֓��n����&���Xv第 �!�ֿ�F��I�����#�ŏ�搣���wk�-��8�@��174B!��16c�w���=luЂ�������>��Ç������ӧO��.R{���,=l���6����B	#\w�n��[n�.]��Kt����
ǎ�m
"��v��
��]��ؒ%K��c'�B���F���:/B/�Ka���
�P;�g���LC� qsK"b°BP�M�w�dm�<v!����+7��9ȚE�j`C�`�W���{��9c�a�2�ҵ�P�&[��Ŧ�nl"�Bbzcuo��[}�az�:��x�
��$�D����^a�$
t�}�jժ�ӦM�e˖�T�D�P�x�	9~�x�cEEE�p{뭷
��M7�$m۶M�wٽ{�>|�h�o�._~��s��S�g7��-�^�R�),dIB!M���/�F����jsS�q��
�(֒�#
�m��kq�ZxֆY2уE3-G�&_XH���O>����6a�F5x�_i�Zx�n�6v��7-6GT�:GmP�gqs��d-!�Bb��	�˪��(Q��N�/�<��gH�<y��˿��f«��6nF�}���믿.�?�8+^�Dl,X��M
�c
z�W\!�\s�sA���+�t�]�Hǎ����Jٱc�%�SZZ*�v�rD�C�Ɂ�ĉM}����
�G�R���݅Ӏ2ƹ �BH�_�^����~�����W"L�sβ�I&�u�	qsJ�M��jG��K�`8ӣ���m;+O��B��1�P��w�r���ŀ}7�^cD[�ft�gϘ!��_�m1o��Q��(ׯ���x���i�jB!$�����;�c<ac껣l��v�رc��?f������x�MfS2��a�LR{���$:P?QO
��~��"q��av��}�gj�����⊳;�^�
,l��D��/����Bi��#G:�p�}��$��!C!om���w,q�ih��Io�����j{�
�
A)��lH�i�o���q���cMK�\�77Y�D4�2���`a��ߧZ7��.v~���><^��w�AX.�z���߯&��i�$�vU���}�r�lB!$�fq��O!:GR[}3�نykI��|XC���;w�.�#���l��j�S�LqB����:u�;Uw�/p�hz���y\lr�ю+�_�`B�[�C���#��m8ߍB��~�iY�`�k��L��g3�B�˿�H8K����B�k�{l>@n�*I�h�-c\-O�����׆�x���,q���]k�W��c�ټ���7C��`�A܍5y��i�;&�����o�CΠ+�=;�紶ה��`��v���r����H[xO�`�]ǃ�6�vB!q�׈T�5��?�L�`��ތ�C2��{�ʸq�d�lB��6�H������DqE��Ǐ��˗K�=X*�.³v�Dv&����%?l�Hq�s��r�,�-B!Ѱy�f=z4wh�>$�3��][��}��M2���A�;q[�~q=��7�[\( �"\zq�#�ǭ��k[�����PvX|9js]�m���w��w��,߬�Y��6�>���y�}�w�¬2��}����Sΰ
��O����6��B!q�׈V������͕1	���C���Fܾ}���IF�vԨQr�r�%�9ɞpR����E��g�}��%L\�������2��ޭ�O=_I�P�ł�ذ`�B!�D�������h�����?�b�U���X�$�}��ܢ���W�[�BPZ<C�)������:�E�����)ֶf�s�	�z�~cu��)�r�ۘ(����X�~�ح�a뉶U���v�cト3��I��R\����BH�}��čjy��qzC}w�&�w�L�0�b-�H���/���y睸��rb�eɤ��j����{�<�]�V.\(ݻw��Bٷo��oժU�C�j3�
�D�'�p۶mY�BH`��	��%y�ڰ؏0�{A��p8�:
���k�nc^�y2'Gleֲ��rD�A������w��F�g������!�1r�V�DQO,���w�qj�_a�����%bn��i%�E@!�$�����ĸ�2���W7�ydzf�b�e̘12o�<��2�n,���<�w�M��ʕ+o�ٳg�da�w�X���G��YK��B!��jx�I|[x�!�!C!�l�X�ܝm�7O(E�80q�"D[�_�Z�<�w�B�Rk�R�塆��ȩ�w�]VnNh���Ұr��UjjY_�vQ�T��9��jg|v�wޞw�^Wa�WK�6�SqK!���@��6'������޵���,^���p<��
W��%�r���h5�¾��+�L�Ν+555Y�㋋�e�ȑ��.-u��j��-�n�~��y�!���կ���C�P�$�%��9
kY�$��:��j�7�*�d��,��]���qE�/�L�ta9��P~L�uD��F���j(�f�,B!$!����1�ћl��gђ�`���^hމjw�DR��V
���������?�x�"�+Bg�����=Z�N�*[� �����g-��Ύ�\ؘ@!�$�V�Z��w;Ct,�I�[bR���MHV��Sܝ�m{�� D�%��𴽨���^�%G�B�V럋e���/~�B��������r�X�EM!�B!q�-ō���1E��k`0V7I�`K��^�zɌ3���d6m ��H�{�6�ܹ�6���Z��o�L��?�䨅1��͛7��=j��~f����Vs��9���fiB!1�T&�a��ܶ��$���-��^j]$���R�#�B\1���N������B�]m@.����j��cV_[��Q��P���
��g�uB!$1���m���`��+s�������>c����j��!����/���Pcc�ړ�z:;��z���x�"l5��� �?��ٳ���k֬��k�������*�����������~��1���+y�!��(��7�	1��>~d��3���>߳dI6��}�����S<��9��w���!�#gpoq#�lS�Bˤ2�~7<�q
�d�PD�����*���3�����؃pMA�`�:!�w���B��1TT}wCꮳ[��g���cҤI�`;Km%K$�`R��3�m';vl̪U�n��v���dĈ�q߾}[�KÓvݺu�z�jٴi��8q�&�Pm�+���l	!������<�:y-K��M��_$�Xm���Aȿ�0�,�ā(��"�:�#x�cs&L��7��B�sPoK�3���o���`qS������~�i_���WmvW{q7|`C6*P�%�B��#�7
��h种
�d���a��w۶m�$.Y�R`��ܬ�����l���Du���p��޽{KQQ����_�t钒/VQQ!_}���رC>��s���OԗȧA���Fj�\
p>|X�� �B�yl��_ʿ���Cl�]mCo���b��l'�	�B���D�"���HQ-9�r��2.�r�b�#D0B_.�X~�>��z�y^wZN�@��y���$��0��Q�m'l�[j��yjs�Z�?!�gqB!�#u��MP����Ο޽Y�$+A~,�
�A�¥f�v3�9r���'��iݺ�2�t{�����ϯOMܭ[7),,l�����6�N���N���K9p�3��d,�S[͉i�=^#�BHl:��s(�	��	�I����Nl�v!�(�%����2O�\���}WLC���\���V�;}��-�;�;]&��F�Z?q=�!�~���1��=N�67����3��BI��ډ��F�F�!����cG'�J}�Qy����:ayB�5,�@�E.
/��#����&�EUUU��~Mƅt��6�.�xZH�8��v��Œ �Bb��[o��%�V���$W@�ڻ�ͳ
�6��?5�x	��p�ǽP�C��ɬ����~���9��_����T�	�0�W��2�a����_�+:�yq��!HC�c����c��0!��8�䗰`��Ӿ=��d%�
rB�nٲ�_���G�
B̮2��9a�����oa#�G�Cc��O�D�VGY�$�aK!��ɰau:�$�+�����P(�H�qX�:C����!hBܬ��G*D��6Omk��3���+���&�bN
����D��|
��ng�;�g{��}�����n�Vj��WX}�7-5V'.gQB!	��%�'�}AC����VVV�8I�r�m���I��&���mB�W,����oB!$��߿�wX
�:B���±L�	�൉
��~�F"�[x�����·'�3ka�|Vd�ͷ�ie�g��k\���R�	�
�u! {����U
EZ�0�`ێEA!�$�Y�x/�<�

�˜?ee,N���1�;��Č�I��f{N�8Q/ۢ�"�!�%�Z��"�@�@$n�$$:)�o����
�P�%�2��^=OgO���U�qk�y���������ح�w�牱UR/�]�񜒆�[�l��O�H!��8����56ƣ`KHc0�AI2p�-ںu+[B!$F�ek�pЉ�+��
�In��.m�^�#���7�qO-���<�������{�z�:�@쉸?f	�����3#�6[B!$10.kkc�f��5��q����,J��t�޽AI2�gÆ
,	B!$F��N�m0���%�������'�BȅW#<' ��J}�Y��;cv�̻N�s�"-BWI��KH<u�����!������X�,
	�����gQ���s���aK��d�v���,	B!$F�	����.!��E��;�B��q�3��BI�8�QE�iH�u�Ç�(I�ҩS'�#K��dv�ܽ{w_�E>|8K�B�_:�D�
л���p��r���y������2��u���	!�7��r�$�a����ˢ$�B�c��g�*�!��ak�B�xsqz�	�%�z_ˢ �$x-A�F��.bqB!	��!����6$��T�ܱc�TTT�8IVr��Eﰌ�AI�R˰ȄBHl�m�V���+6��[�3��aIN�U�^qe��
��D�5�ȑܓ�A!�$Щ��5v�f�y�����W,Q��9r�;d�oBH*آ�o˖-�~�z�!�={֭ǻP��f�W�X�$G�"�fd�!$A*�Ϋ�B��,B!$!0?�`���{B	� �!و/G3[BH�(Ɵ�K��$!���ի�w���-���,M�#�]P+�˖B���;�v��BI�Z����akl��u�ֱ(IVRRRRw�� ��(�5�c{��Q�!�%�9L�m�e���$9���
G����	���j�C�P��B�D�h���Jm͚5k���c}�} L�A7rBH��J����
K�B������;L$w[�%�•jg�.
C"B�m�]W�d ��B����/$r8>%n�=����$YǦM��Í,
BH
q�Zl����diB!Q�$[o��ylI.��V�aK���������8!���AԊ�r؂U��b�
'�* �9r����0s�BR	6?mؽ{�̟?��A!�DA����|+�mX�$�	�B}�]��0K�����p��k͵,B!$�yi‚-��J�[Ǐg�����	a%K���v���r��Y�!��ݺu�;L�OC�E&Y<߰h����BI&�='n��!,B!$.l-,�Z/X��EJ��}��ɪU��FB�qBH:X������SO�4!��fH�`� x�g��l$
a���!�"t)�!B�I����O���C#B!�S��/	z�G�e�=�-�B�»�(K��&��V��͛Y�BHt���;얄��wPk�*�RnT;#n�R�C&�$/<�3�-v�m!�BH�`���`��r�͝;��J2x�.]���u�d���t�G����K,
B!�	�t��$���T
��eK�
��XϹN\y7�X*���~��1����"!�B�'{�ͦ�	铛��ћO


d���ҷo_�0�Hz�!Y��I[�PȏXca�B�"�tx�v��^�p�̘1��H!�4B�N�����9�1{i��3&��}αdI�Eoқ^j_��(�\�\��ҙ�쥩5��>6�tV맆kϿ�g�e�B!Q��G��nqS��뷛u��mԛ�Ϟ=+O?�4K�d$˗/��Z,�<�!��������={��D!��F�ܹ�w�,/�
�$_ƒ%ـ��6z�_��J�]���I,bq�˰٣��Ǝ�7�E�\����	!��hƑyQ���S����L�����3mRK!-v����ɴiӤ����!���hժ.E^~�&��t�B�P>K�d#Վ�+���+���"..�������B�8�r�+Ԯ4�vU����u���u]�}�~m�CBa�d�G�kjm�?��EB!��4mV�
EV;�G�fY�����EEE,b��w�}�v�ZB(y��DC"3�!-GK�4O��#���j�&O�,o��&O&!��5�\#t��?���BJ�XB,4��ԛ�j�H������D氙�R(��<���mm����z�='O�=k�j̪#���T�-���{�<?̜L$����D��h'��p�ڍj���<;�BH���/��[qs��6�o���c^�o:���l�#�<�`]�veI�@3u�TO��"�,�������a�%��/�ߪ}�bŊ���~�<���,B!$�@4�Bhd��^dq�LC�.��B5��8-��/ϫ�gۚ���e�����ZK�h{A��~O��j�R��i����u����W�\�6L�dh?�MOG�M��z���*W�h!��$�icj'���jC�nY�j�?�!�b���t�R�Iҝj[#�Cۨ�6��u���bx�Sj�lR�� ��T+a�%��������'�|"c�0
!��ѩS')-ua;��E��'`^�y�e�X�dZ�!(bg�Q�C�Z=��Nf���O��<g=a��Yg�!lq��IQv'�N�u��1|.�a��}�M�W�w�c�A�>���J���*��R���y����a��y����\j����3�	�A����Ϭ��BH���X��Z��
�:��7�`��������v�Ё%N���˝��6!{@mu*&�Y*�b���p���
�Q���z������Ǿ��{9v�X4/ǹ�h�Mm��q�f�d4(�(xQ�Y|���2l�0�XB!9OEE��k�7���m
�g,�c��c��c�=h�F�E�Z�}���0
�Z'�A�5���E�	�el�pp����9%&�ce<W������nQpg���nϙ���չ ������y����y�m������>Lu�=V�c-�E���ʷvw��Mhc��Ox�&�B��o�S���4	7�o����`��	OxK�~�X�$�<kT�婚pf�`;J�n��#�ٷo_��[���P(��;:���/��CN�<)�����Jٱc��ٳ�t���k))i�^шi�N�&�M���U�'���vp�M7��B�i0F���C��KQ��I3G$�Ʊ
��^c3-6@�='q�B�d�6›�i!�B�Ť�>!�~��u_��_��V�-e�m����B.�2�f�x!�za�=��H�߻������6R��BT�CU{�r*"�sg�Wn�[{?/�m?q�٢�m��B�I��|�a{B�-�ڇ �j�z��-˖-�q�Ʊ�I�����@`o��ũ�pf�`a!Y�ɭrS�=ZF�%C�u��XD�x����/��R�l�"6l�M�6ɉ'�O�D^�+�qI�D�h�$
��=�X��d�`��=־}{���ym	!��\eݺur�:���ߛ���{�.�K�=^^S꽷D��f$$��&��VG9n�֫��&�Z@��x���^��+�zXy�W�K��<��d�މ�>f�9��}{��{Fy���W+�4�06�s	���?�0�牷ǥޣ�yJ����zO[X{�'�VH}�i�y������R/�:n��:��m����O\�v�>�?y�&�B.�3m����4��ۡD�"����&�)S��֭[�,��r��iy��ǝ�6�F�fE�lqaxLm��B��w�ሴ�M=v��|���;v�7o��[/q�=��X\��\
�����P��w�[�}x_N�v�ӎ�0�L�o�+����*O>�$/�Br���O?�j�t�g��Xl�����iz!5=� �c�٘�D=��?�+�UK�b�W'3I���­��BB~X��ؐ���W��Nd�9���fq��c�S�]��q!�Bt�D���� �{���<�ۜ4�p��̥�O&�f��+�w�����vV��>��y��+쉹�Vށo�&��}+�~⊶_�s��WqB!�����梗8O%]��u�Ϛ�4h����c��L���q�F�9s�bW�
��mIDŽ3�[�_�%�G-ӎ�h'M��x��Çˊ+d�ڵ��k`"�1��1���ֻ�D�@�߿���;w����}��r�ܹ���'<�w�p�P�Ţ�<�����ɓ��yyy��B�)&L� �������h�&I�sdXN�����V�<�X�ԇ�����n)ؒƙ���&�]�đ���:�	���@�G-&3i��6���޴�Yt�[�|�6q�F����U�<g���T�Α�ػ�©��ԇ��������ןp��/�[l~�v�}�R�O}�n�J���y�B�
�`��?/��Am/s�B!u}�]6�Cʎ�M���$
V�
��uB�	I�?��̝;׻��!��e™�-r�b3E]��':*�M��@�]�|��^��0��>#n��L���ym����n��f����[�n�M2ݻww��KEE�|��WN���:B.��C�9�#�v���J�lZ�,l뚩�޶�N?��C^�	!��H�a� N]����$�ϞX�:������X�/7���~�pȱ
�L�C��'�P{��#%Cp	�`�!�BP��dok���6�?���FQ���A�n��C}?�'-��i!�z��=c��{_�u����ٵ��	���s����%�۠
������'X_�Z_W�+;!���c�4cYU4շ�R X!���9����[����t���N�\�%���]�Iۄ3��-v���&zRXX�䘞5k�eM=طo��^��}k@H�-nHߠ��A��څ���OxA�v�m2r�H����
[�-������%V�N�w�b�Vl��/h�.�3f��O!$'�Ƽ��C�ǃnH��g�X�y�aQ���.3_��]GΙya4�y��>�<q�A���C��@��k!zUh=�M�3Ȃ��K ����>!�����3��G�{H���v=��n������~v�s��+��K��{�eh�C��`��V�?J���]���BTY��Փ�V�~����O��c��B���=6 "r�W6��i�o
�P�B�U�u���
O0��ȑ�ۖHfSVV�?�w������
՚�	g[,>=�u�MϞ=����>��t��1���K/�����v�C��9�K�p"��5�n��k#<*=��m۶�+�3g��G}��޴i�;vɼ�m���6�M)Y.����w���sB!Y��?,o����<�}��$���\�XH���P7�y��7��2��,z�$aҰp_n�iP��`Kb���
��8���HA(��Z��^f'���Y��׮�lވ��qC��ynJ�m}��Olv�l�L\?/�� D�o�+TdQ�C�Exj�B�>j����Yk�i�-t��Wg�X]�Zܜ���ڷy�'����;������M��Q���p˛"n���a��U\�V{"^�ܙ&�y{�B����n�I.��r��Od.�^�z�UW]ų�����Ȝ9sdժUN�V�7�[�2�޴K��'G�������JKKe��َ׭�������h�]G�<i!��|���h�0��G���$'�5Ia��,l��	�l��aK!$��rH�`)�Ѿ�`��gx׶�1�!���Q��ōr�sqE	e!���
��a�`�sN꽭~��-���B��Zvj��:�zנ�m��/Wm��bB�2��~�֐�r��=��Ml��+�hsުd��B-6�@H�'mO���/3ѓ6�r�o�����.�[�3l�Ar�ʿ6
�'�6���w]C�������'�B8��-�B�]l�o
E�C
+��Ins`����n����m��GN��6??_�z�c����ѣG;!�sI��f �"W)rj��<��:��	g@[,<�.��?~�<��s2|��3ۋz�f��!l(yXZ&�*�z?)� <5,ۮS��ŎG�/T9v�c#��-��,l�[{��;�7�d�v�Br��s����#ˉ��~��$�Ϟ �T4�>�w�2�[GҼ��n!�x�2!�:!2�4V!��£aG:6����p�ƟAl}�x��B�飶W?c'kG�e���&��?v�'�x����	�D\�z������s��Q&#��/tR�N����n�$��y<�?�(+l0�j��#[.!���ac&R ��1�36ٷ���A��,�1<�`cƌ��?�c���u<� ��={��gK�9E1����`;.������x{FS[RR"=z�`��@ �-^�82g�FqC�nN��d�`�
o�m8B-���@����ݎ���q�T���S�
M=Ի&!�1�Od�l��^s��-��ZIP�o:&�1�~����۷�w�yG&L���L!$g1b�l݊�Mr���q���=>�����C �����X��<� �b���&�^��<���A�~�*���D�<�P�m=�N��Q�c?A��u6������5�ٲC�MW��c�h�HRoi;'��.VG��E>�>��w�	�_[Y!��!� L��v��0���� �]���g�!����_ۼq������j�3Gg�]c=�x�
G�m
��®h_~Q,�? n��T��74�1���4�_���{�5#��wފ+dݺu��!�B�ݘ���p��,<���U���gdH�Ts��	�KJ�H��F�r!���N>Z�O>�d�y�>|�N��� ��`K��tL�c}ׇjE�!��B��y��?��b�M��[��?{�-D��x����>�Sܴ,[��Cf�!�l�}�yR/�z^k�qCV#�9t�l2_��L2�G��"��Q[i�2g��y��҂�	�u \_ce��!Sc.GDpBN4x�b�2&\
�bm}������ۮg��C��r�S�
�6��A��F/Lum�?3�6�*��W�<���>�"k	!��+`<�%6,��omN��j�X4���o��2۶m�x�[�ߦ6�1颻
Z;��/��R�)++s��z90�;��j��uO	*��;1R��C�F�/��&�߈�.Y�m�eqC ;������a�y��?@��	9�R�7�(����7�#�4r�B!�6�2ċ�4Z���#�4�ö:��/BY���zPA���<&�����=�u����~��P�R��\�Ԣ�yy?1�Ǚ�Xbj�5�li��'�b���Śwyԛ�.�" BI�{���hD[;X_�l礏]w�������}��ڝ���2;`����4o� 
�>���k����Y;!�p��'|c゚���f:s����ށb�B���|�i���O��L~���Ȗ-[�k׮�%u!S7n�舴�O����3ȃ��4��%[�ʆ��L}뭷�J�J%�s3g���lcw�=6�M\'��4h�L�<Y��?��#سg�#�Ó�b�j�[���c����;6�l:t��B!$�x衇d�ʕ8|[���S�?�	�	�
����wv�1
�f,R�&q���>��%����E���6�E�c�UnՈ�rd�`�k��9�}�ì-	׵B�S!���B��Wl��m�G$�z�y�6s�&��#t>v��w3�!��_��6h�mb�}N%k!��
B7�͵jۥ޻6M�uH�>�@ƍ����:Ѭ*��s0��E�X��m.�6��`�!q)�@�l���x!��Z���;�F�	����6�
!~���z^c�ȑ#2q�D�.��������zնGaxӾ��˒��ςn�o�p��VhgJ��y���MwG��Bu^^+!���b�ҥ2}�tB�����H���Y�o��Г�X@���ݰ�v���iI�`����}+z,y�I\���i�R�.����sK�������5C�&��3v��B�W⊶�.�$<�]W�X]�H{���-̭��y@tAl�9c�����?Tě_8���.�6B�ŵ�0�ZB!��#ۊ�&v�����&�~;E�g��E�a�Wd��ɾ��X�_���.��p;i�$�1�:u�b�1��{��o���qP���oa�.!̎?�>y�s���%%%�}$��A\oZ�=�Re�A�m�X;|�pG�e��A�mD�ǭ��~��D[\[��9�Xp}�7os��+��"/��:�\�[?�2]�7	p"/�n�O���w�}��BH�q��!:t�7xD��)�1���2��d�f��[����jC��،	8��c�[�=��QZ��W�Z��^u����Y�@��$��ɜ��`k�������7kSR1G}��m��z�6l�ɷs�

W����L�y��
"E�>��:�b"ׅ�	��D��B�i�k��Q�G;G�oG#�b��s(B�B��ܹs�_�g�v�f�@��	����+V�șp�.\pB�Bܳ����>�⯱#���x*(e�!�-����~���ë_�`SD�
�w�m�i�G��!ipAaa���⋎`K�����N�j�N�K�f׬���$t�����k	!��*�� �6++�_(�s�"���쉷�R/�b�3<˪�p�1�v��H7b!�����q對�7�{�;�b�糵�@J	x�yy�+S크��E��mcu'�_<Z��ԆS8H�4���Z�=�:���G�6���-<m!�"߷v}�����r�k��J���Qz��n�y�x�$��NE�5���	a�+x�	!�����^�m;l�x�7����E3F�‡����Q�d�…�N�h@x+��R�V[�Be5L�}|��c��/� ����>��3���:²lm���!��K\�E��6�zT>x�!��)�����S����=aذa��E�6yD�������s'c�<�ZG���/^��IbѢE2g�ϋ׎�ڵ$e�7	�p</�u��`6`02!��\�p�A���~�l���H��'��ʥ�'�b������U�A�]6G�b�6G�h�I�`�������b��js��R/�����j�ޓ���i���r���x/�'6^_�u�~8���l[�b�q}�!^�R^GPֈ\���m����������z.v��R~.�_���7v.[�s^� �����.�LB!N?��%��}-�F�Ә�����T���4��AEP~?28fp088x������̉GKKK�=f�ttbiɑ##����0�02�ɸ�H>"BB��(��n����y�k�k�A.{w��^��U=ݫ�e����o����<��߬[A��)q/�({��Κ���^���?�I]�P�2�@�=�I�6m����ke��Pnȧ�~:z)���9��J��'�=�p�ʹ�X?ʩ�<�޻C��o9͟5~�)4��j��>
/f6m�D��PRK��~c舛�/m|?4Z���÷]�vT<T)[$�]����*��-}�+�O��$)\�:`���`+�V���%lh:
m��g����n�{�ߟ����U2D[	�u��k҇�—�._?
�^�����[dXTw���Z��(4v�eY���t��!�o�[/��3Y�[����~����=�7��ϭT��}��b�T��P��i������[9=Dym�q��|
���Sb�<k�k�R������n���.?gK�M��V���`C�SU���w���-Y�$�)�>����B�C�0�%:������?��Ga��&��T.؎�л֖.]jcƌ���ė_~|�)<�o3���v�Kd"(�z�~�(�<��S�N�r�7������Cg��y���A�ٲe�؀I�X�9�
�?_������k�P~������h�T�����z���y�FBl�H�ۗ�7����|�U2rP�*��X�1��
�
'*�\"GC%��Rl��yt���c��
�Y�`+lj�|��w]�����N��B�ת��-t��w�W��9����"�Q�V?Z﮳��hL)��YyI��"1��Xڬ~��!����Z�~�޶�Y��Y�UJ��.HX9�p�<�;vl (<e)�aÆ��ևR��t��&τ3_泠� �@�z��졇���6:��rF�Y��79S��N������/f��ܱ��:��\�_�ԩ��Y��H%@�q��w��ٳu(��fח�4_9G_�P�ڰ���Z`����f	�=�x[#�U�`w�����Nn~���}����(|����@���;�*�V�e]�.~Hl�ܗ�n_Ou� R�k�Y@�Vm��3�P�K�~F�Y�H(�y�*4�G�Ѣ׉�$�s��;ڔ��ElS��T��]�Kj�Q�զ���.w8ssil��;���Q��J�WͲghg��;������~��{�|��3�;_5y��/,�ax�N�2%�Y
(l��N{O4��.�����y8!�	g�&�g�g�'��ߦ�
D�H����;����|�M
��(d��7������>��[mZᬍڳ�5@�q�w�J,8ou���<��*�����$�폆�Yb����~�
����B�V?���N�/���9n�<��k�=V��;�=R.^��I��@./�o}=Hhj�d�6��g![�ٔ�.��������y��=�����"BA��_Y��I��J���9�[[��ڰ��O_�Yhܠ��<E�34�Uʀ����Ml�I�U^eA��a�B[�:޼�1��n�����X;�B�G�~�Tyz��������y�����M�%.)���K��|N�π\���ի��[��z��AE����'Ax�r�w]
�_��~��������ߩ�����17�ϴ�I!�*��믿N�@Eq���`S��d���\=k����d�ڶ�$�F�j��4S`UN��]`���S�/��Nz�F!�컹M�N#�j��űVvR�=|�"A	-z�\���{�s}��q�?$�Jp���P�����F�uO��+�V�վ�P�=kx�"	���������O�5�/O���Tb��.��K~�e��
�9����kqYBE˖-���3f̈�j2{���q�#qz��̇J�5(�V�P���:�ڵk�oLB�…[�b��޽;����%ԾT&uPp(�jעvd�~�������E�l�ʕA�7nRd��׿v����������go9������o�L�(���� ������O��Y{J_y�J��`�ym�\ª���+��N
�Ba�/�sͫ�[P��<n%��=>�@��c/vj��Η��R	C�C�I8��:�2?�P�3߂��jN+��/����N�V����h{ư�El����"��D�><�ҜE��R�S?<`g�d�`+�ҏ�Y��G��d��zk  :?tz���\���w�����<x���?����ʆx?2$֋o߾��?!����ۇ~x�h�c�7v��8a-�4(��S7�t����{T���O?5��a������	�?𖯪�
���KE@�o
��n�:V������2��L�V��k;�����c~�t��*�^��&g�,k�ZYq�m���Zc�p�E���i���.v(I�Z�8���6O���jswڻ���8k{����ڴ���H�{��X�V�Y���~F�}wJ�Lfa4���QQ���p�T�V�h���eMM�]t�E�=ٚ5k�k�	-�-W�m�E��ުN�G={���/��h�:u�+��"xΤ{��϶l��w?���ϱ�[��ڵk���;k���/��	l�ْw{��K�ژ1c� �6m�d�F�2�M�����[�N�l���'�=��J㥗^���?z�������Q���'���W+4��M��,qV�~
����K�8�!̓�za��xk.���o�������n�pɑxy%߭�'y3w��s���Q_
����S�=%w�����m�F��)|�D�-��jVH�&��fݚ�O�0�ŝ���gvO?q����;���!۔��a����e��O�B9��w��Q�P@����F#/d���p�萘���^�a
VG����	�9{�ЩgF9m��k�3��Q���o:�����.�]w�es�̉^��~4���by�Fb����<M�mk?���.;�8m#!�Rg�+���塑X+A1S�-�\#�qK$޶��2�=�|Nĝ�Ї:V����N�2������<��L�笣����@�۵6}��:�#k#��S7�P��������Tx_-�V������/n�\&k����G%F��^jah� ���˃�o��}��'�zu�zH�����ڂ]g�}�u�xΤ��ٖS~��������0$H���V��%�7��,^��n�����-�/*Rg}�_i3Ͽ�]��ֿ*
ʞ�?���^[�L����;�-�{�}��Xb�DA�����_iᢳ�A	�Zt���(Ա�%`jSn���7k5?K��=i�ʘ��������ަ?��$S�*��l3s���=��?���!"m1�yl�5��q��ж�B�m7���p�weۖ�?�:����
�5��FnR�ڭ~^y����-�Z("��lT�ϫ-���;}`�B��J�	�ʗ��½~�T�9x�����֡�~��r�7����p6rڴi��k�QYP������ۑ#�F�\>
��6��3�ő`+A�hƟ�kv���*����Iv��=
����sD9n�s���N���=$pQ"
�,�5p[���N���)��N����
��X�������|��s�P�瓻 ���aE�8�O9�hsQ]�Z �V�E���s���
����.i�[���O4�<��5)}�٨���u�]g~��mذA��s��v�3�IG[�1��ֻ߭��bc��[�4z�!�U
����_�~��/�K��Mr6rȐ!��P��ٳ����?~�9�~n>_m��.��L�%)ǿ�Pt��J�����\�m#PY$�64w�]d
��� -��_��<)
�,�x��:�]9�>�l�oKڀ�7���&����k�b���R�Ⱦ�s��o��fT
��{��g�}f��7�W\��)_Bg�଍7��v�w�ꫯ�o߾,@����Ћ�]�u{�ۿڲr
z��W�l�rE)
�B�,!|����|yغ�֟��@�8��������&O��~�g(�y�UX�m��	J �~���I9��e���
�xH�<��hC���6?@�@���J�s��7Y�i��bmC6bm6�uuu��c��*(#�u��;b-@�={�
:�jkk'�p�����v&:��戵P��}��A�Q:�;,U,��*��M^�j�	�!?�7s�|։8~�Ck�6kr���߻y�,�þ�W򾭳�o"��kS��Pi��v�{�7:�)_�6��|��E���@^J7�tS��G5�����@3�ӧ�=��3�˗]�ڻH����c:�8q"eɒ%K�믏�Z-+��
V\�V����~��њpkw�~?閰y�fzԢ�d7��b�Z����^��-�|MmnRD�nF���<�����P¨rծ�0�r�N��
��ؕ����Ԍs�|��ǩ.��0L�\s
%��f���V�����sz����w-�#'N��iӦezծ���d͵�6��V��
g��g	�G���ٽr�
�B�c�@�Ȼ�5���j�F�=���&�|-���gw���T�8V�?Z�U�-܈�m�曆ZI�r��⎯�+��ۜ��
�9��s�YUU�'�]Q�&PiǍGe@Y�hѢ`���U���W[���(m$���;Iϵ~ҽ��В���W�ɓ��xS���Q1uj��J={.qv�����e+��*�g�5ޫ�ߺ�	���X�]������"M�RL8rjܹ�B;��o��>L��3��G��6:��BV��p�ـlݺu��P�?~<�3gN����r�!���9�<�X<�E�sD$�f�?�۽���tmĝO"RO��m�.@�mU^?�[������,^�g�����Wvu���'�<�y��<�r\�f�/�}m�%����g{��R-�"�����ݻ7%�#�<�)$�c��i��}z9r$b-�
�Ǐ��Z��z�ُ-G��D�l����~��ZȉE��-���ϟ�]쬧���V�J!@(d(�k*��ٿs���z�~�l����6l�K��GJ �	�y�u…PO5a����
��`˖-�x��������[�;��H�� ~R�/�����y�.r��Y;�w��Υ�
��������R继���F�������U��tB�-!�� �f�.](	��4i��3F���0^�����g�aè(���kc�)�:�b�͛�
�-@�H��{��:[���s��uamtVʼ��8�i��=���
�2�M�W�3�`�ݲ%k`q��e���]�r�0z�h
�
������p�I�x�j�}s����lY��[[|^��C����ӫ-�U��,qcX[(+&L�	�J=>��j��ĉ<��;b�
�߿�^���cg(8�B�t:�p��-l�������)?�Un\�!@%�,�U�1�J�r�J�="�������@��ߨ��3��pu��]w�
4�B��C����ˣtk?�P�M�gcvz�ڗ!��jC"���*���N�C>F@%���i���Δ�2Q�-�-@q١��;wR1r�}���u8����t� ���_O�@�ү_?[�hQMB;�y%S�p]Z�o묝��eZ���;������O�/l&��8�
�D:���{�sv���o�{+�w�������i���tIm[Q=E%l�o'�@��+hÆ
:����<\"lǎKa@YӮ];{�����f͚���5�_�tb!S�m�3���y�Eb�<%�5��д:>�a
��5^�/|���:g-�Ү��9�=�-��SC�@�
^��_�R�>~n���;�m*��',�3@sf>�_;��_[�޽�������n�A��][�4��3���ѷݺu���Z
*��s�ڝw��|����:./�;��L�V�Wl�!�.�M��[����`���0+�V�XG�˰�����}d
�$�m��Y���a��1q�g���:j	 o���g�,o���&�q��}����R�?�B�@����y�>=�97:��t�)w۾�wPr�N�g�-��J�<�oq��|~Q�<#���D���Q�Fِ!Cl����]�8�u���<�����ɓ�M�6v����s
���d�9Q?5���َ�2�G��\�p{�B��[;�1���L�*��Be��Vג�E�\
�oz;�q�sq�w�/RԻ1Ӊ2)��[f�2�T"o��x-#h���� O���o�W�����>���"�6��ߨ�d�>6-O��~������"�J��lH�ő�PaA$�J�]k��V�Gbf��1�W��1c�P1�����:���)������)d�8�϶}��v�-���3�Lj������DZ	�U~1�[�sg�/b���-�p���|�|���-Hx�F�����<p�y��7
}jH�v�+�Ԑҧ#j���QH�zw����7��F�mDeҁb�;����8�$qIJ���IG)R�``_�ѶTC"kP1�B��,h�C߾}�G�6p�@��)t����K�{�������>���]�l�֭�q�F;x����r�����P�
1	�}�ߓX�t�R* F/^l7�|�������:�T�}�C���=����dɒ%�ӟ�4z�����:./Ĝ;û����v�MD�v���������mK�R)	ȗ[������6��B!Wn��[�a2�\3��(dt;;��6���3���~4����:;B:3����d������	��2��~��oF��~|�=��ه:���]���Ni�����Y����,@c�G֦�㹎���[M$lMt6��]����1®�� ��l���lkjj���?�ۏ?����?�ʕ+��g��;�e�%��~�A�3�F;|y�-O�-~ҟX�W�*�Y�o��&�d�p��ҥ��٦�k�
1t�-}��i���ֹsg
*���Q�cou�(���\����2E	����<?��(����v�׬"8�����,LHP�p���}��r�z�E�=%�t$�vȰS�Jw��(��<d����ϥ9���>��u��ϑ���8d'�IGχ��;�X��|�U�۔/���R �����ǝ���'n��oJ��S��s��9N��ݸViU�y�)�P9
�
�s6�2r��Q^M�Q(��P���Zuuu�0!�VbnRsg;[`���Vnފ�B��xX��o�
-��sC�|�>��8��_��~�_��#�\s��Y�&8tm~M�&��
0��"4T*ӧO�Y��5���}M��߹���x�H��X� �Л�Zm��{���D��[��6�Jĕ�)A`��&�*��L�ܾ]�}Uy�H(�V��6kӰ������$�P�U�^��%
)y%GB��xy��*r'U��畐���!�����O���5��6�>����Ք(�w�L��Y�d�
��9��Yc�$��\M�~ q���n
r&���?����Z�8E��DM+
	V��ϛ�G+��po�O�G�Z��K��+��S�����Z�<���;�믿����������ݻw��O%�jP���
+��X����g��g��>�[ F�L�b��O��û\��C�=�=���.\H����.�3'�f��|��}���<��g�PդI�����)Ϡ�/��
��8��B�6n����\r���D�ξL�y�X��L^�����/ܽ��|Z������Q��~@���-������}[�]'�7��F��wϝ��R�j_Z��ߔ6*bA�����(Q����_��eE���m����<��0�q�oV"�}��WPOڦ2|����ٳm����	�CΦ9{��KV<�[
�F��(�7�]tQp�?��m�СAy��m}}�}��'Ah�>���?تU�tO#�=f�N�EޖXB�o�T�-���}�L�y���}�{���N9���T<o��F�hѢE�Ծg�h{��'���*aQ�Ji/�s.	t�$|m��?w謹?�����?�0d�6o���	b!#oZ�;�����}�F&oV	�J��Gw��	(-�l����{��.��+-�yHBN�<��hp�5!V��7�;F�[Zf��Ƙc%��GݸV}�~�{�c�$y�jR������	&�a{��]R��j�*�1c�+�i�����V81R*��	���W�}G����P[������6��Vye �Va�塼�
/)�!�����;�÷"@L��[n	]��%�3�z�=M~��7m���0�gϞ=6nܸ`���쎸�߹���~F^U��&U��iB�����r�_��z�EU��vZ��Z�͎��V�(�3i{Z��ß�#g���﷉�M�g��L��\�(|���${�s���߈y�~��=����m��+�l�m_y����X���ʴ���D�����'��{�C"+��˚��i�ƦM�f�>��u�ԩ�+S��/��R��Q��;��*��&9��OfW�~�y'�
6���I��3���+�M�	l� ��r�+V�:���*��]��&���}�*|��_�$�6m
"���DE��ق8�߹��c�Ga{;��i��^9{$b�U�!a](��0�h�|���z��!�}j�CB�6+Ա�s^�%v���|�_�Ay
���Vm
��/3	���K@�M���u�88��������o��F3ھ�BQ��o�D��j��
R{��϶�[M��p�|�6v�X{�lРAeU���Ϸ�>
,�]����q���'�M�e��$~�RyJ��ro���`��{�� �&0��?"q������ �o��w�pm��:���Ӏ�>��@��6����:T(X����;�qy.����b���˜]��ν��-��G�<��P���C$g��_���F�ج�7y�/g+Kɛ�e��(�[bu�o{}��7e�~�[� ���ۃ��.���s&���Z�y�m4��w�}�g��R���{�񲟅)Zŵ�2i��<@�l@�^����Ԗ+Ǐ��S��ܹs��{��ŋ,PȨG,�
ܑ%�M�4���t<x�^y�[�p��^ݸ�!�q_v��@�V�(/�o��VP���.]�_-��w���V�6G���m�R����n��Zm��9��w���l��!�j��r�jזv�J��U�^J�X������m%�}G������w�Q��t}}Y�LW8�g努�2�p���'|�I�V��s�I.�V���d�kh�w��<l�`���p��l�m�<�}Dhr�+�I�PZ�cM
�\*��Bwȳ��r�Ξ=���S+���'��͛7�nt�y3O�I���Z�=}�'l�СeWf�|�p�E����ˉ
�B����sǎ�FȽS��|*��s���Ϸ]�vQ�g`���Ahd5�ng���:.��b���4q�B�~����s�U�8K墴ۼ�B�exն��'�Z	��,��Gs���r������q���
�\/��l�5�Eܞ\�y��P:	���	�)��{���)I�f������mmSC#7W�mQ��5��[�O�2Ŗ.]Z1b���D8y�Z���#g#�q�1��9{�Yոq�������;e)֊Gy�>��#{�g�o_��m��ʻ�M�e�ˮVn_���D!����)	����MO=�T��WQZ���(ߪ�uh �Va��r6���Z�Р��Z��r�vp��2C����_e'���P4����[%���ܔf�;���r�j���Y[Wt-J���=�{O@���H6ݚ��h�h>�jj�|��=	�G�kH�z�7*�V�x!�щ�h�5^j�m�|���|%v���6bĈ�(7��^�n]��^?�0P9����e�7o^��A��֭[7J�h����(B�S%�6Z��W߁�;�k:��ݜ�E�+�#nF�X�Å���/q�}�Zy�.s������ǽ���N�k_�oZjY��KB�B<�*��`�n�>���m߯@�Ǹ�UD���Sy�ZH�v��t��o�k��Vѕۮ];{��#�Q�YZ�t�s�7�a��택���)�t�QUU|~~���ڨQ��#-���Y�%@V��up��w���FȒcǎE�qx�TE�Epn2�l5,��@~״DǞ�i���Wn��_���⽍����M�U��5(����>���Sv
i�?-R�1@��;*�p*Oyx
�$&�m���A�m�+�FQ#�p�J#=���Wc�P��h=k��_�DJ�P��4i�������	��^cǎ
<L����QY|�6u�T�TX��P~��g3up�m��֭[i0YP[[�x����ݻS�M`РAQ�	Qϔ�}{����a~�Y(�ɋ�P�g&�NK��`�fd�g�����%g{(�3�]�����K7ȫ[�A-KU��PP:�n�#5jOu�}57�qo�D�n̮�RZc��m����l���ݼ�5/�As�̱ѣ�i�ڷ��;�r��?��s�W�(��@�ʽ{)�䉼���\���v�ƍ��{����\�m���p:<l���2}�*=��u��RIg"����^���i��e΂e!���_��-�d�\~�,�"���0�x����_В�t�|����Q�j�F9l��~���.,^��l5P��*y�J\��Һu�@��1���'h�{���}衇(�3��X�V�
�n}}ٕKb_
�ou�����&L��h�Ljju��ۮ]�R�M�<��l�����ǒ~�^SW��g�p�����6��+����g��D�4����'y�*�D�.�1-U�V��-\�jC�䌾�i�������l>�
y�j��u�'ͷ`����l�f͢
�B�>}Z�=Ά�92"+1Wm6�p��@��0d��Ɨ�����Fg�/_���t2r@Ǒ:Xdjӆ�&����c�:�T*�?���O��]�
�����_�����l���(���O!�WX}K��Rm��'q��k�m�]��P�����&��ւ�#@N����qF�ɧ`��|����z�:v$eɹ2dH����W_
�W�Xa����`��<�yʔ)z��v6�Lޞ<b^��>}:�D֮]��4�C�=�z�$6ON�w�r�^�'�󅢐N����U�3٘��JH�M�Hh֎G���ܽ�L�d��=�_a��+ئ���r�k��a?>o�y��A?���7 �MG��=��<Cv���6m�4��!�Ǖ�[�h����X��'�
@S��Ou�k<�oO�4��Suک�T�eBo���t˃I�
7?J�A��ީ��?�����[2�Z��z�_��{����@v(�\��m�<��?�{�Y��m\^�� +\���#�<B�A�y�ע!��}�٨KJ��3��n)A�U�VT4�9X�l��ܩ<�A(�1����Y2jԨ�,�F'�$[�Z��{T����7����G��Tn�v�P�6C��7m$�^��j=����/D@�ڗ6I����6�<li��я�1y�����˽���6������g�G~�Y��-k�H���eI�
�A?�쳁 
�f޼y�!���э:m�0i[BX7g8�������,��Bѳ��/&*4����}E9�%������=����&@�r��B��x}ă���9_�m��ȇ�(
�<iR��V�_��#��!g_;{���#GB�r������A�3g��0�(>�r&$0,r�����Sc�$���1���مκX���r�{ն��a�8���^|���g;�A���Y�%�jq�
E�g���#,r>�#�����2wO���z�v��a˗/�ND崽5����ǿ�ܠ
M�<9��f��OF������1��`�p� ��3d�[�~�<;[����lw���7�$
��ܛJ��[�gY�+bxS��B��% �3]��Z��v��-5�9;�L�*�pș��8b���@�~:��9/�c�p���S[��e׫�6��xg$����C3f�������#�d��-[l�����'c<uC���@!d���d����HQy�
�%�No�лN��9#W�69h�}����p��?kbG^�5�Y�ᐵ�L�Z�x�F*EM�9�T>�z���D�>}��W_�^>�'�I@�k�?V�����x�ҥ6n�8* K�]�o��6/�N����I�� �9�32)���W��m���LMA���\��-�š,ۋ67�0�����n콑����I��b��!�{'�5mx�ĉ"�h�o���!����C�	���#oU���%�4����s�:)�.9jrgɒ%Q��:�׻V��8@Adɰa�t[��Ю
g����$�N��E�v��mA�l�X��I,���hQt������xۜ6d��}��޵ن[�<l[R�����9o��[�U���={Z׮]�&H3gδA����\�'�V�>�/��5*�\�=z�r`�����F/��1wm9lr�o߾֭[��0�JuO�min��O���1�aj
�����P�-�����=���δ�󾻏��@ސG�ژڻ��\�kl��k�XN����Ɯ&�q$	����%H$�ڵ�_�����\��T��x�ٻ�:M�<ٖ-[F�c���6m�mذA���f����Cm-�
��_~yt8 A�����!(!��P8�gx>�l#�����j����������J���������΅�`��)�M����@��ر#���{n�I���M-��>$�>��=�����ֺ5�C�`���6�|JM�Ӈ����ݻq"ȅ�.�(:읰I�@����{�K��BL�D�L�V��_�����TJ���9���1�>rf?�yr+J V�!JBON�k܂m�8~��	��ԩ�:�Cnܦ��oa�q�{���K��C=DEĄϚ5+�$�n�ӥ�v׮]:@(,rt��[J�Ʌ�45%�r[VY��O�֍$]`��?���9@�H�RjwÝm�0��-r�	���a/�1�*�>6n��P�PL�0�F�V�`�99ϗ�5�w6H�\�r��3�J��ŋ۽����X�8���	jj(x�8��ä䰕H+/Ey׶����p�_�9a$��)�f��;[�ł@��Ι��m��qE����1@���N���>=�ݻ��ģ����x�Ζ:�0̋-�~��Q�1Q]]m7�|s���t:=/���a��9B_�m�4j�IG3�5%�7��+ԩ֋��|��n,��b�/�Tj��᏷��[��^\�N��N;J VZZ�r��p�o�Ν,dC�2e�
�q�
��QH*���G�e���#�3@�h�
7��|��ag��A��[�R	����2��E�/�k����A�@���}�X�H�:��i�I�)����_��?����.4����1�����.�8@lD,%؊�z��O�"H<#G��'�|j-��l�#l���֭[7
 &��[n�^���a.��	�P�(��a=�.�8��W���rY(�J0����>����.� ��R�!����qV��6�ծ�����˚�	��V��� �(��g|��ծ�w��:th ��ٓ����^z������n�x�o�����ϩ��B��%�*\�� ���s�l�:��Mb����N� ��R���S[g_Z����E�`ۙ���K��l�˖Q=�x�a۷o_r�1��!g7����,X`}��b⮻��?zy���>_��ج�/���
�像t[l9S���%(5��X�_y�f+�j�I��y���Q��%#E�<k9�b��<l	���8I����˗��ի�&H<�]w]t82��)��S:x����.��b��ѣv��ۜ9s�R���9��"��9RWW�x���:��l;�R��� c�Y0�X����+�ܵ)J�����~l�x�ͷX�u�{l�CZk:���>�v6G
[	�t����pX��j��-=O�:�ƎK�Ąڔ‹[��z��E��@�ݴi��1���_$WP������)(A$�d#�F��{i��CE	�R����x��v���n�Z�����@|ݻ���r��[����6̛7�6o�LUA�<xp�a��z���Y~���)X��ػw��?�p��Ί�A�u6l�cǎQAY�А�Bb�Ag;�]�J�ZP[Pbh����m
Y������ ?x���t������g"�������@,D�y"[��V�}�Q�
�r�F�9�f��_��^�Pb�k׮6i�$*<ۄbߏ�6�� �!˳/I�彛$"��m:��%F6��D�N��.@~��^g�7{g=�uV;L9
p�`{��M�;�}����%���BXVWWS]�Xz������ܾ��iӦ����)T��񂭐'�����a�z* <�x��ۓ��~gۜ
J�Rm�1(!�m���]��@!Y*����򩳁�.�p=J���򶭷P�=����(�m"=lE����/��ǏSe�H�����͇B~��(P�<���o��f��Ug�|Kk���k��,صkW�a��-�N+��a��*� �l�dp�_	1�l��c��齔 @�x�Y��AF|��]B�k!9l�R
�y؞��$�<�l�U�l�ԩT�#m�=��)S�Pyd���&/v��r�E����vݺuT@��Ә"�6����ly�j#�n�ѓZ�2$��ڼ���(~s�c��D�K�u���F���@,h�Z�mb=l�r"����ܹs�W^�ڠܘ���ѣٔP��.���[�ylU�neM�f
�����:m"[V�@�u���p�6��M��/Q������
��H4�eaH��z;�b�o>��}\;j 4�N������n���?�ŋSu�(n��������ĉ)H�1g��&	w!�Q�����c�Ν�}�v*��|��7�ᮤޣ��5�>�>�۵�$N��;�[Y��[J�h}�"9��°Ȳ���shd�o���u:Q9S��=���o�ٖ-[F�Ab�����̉�p�4b�СQ�V(-Z�D�^��	�ƻ�8�H��J����f�
���+ڰI��~��t�04�Q7�F
B�i�?���:k묵k�{(6�����j���B��b�hdy�(*�<.���u׭}�Z�3��R7�x#�-$��766�_'�{�@�ӧ�=��3��\�ث����Mg���T�[�~�>4�qE[m�r�<m!ɴ��s!!H�P�Pd��m�I��0D�<_�n�mlϣ�r���Wr=Q���Ξ��w�m���*��]���:^�&M����FO�0A�ݝ�\�[�.h�裏��fPSS�x��L�(���v�Y"�p��IH(M����u����4��6��Y_;�e�6�^�ZXֆ�Δ>@Nh����7�
�YӢ7/O��[�l��+WR�Pt�/_6����#5����l�0����_~�z���	�]�T��K�����~gǎ�2���͛�z�>w�Zy;)\��:�_�{�" ��7�o$�J$�� !���|;���q��YGs���{B�ߜ�!�V�N�z�B
�
��_;۷o_9r$U	Ee͚5Qxn�*^ތ��믿�B("�c��_�"z�L�/��m�eK[���d��{�J�UX�-h�r�Cgh/q������I��Jtij�,}��)5�ı�A��
���U�?����E�)���Re��AB�c�z(�D���*����ٳ�ù��Y�65j�Pd{�1><pp���|��ࡺ��h"�}�Yt�yR����8��h�����_X(�*d�Rg��y�o��������\��$���0%$׿l�0�{o��]�c�6�/Z�A	������l��=g+�Mt�R�?��{���m�T#�]�v�…�����~����G?� �ĉ�ç
|�@�]�b��D>����pc�LJ?nka�@�
�������:Z�N��w���	j��ئx��3/��E�H���!�e���*א`��僾���hk1	��s��i�r�m�	g�9kӿ�`!����޽{Su���.�3g��vpk3>��m��>�_|�	����F��k���}=�iշz޻w/�#�A}}��n-�(��vu}����s�9��!&[��\��g5��笻�������B�q��]i�(}�Ͻ��{��M�$�M?`�����v���{�lk�g�']��C���8%Ь�Z������S�g����ߎ��v�3)XT��2e��[�Ξ}�Y�ZH��Ϗ�Z�A~����W}�� ���{�)�e��ÄE87[�n���%�f9���YK
u�P���
������o1b-�~�H&��)��[Rj��CC"�gaX�|��?�U|	E�l��1�,�hLq	�r)z��kκ�;�>��#{�7�S�NT$�/���������t�����Q�	�{u�q�T�G/(�K�,������u^��WQW7c�P�UZ�?~��b���ha.ʦ.i-��bH4k,�`��Ǎ�3�:�oa�eh�[����'�9H����8yѾ����ֆNUA�ؽ{�M�<�jkk�r~:�~%����Å^H�$�^�z���u��	�t��p�p֮]�xX��{�V9�򸟳�[(��{�?����PKPJ�P�
��op�[��#<|�.��J�}#�-@.����t��g-G��M������t�M�jժ@H"{��I�&E��v�ߝ��q���DŽ	�:��^V�'[�1�z�j*�,|����a1�H����r�J���ٗ���_句��H�Rm��w��6�-�)A�ģ|xZ�`���Om'�t��t����R��i�d�ѻN�U��6S�N���{����X���l&X�l�^*�Ag�3� �($�g������p�B*�,dln*�.�S=k�{Ζ���"W-�n���2��Og�NP��G���Z���6_yl%��054��G,��5�lݤ�����a�,��߶�_�j�Ģ��q/^��[���lG�v1�iӆ�HUUU6f̘��]�KJ�+��3�}�v۶m�w���^:3g�%ήtv��߸�XJ�@��J�ZY�Abm6�k��H<������z�j��*���3Hyl{Q�M�ˣ�����lRg'iQ|ݺu6q�Dj�rd�=:3��r]���(`�2r��谐��W9����mÆ
T�iP?�)d�w��Z��b��
����6�N��JYbml;� �h����i�:���p�����s���!+�`�:��Ӕ����j�B�@bQhҫ���6oެ�K���B�\	B)<x�BH Æ
k<,�e�)a��ϟO%�����谐B��-����@g����(5R��m@8j�-
�-?�0 ~��~,j��@y�����pnzX�չ�e,�k�<@w�����v�WR�Xf͚e��zk��g7[�9kO%�74�� �<���ڌ�h�G�	��]2�[{���
���\z1��F*���?ӹ�������6ߗɻ����}�k_�mo��It���N�$��M���x�
>|8U�Eb���ӣ�:���*j_�o�
�@�����!�
��k$خ^����`˖-A�G���J
�BGVY
�2��PPj�1mws�f���Tt�%P�p�V}Z>�(,r��Ӆb8���;���-�x��aO�:զL�Bm@�Y�bEtx���p�@�ݻw/�
�@Z�je]t���l�^ZC/�9s�Pdx�.I�ӅU�����t�ϙ��]��ڀR"�J��{�`�H�w-@��-m�Pn�V�?�V�Td�o-�g�R�o����&���uԣG���_�j��s���G�
��>��	jj(l��ҹs��S�/=G���X��1
q!:I-fG޵
�x����N��C)��م��m-����(%jQbm�<�]	�QX�)r��r���
��m�<�`�J����t���RP�����]�_�
z�m�Fa$������_Z!W�_��fϞMEx263"���]�Hʕ �����"~��f��nF�U��0��-@� �Ȼ6_�m�_GQ厧R��;����L7^/�`��6
�L�Z(Z�li�-����X�;N��믿��J�.�)w��p�Yz�?>�X�dI��ֱ��e���4�W�B!/$2�2����6�yV�����lJ���NYys	�pR����(�������-�rѡ�il߾}�W���%�e�],���K/�[�;.v�A�ܹӎ;Fa$������"\^Jm�e�l͚5TT<�L��G�}�쬝��c%�K���������H���t�N��,@I���`��l���3{�uu_(z�� O����l���g�?��q��e��($ھ�����ǜ��i��F�����?���H Ǐ7nn*�`��z�fΜIe@œyQ.'�C-0+�����QP.���_-k�H�kh�z�?}���;)���k�ϡ���[gߣ��Cc��8�!��
��TJ��'����d5jTf���-�i�`�<��<jkk�t�R�ꆆ**y�1��h�g$b)d�zڮ���P[��?�x�6��ɧ��B���<_K׈�"_B��$�J����G�3
�B���k���O-@I��#����G~-���M�֭����ۣ�E�-�Uoܸ�f͚E�@�2w���pv!��.jw�p��g䮅r�}��+�gݜ���l�6ZR�%A$��O�����sv4�J���l���!�9�8�`k�Ǐ���,PX�=�	�&8�)�H(��������}E��@��?>�ɮ]�l���'�spI	W�$�vu��J(K����;Z��+a`J�T*�h���t.���sh��A�@�'KOU��=��>��i.���(#�B�p�E�}���|�r�I��j
���l��l�H�6m�?/�H��R]]�hI�w�r�"�淑`�ܜ����h��	����VЉ���H4�>��+�F��z� ��&�R
6�´�:w��hB{*Üu>|�UUUQP6<��6b����6k\[T��a}��.@�X�vm�a�oE���u0{�l**��-�%�)S�mgߺ1�Qj�����~���-;�VL��@r��…᣾�
]K�vZ�VP��0ǻ���l�:�`��8p �eǤI���b8]��-[F�$��+WF��p;Rjw�{bɒ%TT�W�6E��гvQ�.+�Vކ�j�������Y����
CO[�.d�7-D˳W�=R�T'�*�v��� r>�k��+���Z��Ca��
6���R�b�

 Ad��p;
#��^z�%**��3gF��p!%ض�P��E-@��N��X(�fY�OJ �($�>+lH��+��1g�����?PP�H0�&&m��[ċ�
�{�{SP��5*:��㩤
��w��͛7S�	`ժU�q�FnI��r[Rjk�a��l����9s��P�3|�H��GM@���l��E�O�R-)F����fw�Nէ�Dž���(,���~:P+P���tԾξ�pՉ|]�t�m�S'"]@y2uj�N;!��i:��u���ΝK�$�y��E��t[����+��B%@���/F��}^ȹ�7�s�QP!h�H�m6s[�?uF[���=�y��Zh��ܹJ3 �Z�*��
�
�|,_��N/�����C�����mĈ:�N�\�"J����)X��y^�nMJm�r�f��eG]]�-^�8z�bn!��8��@:��>뭲<E}������2Za�מ���+'���T��j�
c����?>�`[M�ʕ��G��O%����������׮]��
�tzm�nO��~��l��y��ǣ�'�.�壝�
QE�W�$r]�^�5��\�����s�
9�o�|V^�m�S;PA����!��������#�Ñ#��-�^��%ׁfc^��3gR�E���I�Q>��Z�ٝ>}:e��m����Njt
�����N��$�(�8a����/*q��מڷʫh���R��ETT�`ᆥ�V�(N�P�4��0��I�=�hѢȻ
̆
�bu^sz���J�m�5k��_�����B޵�7o֡BϬ*�-��-!^�Ґ���W��L:�J��(���x����}�VL�\��.�q�����
��>x��CV��S��\w�vQ#P���ѣ�0��),�<���.@�1cFt87�N�H�*4�<m�Em�ra˖-��.����]-�:P+PAh�*��O�n�ך$�us�t�I���Y(�^C5@�3�{�vq����[픲����ꀲ�K�.�aUL��R�0o�<��
̚5kl�� 
����(�[�"v���}�<?���ۧy��S�\���b��+-$w�V���g?��9��!%(N��ᚠ��/�0�pA�/6�H����:��MP���U�ߋ�kO�glkjj�([:wn\���)�^sE�駟�g�9���eMp�^�P,^���ϟ�Cy�<\�[�$Z�$ز��7��~�(Ց(*W;�c��׾O$��t/�-̭+Eu@��J�ں'	�5�O>^�h�l?�æM������5'O[�?����Y(�>]B��
+�?}�t*J������b!�J�����҈C�	<������������g��{���?5e�u�%���-�y�t��u�ZD>v�Ue��Ç��#1�V�Q�^��K/����)h�<�s�N��/����kK�-��YìY�lٲeT(�$�x�r�J*/ȋ	���~��1�J����p�u��ı�_�C�xh�X��"��t�n����_9���ø�B�$S�ؽV@�Z��4o��l۟��gjʒm۶E�q{�kn��իm�ԩ4@��{lǎ:\��%�֚�
V޿C�Q�PR(��6Y��z��^7�D�H�=��"j	*�־Ɓ�S�C�@�pmn������>�!�����Q���쿢��b�
��\�EIMp�PZD6�N�HF��[
Z�pvp�ܹ�Č��.\�CyՖrLa��Z�vm @�
'N��|0z����	�5	�
��p�RSP!ț�>�sE!O��5P\[kp��
�+/�/����k�=�q�5	%εF������M�L���zX�d	Ue�đ�0����^<�����]��������\qW	�����1s�L*J�iӦYuu��R�ф���`ۛ��
A��1�� �8EP�@,���x�d�	���t���Qx�@��^��r�+�bl�:�`+��aѢEV__OmAٱjժ�0_�s�ͯ����'f�`����n�-z9����mm6�%|��%����m���:�w�:�#	��HhR�����
!e�O�����RW��T��AKv(�F�"��Z�Iy�$6������F�F(���e�T�3t�
i(Z���o�1(;V�XV��2w9[-�E��={(x�P�4iRf��G����s�R��q�]�{�n*ɧ�~�U�Dސ�[��1�5��G�A��}C�))��@~pm�2����bm4�Kr(��|I���Б�D�GR;��~L�@�1���]�HMEKMp��ƁגB4����k\���㥴�_��+��)Sl���T@��L�<9ʭ.�;��m>�l��m�ԩT:$�h�ԑ#�C�s�&�Lx���rjʙT*�����1��u�P���ݞ���8s�����/�0|s�sg��{���鏯qO�}\�P�gl���I�ڵk5eC�&�����mkԖƎKxd�f��ay�/^�X/��KV�Ÿ��J�w�q����ѣ��)�_;��'�v�<�
Yq�qP�����|!1F�m�%g�o(w�缋{l�����(֞���0��&g���cWj�_�~`ᆣ��B�8�`��"���?�<�e��͛m���y\�B��k���0���1c�Prpnx„	�dɒ�	;�޷�rE�m��7o�<���@�9q�ĩ��n��
D��Eom���m ��H*T7��T�����ȭ�V���0﫼R{/Ւŋ�(��B#+���ȁ
	��U;�F_�>����Z��R+O���:jJ�3fD���Q�Kka�g�6l��C��̙3��� o�q������r��b�
x���/�Ϟ=��
(:k5'�p��O�46O�[Yc���"�),�ٜ�%	�'��Z���:��L
)��枆Z(h��X�P�-#�����Za%o%�$�?V��~^����|�G��9:�U�i�ƍ�駟�&���w�Y�t���"܂�7:���_��{��~��A�W�{��V��V���nx���"�J}��]!��(D��P�ˏe?/�[�r���ɧ��՚��|]›���B���g��g�p+�v��-�!�|�͞o�Xy�6��{�����B�%	��P������{��n��6%&5A�&�M�Ծ��+�e�jJ�G}4:��lC�nC��a��r���mذa��y�^{�&otG���<;*�(�� 42�-�;������P7q�
Qxƽ���>5
eF����R$��3���V'gʻ�p����
�:��&S��<p*�T*��=]na�`��G�M��@�K9�;��Yk��o�S	�5���E�[S��"�7�{��PXo��65%����+�{��q"�Ԝ5�����&�5j�M�:�&O�L�A�r�]wٜ9s��/:{�ΐ����rl��a��7t0m�4{���@^9z�h��̝;7?k���8Ν�����~(���"�jJ�y�*U^�'���0��Hlm��O��r�f��:�p|�ə&��z�ik������� 73l�pѱl��2�<[��u�ڜv�#�;D�<�Z�����(R�q�$��*��6r}S}��۬�������uκ���6e�jJ����ꪫ��Vm1�V��D0&�F
�����ѣ�6�p��B ?���l�2�T%�ׄ��n��LJmK}?�/��!����k�le\�/�`+$*)|k����{8LMC)�C�i�\��vw�1l$�*�q;�v$4E޳����ʷ-��!�y�7��C�%���G1�I���N�N��E�Ҧ���㕒`믗��%]||��Nx7I�LP}�Ư��qj$�j�ې�P�yl���X�z���mݺu6`�jJ��o��/^���a�6�Q�ѤXmL­6HؠA�l�ȑ����ʕ|�^|���r(���'���p��xg�x�^/�ܮ];>@�@u�����ꎃQ?��s�A�Z4��Lylۺ{XAmC��>�M%|69r�(�]C"m7g���G!�#��DƽD�jw[� ��Y��n�l��`e�N�~����[�aQ��[�H��B�_�����@�dE[Rh�(T�6+�X{��7'�֟\.=SF�`ݺu��!�d�WU�`9���9��ՠ�k�U��ONu�ۙ��wS���~�<�m�}���UUUT.�<�����O���ˣI�}��]�y�0���#�^����cƌ	�_��׏�LF
�������H�m�|�lw���+�����k���'�iw�l%�(�W�^zX(�F!����w=��X	��}�&�v�����f���a;&���-�-�x;�Z�67(?�^�6N�(\����n���Dہ�|�s�y쓥���9�?��҂�����l5p����Z(^�`�u�҅��D2}��@����4y�� �j!h���밳���:[�l��f��o{e�b�С����.��R�߿�
<خ��J�С�g˖-��Of�U(�;����*T�ZxOϽz��W_}�Ə���99�s�H�m�'
Q��t���o�}(��a޻ɡ�O���r���$1V���H+O�o��~���pg?t���Q;)�J���#�V�h{�N�RN�8 �������n��ǵ \����v$���"�k��;����~y���t��T�L�=W���`�/�p��s;v�͟?�:v��'E���&��Y(��><��IT��� ~�†KD���{(+�+�wū�<Jy(��(����rM��Kv�kr����l:�G�s��+G��tl��'�t�������(�~CAA=�ߜ�W}��߷��7�b�]{��[�_sN*eeeR]]U_|�l����uW�������;Õ�Z�[�^C��ѣG7��W\���\��Sw�С2jԨ��Γ&Mbc"���J�^y����1�m��T��lØ�
s��K	�$˂�g�a##��!�9��y'HQ�vW�g�3�(�^}tݎ|z�9ʖ@�>,�_��"t��ߵ��k���|,�Ot�����p�|x�V��>��Cz��W҆u�`K��1� �>���ڎ�/ql��-Gv����k���{�ْ!�dh��C�l]�B�ݡ��i7����thn-�d�:�3
�Yq�!I\�<kT�糸഻8��}"��/�1���+VȮ]�D7����}��&k�e���٨ӑ#G��_/˖-c(t�)�B�wXa�+J���`k�����"d���>*S�Ne�#�58 r„	M��V����h���yl����كЌ��w:�Ab�>,i�>:
��Е~��w4�7��G��L�U�껮���$ \�@��+oO���=���`L�gk"	��G`$�H��Nm6<w�.��w(��a�#a��V��B��<gӿ���|���|�19l�� !��Ċ�
y���n`� y�������\pz�IW����p��aY�x�o,�xu���m���Z(�!���+��Q���B��կ~ņF��h{�1Y�j�l��h�]-a��.�)�6�޶�^�޶&� bB�B���?�8o��dڴi�5�4����Թk�Ǥ��.�4�w^����b����a"9^ڋ��n^)�G[E�a#l�dE�)޶S�-�Ϯ�j�u�����Kx�F�}���h�GB����g�sK#����:���Q���~�	�%���p���d�����`��3g�\���]��{I(v#��m����s���B�༂��w\�P���HG���muC��9l��p��%	]�e�����G�l%$�9rDn�� D�n�ye�����D�A��L�2���y�f�뮻d�jhY��̦U1N�|�M|g#)֭[�k֬	€۟%�]��ϡ`�lnve!�$��[n�%�������o��ݻ��]s�5���CRD@��ꪫ�4:�� K�l�����"��`��7mnF䍹�ql��f,��4•�ٓHڡ	��H	#Jw-&VZo�Z��VK�4o����lk�=��5�'֧8��Z�vh٣C����gz��ī����R�_#^]�h����ˤ�}s�p�8�pR�pC��U!	�^�F��~:�q��`[Ko[B	��Ku�r���b!�>"��#�ڝF0�]��u_N[����{�ĉ�p��Ç�\��[w�y�l���ߗ�����?EؽO?����U__x�"T���`.�P����ܹs�W^a�#Mػwo�޴j=pp�;�d�3)ئ�)����6$ ڢ�8���8$�%S��z뭢d)V F��G?��H3����"�0$j)�!"
R>`��={��;� �橧�
֗��@,A���>ql����b3��^S�^E��}��,D�2-��-��3�Z�|F���^'��iہ��ՙ�� �w}/[��J=��R��q"�o���l���m���"�)�/��2�`������BL��q�M��ۊ��A�9Q�u@瞒�$����%t�Bt�Ӭ������+���,����M�@�B�2��c���+��|� 7�+�_I(v�d���q77 ��
���n��Fy���q��������x� � )n��+WB�����r�ޚ�ϧ`�*�$�h�����u�d�"�k���{�lb�k�ۥ����'��B
����'����W�P��R�{����$d������=G/]�4��s��t����w��`��ό���9�@x�`�"l�Q��lomw}�>J/}��ku,��+�N� 4�Ђǧ%��Оv��w�.-��J�u�w����z�b��]�n�$�P��q�D���H;�D�a�f��UY�˵�[�_v�qo��(-�(�]��ɮ*p��\&�!Cx���HHQ�Ak�Z��z�>e��b|�@	�v{��
�i��G�x���u��(h����ܚI�ָYB#i�KoҤI��-n	���CnL�`����V�r����Ρ�Ʊ��o߾ ��]����kbT����(�<������Xd���{��G���ظ›�EW�D���Q�mpjj��a̓y��!�><m��8���y,�9�_.�*<�c��|��A��^�z�R@�c��4����:�0�A�Ez�6V6�I��`��a*��ZRt��P�j�c�[�������?v���t��80�]�DZ���}��F�rm{���B���
ab-<R!|b�yD�拶m��\���8L�9Ӷ��Ƶ�
�ܐ�u��.�`N/[�B�@_�}

,,ym>��Bl��g��v�
V��<�b�y���{��P����Q�;�����o�wR4��c�t���`U��FP��|�>��%[P
q�ԺA��kulܣu�W"i6�"����'��Ժ=***�I��w�{^��UR�&+���$�X!:X�u�2����G�̗^z)8��U<�a`ߏ�%��I!�24rf���A��+����+�fa�X�u�FW�mN�l�M�7'O�?"�'�1Ƭ����|ٺ����AlH���rW^��=��,haɒ%2g�<��zk=DY�j.։�4|��%��O��q�bQǎ"������e�d!-A��
��&���1{����g�#�h�֦ B���l�$eh�������!Ȟ���S��nOH*<rC[���Mo�3��g�cl�~�t��$���岅A�[-�61X� ���cR��s\�ߞ���ø.n+�c⿹ﲻ�֝��o;���A�R��h;|�!P	)���܍���X���	5�J_�SR����'m]��b���>Mz�W/�:p���hL�= �Ë����&Զg�͵`k@8���f��Z�G�^(�\r�<�Y�(x�9RF���[��������n
"�bC��xG��l�DB�EX/a��g3����?>�iF�������
wU�@����@G�#�^z�=�h'A{�����Tt�!�^y�2jԨ�1�Ȟ={f��lٲ%�ā@��Gɇ~�Pl�R	�ٵ����t
��!@y�n���"Ư|�p<q�|��'�8k�ob?�m
�n�t �u+W~��5x����'�$�Gy$���9��,��0F��'7X���7!���U�شiSp�%�����T[�x
�,�z���0���Ə�4��v�Czh;�1
�����ǃ�y���B7wm��V��s�}a���	�>�q]l���f��jh�e���`b^[�>ݴ�O�Ϫc�-ʾj�v8���#O��N{�N�4�0!g�8��b�7>DI��~�؄���P-)����&�A8O���7*tO�9cUK�!$�s<d���E�N�.�)�c�|�㣥t1�Rj��	��
���{�	��q:^��y���[;b�k��=�o�[�����4��A��3fL`x���СC����W�y�f��w��n	�a����.� ����u7�(��0��pZ�X�?>�SW�.X�@�y�.�nf�w�]	E�8��e��駟f��N���z�=|U7 StRm<{F�܇�k�}�ف�k@���{��ՁQק��R>���@$޹s�|��Wr��־�F-�wk�((�v	�7x��@�t�	�'���/�<88�6�	O����� �$`L�P�cGڵ�@�[��ߌ��!,V1?��}��פ�B��Zx�"4���ǕM9�
>y��g��c�N��(�]w]0?w�_�m��
6�'~MM�T��Z�k��k����H�Cz�c\�O�K����m�3ۑsk�wc�8h�V[�V#�?@�Ӽ���-��v��m5ng������k�-��<$�W��T��З�����0�����bYoo?�c�y���ǹ-�`��K%%F@|�c��Ɔ��^3��L�V[��aI��?�c�I�-�6�o7O���k?#�`�N��ߒ�2�7RF�q���y�'K#�?���s �Ox�~��ɺ.�vx��w5Zu�xX��*]7�%e�w�6
Ƙ�&�[O�[�B`�	r�;lذa�	�e˖W����u��}�=��ak��^|�� �
�ȳ�7n���0@��r&vxX�_�>�+�wp܀���dJ�. �B�U�o�)��q:�����!���5�@��$)�6�P����A�ۙ-ͳ6q�?��K/���58$1ր�p�ȑ j�zåT��$%���o�oC5xK����[�q	oJI�q�Ax�{Q��zpU���87����] �!�q�Ua�Ę�����g�5����0OC�����Ø$�6�1D$��J�>@`�T�2+�����|5{y��C?�;l���z�Cg�����B;7��C�&�߻.�}�}��q�-<%,�gM��ڧ����g����B�/Ui[l��\�lW5�� ��	��>R+��uI�Q���W#̃���:�B�ا�
��r���ow���w�E{ZR�,�	-���H��-z���V����w9���ys��#���k����CD�~���O1��N���"<��K>�t��]��u2�E;�rT���wOK��dj���`�U0iM��
�/��9�S��_��#@�X�bE �F»A��an�.P "4] ��}���6�C<��Ø�b�7g��/p%P.�"b>|8�����=񢫠�!�h���^`#n����A(G��?���@{�g��Ni���`�h��h��R70�Xb��۬1J��d��S�]m��l֒�p,8q��a8d�h�"�4i*B�R`=�Z�@��U1��S%o-�P&B���6-6~���{bI�`ۊQČ�ݼ[�2&~�t�_�w�B�!"Чi�11�1ņ�z
�,��r�u���s�NIf<l�M��z�W$%����>�!�I�)�KR޵�OKD ��:_�����m��9���u=.)��+�#c���
����vf�{Gڠ�9���:-����X�|��Y���7�̃,���D�:s��
!�7��w�c�H��gc9�}��Vj��������~�B�
���wo�G#B3����Ƴtl�Zǩ#�����\3}׼o��Ӽp��|O߭����Xi�@�K�M���G���@{R��D��B��Q�m	Hp2��7��M�[�ē��������׸v�bB�2I	NX���r,"w*r.v�Y�fɿ�˿��]�_������?�f�n��
n;�'�Ryc�/#ªB�퍺}����ٞx	��^B:!��^_��
c�-1J�W��L�C,lIs)B��p�Z�M7�$8�B�H�v�ڵA�[*���f��2MR�=�7;T�IR«�2{�*��w>�QD���h3�p�y���!��CD��:	�/xZUxƪ����j��:��4�j�i��o�&��y��|�_��5����g^��~[Bϑ=:�8g����O=O[0O���4�;���zq]admը�t��-i��`���{��{�P�w
�iےy�Z��:&F��v�)�p��%u(�^۰@������a��Oi���?���6nv�}z���~��G꼂�'W��1��X����1��nsL�=��RV�4�{zc�y���_o1����tl#t�nе�o}X��cil|����Г޸�j�B���I�8��8‘�[�N��!& �q0�A�E�LX�VH(�F�=�늜�yG�٩�G^F
�w�k����о�� ����,�r����@$��R)�ݚ��
��W\�>���ՐЅ��u�]�	
�?����+X(ؒ2V�
7�2�E�}�żC�<iqho��������z�0k��w&��$��o���q�WnXǖ��v�{.��c�y��ou��p�6� XuT��E2��))���&Z��V��燘5�t���_�k�o8�g��f�;�4"�T�-�jL�:�x�����r~���$ضЇK#㘍e��y�R�^�U �m��m�;��V{�a��r"g%/�z�Z~t*n-�>~#"7��9n	�����*	�O�P����\;#y
�덝�����	���������o�����3���K>�w�	�h<o�2��-f�q D5��'f�s��
ruA<�����i��\�!��}�]��k:�}y�y�DW��.p�.���zo�ԩSu���A@F�@Ȇ�RB��o\y-A���W��<�~��9/����{c��ܕ;%a���
[�0V�$a��Ɖ�̙3��m�!����͛��^�_x��మ{ ҮeMq��ּ��?FW�=� ��}�l=��n0h��i��u�P�!�6A0�I',|l��>�`k�^Լ�H�s
����0���BR⮁����g�A-���
q觞���:����Xm˰��vQO�6���bl[�Ͼ��_x�&M�������6q�)r�<O�:V�^mw�B8�p���{!9���̕�%<����t���A��;#�^,Ҋ��e�4�A��"`D��4cg:Q�N
8*F{��blN����͓�^z�(
/�nZ�E4~�x�����/�����o���k�Juǎr�@�:t�Pp{��A�bM�@\XX�`�k����ԕ����ꪫ��\Y�����n�K:xx;^��?�л$� ����>\��x≢�w��sO�Y�������|�$F
�B=ߢ�O�ɓ뮻N����@����!B�	̃H��(�4�DZ�lZ-����w6���ԃ���FK��[P��Du���<l,�|�0�#�W���jڭ����	�YM<hhO���m6�������,�{wI�m)טy��޲��7�4
j���	�y��P'0T2DrӺA�L��_�}5���?)ضY�~��RI�[�c�#�cv;�q�q{��;8,4L�ڏ%o�� $;��D�%�!��-�&줷J�P�~i)�ACd��ȸ� E"�vv�.F���
���j�o߾E�N�<����n�nק&xeb��ƦHY'�mw�+?�ۿ�[��/~���s�w�ß�rO&��h�<K
/�%��"6N�B��R��%��w�#
���ͫ�P����VpM��IB7�l����̖�j��-���ӧˠA�XS�8 �B�E�c���7��*���\��	��\y��ߋ=���G�C��P��^Nf�s�Ppf��C_1��^���~�h{���_�h�~>�n��˨�G�P�b.�V[k!К�ޓ&�����g��ax<���q�9��\�_4��&�yjg~�dx۞*���U�(m˰�����1�R�-����qc�o�j��
��
�zc�ҥ>�9�ot�tH���#��*byY9gr�n��Z�-@�7�I�1c�<��C�����7��ŋ�H��F����O�"�/�b�6.�8݄��\81�M�m�xc.����ߐ!C��`0���~f�5�X{�m3����/a�ÉZGV���%�\�@�~R4�(�Š.\�PƎ[P?�
B{��om�ߑ.B���	�Go:yT�'������%�8z���{pP	i+p_�Kؠ"��]ma�q��缜А��imc��G��m����¶��N��0f�=6ꤩ�i��N��j��4ޫ0���D�R��V��n}��m�g�<]��;Y0��M+�� �Z�_��_��g@޵�z����!��S;�y��JJ<����.b�O=�5�Su1�I�\������\C��x�?)�o�`r�u,��+�!�~��!�!m�-��.:O�����L�%�2��5P��ݑ��X[u�
��`�y�g
�<���ӟ���(���
৽��"�B�C��tޚی�h�^�r���%�����k�ش�J�s��ǒY;i�;�~��̚5K�Νx�'�����.]*�W��C�ou�1	�z�E(ؒ�CM�ul����=z!���������1�5FϦM��9�P������g!Ү��*!Y��Q����{���̖b��P�����C�$u᣹-aI�~�&����ͽ%�5�Eڡ�k��0����`�%�w������SR�nkt�k�d�{�5��%������րqQ� <�(	�Q�ve���	Iy�Z��mC��B��$C��*�>�6;B�moA�d���`K"c��)���E(�9i��ٰow�S��&���E�"��KX�R)ME�ZΕ���o�����Wa���h-/x�B<�X����0
��Ǵ6L�9�9��s�0�~�����Es�b�\�uq SN���M�>�<F�ϟ/�!�߳g���?�S�٫�qq
�+a��b�n��aE{�u�|�(ȕgp ��_r�y�:mg�r*�
lI�����f�<Y�ꫯD�)S��e�]&}��a��Xr�̙`m�u���_�~}�֊N�:���5Hr=�`�>��b�l�_|^� �/Y�s�b�]�<���j!*���%r	��O�����,��}��g�)I�`h��Z��a�m��SH���ѹL�Eĭ�z�ѶY���%��F�[��S��i�~��Pm��U�M�s�Ɨ�
�E�vl����3}t~�\3@R".�����8[�u��5H����O�p�J�Թ�*g}Z;0gQN(ҒNͿlS L�/E�m��w�-�96�<�U�p�
6M#�WC����-�����k0p›���>�s������́P��/������A^S�.�K�������O4W]uUpԨQy����A�o���<xО¤�v��j�C(ؒ�W�xk�f&L���_~y����Krɉ'��><g�m�&_~�e ��q�:�a����H�0�`���ϋ
#�0�/P�	�A��$�ҴCbM���'B˞�[a,��B��׼L�!���H���������B@�gm{�a��F��۴���P)�`��u~;���_O�_��P���u�^W�IL�6��K��[ú{�Ro�g|\+��2y�����&I�s%<�f�}t]v\R�gm�vR��Ӓ
u\��tu��`�LF�I�����B�&xn"o&��l�~���b�l��(���xX'�C�ZO�2H7�Xd�r�G'�=���СC�|��7�xd:��0�)izgk��"F��V���Bƍ'�~�7s��G����Q�\|�(���/a~�`K�3�����u�j"�=:o/����
ƾK.�Dz���Z$���6a�n��D�ŭw)J���P�{�u�Q��[���%����h��m~\�#��%a�Q�Ю�y7YnZ�Zn{�"�����:���_Aڣ�{�9��K�<"�=��-/n���z�YD������!�~)�`{H
\�M�M��u	#0�1�,m0F�/1
щ_��w(ؒ6�1;�b�-��˃kQjt�ZˎBY���l�X�@;��`���u�Ú%*�Z�	̇g��rn$٘�)ئ<6!���N�6M�͛'ȗ'���eŊAA�L*��|Е���`s��+��pn��~�����u��ӧ�e<���_��t�MZ�F�F'�f ?䥗^�Ç��\���������Ç
�_}���۷/������ׄ^ұ��-)�cr���b�y�����q�{���"�
�(}�lٲE�o�.;v�z>
�T��9k^R�1!����E��~�y�3��0$�t��L��G�G�h�4�X+��l5�Ԍ丅��W���/¨8B��:#5��$R��)�w�o1/[?�l�ӷ�ֵ}�Q,��/�F���_%i��0$2�� ��"lӴ_=�$�;�x:b���c�i��?�!:��K��[��q��=��¼p�h����)�W.�~�٧s����%9n��ԖQ��{�vj^�'�iHcg�����8�A�I6�o
���Ih�+w��JU�ᒯ�y��Feee�5M8Vl� �>��!I��M�yf�O�x�"�-�k׮�]��j�󪎈���#��C�Wv�
U��c����?NK���bbޤ�D���
����&�U&�x7Jo'I$
���3b�^(���!4@���g�ٽ{w ��џ��g����>� X+B�m�@�,_��-!�����M��~��DQ�v����	�
����=��jk���*i�B�c��ϑ0naH|�v���5�To�`�0?�m7�������+Jt����R�.k��#�h�o	EZxW�0�!c��,�>ׁ~���Y-�5���Z^f�S��^���1d!)���V�`K�0���!�"�/�a���xwJ�D�8�{����a�ɹm����lmo�%%����I��6��9�F�,5�Ή$��7���<	sl6��8q�|��<��k�I�2��0�!+B����?�!�x���R�f�\3�CgϞ-?�p�k�b�ʕ�n+������^��!D/�_��m
��?��p��y�2���q!nL���Ԙ�Ƕ��J*�1>���=��[R�ױ
�/�F��� ��1c���/s�E%�sx
�
G��/��"��q�F����a�r� �n��l�� �I��t~#����bl���f���RVa�:�~wU��y����h����C[}�v�^�!���c�����ax��jy������e�>�0����^�^������	���ֽ��#�
�\_�}�}�Jw�yA�^���i��k\=��4D޷A����R^^�B_(ؒ�ev ��!���[�z�NSjt�8 M�\�W�gM};��w��W��m_mWU-�@�{F�
�v�s!��M��s�j9ǕiZ�z�!D�9�#�Ǐ�����c(�
K�a�ٻw��ܹ��X@��ׄ�X�ã��7w�\y�WZ}!BK��G?
���߸�ٸ�K�,���}��;�Ӽy�0�0!��P�%���}��_���ϵ���΃+��"�<xpc��h�bɌ�"x��Z�n`�Y�P�G������X6ڬ��
kLH����.�z��{Ø��QUͣ�X><[���=�O����CS!���\�ץy��5oپzkyTqm���`��ݴ��O;[?�����|�_C�ȯ�	�W�<���Z�m(�>��~L�Cf�sݤiXm����7\��N(�b[��G��dy����~�)Ms�+gt����c;t��I��ķ����l��F��Y��Sֿ�����c�N�=gI,�o
��a���va��7�P��I�����{:��+����?�;��keƌfT���e-�q,(I�q
8�x-��\�	��h�������>�L֬Yco�|�?�V�#BH�6̄�r���(�m�������� �EYYJ8p`�y�}!�]?@��;��P\k�`��DA�a�Y�>c���d�u3�C����Bۜ�W�\t(0��7��,_��6>��~>�G�'�h�.��=@m0Zn��q��.����M�8�sT��5�<n����ʵ����x�>>���v�v�JI��=%)�������<αlI���QQ7*蚐�K��\���:���?v@��Iǽ�!��J��z���0����ko9���>����j�k�X��������8ZxH�$n@�6�����v�3H�
K�^���H灀�+�A8d����������c����?�t &2���4��ʻ��P�Y�Ͻ�5r!�Nm���.u�)���DŽKH`a�ś�P�Ѱ��
�\���*z�#�}��%KH�A�6�k��'���ó�'��ѵ�w��r0�6x���iav}�
i�ۭ�a���,6�c�4���!���j������1�w�Ih����!;ʍ�K�ń|��]�J��	�uz�G��狕j�XKH��X
�$f�?�_�y�����Bo:O^+�����{�q�Γ�J��9��bɬ)�ҹ��(��z����N�=$��FR�jM��ϟ�[+�Y�S���\K�����=�R�%�J��5*�7�&����|	C^��Ds���\�~��_2u�Ty衇�����?���~���w�{G�6�7�r�>g9QW��	!�;�B��`n-�xkϥ#ݡ����y�5 ���cn��}���9(��v]c�0f<M�����Z
���s�o�~k�y��C���^�绅Qu���G����s	=��kB-D\�FJ��C��ݣ��N�D/��fL��]��9B
s�ʾLr����ѵI�Cg=����ͭ&����="�uPR�P �M�>�S�wl����8u��U��H�R�[I����z�s��m�7�⨉�~.�h^tP'�CG�x����}���h�߬��ĸ3@<EL�Y���yEN��\�����܃1W�s��������ŋ/]�rׇ~��&�.!�B�&߂-!q]ZJ�m��-$�0���p
��Ǹ2Z��OH��X���
Qb-� �$����)�`��@Xd�|F�}�V��r��	!��'ٗI�ڲ͙�ŸC���("&�%�Z_���h��hnq;x}��9?�=ڃͿ&zF;��Ѿ(�GB1�>�{�Ks�ԿmOi������y����o�s+[R,c������6������~x�.Z�Hz��-˖-��+%Y�Օo���Jmm�}�U��{�^p׽�XÄp�%�BH�P�%��f,ͅ[�����><g �B��w�'6N��J*dK�텮 Տ尅pے`��6�}���y�}�$��� |�ݒ4�%�y����J%}��kۚ�Eޫ]�PR��o�5�|f��5DJ}+��;EXB:7���:�Ye�p�!�v�y
'������ӧ�ַ�%��A�ū]�UWWW�f͚&�k׮��{Y��B!��}��J �#b��F�{��QW$e.��!��J���iI�3n	�B3B�5o\�-y�B!q_��Uۉ��&�t����!�4{��ޫ՟����Eը`������JH|�`K�䤛��_�Bƍ'}��������{Օ%���������,2x�UH!�B!$43�Js��[�����v,�pk�س]A��#Z �V��#&�B�j2N	��	!9�!�Iqw�0T��K����P�p�}W��K]����HHю�B!��p�IH�֓�/[x�"�q�>FX�4�Ǽk�[6J�+�H2�Rm=�<!ܿ�/B!���Ö��f��A.[�DF8���<��:}��E����W�se�{~k�N��Bi?�����C�[�U{jA�w,B [�[x�Z��n��z��u��O�|�x�Z�Iy�6	��KH��_�	!���οl	!���lx	!��b��OB����;��b�n-��_t�&��,d2^[�?
쿄p��O!�d~�M7�2�-!�B!�BH2��ꡘ�}M}�3A�$���HKu�B!��B��B!�B!$Y��mG��XB!�Bb[B!�B!�B!iaJ B!$�sk4,2[B!�B!�����B!�6l	!�B!�B!�����w���+�BH�`K!�B!�B!��_h��~T�-�<�Gi��:���(u�8]}���z�ou�B
��B!�B!�BH�����m���ݽR����i�l��>���5�FR����� k�K�W���Gn�����R�P�%�Bi�����lr���I!�B!E�/�FEV_���J��������=.���~{HSo�c�����E�xz�w?�0k�0[���z����6��{}Tܭ�>�B.!���`K!��B�•��ve��m�+�z���wR��^Wvy��)ݤ�+]٢����V�dB!�����V!JC5����\�5���՞�Tt��Y�{ԲH9��i	E�
��%4D�=�򤅠�3��}�+�I�����C��9�]j��P[��bn�{l�:��{}�]�������:!�҉	�F�|���(�M��v�>?Y7�a�ر2hP�l?��#�����W2���F���׳yB�
���p��j��`ؒ�9	I����1��w��4q�~5�%���Z�s�r=��I	�]z{Hǡ����M��e�+}����kB�����S��i���[�3���
��w�Ҹ�`{-�5x�rS�%�B�0ᒌ���8	�^�[v�n��d�ȑ2b��ի�L�:�^x�R^:��ݻ��L&Mʝ��={d��ݍ����eӦ����R>����|�~���r���/��+w��]lV��|�'!\����K���|�%�[�[�4/����.M��CH��V
�]?K�i�b_�흦��
�G�'$���_B��w�z�en��qj��+�],��;X�����^11�D�j�c51҅��D�瘶Aֿ��F��D�YcD�sC�t�
�	Y�S�%��^B�fS��&D
�c'�f7-\'L� �{�:T��������.���7�	��v�
ʆ
��}�����:�"|�&��3�������	�޵��o�J4�{�[��LA4g���1���Ha��S���8b��1k��(}���xwB�=*��,N��quW���k��ݜ+�G�0	��!
���!��B�)Iy��x]6o��Eܖlp��Z�0!�T��򋟓:z �hI����}N'ئ���\�=���-�RЍ���-!1����c^^�d
����T�L�BC|?~��7N.��R�����Ç�%�\"={�dM��۽{���֭[�P����y=`@xǕu^9�Z$1f��9pb~3���7!$7k�8�_����YAڒ���$��!)�֌���p�W�O4��iIyyY�S Y��l32�t��#��1�\R�l?�E��({��Rࡋr����<	s����\��$���U��1��l
���4?��5�z�z�?5n-���4t�^���+��y�[��<l-�G�����!2����?LV�t�/C��x
N����mzrDBT��t���I�`�N��B�N�0�nd�"I�0R�m� M�����S�,B��ɓ墋.�>}��3�����?�[��~�aK��!��r��G���*)���7-�ܨ4������:o}ak��kӛt�����8�oB�wM~��DZ3��0[���W �X>D�Ih�?��a�<�~[e>�O.`GH����y��eż���̫����4'�{)Es
M�G
�YCL��g�z�H�ߥ:n �1�ٯ\}T��&�ZC�����%��m�q���t��i�x�依.b���e�b���"�=���S:���rZۑ�)����'\S:ԅ߅�4Z��5���0��8X�
��%}��3i�/�R�����-!1���QgH(� ,�i�(k�"}���� Dg;0�*�
$�F
�i���
z�Lh� ��o|C���*�:u�\q��8	�9sF��?Ⱥu���w�
n�9}�{��re��B.!0dMЍ�%~����g���g���
&�s�TUU���u����$;��)d�n`I��oB�wM��<iM��E�Y!���0nBX٩c�����]���\#��SF!�`�u\��焁��HG_$�K�ȭ~�����#
٘{�ꗂm�ڟ�!�A[K0�@��=j�+_����C�3ar��^���I*��aIy�ct�P��c�z�����B�C���n-�F���n�n��n�G���*A�3@�D#�w��^��[�m���8?���D`KQ'���58[Bb��	�\���蓣F�
D�'58�3f�<��r��!پ}�TWW�]�	A��O>���:�B X)�H�[����!��N��v��$D��&�B�0`k-@[�fMP�~�m9x�46�8T���Xc�E�@�=nw�
�#�kcB�c�`����k���R[[x����aٶ-t�ݱcG�m�q^YY�K�6�[$��3�C��oB�wMV��xӚHk^o،��X���KW>q���=�b��(�t>9 )qFRMk�@��i<�F�h(��[_��.)o�� 뇃��	��c�k(q^�l��}��B�82H��E�3��ߺ��FQ̋��]�T�7�i9()���E�|�c�S6���<��քYe��zB�š)�¡���R�,�:��ZFzca������I���}o�&��7:>�R�%$f��<av�+7�&7`�r���˴iӂ��j;"�v3�³��Z/J(��L�<���6��jl�-l�64s%��?1dȐ`��1c��p�
A�YR`\^�zu06��0�Y�cs%k+��d�qZpp���ʂ����+�n'M������O�!�={�y�q`��� 4"� �xMMMK�s)�ۍ:��>��#��7!ܻ&��z�30���
��ij%��v�������\��t����h��u���-&ʛ+����h�+M�����{$b��^�^�>#�G�yE�y
Y~a�[(02'��)�v�=v�T>k_��82X�<��x+g���#�^.ӽ�/K�6�yk��)Neo.1q�?��K���ܼG��;����C�2�g��Q�q�չv���D����	mbn:�R�3](���Mo�A���,����D��3gBK\�8�j�*y�w��8�"��2W���
�<H�BUO����9����;�v����ʠ`�S���Hxȣq�`��ӧO�5�\É�ػw����k�r�ʠx`����0|l���T����h[dʔ)AD���;/8�a�sq�+n�+���>�
6Ȗ-[����~0��/E���$w횫��a�!���?fa0�{Z<��+��wڛ�k��+$��/ޞԵTl=�""�	c}$eD7���	��s]a�ݫ�kH֑��`�Ow]렽Xhہ�^�]-��	I��C@�Z��`��hŽ�o"-D~�����a
.�R[B�x�Ө�u�د�?`c9Lk)Ju����&��z���V0�X^i�e�b�f�:���F�Z�lo5�xd~�CS����H��)���Mo�@�һ%[0��
��y����q./��b @�U0��ʳR�9�������>�n��?t��Q���Ӎ�}���r�x���!خ��Mq�
�9i�u�h<0q��`�;wnp������A/�+Vc3�O��\�&�T^@~YL
��24��",Yx��1
����ѣG!��!���ƺ�o�v)��{��ܵk���nͣ�i+�^o���]j��t�=���17���$0v��1��H�bBi?��ۧ�i�+[��}mv��-
��~D׬�5Ϲ��򾍕xK���q�����B���P���#�%�h_î�}����')�mꄎ�n�Yk�CP��l����|T�}�v�|����u�,cu^��u�儶y5�k������-!	��f䦽_�ܒY,Xx�&�?�|���0X�%��J"X���kfm��������.��/�X
�g]��w�̙ �r
#��\��;w�G���N�e�c�>
�Y�-��o< �Ci�̙+/|/8�x�!�=0f<�cC&g��:oL����92��e1��,�&���?��O�h!�Z`A�VƒQU�^/��ܵk���g����ٺ=Woa�{�}��"�N��ԇ&��!o�z=�Hk!(M3�E�
Fl$�O��8���@����\�9�c�=G��٘a��vh`��ó�oh�=��d�ݍw7׹2^���v�8}H�VP��3�W�{s�z��`�l-e:�N�cv���*��D\k�B�qqݎJs���\ˁ[��-[B���p�y\�����I�}���-�m�6y��ge�ڵA�[B�=��;�D@�E�Y1���ꫯ�k��6�_QQ��/�u�:�g�M����z	Q���:V,��� �Ξ=;�%�#@�Z�|yt��Jq���8�cy�!�N���e�����/DZ�9��Ysy�L��������8ml�-Š�w:���$w획���\h!� D��s(0�����zY*�����	F�3���b0�èn��-��G��W6��w*��}���`p����Ўya(�69܁1����:v�@���g�I�!ƼoK�p��!ݱ���	��t�(���G��Z�c�9������t~�8�|���
�`�v�ΫH(��tD��8��Xo�[B���0��r&��Ç�����rM2�<�H�uW¸��I N�B��afg��x.��لڞ={Ʈ���w���������oG�A�]��
Ɂ��.c޴���68�q^�iI��p�1��\�c��m��v���:���H�~���㪫�j�C�ZKv(
^�W��>�S��#E�D^h�?	I��5��7�U�I��F���\��
)�q'��l��;�K�aɲ�mD��X���M�������%/��T�h�04C����_���S�����,�Fڤy���W��wd4��v���Mݧ�i�-��"cF�
��P��@k�g}�^:�"��֮�-'�j#�/q�R	��>rP�Q��y�a���P�%$a���gt���?�x.�X����{�'�?��+����aBB��y�B�E�馛��8_���A�x�y	a��d1d2�N�g���yӧO�C��ݻ7w� L-]��g�M-x@�e�ۦ����m��Ř/p�}poZ�|����a��D������5I����ܵk����s���_��(9FBc�/�g�Uk�/��\��0r�׽nM&��-�b-�KJ������o'ѓ������}��1.˧����ЇU���dOm�u���$�c��i�+��­��
����~��t��Q'_����-���ĕ����\��&�x�u��B�7l	Iئ7`|ZB�M�5k�,Y�D�N�Z���x@^�u��?���[łm�hxj���(���+(A^t+V��=� �+��L��1�>W&��iI>�h��w�!ji6ƊQ��o����_}p���ϒ�QCp(
�鑼�XϠ!/�.�?	I��5����},D�a����o�g�ë�bݍֵ<��a��r�d/��7�0�>ȩ�F�+��Ԩ��%�X��o"L*9��bl[j�i{DMx���@b8^L��Y�f�%�<����Y��5/Z�A;H��i���E[˖AZhS��ӵ
ڑ���u��s��N]�[
��$l��E`�}������B-�Ԓx���v˖-����0�`��f�����J��P�>S�L)�z�W�SO=�=�q�+3�9l��o�P�
\� �B�Y�h����q� yb�y����x��;��X�o����e�>nsZ�%�
�28���V	�n�w%'ֹ�$$�k׮�_�`�A�	0�f}���!^�6��յ�1��N�����51ogN��A�P��+���;k?�/��˴�M��1EV
�� �z�/M���B-��{`K$	+p��͆�X��o�Wރ8����ir��־�_����K��N��N�5��WK٢^�׽��)�9�2�m���l	�٦�@�}ܕRx�>��Ӊ��m<xz!8!<(��g6���%pB.A�.\XT��]��[�-�k�w٨L��U��ΗP�
r]B�W�m��Ɓ�Ċ�-�l޼��.��!����-ڛt_jO�0�)��c�`xr�/���nׯo�`��"���x���]��U���5<Eq���G��H��Q���]Wl�ИY����BK��O[!axj��H���{�dm��?�/�`b�����u.����6iB-��!nA�=̖G8V�6��m-�-̼�qX)v�'�“���Hk������+�r'n��<M��q�H*-�aI	���sK����mz;�䪝�#�y�^�6��O*>��=�kʍ:�g
l����K*�Ba�b��/^,�?�|��O�0�$n;����m��ն8����7�,��rk����G	�(O����������[�AX��u<{���Rl�zHf��-�׵k��t �#X�sn����];�=��r�^(a(�v��N��)�,�;	#���z=����\	Etx՞q���}6��۬Gޓuߵ[��IθS���wxcD�M"o�:��G��H���(��>�h��0�p�R��y���y��H�.����c����I�%�%�A´�Ϙ�:�b,=tt��`KH�6��]�ϛ�^zI�̙��N`̼��;���zm}W7�]��GEs#� ı�a�֭�h���
��%�]�
c��[��&�Y�ࡇh��$	�w�u�<��R]hM�>���$4�%lp!�ެ�������n�3 $>|X~�_y佐�����ñ�|W�?	I�ڵ3��k�y��Ya��G�~���u��u���PZm#�l�E4�1��U�!ܩkQ�}�SR�sՙ4 �`���!�!��p��M
p�@H�te���&��6vX��չ��y���D�:G ���G <>D�^I������w�Rm���@�������Q��`KH�6���]�Q!~Ǐϋ�Av��-s��
�	J����b�“�7��Ǟx�	)--eE��7B�E�S�eW���l��
I�3��<����$���<�Z��^ӯ���,��4U�=���j�|РA��$���⋲|��V���Ku3�W��$$�k׎�_/g-D�q
��[���^��][�'Ih���I���j��W-����Q;V�s���fmv�:\$��3<maH>�ʙ���HN�`	ɍ��H-�]���UI�������&��o��s���Es��{��v_���I���HxH���<ث�)+Va�;4�R�%$ϛ�v�(�N�:5kG���I���x6��V�Pߒ���8��������裏2�p���~�?�W��b-Dۗ�a�y�o
�9~TԁP�|�<4@
�U�V�<��巅��	�i�X䢅P/w�;&��E�K�Ha������{q�IHr׮�j�!^sk!(B$�X���;PB��M�m��J�Z�0v����ӽlk0c���ծ�鵀��)ɀ�R(�m��0 P��}�I�"RD���Hi�]Nj�
�7य़��z�
�oZ0��4��KW>b_$	X������w�~D��금�l	Iئ�@�}ӕ�k�it������V�O �~G������;v�<��Á`K:��!L5��
<�~"�{Z�-Nb�$z�{=�L�2���,˖-B�z�m����Z��k�3��
���B��:K�.
?(�D���*߇�OB��vmo�UA�_�'��s�=>����5��K
�H*2N������qs9��Y���<F����V��q�[��m�!��v[
)���mg긽]�
�4�)>�I*�yӢ�
�0��f�[y5H���ږw�DŽ[؉��S>�kp
���l��~��l1�(�f��h�Ķ�Jˡq�Bm���A<8p +2@�A��c��^s8)�-�Ƅ�t��<��'O��>F8nB��o�1C������+�؉��ts+&L�Zx����3��[/�-�Œcou�?	I�ڵ�-�wp��s�����x%�~�a��(�]B-x2‹�9�B$�
s���Z�ޯ�Px����N{�$Y��¯�����6Cq��~���_���5�u,?�oۈP�yy��c��|��8�Ix��\��h�;�m[N�Jɳ�-[B��m�%�<TQQ�\�X�y�9"�g�6���ܘ�e�L�Cr�«��;�`�e�/��"���'�GҊ�O
�84�aW��¡��}���cӦM�x�b?�+[��:��y`��aȱ�
DZ�D�P[VVƋB�@�ݶ��\B$/���,��ܵk;E!��@��B�e�lt��U^��]k��
�a?��9�����W���]��`8�Ȗ׶!�}8΂�b�	�X��o3[!��Tw3Gnj�Zv�؁���?�H}��
����t���M
k�X�A��j�R���{%O޶l	Iئ�fK�]+o��f��d��۷˴iӂ��v{�{z�+�ņ�y��e̘1��,q��I��[�嗃T�uz=��1!�?
��<���<ș�C�����u�� 
9� :-��G��>	Jɡ�̙�3f���RYYzx��g��:pl�X{��[��OB��vm��z�<�ȥ��@ί7�ΐ'�-��w��k'��u��
���Ow�h�D�V;�'#4ٹz��{��l���op�懮\,�A��4o[�y!<էCt�P�g��>B��$�g-��?h���}�KI������\��l	Iئ�p�Ϙ\�qY�h+;� ����=܅H���r�+��R=B	��׏��n�����@|�=Ƅ�(�7�y���$��A.l=�2���t�mǹ�h|�|嘏���Ba˖-�p�咇��]�r��.�'!�]��C�E�Sxq"G�	���w�W �׻����K���qס�5��k2Q�p�0 �h[��>G�V�`/��c$�ֻ��ck �]}��ZB;�v-�49$����g�Q�2��[��6�FI�����]}�s/��r9Q�%$a����+s�'�W��+:Gx"!��0X>�J)B��d��:����o_t�ǺP�Ԇ1A���H䪝��<~���0i�+V�c�=�Kv�e�,���1��.�e�����w��7��L
x�C�Uo[lfq*9+�
��$$�k����z^t����v��=�~ޮ�Hw�\�'zT��@@��v	E���z�$I�u�e~�Ƹ���O��𘁃P?�0��.]��[p����iW0�[�h���oޅ<$A���`��O:�?|���z��0aNB$S�%$a��4 W���.}�:��C���Ț5k#7!<I~��r���%�W��K��XL��{V�޽��ȵLi�����ۂ��6�H�]Җ�!� �B��h+��ϗ�zHF�Ŋ%E�m�� ꈄ����ұCm�'!�]��!�"W��J�RB���	i�W.�	�LJ��ᑓ �F±�P>ƕ��n�'�K��h	��Xhu�)��֯����:��0�i�a�	�=���u��\R޶06�f[��`KH�6��]��Ê'�xB�nVrx����w�	��R$�?�|�I�+RsTŠ�ӅU,��0o�TE0�_t�El�t�Gy$���{@҇y�ie�Q@�Z�5k�,Y�D�N�ʊ$EI$-= �֖L�?���$w��R�U�{Y���y�w�?Ě'$m��':�v	E���	l��b-N=~��^^qB26v �B������q��׹>w�5EH���5�-�T��v�+�]9.Y�kK����mz#���n�A~��߲�	Q>��3A�ض
���uW~��.Yl����+�L���<�����$��sO�UA�(��^��q����R��!w�q� g9!��ڵk��C8�k3����ܵk+�-D��B�N�x�̽���	i�O�xl��ת�8���C(Vx�}��^iB2>v`���t��Ю�]����j�A^��$̯�޶;u�ΖhK����mz=p
q���|�M�9s&+��/��B�O�.�v!�,s�����d	=k���/_�\F��OHY�~} <i�W�++\y\ԫ���	iB�#��/"�|�VW�w�}��$$�k�t���]�	yk�]�_���v��	�p��([̧g�Vs֚X;\¼�'y�	����p�W�d'�������[!�~�s0��ơ
��$l��ȕ���7�`��䴽��K��b7�=V ���]
�>������'$�<��c�t�R9|�p���U�裏2�1!�����X�ܶ���OB��vmA��P3X׳W��ӽ�e�8!����"z�W�I*�����Xo�
W�w�=�+K!$�s�_Ix��-�S"74<�OgZ��`KH�6�J����o�7��VX�r�|��߷�7�y���A~��ܹ��+��"�%ࡿb�
y���믗E��Ril!�*�]��N�&����][l�3"
��\��s�;�'�C���o��r*��m[��G�������^W�+J!$s���_�򅄢�懮ʤhK����mz�\�-½���[�XB�^r��{/�"Y��n.ۘ���-��q8��ꫯJ�=x�	!�����(UU�z1�(a~���'!�ݻ63(�oz�+�I�]�ӽ��Yۄt�"D����X�,�^�[�ez�#��f��c���B4�^.aNh8�YB�v�d�Ӷ��m7^Bb���yk	i�?>��4�+n�����-�iǡ�#G �ZB!qi;�z�رx�Æ8p4�5CHQT/W����B:NCCC����� Jc��C�3Df��v���B8�np7�s�D	!q�gI�s�
���,�a�o���AH;y���8W�I�O��+�'N����YK!$�\t�E�f��6mNr�
	OB�w/�1�rW>b��9T�W���W�6���P`>�^AB!	��]���b텮��� b^D[
���k0\w�u2j�(�!9�
�*7�9t^������� g�a�x1	!�$�1c�!��L���ȹ�	�FB���1�v?sW�5\�!���@�|y���~'��F�����BI�����Y�����u..�\L����35�g�T�!��sϕ�~���͡	����$�K��BH��A��_~YƍC�A��X+�%��-=���1�\bY��8��0��]����BH!����y͕�Lp�\��rz���-!�'pO���+Y�t��n�Mn��&�M��1�����7r�2:!���r����ʕ+�� �<�\<�Z!�x��EhԯY+�t����3���o�b�e;rW"�sͽK!�����A�P�9L잫���-!����t����`���Y1���2q���A8gB!$Ɍ?^�x�
{x�BH�Эl!�|�� $3444�0��Y/�H(��;�"�R�s�v7$��	'�d>�`KH~A��q�{���r��N�����h#~��%Kc�5'��wƹ[7N��B�ϴi�|�^��X+�X����X�e��Q��a�{���{l�i����B)Xܺ�WF��h���g�|�uc.�ń� �fEEk��.���:�.������.X� 0nB!�¬Y��駟���gˉ��§D׸�=�� $�444w79/[�wx�C@��[�!���ui
�e;Fr����-!�eh��С�	B2�Pe��?{������)S��3�<�E!��@N�[n�t�kI7�����*ؔ �V�:�
�<@B�4�^�������e!�R�h�v䳃p�Ш9�gK����$��ׯk��0o�<�9s&���x�B8^�;.�E"�R�<��s���c���-!�p)��h{��AH�ihh�a�	�D�汯C0�p��W�BH����
Wƺr���澒E]��-!�%Xp����&�������|%���o��f^ B!ͳ�>+c�b?+7��n'�,
Z�Y�d�]z� gt>�l-wmuCCßB)��nC�w󁄹lGKI�g��l)�B)(�Ν+3f�]$���篃�m`��w-!��b`�ȑ��O�Ç]��Z!� �H��No	!Y@�l"7�Z���0:�N^
B!E�+j�𲅽i�g�(��_*�*+Y�d�9su�;�U�2�n���BH�3{�l?����0����abm
�8!Y簄����sѷ���������BHQ.z�|��$a�1�s�OIII�U
��䗽�g߾}�	B2�w�!'=���/�ln�����B)*yʔ)�;Օ�Y#��X����������LK.�l�޵�y!��\������H(�"�{Y�C#S�%$���={X�d�iӦ��yy�
s]5}�t�馛xA!�ݺu�%K��C�F�Z!���iɽ�!��G�J�-��k`�ZB!$��qxj�+�%�B��H3l	�/�\�u��qٵkk��2o^�N�/�6�����BH1���e��'Y#�Pp$lϸRWRR2��BHV��m�]rĀ!�(��Bi���]9W� ɰ�-[B����͛Y�dx�N�4	wǺysR�?~�+3pGs�B!EɓO>)�FaZ�YZ!�B"W�r\�\^��,�^�k{��#�9�=��'�B����-����Y���Tl	�?����k���Eε�^�����ݻ7/!������r�m���'JJJJY+��2���v$�����C��c���F�Z��	!����!�"��`Wze�˖�-!����v�Z�!f֬F�vf�?:HZ�e&�B����/�|����!C���-B���� $뜔��8\�[�BiFCCr[~,�`�(3�`KH��R[�z�j9p�k����o~��N͡GBbLF�GO0&�B��u�%nNf�	B
�zWN�r̕�\��*!$��p��dߞ��\���p�UN!���uW��R!a.�ޙ�`KH�AΟU��b�
�!䬳Β)S��n�+�s�J�c&�B�D��93x1ܕ�X#�$
�zFB����^��9�!�18������e�B!-��X�n�P���my&�g
��ă@�}��X�d�K.���N��G�-�k	!���x�l�˖��95�ߕ�Y�d�"���`/ޓ�jB!�U~+�w-����U/[
���(�;��vժU�
B2��_lw'���p�j�P�%�B�2g�z�Rx ,2��r�_II�@V	!Y�F��a���BH;�lGJ�oW�h
�����|w�}�Y�!d„��l�ц�˽�N�*���g�B!</ۅ9�/O�^Xd���r)k����6��\x�]Ǫ&�B��w��8�cp��x�R�%$>@��DX�w�y��AH����h������\}�լxB!$
�>}:�re.k����.+]��ʈ�����B���Ȫ��������(� (		���F#	�88Z��"����
eV7�>��Ɗ�O�qete��JIɆ
O�0a�k���#����!bZQ�����>���sNsE���{o����ܦ�����ù�|��+�BW�v�_�G�
��E	�<�Z4�@VH��C;�"-<�䓌�'�\rI��	�I�p��2��c�̶<-m��. ��=�/>��&�L��p!�<�s{XT5:�U��⨎��Y!a�ej4��+
 ����;��&�>L�����E?>5��� 8h]��l{|�1��~	PjU���8�@DŽa�->v*a;أW�m�I��Em�ӂ�l�=ʈ9�߿�X�mO��Z��+x�QUUeS�NM��ˈ��*����Q
��rnY�Z�a$l��k%l�X�9��H��Gs��n۶��Ν�h�C�ڞ��Ջi�8�{�m�����#t	J$��c�>�o�bH�����A���䡪��Ǭ�"��J�$�.��j��t�RF(�R#G�d$8�q��ٴiӴ8�c#����Vs_6z��F� ��[�~n��l���c����7���$l�Ҵ��~-�s�=VWWLjY:y�d��T�J%lG������1�-O;�����2O��z��Ĩ�_�-d–�Z��*[U�f���-P��y,����n�v�bD�,466�-��������t:`��<�MAeD�.#i���lC߿�ΐy�=��
��-�{3>N_�QmY�E&a�6Uٮ߾}{���� C�q����/5$�a��8p��z�Zԝ�3�k�[#���N`�yh��.�*�	[�}�c�v��<z���#a�6���汭���fΜI�����myZ�����Mg4��#m>�}z|9� g�ɩ�@?[�[b��'���c��2l�L�(}=��}�����t@�Ѕ��:����A���Oo��N
��#tq������Ds��@�s g��[��*��F	[�_���~F��T�������cD�ںuk�X�m�ԇ�=t:Hm��M��E%kg0"@�D���{[��U����pF�~���V��1YD�PS߷(a�?~/���$l���zc�d�knnfD�x��W��ZF��3cF[���-P����(��c�Ǘ<��q���w��p=
Ȏ�-�� 7I[d%lu�"	[��Q��W<~�Q5w�\�޽;��GMM��ݫ�kV��F�ғ������SZ�V-�D�W<���<��8��ߗ?�K��~��T�S��*I[r�ǀ82�ǖ�P�T.?��������ٳ�g?��t��+��U��rSd���Q���+�Լ�C� �2�:F(q��ZW{\�q�Lj84g�=����1Z@N��=^���d-׊��`�G���.��fF�O>Ց�� ��uq�ǃ�ɭ�p�
6}�t{�����:�ȑ#�l�2-�]ԊNx�T[�����n]]*O�	mI�e@%�]W�9�ھ
���Vq���g��- /��r~,U�Sa@�vX�u&I�v-��Ң��*��;��S�N�_|15��jI���c�%�5a�w�K6�>440�dhڴi��
�P�� �ɩ���mQW������{�_���Fs�uF;d����-���gQ'��cK�-Pt�3��.X�{���y�Ν;m�ҥ���:�ew��G��
�L}���NI�%,��S�6��Vm�G{\fQwu��) �T�s�����-H���w=�Ƣ)Cz����%��-P\���>����;l�0����ȑ�k�dWt���ԇ�F6�袋lܸq�}���A���vF(-q�VI���?�1��R���(Y{����:�E-����䁺��H��Y]2H�%n��o-je�fͲg�yƆ��9X�n]2w��E=։/�#�a�6Y��꫕���D�@iQ�V��<.�(Q���s�{��"�;^t���^OYᓩ�����>��	[��x�|�@��8��x��)S���~�;�կ~E��ѡC��H�>�Is�&R�U__φ �\sM�8��JJ�Y'��{\��
�ڳ�7��@A��V�뭝�ZT��?�>O-�5mH��g��:���\�g�Nͳ٣GFȃ�s�ڶm۴X뱠�#�q��Ç���l20a„�EF(����u����a�bx��	�@9�W���^R���*߿[���#�nFV�V	���sc�@�����8Y�w�w��K/���d޼y�r�J-j�;�t�Y�o��6��%r�
[�4$�ڋ-j|�E��W��
KI�x<�[gV�*9܋-@�v����֪�}	[�s����#F��/�l>� ����ŋmɒ%ZT�V�ڝEZ�M��6�Q�РA�l�X�l`c��t�H�Y����Dž����p�yk��)Y���/��r{�ȍÏ�Ñ���c+	[���W�qS�N�
6شi� O֮]k���O�*Y������Ծ���l��կ~5Y�hE����"���9����
N�NZtCrg�kl�B� UaK�(:�}�c�M7�dk֬�ѣG3*@������7ߜ<}8�E^�
���k��q��W��dq���i�LU�^nQ�v����2<@aA�$k�;�r��kȟό
[�$�(Y;~ʔ)�b�
�ׯ��n������O���X-�bޱs�N���c#���%rj��:���t1i�E���R�_�{�]P�0t�H-�O)Y+z�f_�"�;%l5�-s�E��&��c�u�]g+W����3*@���[n�%y����>TB��NԪdfܸ��Z*l�Υdmw�#�}p����w0<@�w����٣����D�E�� 7{�cj��=�$l��ӎ�[��&L��J�^|�Ō
�'�>����?L�>�粏��*�2��ׯgc�!*l���!U�
��?�C�����v�(�8Y���RH�J�q��|P¶W�;�@~=�qӘ1clժU6r�HFȓ�������|?�}�WS��ƚ����g���#FXuuuj1��
��t��."]`Q+d%k���o04@�w��K�J��׭�-@����/j��v���$l������Zx���+�`D�<8q��?�e˖��q�����DWW�Fj�2��m��h�d�.
������V14@w� ���ߢ�å����I����ѵb�EV��9s�$l���]����w�mӧOgD�<�>���Nw%�h�)��U�-�LZ��Q�PpI+��U�^��b��
PA�� ����J,Y��-2�qȢn6=��-�i~�q�
7�`/����Ɂ�JՃ�zl*��V�vۆ
l���lD2@�-�i�V�C,�AB	�a~����@����W���T�� {G,*����$S<����O?�hy4h� �5k�զmf����@���><Y�h�9�4�v���=��a
'�TU���j�\�R\U��5�f���$aK�-�I'���q�ܹ6i�$Fȳ8a+�d�[&��Lm��"��ֲ�Q��:!�(���Z�AV���a������]KҍIjI^��g[<Z�� ;,J�V	[��f[�
���g4��/��R��3�`�5��-,Z���@
�VXK�-P8�`�D�E�����N�}=�z����Ѫ�D�� ;�bCKd�hG���̙�h4{�lS�E�~�'���`���mY�j���ձ�!C��-2@A�� �*k�0��t���V�={�(���ͩ�4Js�(G-j�L�-P`wx��:u��}�݌P`�bW�֢��~��K|��X\e�裏�耡C��-2@A(�����*���0l`X����}'�Xt!��VӢ*�~l1��
���q��7@��r�c}��;	��,[��t����b��2��k֬�+V�8���'�T���F�R�}�1���8�0Լv��W���hkd%�Ue[� c���2*l���7����	&$mZt�nݺ����v���8��W�Ѣ�-s���5��h�?����_J���]�(�?���Rm�L�-�;f���m�8O���,}�+�t��#G�O<�<}��g���*�-�֍7��?�����k=zh��T�QOF�+] �mQ�V�o1$@I��Em�U�^��k[<���܋M@Dža�d��OT�t�>̚5���@�FϜ9S�j��\���Nn������ـ�Cuuu�"������1(�-	P|a��O-���UjU��~�Ьu$a@�4���T����o�Q���m�ĉP$�=��
�Nn6�˛J|u7x,mjj�y��٩S�؀�����"	[ �����B��a��!J��A�%�z��m�8���}�Zd��#_D���}�<y2#�汽���O��*��v[mmm�B�dI2H-�?d8���E��=K��6u��)�?�@vTakS�La$�"{�GlҤIZ��'�������������mɒ%l@t%4At����gH����~��kU�ڭׯ�5��s]�B-�2/��8������8_��o}�[P��d��e����v��ϟo۶mcp�cǎ%��
 ot
H	[%�4�_�$}�1���%'Ö��܏M@���I?[�f@fFy3f�
4��J�O�S��T�AL-�U^���n��F{��wو�ٿ���hy�k@jc���D����yȢdm�Rk��F������?e��l�"�Q��F��H%d�Զ<��d�Ue������M�F����ݻM75i1������D>�p%�E��U��ri�نA�aspv~�3�<�%adn\�øq�PB~��<�?-�U���kw��iӧO���{�
	�x���m���W���=U��c8���`��=Ju��	-���]�N��6���-�g��a���PJ;�av뭷jQ�f��j�Ϊ�<jtqzƌ�e�6&���ر�m���J�U���(aaj��f�^%�9I���V�7[�/P���x�|�/$ad�:�����J�̙my��e��J���Q�m�6��klɒ%lL@�z뭷��:F�+%}tH	ۓP�tcEo+��qrY��݂ ��f�s.�8+I�yF�(Qj+�Zf-��{|��Y=�7o��u�]lP@E����,nd4��
�����(a[U�+zFҶ��6X���_Z"y�3��gOF(1�iӦiQ�کe���hv�ǝ:�/[��n��f6*���޽�6nL�izlbD��
����w�0�E]%B���&Iۖ {p�P��"�|�T؆�z�@�Rw"75qC2P�n��dqR��
�=��عv�Z۹s'P1V�X�,��/T�/%Tt������)�e�Ϊ�W��� ��	���%lO�y��/ cGR�a$�4q�Ķ�2�5�z�…^�FT�u��%�+
 ��8���ePT�S�o�ZU
�/�`*���6x�t����\�N��n�J������W�[��x�3g���ۗ�
�����~�z-��u��wa|>��E���wWU�lZG����c]�n
�p��)6!���Q�Eu��,>����{H��;��p� #���#G&����XN���@�ڟ��3�<c/��"P1-Z�,.Ð�G���E"%l�@��peA�u��d�i�ڋ-J�~����l:@���c����f$l�l�2�`$�Խ{w��K���ơe��j��3�j/����w�}lL@�غu��Z�J���x#DRa��--��r�i�E�ڒL�A�vͪ�1�c��r=[P�����/��kl�,�adnw���݌P����,V���jn��?a„���+�����(�=�X��4�=�PI;dU�
a8��Rr	�8Y��Z%kuQ�
?�Ʀ�����>�nJ;�MT��Kej?��cF(Ql[,�U���)S��ڵkI�*Ί+l͚5Z�ܵ�1"@��%��k�r�/����ʶd���U���$kh��V]'�@:���*l�̥�}�#��$����U����N�>=u�:m��G��$O
ð�Q
FI��¶7��վ[2�9k�X4g�����Q6)�,J�6XյB�-�9�hM{�'O2@	jjjj[,�Ukќ��n��V[�z5�Z@E�;w����iq��F(�$a{�R9����������е��d�f���'GZtc�����%��'ad�9����*����P�N�j�4Q�	[��x�cČ3l�ʕ֣G6��,^�8�a��3~�
���
�cz?�peA�̋���]]���c��?va��:N��
�]M�s2��7	[ ;��m\
��46�uS,���C=^6���
�q�F�?~�t~�;�S��U�*�2��ʂ.��s�dm/�!��QG��Ϲ�cO�8�񱛄-��T�����b$���'�$�{Jh��6�c�M���(�ݛ����޳�o�=y���Ȯ`T�N��DV�e(���bW�*Y�;�z\��?v`�(�@��j��;~��U�(�@v��J��Ç�СCZ<�'�Kd��<~�1i�ĉ�|�r�ׯPq���>}��ޭ�X[��0�t��
�APڂ ����b&mu�X'������ٟ�eh;V��覦��=��X��q��-���z�/��/����h%D�c�%�Z?�1bĈT�/��
��c���۷o��?`�Z�ө5���R�v`\J[O˲J'O��=���]l�d���(�,��6�d����B<O�����k�1 @	ٺuk�b���$��k�^�+�����8J��t�M��ڛ�=�qF��Y�&��G=�0$@IS+�SEzm%k�0lQE�����(Y{�LJ�<N䒬�@�j������JȆ
��M%�:j��V�Us��M]���(Y�����S�/��d-P\J�(Y��m�1@Iӵ�b�vS;��B~'׋�tA��(Y��G�E���|�d'��}��W	���%lח��<�1F���������ԩSmǎz�����@�)�s���p�(y�h��k�}=.������lڒ��-J�&������$l��)+�o��o�(E�q�Ƥ��N?Pn/���VTWW�/�K6��,Z��&O�l;w��ӵ���J���/��A?�(=�o�rs*[�
�������5hK֎�PB(��Z!ad{����Q�l���PV�X�,�,�h.0U���O?mc�05���u�]����$y����DJ�t֢yly|�1�!JR�x_�lj����c�ZR� ��E�'��m��k��r��Ԯ_���J@Z;�E\
��j�ځ�f�2�]@�طo��|�Ͷl�2=U��[q�9h��"�hέ+�$����5�(���0����>Aw�k|��E��F���N�
	[ 7����u��1@�]�ֶnݪ�m~��Z�UQ�v�ĉmɒ%l@�����V�d�>ȓ��]/��.0i[]p��@�(�O�%�����Ym����:1ƖT��X'��Ug�]<�
5]	[ 7�X��ŋ3@ŕ<R����	-��?�~��P�q���뭮�NO���Z�-�P�t��E��z|�!J��';y�Z]'Vu�`����J��0��8ԝ���������N�%hT
_��o؄	��m۶;���iQ�/�c۞N����Og̘a�����0�.o�޽���k֬I>��ǣ�Μ{�E=w�§-���r��{��ѓ�P�U��j���E�v��[��i�$���*��;��
>����|в���|��3��T��S�eZxꩧ
�,X�,.�dm;�xܫ�Gy����V�Xa� N����C�N�@�����qC�] .Vu�n�M�DA��hэ�;���1_�Y_�;���v�dq�E�b��z�-���+��lٲŮ�FS	�.���>�R/x�={�l{饗�0�.�ԩS��ڴ����ǣ�|��'P�s�3)I��n>T%�o:�����YU]{4}_�
۞U�*O�[P���K�a�ǧ�-��Sd*l����K��裏2@'Ҝy��Elۤ�6fk��Z@WVSScS�NM��:���q�u Y�$���>�.L1�P\�,����'t5��E7o|�&T� �{�OS_*ϣ��n�j��n$l�<R��Q-��@�-Z�(iè��qU~��s֬Y6n�86�K��{�{��mذAO�<�鱘���)���Rk�˃ �ː�����}�3�uU�{�
{@�{��G-�@70�,���@n;���/'M����գG	(��{�ڄ	lϞԔ�?����"��J-�����[�.��b�ƍz�)��X`Y�U�'P2�g�����G�W_aԀN�OU�y�3هsl���MjY�?��-��c�nVkQ�	U���œ�>�(.�E޲i�&���
��~��'��՝��=�v�>3f� Y�RZ[[SU�����d�VM��M�Х���a�ڡ�
�`8Ct����)�;��
�^�d-�B���IQӀ����j?�膩�I��?��Ǒ�˗ے%K��}�Y[�z��
y^WEwc��7i��w�}��5f�ҥz�Ț�C��:F��x_�k��uu=���*]�=v~+
U׫����]�x��u_e�T �:\����ב�T@N;y{�4��!C���m���
���<yr��v?��*�?���)S��+����t7�x����jq��]���s9�J��LJ�h.��=�����V�هsh��O�/�Qϖt�c���E��阷Ϣ�a�_7��c*l��X�������� �{�=���ۓ����M��3l�ԩl@��m۶$Y�$�d�S�@YPרC]�
� �C��c��8��%i�|�-���ZUԪc�e<�=zy��6(�u%a�*6mٲ%��ݿ?#�@�ЬY���}�ȫ��c�fϞ�t�Ǐ7u�Т��C�b$��u��Ǩ �1,@����sJ%j��ԊQ�J�~��t�7�a��>Z�Ef��nH��c�G�RJڒ�
��=���uΜ9v��!FȂ�%E�b�m�h��b�I�iӦ٘1c�H�.eɒ%�ĭS�u���*�G',J���Z2,��f�I��] >iQ5�9����E�E��b����0��?<m�T߈�oUy;ȣg�$mI���hQ�v��5kl���G2��ZU��]�VOuG�-�Ql3�ᦛnb#��/��VSSc�1ɍ�(i�A���{��-J�V3,@^����E7Fkrw]���q���a~��->�^��u��u��U
I۠87��!�}Xwk���JU*�^�:u���۷/��]�~����-J�Z1�_��W�ç:���6j�(6�KjmmMu�Y�|���m��Y��I2�
�����W-S�z\��gߏi�
���)Q�Ӣ��y���#�ֳ�^Z�����7��t�W!������nPT���|NSp��g��@�P��F��m۶ل	l��Ō
p�F�1cF���sr�/��IC���:���.�[�n��K/�ܹs�T��_x<��C	�c{=vy��`8��+��[|�L�i� �gQ+Ɩ�k��K��3i����T?��z��_��5��,�����\iK��<�C�{ˎ?n��Ϸ���v�>Osժ�ƍ�t�E7<�.�U�|~v�
7���矷�����{�)F�J.%�?���h�$\���U�aU������j�xA�����_��>����k2w-�b�a���?��Z����ul.VҖ�-йt��]?�8�r�J�8q�-Y���b�>���kM����;{Jl5Ss�M�2�
�ӧO�7�xê�tM�Tr��E�t}ɜ�j���G� ��ѓ�AK��վ�䫪hx�(I��#,j?<0�sC����G��
]q�$l��	�,���g���E��e[ �(�}Vo�_�����w�m�g�f`Q���.[�lY�t��C�μ>�:~�����s��Q�۷/PQ�~�m�4i��k�[�q�up>�?��<wm��Wz?��NW~��QFW�Wҏ_�~�$k�[�N���v@�u:N&?D�Mq�`z,-����%z��ϵg1���YsR��ma�8�j��7�z���}�:�6�2�m�sؒ��|�딡�[��z2u�T�3g�[T�@~��G������{,���Ii������Y��7of�*ҟ��g�\���Uu�9�<x��{�zF�J	(%���UI[���?�mt�}%������U�J���~g�Av��q�Vo���ZU��8?�?�o)P�V���v��h;V~�n��������Mڒ���7�7�w[��U孍7.5?���̓�����&Ou �ţ�|�WĄ�Z@>����v��������44hZK[�1�T���M��?3��U�J�[UܪZo��qF]i_9��<��6��VU���iϻ��
��)��U��%h�[T��?�3��yN�jN݁�}������{M�v;��rK6I[�@���AwgΉ�䓪�S�Vշ�(6p�@e�����q[�~}�)em�OL�J���0">�(�G���cYC'��o΋/�����JVWWgW]uU��x��R�s���{�ĭ�UJ�����裋�+�߹����u��&s���k~ھv�M�^�nH~Ϣ��1�/���I�_t�;Ԣ*�=�n[Ҷ	[U�����h���lќ�:~�=�n�#~�l�{p�@���S�ǰ��0a�}�߰�/��ƌc�Ǐ��~��̥���s�N{����U�	�}�ɢ��w��w+=�cڎN��_��I���zj�>*��ի���9*���š���(�s���i�[%���J�*�����-�2�Wғ���V�U�Z%g�Ə�!�߼��3y������åU�~fQ�䓚g6�	� ^��0��LMa�Xtc����<>�覫�|�'a��Ioi�̩S�>�_x�v�e�}�sW_}���K_�\��СCmԨQm�{��iW^y%ys��q{衇l����|wj�������������n��F���{;vl*�֋۷o�U�V�*uu>����f?��x��Im��C����lXܼy�t<��ڙހ�O�|�]3��]j�䭪uw�>��%pfS�a_I�MO�*�y�E7+a;<��Nt���sx}�7_�8f�+r��U�b��J��8�qS����oZTp�E7<�����_���|қ�	q��c|}
�b�\r�M�<�/^l�f�#cj}�Dm}}}��y����{�ԍӧO�{�7�
�#v��m?�p��[�>�k~lk,�>�VUi���������x�����9OH�Ϲk6�o\u�^��3�^�JAI#%oOX�@����N'kuǮ�J�^bэ�z���_��u>nD�u�>�J[U���y*�	[�.�{v��8�����ќ�[-���)?N��=8	[��Nzdh|����Z�<���s%�w�q���׿fãCTE�`�[�n�mݺ5���}(>����������
6,�׻�[l͚T��~l��@�����~��VSS�F���ZA~�|'����5�opzE�ډni��mI[�cS��<?��5/7%/�vx��d�����V�V��:a�¢ygu!W��lk��C�kTm��mS�Z��{���?��uf��E��������5	[��'�eB'"��$e����|Deڸqc�%��S틓O[TQ�d9u�;�'���3�<����Ŏ;R�:[�bm�Nj������%m@�����u�]��������NH�Ϲkg�iU�IH�3>w��1;���c���V'�m`����Tת����M��rvq����S)�~���w¶o|��1[��g�������v�5r�	�n7�Н�����I�L{�챧�zʾ����_o˖-K��k=&[4�]���ʿ��*UsM�ʘ1cR�-jU5�@��.�إ�^�F�,4}�O<�<��c�#�J���lM'=tq츇Z'�8�q8͋{ ����c�E�tr�yǮf�����vP|�9�N�FVǨ_"Y���
���}�i��[iQ�
�7"~?н/D�@G)S{dժU�v�ZF���h�-����6|�p{衇RU��'��<��q�dž3��A�i��]�z��=:o뤪�d�
�k��#F���v̜935ՁE�_���0��&�PE�� z1$���jp��ĩ�vT��d�0�,�:�Z���L����8.�H��w��yϯvg�t��'=~��c�ٍ7�h���cT*̦M����6���ܴiԆxm|��?�׎Xw%?��A9rd��M�u��Vö�
Aj��Q�F���9,^�85���uݬE�E�J� N�b�E�������)���^���I��=���Qs��&��^�dZ���@��On�c�f_���g�x�?��q��2���[�l�2IU���o����
lȐ!v��W۠A�Jj�t�Us�*A�ꫯ�޽{�Y'�JҮ��t�G���[��9�…��U�a�Æ���9���;����l�~��E�ֲ�<>���0?aX��$��UrT7�����w��*�7Ԟ�����
�Y��I�<������G�n�Z��c�
�2��|~��U���s�=��/0*YR{���[CCC���&X��k��&Uũ�_��׭W��v�ھ}��޽;��}뭷��7�L-��K-J��z���%i�ݤj��O��Y�f��
ya�jH�Ð!�p�9K7�-[�LI�q���*[%�T��U�\s�ct*O�[��J^*1{2]�83A�_�����u��|���+�_3�?��KKd2?������-�jR��:���6�c�.P�o�+�W���_=z�򗿴���1dhɒ%6o޼�*N�Tk��g��/��.��Բ���.��s�yǍg��թ妦&����y�#G�w�I%�w��e~���۷�\��5���{r���:b��͛m�ĉyK�i���k��?��ڊ���СCֿ��8��ꪫR]E�d?No`T��<w�
׏�6�z#�Eӵ��E�*?c{�E��#��Yb�9�U)�̩~*�gk�E�3�}��W���fI'�c<V��|T��,�dr��o������w@��+��?覿?z���@{���78�N�-�l�B�]�R��*1��yF����U�6v�dzi�<֢���dPϯܷo_�$��e˖B��*gw[����Ӊ�|;��p�`^~������;�L�.,p�V�A�=z� Y@
:4Ue�`Aj
�_xLfT�.��K��%�&yldXr>WJ��9Ӱx.ؤ�p2�1?_k-�z􎷫֣[�i�f����mɠ
&��G��.���%sZ�v��r��.�0�� '������z�<u�����d�҇`��K:!҅�_|�?��뮻�0�P����~��MJi'��y�Q/���VM�8��0���	�G�9�9�U���C%c)J�>P�]c������X��S�m��*[�L�]���x�R%�x����qS��l�R�J���?]����b��|5��os��8.����ӕ�a��KZ'����e�m��W���q;0>����#�����~��w?vK�_+LϤs��վ��^�"��=����{��,�ή*�z��g�1�
[�iE|��Ҳe�(��t�R����3��ק*kׯWWa;n�\�k2�
v:�����b��}�V���xdZ�������qkE��~p[�	�VXַo_��Ȑ泍��x|�P,�|�J��폮��:�����ʷ��U�:9Rr�9-)�$Kӿ6I�v;�1h�y��R���|��cK�	��U=������_���䩎U��X��3z��vR��VU�����\�d]@n^����"��=��~%�579��0��R��(͡��#���ٳ������v��r�����틕�����ꦛn�;��Tq�̽{&%ikjjl͚5V[[�$je��C~��]����o\���;r�H��vǎz���:~�߹kW�~'�Ӊ�.�
�����G��9��)��P���+U'�e_�'�X�eQ�Z��j�D�[�6��n�F���L�{�zYq<��q$��a6�f�nz��� /���{���t�{��D�Vؒ��|�ۅ�5Я=�ꉒp�=�\j޲J��jۻjժ�S�<~bQ��Jw��� �����_n��cǦ�}����)��I�D���n���:!���+��b����!
>�����v��GiI[%φX�����^�j��~v�mokWk%�N�5I�*��K��P���g���Ja�}�����E7	��'�������9�z�nRmf�o�� ���9�*��=�y|v�<�$l�2;���z<��aÆ٬Y��駟��Ax�R���&�(A;�:>_m��I�3-J�G���K�Ƣ6һ;zR���-9شi�]{�Z�4�����Q��ܵ+_?����QՓ�]��v��m��
i��`LU�v�9��W�[5'팓jY%q���Ҿ>��������.�(Y�7�9=㟛��Ĭ���==>���瓶�$l�{�o|�c������:���-Pb'�]��&�����M�0�n���T�䪪�.���jD�ڍ7&�R�V��sBtn��}��@��%i��u��|TE���-jA����߶`W���'M�d���:[�,|�;߱��u����뵌P>�]��QZ��iJ�)����ޟ���t���+�?$s�&��dN��bGze���������ߕ.�V����ݘ�;�ڪ���Z�B�[%�O���3L�^@9y{�p�E7S�b�{vF[�L��R��M���3[�n���V�\iӦM����ƌӥ~�g�}6�xÆ�.�J���ğC�4�!���J�>'k�s�T�w��R�w(z/'lgy��P2�k�~.�$��8(���J�ݕP���)��
��Иh�j�S��$�~K[�i�[)+�}f���fcѼ���}�.�(y{<~�\�o�� ���?[t3�:o��XK�-�����1�<�|b���6s�L�={v�V�644�SO=e555��tL��K��y�VROxܗ��p�
v��W�׾�5۹s�}���?�1}{���~�;�������H���.�L�J|\t�?J�ܵ���նI���V��
>�U����]r��L���~��ߐ$i����=Fz\�1̢��u���$�;��{.��U�Jچ���k�<Z���"yyߠ�?�.�>�-��2;�0-J�i�R%���/�ɓ'ی3R1p��<��^�f��]���%Uѹ��\:����=�;w�=��6t�г~�+R��8q�ڏu��aם��:����g���������R3\���:F(�s�J�~t�ĭ*���\��v��N����~�Ш�`KXa>�J�����i/��Jv�E	[�ܽ9�������$lÎ��勵�I�����>����g�w�}	[��Nz+���J�ζ��[����[��]{��Q�F}eUI�n�:[�z���꫶o߾�t����S%lQ8��}dĈ����4���ڵ+�u{����܏w;r�����&?��C�Y�?�-^�X���y!#�ǹk%_?��
U�*���rj�{���%ǿ[��w��Dm��$a��U�^�1��5����Hn薶��]�ON�%lQk�d;���_��K��m�E���Xt���l���졎�� a��I/Rw�ΈcZ|b��K.I%n���zS�n�رv�WؠA�
�2'O����~;U��y�f���`[�l9�˔�]�F'�l‚��6^y��2eJ����[o�����m~�[��
0 Ui
��j�*����S�~|����ܕ�Gmc�>G�*���jW���z�_C�*I�uU�c%�[�
��yLت[-��
��xyA<���8��ۨG�\��DJ���^R�������`�TY�ֺ1k�Gc�~*ӄmw�@���qIr]��?�x�?��?�"]�=R���6l�}���\�C�1��=������[ccc���o����ܻw�پE_��c���~��t.�-�������?���<�G�$����-@&L�ж�h(7�8%ɚ� P˻�%Ԓ��✾F��#�-'��޾N:aV%���wP�O	斐l|���e��~�E�p%T��z��|��K���㿥>q�ƴ���cq��ƚ�t�����g�[�������
�=ޒ�Pj6������I\-�U�:uj�*_�R��+���ű%^�-l��p�B۴iSr��y��?�n9r�HUss�u��!�l�=:Y���jc���sI�M�5�0(�{�����J֖��D{	�\�U����OZ��绩v�$i*=Y�c�;B5i{\o;��������⟩v����Z�^�|�5������4>�'7Xu��d���3��I�P<:�Ң$��*O�Olj�;��ﭷӭ�5א�6�jQboC[rtr����s�ε���_��Ғ�oɒ�h;�v�i���c�*w�Ζ Kꎲu��Ԣ��2"@韻r�(�qOoo�TN�/'ծ?�L�v;�d��������lR�ٜ-�&d#v�~���V���s_���Mp����]������C�OU�JfQ�/=�?ߔ�=��Y[T�}�-@������E9���8�ԑ��D�U�?�-F�k%���<^Z�dI��ݻmΜ96s���}�ƍm����b�
۶m��%�W����-J�W��-���,�E��I��#Mk'lG��f�r�+p�?��z�$o���k�o��i�K����;��r��liH檰=oKm������'I�j�Z%V/N%���-�������$m���9ߺ�o��-�s4>�'��B����A:NJx~��֮][���)��Ś����=��~�3�����{|�4៚����i��ŨQ��
�<�a*����/$s�V]��J������J��Ȿ}޷/&V��Ⱥث�Ǫ�Uu�s+=^�Ϸ<V��%�w{�N'��E��`��@|<&a��J�K}q��l��;v�H��;��c��:�Z�Ծ�1i�С���~ת����7��ܶ��}տ�Z�ںV#�2{�:g��A�%�
@W;}����-�Uq������<���M��w%k5w�*m�"y�ES;�Y5p ��X�/'� ��B�0�r�!$l�s���{��8t��)���ן���zL�8q������aÆ���]w�e˖-�]�Oxܒ�*�� tU��h��>�A
����m��U��*a����ǑTY+9��N'yU����i�j�����:��m�/&�/P�69Xg���(W~r���d�LӇ|�s�Zy�駓�)�d*S��'�0��gϞm����������#��V����ܶ�мw���K{��S^�D���f r���
[@�֧O�s�s�wSa�D���^�4������J�r��s���[&�M����B�-��ڠ,�C�}�z�dq}�?s�>��.9hii�^̅cN�6Y����S�Z&�O��{;R=K�-���\+���J���ڸq��c����ֿ��VSSc��c�L%l[�n�Z���lݻs�E�:Y����,J�>��sTs_#զ9p!�[�/�4f9T�r��5��a��Q���������>��5��=�5[3���g���1�v�1c�0�d�
[@<����I�d%^O�#�"yx����}U=��hK��uz���M_s�dA�ЕO��\����N�lj�u�|��Ǫ�v���I���#G��-2D��v�F�$y{�CI�j?�U���N'g�k2�8��!a@����Pa@�g�aX��y�q����,Y:|��H��-i��v����"Y푃�O�-YN>�Q���5y��H���Tak��#@����]aZ$��	�3�6S-i?�N����)
Ί�-�I%l�d��-����+� �Ta�ir�Ƕ�@F��>l��H����ƶEF�N�S�F��,�$l�@�
��s߾}�s�N�,�߿?Y$a��s̼�^ң%���>y��m�EI[*l�D�R6mb$�§�~�,60t:]P��0�J؞2*l�t[R�la$�BCC[���-�O	�*����[[���h	[2���n޼�� C��=uJ7[���61"t:U�	���E�Z�۶��H��9Z"���{�&�{
���! /z����d(Ã�P��!���g@�Ν;�
�sZ�q*�^9�q�N�a�5�dg�>���0d`ǎm��E��=r�$li�@��ӇW_}�� T�PԺ��@Nx�(aK�-E�A^{�5F����;��vF���E�a '��%a@�*h������
:�>Hi�@�(Y�Ao����3���j�aݺu���ܜ��Y*l(.U1�-Y�@9־v:a��d�yl��ロ,nð���4�m�@V�Y��UK�f?��i��dO�ض��?�S�b�۶m��
���#C@�.�8�qҢ��rB���5zl�������<��}gx�O�@�x�<�dn�E	[Uٶ��H������z�jF��ؼys�����$h�=� s��-�Y*S�a�F��شiS�"�@IPE-��� ���Dn���� 7j�M-kkk
ڱs�N۷o_j1�F������A�b(�?n�����G��ㆹ�L��.Ue�r�JF�v�u��-��yl���C%l���I���T�������W_M9`PZt����t����-�>g$lȝ�"׫-2I[���^K9XPZ���=
:d�E	����k��-��Jh��i�Z���=�1"���-r��s���?��8lQ�6���%a@~��v���$���0laD(9�2����&?�%a@	��}�֭�f�F�4�ׯOk
Jm��Q%l5m�nx"a@�,Շ�˗3�I�@����$)a{�h���\hQ��G�:H�� ��mY�j�5440��kצ�u[�0�ɈP�t�9C��!�R��}��'��YH��?{<R���,Y�h`Q�6�����颳.B�e(8���%l��I��_�LmM
S� i��2��S=�j�E	ۣ��v�B���R���������>(��X]]��{�1"��V�SA�d(8͏�ŋ=NXԙ"oH��_��j��-[�h*���˓��eA�Oz�f(���{4x�h��B���[�qDs�mٲ��T��v��
ʆnD� ��1���̢v����t�?��X���2���t�R۱c�7z�`D(I�m?��T;���Aޯ�|W�
	[
C�ڦ+VX}}=��8+W�L�0�U�P`_���GS!^��-�����z�)FPQ4%@MM��ub%#@�i5�l��K}�a��>�#M�w$l(ej[�,Yb�w�f4cѢE��2��e�G7�l�
<N�����p�y���c�=�h*Bcc�-[�L���x#@�J���P*Qʣ^�עv�ͅz-��2�-K�.e.[@EX�`A��փ��K	[U�VQe�P�<�z4zð�P/D�����\�?�8���֭[�,.`4({�\�T�*��=�x�V�
	[
O�ڦ�˗ۆ

@��)��괨�FF�.��l�{�-��G����&��!a@���X��'�|��tIMMM�r���)���E��Ueۏ�T�oz|�q@��~<�b$l����P�ȴ���2}�Q۾]3�8@ס*�� z0��Ώw�[4����	յ��,pB��z���ۦ{�~ԨQ��[o��H@����`W]u��٣�}�zk�2������s��C_~�Qt�c�m����=��~�k����c*l�<k;w�￟�t=�P��]m�]@W���MA�a(]��b�T��=j�P]�z]�p �w��:��O=_y��2e
�	(k6l�ɓ'k���k��}-�������TT�q8��z��*��*k?�8���/��.b?�������'�|2Y\h�H���_�>�я�tA�x4z�8�m�6$l�|��֯_���͛�h�����n�:-��x���Q�Pz�f�З{��o�E>�
����=4_��N}}:W��	k��z��Q���v�u�1����c��ꪫ�ȑ#z�=���}����٨ed_�����	�"/�'���
����\��/-�(
�-ji<��2"��2��$Y��:��]�NbOZ����A0>>���f���^�ϣ[7n�hs��a4e�{�Io��F�.+H]KVem���5�|ﴯ��tA0�F{�������	[����G�/_n�>�,#(y:f-]�49���q�Q��IO�*A�ˢ�lߴ��{u��U�s���8���]�{|���q",R�~� ��y>�L��h��_�I�&1����؄	��T�v�ǒL���O��5I��"v�8z�-'E@�q��_���S�s}>���}���lQ+��q�9_	[�����x>�;��v��ňJ��[W�8Y��2L����T�*1��ZUϪU�{�$-.���g�~��������E1(��!B�`�?Rxɒ)R�bi�%����e�[�f�H�����Jn\YY-��_��n�PaC.?Q�+AE1(
� �fz��yΙy��azf����߯�C?���Ü>�y���um��}kv���/����Y$�Z<sԹt������s}�:���M�2e��^��HG��w�a+V(����������O�z��9ro����_&�X���UI�}���q��*n���Oɱq�����_];��X����V����okh��kUs�̱_���t4�(�y�a�Z�u��}���~P��W�Pa��ZU��,bU��C�A�:�]��[�i���������j�C[�':踨���X\Y�v���:��K`@�xu��,���A�����Zk�*i�k�6T�N����t6���,Ybw�}�6�a�w\[��b�	@Q�_��Y<�S��*�UP���1lO��G�Ƶ,wk�xW��1ߴ�ߏ�C�B[[@!��:�i�Z�\�����12�-�������j��r�Q�v6�I���Ä��BZ�|y���w��k׶�O�n�Z3�XU�*����,�"���Tu��H��ŕ�
e���Cp]�pU��,B[�':�ML��[y[�����
xu�֯,lmƌ��hǍg���v��![�vm�<
V��#~;i�k�3B[@�d�����\{��'E3~ͤ�V!��=�ڳDz9~����Ț]���i��a{���.�>��k�d�i{ޚmy����p�?��ǥ�t>�n���k����ߞx�	[�hQ�?�k�.{��Gmٲe�ͮ���YH"��/~�����˵���_Ɵ�5��WMy�������~�Xw����yM�|��
�O�!����!��}������PS������fs�%� ?��}�Z��~�����%�6m�{�׶l٢/���-�}�4ݵ�h�<w�ܨک[�n<���я~�<�(gamSRP��kS�*l�Z~����њ�O����)�?�c��X����3���ȼO��88�w�潲6��o��91ϵ�9s�d���ɓm���6k�f����[;2�f�\�յ#+W��ٳg��Ç�m@Ν9s�n��֪�E�?,�g(��X�Gm�;�Nk���[��xm[���->ɹ�k�-��M���|Ҵ���VS�w�4��=�����͛ת�ׯ��X��fΌ~|�k���k�F׾�7k֬�n�s�Nz�3:�L�6�tr�����k��3����A:�V5�3O���V����>���ԴQ�\����TJ�+�=��+�֌��\��?��7[���{���:����b�k�����nvm��͛��o�~��z饗�㊦�w����fz�����\.�(�N�g�_
gUU�J�C\mW�����R���������O�V�.�	lh?
4UTT���t��������©�Ϳ��:�˪���?�a�� m�w�^��~`w�y�鸢��3:0��'m��	
l��ֳ�kqP�m}��_G�- �R��hw���j�Y��t:}.]���~Z��αs��~B����;w�65u�c��L��+��K�Zg��oSX��g��	-x��G����^�f=>�-?��P~r�Av:���W\Ӕ�
j���5l��)���i@��R�J�n��s�O]Ӻ���xTW*Dr�P�ϡC����i����M�Zb���n�-��R�T9+��(w|������#:���l�ڵVSSC�x7n�[o��~�ӟڑ#Z��t�ϵW���6����5�
i{��ҵ��y��^���I*���]\o
��s���j�l�
�1��1f��5k��A�n��k]�׵㪒R����������o|�v�e����=;q��H�̼��{6y�d۰a�����,�>��}�;߉�����O?m[�n-��	E����[n�u���*M{|�k�Y<M(o
Ps�*[��Z�V�l����ϥ�;5����J�X�<^��~�i�Z}��۵���*�)�/�{J�@1�!ȼ�g�-���kѶ��WU�:k\�n�?6�5��hN��ӧ�C=M��i�EM�jժ<*�y���+���(�6m��HMM�p퇮M�ˡk�|�7z�h�2e�͘1#z�:th���:�Gǖ�\V��Ϻ��{:|�cƟ��ɛY�����~�$w�c�O�̵�Z����/��BQ0�@���}����U�}����̿n�*�{]8E����WZ�VS�
}�cX1�-3����怫`��	&��o�ݮ���/lȐ!��\��[��
'�wm��P��E��P�3P8��K/�믿n���Wk��)=�Y��ͬ͛7�~��_�d:9U�j�cO�����ʹ^�4�9���)��:ujt�Kg9�E��K�,�իW��VV���k���b�	@�Ǯ��Ԛ	l�s�w������'�YC��r��=��~��KV5���-��I�%��ˏx�e��}��ˤ��]�I-�������)�a��_��Np�-ƊZ[
w�UR;�矏B�4h�=z��#��qM�k�[RDd���7U��Mk��AӜj����.�8�HV��q�e��3gδ�K�ڥ�^ʓ�d<�֪��{ڵ��q�:�%T��8p`T���V���ƍ+�~Y�b�-_�<Z�7A���ڂ�����^p3�@@���Н��?(�Ue�N�ղ
!tFY��J��O�a�?����iw��N����ES����(�>ՙ�vM�&����
$4Z�տ>�A�ʇ��s�u��o4���l}xܿ^�Ƈ��h�P����W���o�ٮ����kmǎhY�kͯ��z��>ע�>����J2���&M*ʾՔ���U��Vk�&�8�}ɿymN�k�um��~�l�…<q�NBU�Z��W�j�#Uծj�]N��
���o��u�B�b�>y͚5QH����][b��mi@

2v���/�XCumh��_Aa:qi�B�{���i��=O������m�g�R�[��:�c��](��ЪS�p���!.
�{v���E_�����㞴DX��τ\T�_�_���Nw�~��6����?n��"j�87y�$� ��w\�`�{���|�W_}��ܹ3���Л���)��T���T���`V�
�x�
;y�d��:��5�V���w���U��(lyꩧJ�Z@�ê�����
i���\�kGoU�;*��o~��z����~ؽ{w4����Ç7zI�x��~�_TPc���~���eWkl�a�9k��v��"����?u�c�O�=�߫�\���m��Vq����}�h��
iU%�
�s��C��Nw])���~}iq(��ţ���Uk��׌T�5=T��{�ԦOv�@�g���ĖsVAm��f����������7��M��l[����N��Ic6��*�\Q��|�景��aÆE��n��M7�d�y��={��{�hmE��������e˖��6��Y%2
c�[�����v�}�E����U�>��s�i~UZ{����6[�>Y��N�����S���.�rm׮]�	<�^���LT�[,>�E!��b~,P�k��
ի=|Ӷ>ZgM��>���Ɋ۬�����K�|��~�C��>[|���$��M����\}����{���/��s���|7����:��N�='���b*��kfx�,�����o�T�_3��̺t	&	l(��מRՕ��n��U��jS�������Ⴢ����T�Z�u�ر6b�9rd����9{��
S�ZMM�m۶-�VH��'�DkN6c��!��F�}U����C�h^dU٪�v����{��HUQ����}Z�u�5^��#M�a�z={������/Ç��5�{uuu�����utϞ=��-���z�g��RyLPбkr�L} �0Q��uM��*�
����K�4>�7�6S!;��ztR�fO���֯�k���*��ְ���BW���Zߧ�����:kCeX"x����l��_���u�߯�����0_��E�O�-�k��~�u��?Ƅ�J6���1���1�-y8�:�y�B�W_}�fϞ��}�q��b�f��']�I�IJ>LH��y�=z��kJ!�$ZG�٧
���M�*�~�(ץ�ё#Glɒ%Q5�N`���笸����_O�$Z�i�nM��ٿ^�ro�>��?(��U���zUu�CrM�;�_��ק������'�����az��m3���+���>�Fk׆�ښ�}��}�E��B����C��{��
���j�0�t�O�
��*�k�&(��c�N��G��Lf�vv��W��yY��Ww���]ǚPA^7K>���1���1�-m�C=`Mx���X�p����-ޯ�g��~`�
۵��\(c\�:c-t��JR���0kg�_�J|��&����)�*8�G���u	��ik�Z�51�^Ҫ��x	�:6��v����v��^C��}kg{���c�M��E�_QE�����蚺W��ZCQ���&
i��&
Z܆��hJߋ���և��}�֮��v�M���)@C���*�����}Ҕ�������v͸�s�M�m�C�Wm>�9�o{����~\��hƂb'�+]3^;�[�	:�,�G�X���K���fv���"�������@��ՠ3\�CuU������+4=�ܹs�PpРA��?n�<�H��Ǯ���;*�V_�5(5]�B��'���XW�Z��o��F�[��w�kk�΅�'>��ߴ��J��W�*@M��):g�6�W�jm��R_g��߭��ۅU�Y�9��C`�V�q���7�a�PM\����2d�n�5r	n��{��������i�OY��>���K8�%�c�|p�n��|���t�=Z5>&� ����0_Y�V��`�L��?�>o�t��ɓ'ׯm{�̙h��]�v�ok}Ɵ��JSҨz��@��
�C��]�&kzk�iӦhm�&BZU�.�{�Ή�'>�
�a
TU�*8��t��q��8`P��AkX�v�5Li�(tM���
36}�h
+j?�����:��[9���d���f/��_'C5mTٟ慮\��Y��	l� ��v�ԩS�矷q����瞳{�7|�hh�˪3�
jަ�?�M�[*�
k���pŐ!C��Vk���Ӈ^�T]]m�ׯ�_�v��F���?�L�ʵ��V�����Q[ssUIiZN�٬}�_,>YU���o�:[Y�#��|�8����
+TIV�[rm�ֿ�}BN�aM��R�%��g���{
i��.�Y����9BZ��َ�	l�����wcǎ�x��}��(�;~<Zf�\{����<�Z������xE�P��\����m=�3f̈�N5j=dP�֤UP�nݺ�o+�Չ-������0� �����<T`�l����ڷ-�:Y��}fq`��N��2V((���څAm��	y}^dN���Y���~�׻!�u5��zM��E��������������~���i-�������Y|62J�����ی�7Tiֽ�6mշ(K:aE��9�I-�i��^����c��'9�6��&.����Cs�BU�/Z<��N��囶ô�
a������h�~'����c�0��f���h۾4��
��q�i��U�!-�?N7y�#� ���b���h*�|��ߵ5k�hS�G-��:UH+���ɪ���淾�-���mҤI�:ǣG���Щ|���[o��͛��7ߌ.>�y��Os���V�shj@
�5Nm�jkP+۪|
�
.Z횰ȵ�-�
Ya�Ǯ�xmۓ�>3�}f���	y���6T�v�����p�>�pv��g����cۚ�k)!-Z{�n��G`@v�/�� ����mW�Xaw�q�6��~������v��g�����
n����_���1�^CI�����/�K����o�m�ر����J�
h5��^z�H@�Ʃ\eq �p6L���ކJ�6Da-�������~�[����5M�~.z��v�f�'t�s'�v�?���8O/����5�Р��e��M@�v�/z�#� ������g���f�Ν;�ꫯ6?����++zS?ٵI�Mp�[=�n��F!��=��5޵k�mٲ��y�(�ݽ{wS7U%�&�6'.у��Or:Nm�5TO*���[k��=����2T�Eb�5:����
lC�m�*3y�P��Qx"��6�{+
�κǦ��B'{��u����z='����:Z��8��q�+]@V40�@���V��P����
�ߒ��!���{���
�����Fcƌ��ۉ'F�cǎ��K:�D���*fu�gϞ�fEA�V߶���$@Q	� +�PX�b�o��g���Ժ�G�m�����9nq���j��9��D���6�JU[�z���.�qge��d*��z[ì)�\�뙞�'��
Z���s����=�.������W^��m�\u�UѦkW�{h�R�F!�k����*p��ص�^�ZC��뮳^�zыh�����O?�*f?����5I_kZ���_�B0���E.1� ���M�CYU�)��:>�,>yT��

_��eR(���ȯ�}�oW�~����8��}BY<ג'�J�
���j*�:z~�*���]�룞�a*�0�1ճ���tV�=[�Z{���"��G�qr����O4 QU�B����Kv�wjs�kߣg��1��j{�oM�ׯ_4��5�\cÇ��ѣGG�UUU�f'v��i���ȑ#Q�w�^��O��o�n����qMվ��Y]*��j��'9ÆMi���� �+a5��[]���`V!����5���\����8����
{�~�������p3Cܴ^�s�Z��8Co!�Ͻ��P-�=��5�P-[��,
{��j|L`@|�Y�p�*�M޷ݱr������}S�L�իW�����o�۶~�zm�ȵe�.�)��r�o=/�C����+��K/�4
qU�=hРh��>}��
7�`ݻw�w��֏�
d5��cǢ �̙3��o�>|S�����n��Qh�?��86��8$�@յG��:qi�6��ug��$>���9��k�]���gj�U��w(Is�G�↖��U]FA���*�����sIU���"��lH�B�l�@�7�4F����8x�RH(���0v��Ŷr�ʨR�Y玕����l�7]��<y�=��S���ϟ�y��ي+���oa����PA�p9�og]b�i����U�j[n��F�����ޑ#GF�]y�6x�`z��?~<���'O����m�f555�u�>�F�m}8�������}���Q��ӱltaq���ju2�M�櫮������Vo>5ˊ�6V`{�"c�G-{�4�ZW�I�ul9Σ��iH,*2ZWk�V9<y�E!\�s��y��z����.�9���Dσ�fvS�fQ"��������<w�+�
���aÆES��5B�&��;^��*���k���ӣ K�z�h�H���{��
���qM��B\���M��>̩�VS��#�mU�k*�@U�C�mt��O…���۞={.��СCQ����ot���{/
`����8q�=��PB�V��N����-<�Q��ӱltaqZ�;Ξh�6
@tF�BW�A���T��\`����)z?z��V�IC���8�v>�C�dX7�.���<S-�2�0PMhW��k���n��
��u�a}U�5L���.��Np��z|L`��J��.ƿ���p���<���
w�ܝ����Z��=_I�-�
y;=�����P�+!�U����N��ٳg�~�֭VWWב�����&>�uf�>����!��<Q�ӱlta���q�����3��Z�j-���hf`���u���?Z��Ykk�C;�y�9��vI�
k�<�j�@P_��s�}�=O�ѳ�zzZ���=�!<��MUI'C�����_S%�r8Ng=>&����S���F�e�}�Y����A�pl#���@\�i�f
��&����U��wt�{ڧ�f�~B3���M���,��'�V�!-���]���µ�M����I�O ��Ƹ�,d��0,�iְ�h�Ԥ�a��<�h_H�]�!�ͼ.y��ẺĶ���a�Ԕ5,=���ԆYي���vob��د�z•���_��;��[�l����w��e.Z��nht�֓�a�̰6Ao��Ѕ(C{}�h�,>Q���Z�L@g��{��+
h5��i����B����W���� ƚj�B�axg%#�5kk��N��&S��J��k�!�g��ݬq�ڨ+2�%.k��몛�}fK,Ёl�.�ҸO��3������"�h0�8p������)�ڞ�xz㰆d6A�
:�Nӆ���R
�v�P�-�;a*�	��ݡ�C����m�����_�E�"�Rhs�k������S#+��k�}h���vhP�4���f
V���?�ٰa�����O~�;~<Z�r�{/��.���)e�Ț
�����
5L�JP@HQ5(��a*���x8��-��⎓��@+1� �c�M�?�=��^��:�+iڞ�M���<��8@��鬎�T�`�S��5�֮p�qwЬ�k%@�cVX�jm̞�
p�s�[�o��:kEXK@�9�Ц�0�@+1� o�Ҕo����o��Y�9~���t��W*l���O}ʪ�6��{ɵnI`(2�P�d(Q��&�$�ׅ.� �JL:����Tǖ�TFk�V=�����g|
h#[�CT+�vߒ�a��p}�U$~6��ϊ�۷Fe��%��_�3n����uɟ�
e����a��ӊ�˰�ٺ�V������$oc���5�����dS�z.�u2��l���\��\3�=���:=[���6�׷�N׎'�>��.�@��f�e4H��P��4���C��Z���kⲲ�ۄ���nf�{6c��Og�8�-�m��a�u���Ym���*Z��!��vM��6s�y]�N��ɀW�K����xЪ�*�-��6�o�s��k�]��U��umT�߷�hb;�\��Z�k�y��0�lS�����ݷn_���{�2�
?����-0������7k^�L�Ӈ��o4�Vp�T�2�`���cv���c�3����f�p]���W�iB\%}\�5�6
>��	a��
[�[\�:&q]�
8Ю��&�=�}�;w�'N�}��۵�]�']�aq��7��`�@@�a�	@�]9~_Ά`��P6��h�J�G]��5���`���'ʨo�'���Z??����S��`7Y�[G��"y��-k8�"����˯���y.w�cps'�-��B(;��
Y�����Jn���>}l�ظ���뮳�={ڈ#l�ȑVYYiUU
�C��Q����v�֭VWW�h[A�c���o�>�����۳�cw���o[�%�OJo�Z��o�$��P�p�g�)��q�Y�4a�����_�q}z�gg֏�%��!��?38�h�antC�U�z��Z�e�vaSM����M~?�|�Z<�D�K�.y���?Si^�`[�lЋ��?R [��X����~ ���_~y�~�k_�A�٘1c��.�䒲�/���>��(�ݻw�}�����[
t�X�w��@^1���Ʈ�p��h���pV��*>��
g��
bU{�_�u�v�g`^�+,>�[�l��\�'|�����.�Vy>o�alE�e�N��T�]3�ץ��J��ɟ	m����^��Z��Zô�u�l���k3��r��y���?�Pd��2�7��2ژ�nBٛn�ɮ���(�>|��p�
ֽ{wz2K
o��}�]۶m���/����olrm�k]�M��5����C ֜����0���Ʈ��h���&+f�XC0����}�>�����<ӊ�q��ߚBK��j�\=y5��1kqޞ��W!V�ۿ�._C�ڭ��5qYi
U����3���v�ƕ��G����K��l/��r�K��k�?�C��S�'�x�I�ڌ�e�G�`�}���٠��Z63�m�_�~Q � ��o�B�q��ES#�l�R�j��?���v���
lܮvm��PȖ�p�>O�ڱ����۷{����!,��-�0�Y���^��b�	@�];��;c
Z-��̆PV'�N%Mg�p�S�;yV���qɕ�]e�t�
�2ܓ~L�o	oKk��h��5s*��ָr��5T�W&�N޶�>������p�{x���������i���B�K��aH��pbBs�>�%��K��<�	l(�Ao'��e�k3\�jq0S����&M�d_�����o��U9��w�ƍ����o�a�w_P`�i�׺��� �K^i�����^��9�׈��/,��I����nNMM��*�/F���+�
��.��a�	@�]K���iCp�P&T���kC@���V��C����ϢN�?\��2�������B\m!�U�E�mq�˒��ͬ��\��M���ӛ�{i������~�w�_�u���K��=̿��>���C�yhM�Ɋ�P�[���8�Pd��N@g�*�U@;���"��M��j(
lW�^m�ׯ�B�Ç'����nWX�V�c��x�_��-|�b%�����5��\v�e���:yc�����^��/��O?�4�޵k�9ؾ��;V]]m���߿��kqL�纂\U���h��OJo�ZJ�6�6!�U(;ЏeÚ�
����s�s�5e�o�y��O8�s�목�Rᭂ�h�d�݇�.��MVƇ06�����[}��`V��zU��g%l	�^GX|��`k8aE}�|>i
k@�@7���j\Nlh�1���"�(U��qm�5Ls5j�M�2ŦM�f3f�`Z�NF��u��+p�~�k+���2~���"���&i*󫯾ڮ��:�ٳ�}�k_�.����ן.e۷o�]]�ݻ7
r�8p 
{/b��a�>����q�b�
L@�]K�X�6Ls�0NUe!��T�!�՘�}��Ox��=}���UUu�pOA��=�)��a������P)�Y%�k�>����Q��}���z�l�U�󯛗�K���5T�7U��q��#?�Pd���g�ks-⨂�[n��S�F�֞EyPp�b�
[�vm�&��v���-�o_�I������oW^ye�jj��u>+a���ӧ�>��~ޱc�}���GE����&߶�����'�7v-��wb��Py�GUb
'��Vؠi�7⠅畂�k]���@PU�
oô�
o`�J�i�
�
^�ogC@��O_�7q��Ú�\ղ����<����MK�]nqE�%�qоp�_� 7T�uqk�}?!��D�EN���ho��T�
eUE;g��>}:OD�+W�l*�մbK]{�o�c��	~_�����W��XUʎ=:j�^%[[�l��r��O�͛7ۉ̲�Ak2��`�Y�e��'�7v-��}�(�Q��0'T�*L�
j������m|��B�k���P��A��7���L��f��&+g�S���d8�g5�Ҿ��}L8[�iW�O(�
ոg�~B�P�*p˲�����!
j���!����Ξ=;��h���e˖E��ƍ��R��RYGO圦�`��>�7Ҿ֕�W��U�ڵ+��G
oܾ���[oE��M�΢5���N��'�7v-��w�2O�OO�~WS�j�c����Va�;�m �E����2Y��
���J���tɄ���8�ɀ6�������_�����WU�~��.ןgx�������
���7�.�qkX��5L-^�B�P"��"2��v�Sm�&M�B�Y�fES��jۗ^z)Z�v߾��4eѳWݞ���LgNhǜlq8;(����馛�pv„	QPK8[xgϞ�?��϶iӦ��G�M�DY��:�a��g:Ɵ��ص���i��(�Q����Ԫ�V��7]�Bh�<?'UM8�5M���Cխ�˗]p��GC@�֝�c
'W�M�}-�Z��A�yN豿ڵ��ku��W4��B\U�*�k�v�i�	l(�Ao�i`�iG�+UE�`��9s&2r���t�R[�f�mذ��j�C[��L��2�O�*��֨zV��*��8qbt������K������G'8(�}�72��ӵ���pm{g�{Pzc�B�!���
y���lh
q5�����amt�sT��x�C)�q�[Ju��6c��l2�Չ���~��ճe���z��Q����m�>9��
v�w�������rm��jZU�Θ1�.\hC��E޼��kQխ�L�4=�rמ�7�FZ̆�vx��g5=�.�<��$:�ܠW��w7*�}���V�Lɞ����v�񻉠Va��#,�jS��p����jZ�>���W]�ƵS�
�B�)ָMLu���
k�f��Z���\{ϵ]���4���[���6��V��ֆ��$�M����h��4u�b��?�̙3'��UXt$�����ʕ+�U!�}��mˍ�B��B�1�o�;�����IT&T��bŊ(�ݾ�Q����W�v���&Ɵ��ص#��A�ֳT�)�u��H��B׺��VY��[͐��IS���Vե%@e�����I}�VSCk:�A~U��N,��[ݟz�gZx~��^�Um�u�5���[M�Uݖ�9��Ƞ��(����ѣGG��C=dÇ�DA�ܹӞ|�ɨ��+��VS��smz�?�K/��n��(��:r�H�,�*o�/_��.����k'ZU
�OJo�������V�Ҫ
Ko�UQ��ָ��vQ��>������Jo�UE�T9X�S�f���~֡U8��v������+h�?ў}f�o��V��M��T�G%w�C����hЛg*�UE�*kmܸqѺ��/�>}����(�}���mٲe�מs�Q?��,����qmR��_�~���֡�SWWU���^�:���~�yɊ���'�7v���;���V
��Y<U��;�8���G%��)�ԲTWZ<M��>]��EU5�iÚ�
i���
hCP+��?�߰�G9~.�ͥ~�~��[}6��K*�%��D�y����Ə�?��Ϭ���E���Vo�qm�ŕ��H��s-i��+G�Ms<o�<�>}:�'����Q���U��i�=��J���׆f�	@�]s}�NL�`H�T
j�j������A�$����;��OU�*�:n^���j
i3�;V�l2�����!�<���N�Q��X���)�5]r���T���Ƞ7�4�}���=�0a�͞=�~�a,��q�裏FS�z�v���v����j�•a���o�=���%U�*�ͨ���
n����'�7v���ۇDa�c�A���iUi�;��6�ȡ�[����x�W�ש�V�tv��Sk��I�p�DzC���S�������#��;U��Z���K�;
n���:��P�Ao��
��Oܳ���`�{�gx�P�V�XaK�,IVj���8׷�Y�Jau�Čp�aâ�v�ܹ6g�T�ݎ;�駟��n���y��w
���OJo욫㷟"��﬙h��M���z��~W
�:�>���׎Z�j}[M�\�ϊA�NhW�&פ�G]�����GE��\cqխ��Pq���;�\�	l(�Aohz�\�/T���ODS���#�<U8����n}[M?~��մ:;ن��
h�*++y����[��ޭ�m�iŗY<��B��Pzc��}�����*�F[<��+�w���B��n�'�q{��9
�|P�͏W5��U8���K|;������&P���
m����ָU�{ֵ����P"��vP��k苩S��<�UtV��|0���Τ�4�+�����Z�VA�p��AMu��'���Ã���un��,]�4\��쓮=k�R��'�7vm��ۇ��j�UU�i��1U����y�P��Nb���'4���^U1خ�)c}�^~���
iG�}Q��G����Oy4Pb��*�'��s8�A�mA׆�L`@�
z�h�k���z表�(M�o���]���^�뚂|���G٤I�lʔ)v�=���ѣy�P�4U���_{�p��lUm�RG�?Pzc׶�}`�J(U���o��U�_�8Dz���.! �_t���TŠ�I��&��2���~ܪ�v��u�i�UM�?�]���Q�N<��?�w�q�fc;��u�z&����m������g����:����s�=M��zUŠ��_����D��\�g��6cƌh]����`���]�֞}�Y[�n]�JkS餇M�Pzc���S k�M��H)���k������~�����8d��
�4U����m��:Ib��.�MU�Z�����ϵr��?:a�şi��I�\;W�j[[Jd��
z����kdڼy�<�u������^�n[�bE�j�kw��n�~���?�=�t���M�0�%MӋk��M���Vgk�d�
��5�Pzc���}h�
�0�*j������-��*a���1��m5ͫ�������>���wZ�V!��Rˠ�g�C�;��a��'+$Oz�)�I
��Ƞ7KZ��׮�:t�=��ST�4��O>i[�lї
��v�qk����\�\��=�M�)�njC��S�뮻��۪�6�v��1���Ʈ��3֫U褠v����~�Y�K�PW��*xR��j�:��iǻ�}.T�^��5�oӣ(��G��>OMN1^��b8�Pd��,�p�_]�9s�L[�d�]~��t>Ќ;�3�>�8��چV�� �sm�k#G��9s�DA�����`tZ6l����'��VٟX��g�	@�]�9~'�ZMŪ��5�]kqu�?�����Z���x}γ�����K�g�Q���5�FA�(�4K��?�S����n~��������wj;2�%��D�-�o�4���}���t 
�}�Q[�~}�J���v�"?����x�c�����O<a�
�SQjkk�罦J��Z<��\�Ɵ��ص��kU�7��HU�
k?ո��h�~�U�׀�gq�t��sa��+-��U5�F4P��h���m���َ
m	l(�A�E<lq�_��/�@����#�D�$������M����j⦚&�W�j��Ǐ=��UUUщ(K�b���]�v��еչ�Ɵ���b�o�pm�kWX�����;���}Y���J�/�~���ت��e������+�-�T�m��g:�d"[Jd��Mg�K��_|�,X@gm�}��(xZ�fM��5��[����Z���Z�6m�=�6c�:e��ѣ�h�"[�re���ׅn7Ɵ��ص��*k5%�W1i*�߻��=��e���]|��%}�j��5����uw����4�x��w�
q&����t��+���������y��g�j�C��KU>��<�U����=��3t��駟�Nz�tƒ�m��s��?(��kS��Ě�
�4�B��]�w���y ���֮���m��hվ3���>u����k�d[JdЛ��ZM�z�СC��ӱ9v����{��^U�j��I�&�A@3֮]k?���	�]���U�m����f�}X���5k�t�׮s���m7���">.j�g��7�C�S��Ж���&<�ڢ�����͛�k����<Q��q�F�2e
U�@�>��c�;w�mٲE_�x
��m�/Ɵ���5y��a�N:�oqX��Z��� J�ب�nrM�-O�-�-%2�~��bml۶��Z@Q:|���~��n�:��[]���a�	@�]3[��}]���F����_�m@	u,�hq`���Xv�#��͍���P0Z�6
k�P̆M)>k�,}9ҵ�]O�P>|um׆Z�n���:@X(5����К��\�4ɽ�IIC`@a�Cn�[k?��ϣ�4(f����U�VE�#;�\Ӵ���:?�VZ�n�(׮�����@)J�������
n�,7%���i��u�����G%�K�.�ꫯڜ9�$"��Qh;����S�Q?�g�б_n�_�t����*w;�.���Ƹ=R9\�U�m:��@=c�{���
@�Y�rerz�?�K�	�j�^�]b�Tȣ][�N��;�R�g'��V�F�6ص�m	l�X\�;h� [�t)�(I��Uh;s�L}�i�ZOz�NGXw������L��o�5��¯i��k��c^eG���tU�\�<�]~����d���Ö/_nS�LїU��j�t���б���SE^���l����b�k���׵����q���v�ܹ��k(u�e˖�ȑьȚ#�)z�NCRWZ<=�(�%�N��k��;��v�"Y'*���QS����h�O�҇ؿ��۶m3M�@g�y�f���×?rmY3�_:���&uum�kc]��Z�;��3�
(���xw�i���V�n�`��cpswE�-��3������>�Z@�3i�${��×�Q��^���Sf�O��Z��J��t�L�珁��-�-��е�ӦM�x��tJ,S����W�%(Mɵkؾ�N��-�r�y���G�
��Ê|�N[�K���X�p!���^~�e�:u�6Ǚ�]�U�pM�C]�/C��I:�>�.�Z�<@�|W���_��6tƌ6w�\z��=���VQ�|�3���#��P];Ե�mI����@�qǿ]k�-�S#��?�
�>m�s�=��,�7�/^��¶}�J�>�����iM������-�2�W�.�8��[�J`@���v����m�̙��l(����(מ�G(
lu�Z��SBP��q�бp�k��UeK`@�De�L�(GO=U��.rm
=@I�j��Z�OS"��.�;?5ro����� � ?ƻ6a���`�zPv���졇
_�2_�Z�3��n�tȚ��T:���n ����z�ʖ������L��P��x�	�<y�6u"g0P��Y��Ch��[�b�t���8�Z?�g��A�*��ic������-Z�(l.N�R}��V�Yk�
p�
��FTe�u�{�ʖ��ܛ��ԩSm„	���͛7�f̘�͑�=D�P�*-l�A�t:}�.��;6�vj����&� �f�iӦ�8��l�K�RC��NX�V@+�}�.�I{��2�k���{3���ٳ�	�:Ꮛ�ڹ���hi�_�Ϸ��%\(�N׺�j��Z����X�F�;֪���
����i�����i�w�t:�>L�Ь����rXeK`@nE� O�2�� A�F�l(Z��mq`��@�U��V��>	lȭ����k�P��vQ*��C�PTT�Z/��w��.�E{-����E�-�-�5I�L�<�� ��lg̘�MU��N�P�qlUe�	]��*��������z|��b�G��7h�����}F����ϧ������c��l���`r�*���������k��K�R��
N2+�U��a������a۳��"��;�ƍ�'�����s�E���Ô����q�hϝ��;QR{����\ĢE�9�T*5���B`���@���xY���	�-�3*�g�(z��:t�͚5K�=]�C�PP��8L�|�� {�t��]�s�G{�E&� wl�Ҝ9�9�|z���g��,�����ՎY<-r��@n�?Æ
�'h��y�l̘1ڜ�J���#�*����Eև���Z'�Nk�
�Tѭ��A`@���ߟ� S�L	�L�@�V�4�@�Ըֽ��"��}\��ӧ�u�ޝ� �i�g�L�Υ��stm�k=->�Mc�~:[�=�	����aS�"�G�p�
H������Ї�mZǖ��܈�^�z�d�k׮6k�,m�d�l(�Z���I;�⼵qZd[@�̜Y��Υ7�p�K�v�Y���P ���������asJ*���G�p�}�b�焵q[��FM�OM
=@+0�&M����M�G�p����|V@{�鴖Pum��,ar�9u�=@+M�2%lN�7�Pa�=[r�k���i�9������cǎ���ԩ�9-�-O��>\�M�R���EK��P@����	Z�[�V�d[:�[M�xֵ~t�rܵ���������w/=@+h�	��k���xz���B`;�������9�ٵ5?G`@���F_��W�&�-K�m�k��
[rA�Wtk���;ۣ�o�'h��'��	�J���k��;h7�\�
۬ױ%� w�����ߧ'h%?%r�IoС���@��v�6*l(�(����	Z�n�U�T���Ä)�O�֗���N�V�Z�c[[rg�kGv��i_|��@+���˪����ӵq�&mq`�j���T�7]@;��N��t���f���[o���u�]6	l�XZkO�@'\�����tB�-�A�lܸ���������I`@�:g���\��� '�֮�ޘ��܊���_����Ǝ[�IoС�D>��%t��+���@6�v�7ްݻw���-�i�X<%rOֱ��t\U�m*���[ZP~�6^{�5z�V���+��hz�����Ł�Q׮�KhW	l(�(�]�v-=@+0����Tj=@�Ҵȧ\;��Utm�N�u\UX�UK`@�)�=�n�:۹s'�@+\v�eas$�@�:��i�+l��R��t	�B`@U��JK�.�7h�K/�4l�б´��];��ut	�F`@EI�ƍ�	Za�������Wk�:��\����]t2�-�ɵ��6m�e˖�d�)�((}��Y��p-�p<���\������s�g����Y����R`[��1��VE��f
lS�ܐ���QR�w����j�*z�,>�~��� ���)�>wm`*��O���c*S"P`:+�Ym<��s�Y:th�&�@A���kG\��������P���V��%K�
Z0hР�Mz��QEЗO�<4�J
�Kh5�L�@P��O�A`@�6	l(Uٞu���v3]@�Qa@Y���w�}���.z���߿~�<����Te{��*��T�
��VKS�E�m*�N�]�����Gƻ��k۶m���*:�fTVVZmm�6��1k
=@��]3U��׵Ѯ)�]����Y�>s�[<{�5��Ra@����Rm<���A�-EC�l�k];�g�z-�AE`@��Z��֮]kw�y'�@3z��6{��ʀ4ۅ�ڿ�62�J
�[hձ�E�t
p����K/�d+W��GE-��xƵC���H�R��N[��-KS#��6�n۳g=@��gφM֯�8hj�S�p�kG��*l(RϹ��ȑ#�`�;s�=@©S���Iz���U��\;aq�m�T*5�����h67"��0�rm�u�l�ܹ�	'O�9m:�&��H��V�`u�S�F�R���?�S"P����w\ۻz�j��;���?�<l�7(.���v�k�T�/=���1��������N�C��+V���n����O?�4l�7(>�tZ<W[���>�&�R����4[J»�}۵#+W�����v��	zP�v��Q�IoP����Wh�ߵ�S�T��FTa{.��Px[,m�Z��fΜ��.��lڴ)ln�7(N~jd��Zo^����	�T�7�@�
�j��!�-�a�k7���ƍmҤI��k��+���㠷���x%B[U��m|*�L�P�|67J��U�n������ˮ������mΜ9t8�,�޽ۮ��
mq��F(��5�Ϗ��QQ/�F�v�k��{�GP���pl�l閎�T�P\t��k?����:=(+V��k	k(
�8V��kw���gzP�t<��DX{1��A����-��Bo��ڵk��
z����Z���-j�k�]�t��z=(c]];��1�)�hӠ4_w����]3n�8۶m�UTT���No�����o[��\A�-�1vm��c�vs���ݮ]�ڵ��_����#(��������J�-�c�ko�6f���n�:�Z@�x�����Z��k+]��(׮w���j��	keN3M��,�C���T�Ц�i��r�k��|��ٶ|�r�ݻ7
([�l��'jSk�_�Ʃ���c��q"��r>��v�ŕ�]{�ݾ����WŲ���6��q5���»ǵW]�9�|���W�Z@Yy��G��K�����Vkժ���v���`���յҕ~��~iq`k.�^x���+V��ի�yĵG��SFX{�k�,���C:�^K8V��v���Y[
�y�i��W_��s��#��r���du�#�t��@�I��-�����v�;~�� ���jwlL�vY[
�����w�y�ƏO��΢E�lǎ�\��Rz�����n��wm��a��	k�?^�p�\�k�ϳ�-������o�MX(K�>���\�R����a:���W(:
kU��׵�\��w���B���k�tm�9� ��}ȵ'��?��&M�Dg�κu���[o
_~ߍKW�+��5Ї�}\�ܵ�]�r�]w�~����x��4򹖎���T��q�Hm����%����>��n����O	k(Z�츧k�\��ŕ��kh�J�tb�Yk�T�Ƀ.�?��/k㗿��͜9����?�8:9�Y�me:�~�^�(�,��k�\�ҵk\;��M�����NlRUmm��S���]��k=�ϟo��s=(;{��9s��Ν;��:�~H�P��vsm�k�,k����t��� 
k{�c��t֟%� ���]��_~�ezPvBe�֭[��&׾���8V�;�pm�kW������5Da�f�P�z&a�t�[�+�Y;���ʖ,YBoʎ֬UX�+k7��]7���g(J�R��P�F�v�kܱ������_*lȟ�=��^x��B��ʚ5klҤI�i�o�:������⩐/s�+�w���k��Y3Q��eX+��G�^���~�3�<y2=(+�?��}��ߵ�ǣ|v�QY@�S!���Vg�?tQX��ⓛ��:��D ?�qm���\�x1�(����`�[�|y��'�=I�P�Bu� �e]�ҵ��t�](��d*��j]��՚���<�/�� }�ok*��WVVڶm�l�رt�,�۷��ϟo��i�c;��\[���g�~C�*�;�?�L&�&1Nt��c�iS����HJ \(�H@h������WY*	�J�`�4�/�.]Z
[���n7�.$Q�o�&���{&Y1�o�������s��:�|�p����Խ�b�'&j�vs������:;GX;���v����7�
["@o�/��".^z�%a-C#B��۷�amZ�;麰����\+sݝ��Tgû8��vK���Ͱ�[���۱c����<�Lz��������c�����������Z�����eY�R[VEQ,N�`�ż&~S�a�(�-�N���Hi��߯��?�8=���СC��J��\_���tml�|W�����rQ�,m���ʲ�ү����@�DX;�{��w�^�`����k��_LgϞ��1Z��\��30��t�\�S�cY���a��9&k/�>l��m[荸���B`�]�p�����Ç��3��u^w`^��x0g׮Mդ�?hC� ����8��j���`Kd����6&k7oެ��G���[��am��o����m����k\��W���(��\q�{l}��y6��zQ�sGjN�>��������jLվ���?�8��j+d`����E�n�ug2]��-�E�LDNS����L�@��εtϞ=i˖-��@9r�Hc��fX{)ן�z4	k`>��±�cl��*�O˲��]s�6�o�/]���7���Н�����O?���8��G��(��t潅��aul���_i	��9Uk`�HiN�5�-tgW�񉉉�k�.�` |����Kǎ��q>틹~�30b�(X�v��~Z��im``����%n�M�yݻ:�F�-t�1V+�`��۷�k�,�����1��)*�C�u{�w��AUE�@)~�t&��\�����s��]0��Լ�=7���y���Ǐ�{q��r���w���Y�w��%��s�v���gsq�z���o����>�u.�i+���7�/��.���\v��-�``�[�.�ܹ�q��'�����xQ�婚�=&�`P�5.�j�9�]���RLێ7JSg��:�d��ݻW'(�j�a�����r=�+0b;䘰������k	��,�/�ۏr�L���}q�\�9Ö���Z��!_�|9���j
ejj*MNN�#G���+��$���Q�X���)��;U�l��ɚ����K�<Ug�^���^[��&l�3�Wdc;da-�h�����7�L���K����2���xr�0�-���a-�"ּ\��/O�'���̕I[�-t�q�_�?Xl��(=���R��"0����rݚ��`ؔe���S�~/͑�V`����-���'�L�^��8Ҷq��ߧ�A/0���F`�<�1-`�e�is��4GB[�-�)/����
Һu�4���~����轢㸻�=�?���7FR�FX{�,��Z�����g��Ru�{l��x6C[�-�/R�m۶�C��{�M��Nںuk|ܔL��|��.i�����,O�NUh�2ע"���E`�k<�~�Gt��s��w���z+mٲ%>nNB[���s�.���@#�=�����Z�kt6B[�-�os�e�f�`(�Y���6��Hn�:U��sS�ޜ�$��i��6�H�+U?H�wh+��v�p�"~�gئ|PCZ1i{��Ѵvm�9������ρGS��Y��D��ey"��˵&ײ\��
l�=�c�޴iS�
�Z��o��v��s����b'�E���lY�W�~U^�<�iW��GN}�Q�Оl�<���#�x��\;t�:����_j���Z��X;�5e+���4�C~衇t��zꩴo߾����[����kt�%�)���Vf��?r��u[���m�ОƄ��u�s��Fp�ݚ�oR��"07D`�0��\'�n�,���\�r-m��3J`�Y�xY�N'�[>�&&&�2&l_��3�6�E>��+��L~;������ڳ��v�N��o0o�)8p���?�.]�Y��-�#�u�-��,�I�����™m���nQ�
��^�j���wظqcz���S�}0����FR5a��g�Z[#ߑ�s�g,W�@�b�v���x�
��^x!�ܹ�^;_��U�����X��U-���u�b��F��t��l�к�t��իu~�W^��ick�M:�&�����S���,�-��Ԍ,�@k⬂�|�r��_#�F~��g�tfMLա�W��E���M�
l�uc���1��8p��f�s����P9��"���h_Y����iL�<_�@����z�N@�&''��?�
�7�k�[��/s�H30e+���5��+V����K۷ǀmژ�gM���C[�-t�,˳�ڹbI�5��Ё={�s�t��H�α�@wN�Z���+zF`�[�xY�@'�
1e�aÆ��R����C�R+�seY��o��z�-�����9L����@�.�j[䞭�ih����ҥ:m����/�*��v�_��e����Nճ�m�,����:�u��411�ks����D�nӲ�	��X{�-����رc:���
�[�s��k�XtE`@_\�-�(Fu�"Bګ�z#�E���'�"l�ug/g��t`||<m۶-.��ڢ#�e��.���Z�WR5]+�`~y��G�K��@����D��:��^|��Zg��411Q_n�
�z���d�z�R��E��	l�u���̙3:z����M�}aml���"������	[�-�����:���;��������CG`�ńm؎h�h�-˯�ۂԃ�U`�;�x9uJ'���}y�n���'l㜽��z*~���/�@뾈�/��R'�k֬�/��̸x�ӵ��z�Κ��>j�_|�N@��ǧ/uf\=a�6�z+�Xg�@���O>�D'�+W��/�t���y�V@O����/�C�O}�����ɓ���
����tm�JQ˴zJ`}��x���t:�t���K����'l�rݦ�3W{�%[hOc[�'N��E<L���r��s���s��r��N0_�["_J&l���^|����x�裏t:t����K�����̈���ŗ�3a]�r���n@��t-�]��S[���>�	�ХK��/u��>�V`s���s"npc��ŋ��@���O�S�F����"���>��el#u,�?��C
��;w��t�-��7�
l��ǫ�z�j�_ ���5�E~���u:p��tN+���� G`{!	l������?ڻغ�;��� ��B2�d
��d&%4mT�\Eb�(���
DEDEEDj4�h*Ѝ��M5�DB�mns�5��a�ns�b�p1��5�8$q��>w��^��9�?��ߏ��>�y�s����Z$l���KC-�0����l��*l�Xr�	[rCS"Sa@ę�7�|��`�=6��L��R���������#=yZ���:,I�N�9ȉ�Qa@z�LF�76>|ؚ��h�����g���p�Yg]�r�E�����#F��ᩏ������c���	-�gm�L�-@Ai�v�]̧9�(��,���0%2ER�/���
-�:t(lR]@��V	�/\̥9�q��鐅�-�'l_}�UZ�!hnn�٤5(�.�-I�΢9���o1�O�����:;u��� 8p�g����4e�Z�`JE�i���-E�)��l��`�<سIkPpJ�jZ�>��I6�aK��"�ٵ��`�>��I���P�VSE3��	[�,���޽��`����?���E��J�wq9���t��N�L&CS0�4�t1���<v�M�>��`���6n�8m�@��n<z�V �c��v��5.����OR���G3}$[�郭��,��ֱ��FMM
��|��Ga��d-E�#�JЪ/��ŵ4	C����29��%a��ę���ZZ�hll�٤5(*�c{Ғul��9�	�?�	��L��ݳg-�444�l�U�%�F)a;��`��Z��ON��`dT!Ԥ����zZ����a��-�w��qUQ͠9-RK���M_�o�NK0���M��@q�ul����.��I2���8S�{�nZ�~|���'�h�%��4�"]X���+i'��q�Ӎm3��O��\��#��m����}P?��;�A��:��(�B�0(-9�)gH�0r��"��ݲe�@R3Q���4��E>��:��A�3�wH��܈3��v�%���$l>a�:�W�Jd9\�VH���Զ(a���@k����b{��զ�w�((ݖL��ul�DQtM@�\_��Z%k3��_��:�m�ؼy3�@Jmmm�f&��E(aZ��.�"p!��w��-	[JT��ݳ��H۹sgج�5(9g-����_����9E��ܩw�X__o۷o�5�R'3�5(9�:eɴ�c�(�C�Я��_+$lȭj}aZdZ߽��I���L���䤧E���Wh�E�D��t�B���R��C���ʹ`�ۺuk��AkP�T)tҒulgGQ4�&�<,�!	[rKk���!?��s�`�KM�����d�R���1m.��I8��C����� ��Lm�5�Rmm�566j�FZ�����0-�izEQ4���|�?	[r��EC]]�UWW��Qk˖-=��%O�O�������\���,O��
	[����y�fZ0j�f� a@���K�Dnqq#M@M�ܕ�;'a@~(Sۢ� w��IkF_G�y��߿_��.��"��>����(�.�I���'ZR]۝�� a@~��x-ۍ7��Q'5��eCU�g\���v	M�M��xo�Dy�j��E�`~m�����W^�e˖�p�Q����n�1�EQS*γ�R�P�c��n�b��.np����iM�(�K���d�k��~m}pwA�-���ԛ����O��Q���E�T��	Z���l�X25�b�0�M�d:伞�L�-��@��,����?��V�XA�*ZKK�͞=[�ZOe����P�c��n�b���\\oI��Z0�����T�PZt6r���
h
@�{ꩧ��vK%k@Y��dM������Z���IS!��b^�� ���=�c�۹s'��Xmmm���{���u�8��SWDQ4�&�2c]��`�(�����}��h
@���~fMMM��J
�eM�O[Re�����I��?Q� յB���P������6n�Hk*N{{{���g�AU�_XRe{YE�i�(1�
T]+$l(���6H�*����ڬqQO�P�U��.n�I�.��I��Ew���-���Ş��F[�f
��Z����:|����t�8��ń(���$�
��ڎBU�
	[
�G�nڴ���)>T��kצ׮��E��`��������MQq\P��Q]+t�V�%���O<Ak�ޞ={Bu��ki*�Z�rqȒ5mo�I�&r�յB���S����_����=��Sas������>�⸋�]̋��bZPa��8��B?pT�1!9�jDns�����[o�e.�QeG'�[�N���zKַ��O�n�zN���o����b����g�N+*��Te��=յ�����5���{����~�����5kS3E��.�����-.:�(��&T��V������;PSSck֬�5eE'���is�%'"�
�bk���̰qeE3h@9s}�d߿u�9���xtV���M�Lk�Pt�ю;��삩"E|���Ö�g��(�8�(K~��_\���y�����syw������۞={�+���%����n��m����v��e�	@��]�꿣䎵��%.�����Y?��l�%��v�f
[J�S.vj-�x����C��~���B�T_�tօ�GP��(�����M�|Ɗ8r@����=5-�}��GkJ���o�����.�hF��z�G\����(�.�e�Y�E�������-�Ag%�E{uuu�6 �D'�ܹS�M.�8W&�с�v������h-(e~��*g2%�v	[JG����ڴi�mٲ��%kuB�%d��������	-.��%�"�;J�_�Vյ���G��J$q@�u��]��6v��m˗/��E�5k_x�m*Y��6�ukP~c����*k5%�.���^��o�P4ŏo5kTN��>����_�ʙN���.�k�������۴�(4E�O�j}:M�\K��l~:ɳ�,�󑮋�h-(!ʠ*Y{��)���u.^���%K������W���\�U@|�V'yu�S�(ZH�J��S]��d*}?6U>t}���>AP�~`>i�t�R����E���O�յ�}.��*�B�����I�P`!�������Nۓ\L�1%��ϴ��x;?���'�B�-�Z�tq�6~���w�ț����y���m|�P���'�7vN��״�`�r�i{���{�#�<W
w:&J�*a;ݒ����!�n��?�S��3u���N���̡�aK����b ϸxD�>��=��ü	����O�﷗_~Yߞ�d��|Ɵ���u��w*i{��+\|���]��o��]����b��B�6�?g�S ��!Y��f����Z��o뺳��2�OҖ�-��P(K��6�^��/�ȉ�����g���ӷ]����\?�O�o�:���'mu�\��{�w蛆���%TȆ$�8�M�*4��E�&�R?�a��t�6T�*Q{��I_XrB��ۭ�ꖄ-�2�&͇�+�V�Ze�6m�+���70l���v�}��ow����#�x,Ɵ���u���?����\\n��
�~;y���i��OV�6;I;�zצ��*�D�;�}�*�p_�e��!+a�m�%k���-I�v����I�P&��X��%�ϟo�<��������֮]k۶mW��ŏ��?���"
~u�u��Y��&ݵ��.Z;0�;v�E������.fY���>w�_�.}�@�O�{�P�N�*A;�/���:��$�M؆�Z%j3~�����ٌ��E��uJ�r��wCҖ�-�0�!�)�k�電�+^���/��0�;v�.��bb�ׯ���~ڎ�i5�T���>~u��kV����5Cx��$���c���Ǯ��wU2��ֵ���cw���N}S_�O���|?���U�Uf���w&[���������~[��\�_]��O')+i�����m�@}&	[�dЛ#Z�I��2k�,{�G�'?�ɨ}_N�:e���6s�L>��(��ۃ>h555��/_n��v��\�Ҵ��Y]]�=��qy[]��s�a������.�o?n�8���mѢEVUUe�g϶�s����V��_�W��ݻ�:n���;]�3���Ʈ���sҁwU:���IӺ�������k�R�ىZ�*f��_βު�05�G.����9��笄핖�g{̒*�΁�L��ɠ7�t��YKַ�?��O�D�h�y�fۺu��ܹ3�^�/��"T`Q�V������6?h�}⭷�NJ+F]�����c�=�}�t�#;�����^�/-X��'�d����j�e�����~͍?��P^c�|?NM���^RUT�{��y� �O���Y�7��jCU��S�7I�
ť�/Q�VU�u.��k��<<o�p��!����$l��Aoh���d�J�����i��N�Z��={�D�.}�F�}�x���XP����?ljXUv:�.�ޒ3l�T��Z*�{饗�7��6JD*)Y�N�8a�?��m߾ݚ�T�Oٴ��~����Ŗ-['i�n[�x��}��ﯝ�n��>����5�Ǐ��o��U�u���Ѽ��k%(ƻ68�'��%'�dI�RIA��*%�{��)=�ƨjM{�$���IZ���j��U��.~�ڨ�	[*eЛ'�'�.�?5JB����n���۽����ZK���=Wm�Ԟ�6�W��׿�u�xP�Ta�v�ڰ�ߵ$��VJ�.M�@��PE�$�I�ʾ]�jZ�/<�V��:�ؒ�ZM��%�-v�wؽ���C.)�>o޼xӍ?����Ʈ�>~����T�:�N╜P�{�W�S"�j
�k��'��m
H�����wMVQ���G�U`ߔN��5�dU���}�,?���ۣ��K�$j�����L�@�z��:ϸX�X�j��s�=q�T9�4�J8h��;v����}���^���?o<�Z�œ<y2^�V	[O'l|��.D�<%oC����D�0}�ҥK˪]��!^v񸋽�}��?��o�7h��뮻./��v��ƛn�y-�^�k�Z���>q�j��~\��U>s��Z���X�z��8�/������|L�	���	���3!����:�
�N��=S�}Sx��5��Z%j/�dI8]����ؽ��E�o+�~ڷ�}&	[�d�[ :��������gGU�Κ5�$���+9[SSc/��r�GJ�(k[m��.�E	��jIR"NFlܸѦL�‡�JJ>���o�>}��c~�b��RS(y�p���̙s���s��-��о2L�=�ٷK��N���|��*j�|�I[�pa^��*��{�9mV���}|�(��k!��!q���C�0��aJM-W�$���2��+Q��'�k�|����W�������M�J��~r����G3%�� a;ֿ����^�|���t���{y��O�~��o�I��2���ѹǒ�m\B�^�q���EMB|����>N:(᠄m����$A�
�#C�k����W���?L�-P�jkkmÆ
���].�<�Ç�@7$n��='��5]u�f-X�bEQ�	��j�3w��m�J����KNlIO�u��_j�d������O}�M�|�7�o�֍?��I��Ʈ�8~����񰆡���9/��A�E	�*%i�|��N������	F��w+e�J��&�}�*6���hM�+���r���>u?:���ۓ%�7���}:a%T��򡄭��V����_?�T�]�G�v$�*	[�4�-"%!��]��R�o��f��׾o�kjLU�*n�޽����o���4ݱJkUM�d�<�K�+�,�>�h��P���l����iѕ�|��sx��֛���{w�n_�ĭ��_���m„	9�g�$����x���k����Ԛ��,I�6�q7�m���ЌZ�v�ĉyo��G�������⇌?(��k���T5��ĭ���s����^�1T�i�L�W��	��kVb@I
��q)�^C�G���q�}.�`����l8�e��NO��Q��~�U~߮�f������}h�ujU��a���y��*	[�4�-a
���GbҤIq�����3f�W��U�>}���T"6PR��>�#G�؇~x�ϲ(A�#���$h���V	�x�J%�f�e�@%j׮]�T�۷oW��
>ڊ�[�F�
�����7���x���2��A����ĉ���b������G}4�>���/w�}f�w�K���g�}6�i���՚�~Z{%�o������J������
4W�XQ��酩IC��9���Ù��'t�3��?8��2%�_�k�0��a�7����w��n��%Gs�,Fߔ>�e�}�d�N����<K�p�����R�Q�
�o���6�
�ATݒ����%h�e/������8���&{S�T�רiUTi��E����}�25(����+@�N�����p�ކ6-z�i�����T���>S'���e�����7��o��R�^�f�54�K�j��o�hh`
Jw�Z��w?I���ž��4�����g����=k����k��S�V�gJ�|T�*9C�[�Z�Ý�\g���þ3�a��;Ǐ���1���^aFU�^eI�V����o��	�1�}�D�\���$m�������_%a@��e@g�)i��UU�$���.]���*��`9���b��Q�ك�$q�)M�����X��TM�q��x�\U�z�l�d���2xȅĭN|�?����zX����6�p����[����V�k׮
�ֹ�ӿ���tǮ��g%!�Z�T�!�/@��n���M�������2��:S��w�ſΐ4�Ȓ�C���Tɝ|ځ��G�JҰ:�)�kjւ��/a
e�'�LUb�B'���2�z��х���ۥ��Ԓ�ڿ�$i�����N�
��R��-BB;�'�|�t��C;�:R���%a@�
zQ��V��SBϙ3'��T�[ֹ򫱱1^�V��uNM��D�6?���=�⁻��^|�ż?Xss��[��6o��Ҵ����?(��k9�ߩ$n8���]ٍ^h� {wVt�6����ĭ*n��U�����Jf?��Ѱvl�+jG���ʐ��k��~�k0�̬�)$l�/��%	۫-I��������+iÉ>a��	>�ٹ���������o��S����ə��$l(Ҡ%E�pi��,Y�2�|�r[�j��^�:^��ȩzV����UU�-�8���d�O]Lz�w�jkk��ܶl��WnI��}�$���3���Ʈ��%�ަ�J��ԛ��L[i!�(��"SɽPmٕaG:P��J����
Kf��ڵ�;���_�����S�>5$pǦ"ܱ���UrVI��>�\|��sOWد���H�^�,M#����ÕJޮ\�2�6y��Ŵ0���VSSc�w�?����@�{;\�LK����7����:�9��c��֭[���gIݭ.�d��>1���Ʈ��%���/U��D�B�^����4��oPI���0��ݙ�u`+�o���KS"ϴ�5l��ޜ�/�/��O��B��N�ׇdn�b���O��V�����-9�qؒĭ��g-k:e��ؠeAն�}�
W~��_��MV�i���v�Νq�PIڣG������JԒ���Ϸ���8Y�K


V]]߯���vZ��m��&:h��G(���_��h�sQ�Ʀ��u��ؕ��e�~��L�`IQ�S&9�[��U�;-n�n)մC�B���Sks��\�����ڐ�Ubv�\���d��\&�}�x��]�l�O���}��?�>�������=mYK=�����(;+-�6�KU�^r�%q�vŊ���L���h߾}���Jξ��v�y���X��������
<��_�=��3�;kmm���޾}{\)���>�.�&�G���.K��P{]�ЍQ�y(��+Ǐ��}Ϯ"S�!$o�<���-0俫�&�����%I�����䀹,U�TI[%Q�#GS"���ax�;�4��t�����h_���Wm�Y����UW���S�sr������zQ֖[��U,K�`�����J��r�…�*ʙ3g�i�����W^�/�*hEg�*���K��{��+8M�6��{衇��`<x0N«BZ�x��)z/��p�%	ִ{|�WL�4�n��&[�d�]���u:�E׫Z���+���*v��Ʃ[y(��+Ǐ�3�W�6���I�����v”�J�iGx�Gg�kd�þ)=;@X?��z{��֬
��_dI5���_�d��z=��.^q������o�s�H�Pڃ^T���,�*��?T�ҥK�[n�e˖��7�lӦM��P���{�7�ڛo�o��ji�-I̪�Rٽ�^Ix�œ�p���K����nJI���x[��n<���'���5��vK�xJS�?�K�����n[�z�����c۰a�6[�8�K�}��ؕ���y�%F����CI)�Ѫ(ks�y;��Q���B�6T�j:�.�y��&�a=nU�jZᏆ�&pV¶�z�w/�1ˇ��J�r�?��7�>4�H�EOY�ș�e���ד��H�^T��$p��=��VU��-��~���x��x{��ٴ�J�:UV*9���۟��66?`
��TЖ.MO��%���y����+���k�)�
�����7N?���J�����q���b7Vm����cW�W��#$2�t�!a�D�qu�����P����ǒ��%A[��)$m���������I(��~��prJX�VU�J���ĭ���q�[3�>4J]�I�W���Sv��+|��q�-E�b�P��Ζ�bj�/�"M�[%q���x��_��M�<�D�455š�n�y�8A���W5+*�Դ�
>��HK�-
L�Xo�VY�P=�K%i����Bt@�.VUUU��?l�<�̈���kUe���Ʃ��vPcW����Kz��q����
S�����s�E��L>�LO�s���֛�e�����R1��B���U��H��!Y������\\�/U]���[���Аh�k�w�$q&��B嶞�a-�.�iЋQMU�����~QS�^}��qU�����:�aJS ��'a���'d?��{���{��u���Y]2�1��A����i��.^�v$�m�fw�yg��;n���f�4Ʈ?՟��
7��	%N���Z
E�̆
��P�����ع�n�~a��V݆�1���tU~.��]}.4���5͎�
��>
#|�a*yub����>�U�w��S�V��k���R�w���H�^ ��!y{�����קn�!��U��믷�/�<���k�ɭ`�~��}��'���W��RIYMa��{��d���c���>���Phz�_�đ���x�3k֬�M�6�o�rc��ibJg���cd}���(�$�.��PA���T�"ǟ���[�X�����,S�q�޺����֞_˺���(��N�^aI�3�k�F�<������g����!a��f)P�VKuq���W���H�^`��O���*W�lkQj=�����W���:u�����͘1#N�*�;w�\Z����ȑ#=I����89��C��$jA��*	��z���m��)������;���x���R��������%r����>G�PZcW�c���c��dn�4�>θ��iZ�|��I��lW?A��(ꛆ@�M���-�m�t���46��sJ�j�3%j5Ų
2.�7%����.>w�C~��X>%-TD���?�J�^�Crw������E]d�^{m��h�"�Z���͋�J���W�O�W�b��	֖��8�*�cǎŗ��Uu�ѣG�r�-.tg�����0���m�>�,>�1C�g�۲eK|�Z;Y��5�L�>k��Tnwq�kp}��u&�vw�v����I��4�H�?�N�f's'�+��wk��RS+�S�[��{���k�Պ��L�?O$e1�]���,��u�d��ό�c�?��x�2K�3���V������}גY��ީ�gY��=�}��K�`�%g���yT"W	%x��V��I��Y��n����i��Ueo�tB��Μ9co���y׷��۾}�ι޲���cqE��Ç��0M�0)��QJ�6[or�%�
�J��j�ʕ�z�j[�jU���v��){��w���믿n�����ן��U�i7&ݜ��*I���w
D�u���[@�Ʈ?F>��֥L_�C	�n���o����e�ܒ{o'�޻1ֻ�hHĚ��Ψ"���Nv;�x�r�pֻ���������\�X:�5LJ�w��U�V'��D㦁�U?ŷ�ё�����IS������ع��Ő�����3g�͞={ط����N���Cl��Z���v�
bz�,�;P�v��6�ѿ>�.�wH�������o�O�Ph�p%}�o���k��?׺�j�- ?cW����tB7$[�dE:���J���?�ȴd
�x:Rfh�{����f�'b��7!�� �b�a�֔�lIe������/F��V	`�����w���������.!a@��@��ץ�_����i*������Ŧ����^��}Y�5Zj�/뭈5띦-�%nU��������͟\�=�qVߪD�����}����;�m�t²����F��3v�1J���MWt��˾?�Nݦ#�;�}z�^}ߙ��?���j����ֻ�g�c����:Öj�L?�$bQN�_���'!L�^S���w��w��	S���+]�䯪u���ʒ���>^���O��ְ�P)	�^�ro�7T����l�1����?�K/�O�|!]]=K�u�V�>�a�����Dnv�I�,��8y���=l�}vg��_��&J����}f��Ϥ�#�3Yߧ��+*nw��~��M��֎�oSI��7�����zOR'����)�O���|��$lP.��5\�J����Z{0��5k���"[2%����JDv�q}�8C~��_I���鵓�;I�R��}RC�/�&$~OYR ��<Os���{(2��|b߾}�n�:kk;����ön�j���mӦM��?p�V��,��v�ut;�]�>H�#�s�s�YV�5T�f�Y��s:i����*k?wq2���ʿqIU�v��-��cd<�������_j���.�y��٢E������x�
����ѣ��[�vm-�
@~Ǯ?���Baɔ�ZWK�L󡥃�L�ꞣn����)�I�P��>�B�O׿.w?qq[?����B��k(�ؕ�����]�!�7i���DJު�V����x;9�?C������8��~�rw1��b?���⠻�Z�Ž]9~@��jz�ې�
�����g�ed�S1��������i�IEND�B`��2// (c) 2010 CodePlex Foundation
(function(g,b){var O="binding",Z="DataContext",Y="Globalization",D="WebServices",N="Network",t="Serialization",w="ComponentModel",M="Core",l="_notify",C="_loadedScripts",B="onreadystatechange",r="_autoQueue",A="_readyQueue",z="_domReadyQueue",i="script",h="string",c=null,v="dependencies",q="executionDependencies",e=false,a=true,n="function",f="undefined";if(!b||!b.loader){var u=function(a){a=a||{};d(arguments,function(b){b&&o(b,function(c,b){a[b]=c})},1);return a},o=function(a,c){for(var b in a)c(a[b],b)},d=function(b,e,h){var d;if(b){b=b!==g&&typeof b.nodeType===f&&(b instanceof Array||typeof b.length==="number"&&(typeof b.callee===n||b.item&&typeof b.nodeType===f&&!b.addEventListener&&!b.attachEvent))?b:[b];for(var c=h||0,i=b.length;c<i;c++)if(e(b[c],c)){d=a;break}}return!d},fb=function(b,e,d){var c=b[e],a=typeof c===n;a&&c.call(b,d);return a};function ib(a){a=a||{};d(arguments,function(b){b&&o(b,function(c,b){if(typeof a[b]===f)a[b]=c})},1);return a}var H=!!document.attachEvent,jb=0,T=1,x=2,U=3,cb={};function p(b,e){var d;if(b)for(var c=0,f=b.length;c<f;c++)if(e(E(b[c]))){d=a;break}return!d}function eb(c){var b={};d(c,function(c){b[c]=a});return b}function hb(c,d){for(var b=0,f=c.length;b<f;b++)if(c[b]===d)return a;return e}function V(b,c){var a=[];p(b.contains,function(e){d(j(e,c?q:v),function(c){!b._contains[c]&&a.push(c)})});return a}function W(b,c){var a;if(b.contains)a=V(b,c);else{var d=Q(b);if(d)a=V(d,c);else a=j(b,c?q:v)}return a}function X(b){o(b._parents,function(b){o(b._composites,function(b){F(b,c,c,a)});F(b,c,c,a)})}function E(a){return y(a)||(b.scripts[a]={name:a})}function F(a,c,e,d){return b.loader._requireScript(a,c,e,d)}function R(b,c,f,e){var a;d(b,function(b){b=y(b);a|=F(b,c,f,e)});return a}function y(a,e){var d=typeof a===h?b.scripts[a]||b.composites[a]||!e&&(j(b.components[a],i)||j(b.plugins[a],i)):a?a.script||a:c;if(d&&!d._isScript)d=c;return d}function k(a,b){var c=(a._state=b||a._state)||0;b&&p(a.contains,function(a){k(a,b)});return c}function Q(a){return a._composite}function S(a){return!a||k(a)>x}function P(b,a){var c=b[a];delete b[a];return c}function I(e,a,b){d(P(e,a),function(a){a.apply(c,b||[])})}function j(a,c,b){return a?(a[c]=a[c]||b):b}function L(c,b,a){j(c,b,[]).push(a)}function db(d,b,c,a){j(d,b,{})[c]=a}function s(b,a){return(a||document).getElementsByTagName(b)}function ab(a){return document.createElement(a)}function J(a,d,g,i,h,f){function b(){if(!H||!h||/loaded|complete/.test(a.readyState)){if(H)a.detachEvent(g||"on"+d,b);else{a.removeEventListener(d,b,e);f&&a.removeEventListener("error",b,e)}i.apply(a);a=c}}if(H)a.attachEvent(g||"on"+d,b);else{a.addEventListener(d,b,e);f&&a.addEventListener("error",b,e)}}function bb(){b._domReady&&b._2Pass(P(b,z))}function G(){var c=b._ready;if(!c&&b._domReady&&!(b.loader&&b.loader._loading))b._ready=c=a;c&&b._2Pass(P(b,A))}g.Sys=b=ib(b,{version:[3,0,31106,0],__namespace:a,debug:e,scripts:{},activateDom:a,composites:{},components:{},plugins:{},create:{},converters:{},_domLoaded:function(){if(b._domChecked)return;b._domChecked=a;function d(){if(!b._domReady){b._domReady=a;var d=b._autoRequire;d&&b.require(d,function(){b._autoRequire=c;I(b,r)},cb);bb();G()}}J(g,"load",c,d);var e;if(H)if(g==g.top&&document.documentElement.doScroll){var h,i,f=ab("div");e=function(){try{f.doScroll("left")}catch(a){h=g.setTimeout(e,0);return}f=c;d()};e()}else J(document,c,B,d,a);else document.addEventListener&&J(document,"DOMContentLoaded",c,d)},_getById:function(c,e,i,g,b,h){if(b)if(g&&b.id===e)c.push(b);else!h&&d(s("*",b),function(b){if(b.id===e){c.push(b);return a}});else{var f=document.getElementById(e);f&&c.push(f)}return c.length},_getByClass:function(j,d,g,k,b,l){function h(c){var e,b=c.className;if(b&&(b===d||b.indexOf(" "+d)>=0||b.indexOf(d+" ")>=0)){j.push(c);e=a}return e}var c,f,e;if(k&&h(b)&&g)return a;if(!l){b=b||document;var i=b.querySelectorAll||b.getElementsByClassName;if(i){if(b.querySelectorAll)d="."+d;e=i.call(b,d);for(c=0,f=e.length;c<f;c++){j.push(e[c]);if(g)return a}}else{e=s("*",b);for(c=0,f=e.length;c<f;c++)if(h(e[c])&&g)return a}}},query:function(a,c){return new b.ElementSet(a,c)},"get":function(c,b){return b&&typeof b.get===n?b.get(c):this._find(c,b,a)},_find:function(m,e,i,j){var f=[],l;if(typeof m===h)l=[m];else l=m;var k=e instanceof Array,n=/^([\$#\.])((\w|[$:\.\-])+)$/,o=/^((\w+)|\*)$/;if(typeof e===h||e instanceof Array)e=b._find(e);if(e instanceof b.ElementSet)e=e.get();d(l,function(c){if(typeof c!==h)if(j)hb(e,c)&&f.push(c);else f.push(c);else{var l=n.exec(c);if(l&&l.length===4){c=l[2];var q=l[1];if(q==="$")b._getComponent(f,c,e);else{var p=q==="#"?b._getById:b._getByClass;if(e)d(e,function(a){if(a.nodeType===1)return p(f,c,i,k,a,j)});else p(f,c,i)}}else if(o.test(c))if(e instanceof Array)d(e,function(b){if(b.nodeType===1){if(k&&(c==="*"||b.tagName.toLowerCase()===c)){f.push(b);if(i)return a}if(!j)if(!d(s(c,b),function(b){f.push(b);if(i)return a}))return a}});else{var m=s(c,e);if(i){m[0]&&f.push(m[0]);return a}d(m,function(a){f.push(a)})}else if(g.jQuery){!j&&f.push.apply(f,jQuery(c,e).get());k&&f.push.apply(f,jQuery(e).filter(c).get())}}});return f.length?i?f[0]||c:f:c},onDomReady:function(a){L(this,z,a);bb()},onReady:function(a){L(this,A,a);G()},_set:function(a,b){o(b,function(c,b){fb(a,"add_"+b,c)||fb(a,"set_"+b,c)||(a[b]=c)})},"require":function(j,f,h){var m=b.loader._session++,c,k;function g(){if(f)if(b._autoRequire&&h!==cb)L(b,r,g);else b.onDomReady(function(){f(j,h)})}function i(){if(!k&&!c&&!l()){k=a;g()}G()}function l(){c=a;var f=[];d(j,function(a){a=y(a);if(a){var b=a.contains;if(b)p(b,function(a){f.push(a)});else f.push(a)}});b.loader.combine&&b.loader._findComposites(f);var g=R(f,i,m);c=e;return g}i()},loadScripts:function(c,a,b){this.loader._loadScripts(c,a,b)},loader:{__class:a,combine:a,basePath:"",_loading:0,_session:0,_init:function(){var e=s(i),a=e.length?e[e.length-1].src:c;if(a){this.basePath=a.slice(0,a.lastIndexOf("/"));var g=a.lastIndexOf("#"),f;if(g!==-1){var h=a.substr(g+1).split("&");d(h,function(d){var a=d.split("="),c=a[0],b=a[1];if(c==="require")f=b.split(",")})}b._autoRequire=f}},_loadSrc:function(f,e){var h=u(ab(i),{type:"text/javascript",src:f}),b=j(this,C,{});d(s(i),function(c){var a=c.src;if(a&&!b[a])b[a]=[]});var g=b[f];if(g)e&&g.push(e);else{J(h,"load",B,function(){d(g,function(a){a()});b[f]=c},a,a);this._loading++;b[f]=g=e?[e]:[];s("head")[0].appendChild(h)}},_load:function(b,d,g){var e;if(S(b))d();else{e=a;var c=j(b,l,[]),f="session"+g;if(!c[f]){c[f]=a;c.push(d)}if(k(b)<T){k(b,T);this._loadSrc(this._getUrl(b),this._getHandler(b))}}return e},_getUrl:function(a){var f=b.debug,g=a.name,c=(f?a.debugUrl||a.releaseUrl:a.releaseUrl).replace(/\{0\}/g,g)||"";if(c.substr(0,2)==="%/"){var d=this.basePath,e=d.charAt(d.length-1)==="/";c=d+(e?"":"/")+c.substr(2)}return c},_getHandler:function(a){return function(){b.loader._loading--;k(a)<x&&k(a,x);I(a,l);p(a.contains,function(a){I(a,l)})}},_findComposites:function(h){var f={},c={},g;function e(b){b=y(b);var c=k(b);if(c<T&&!Q(b)){f[b.name]=b;g=a;d(b.dependencies,e)}c<U&&d(b.executionDependencies,e)}d(h,e);if(g){o(b.composites,function(b){if(p(b.contains,function(b){if(!f[b.name])return a})){var e={},g=0;d(b.contains,function(b){var a=c[b];if(a&&!e[a.name]){e[a.name]=a;g+=a.contains.length-1}});if(b.contains.length-1>g){o(e,function(a){d(a.contains,function(a){delete c[a]})});d(b.contains,function(a){c[a]=b})}}});o(c,function(a,c){b.scripts[c]._composite=a})}},_loadScripts:function(d,e,h){var g=-1,i=j(this,C,{});d=d instanceof Array?Array.apply(c,d):[d];function f(a){if(!a)b.loader._loading--;if(++g<d.length)b.loader._loadSrc(d[g],f);else{e&&e(d,h);G()}}f(a)},_requireScript:function(b,e,f,c){var i;if(!S(b)){var d=R(W(b),e,f,c),g=R(W(b,a),e,f,c);if(!d&&!g&&k(b)===x){k(b,U);I(b,"_callback");if(c){var h=b.contains;if(h)p(h,function(a){X(a)});else X(E(b))}}else!c&&!d&&this._load(Q(b)||b,e,f);i|=d||g}return i||!S(b)},_registerParents:function(a){function b(b){var c=E(b);db(c,"_parents",a.name,a)}d(a.dependencies,b);d(a.executionDependencies,b)},defineScript:function(e){var l=b.scripts,f=e.name,i=e.contains,m=this;if(i){var k=b.composites;k[f]=e=u(k[f],e);e._contains=eb(i);p(i,function(a){db(a,"_composites",f,e)})}else{e=l[f]=u(l[f],e);this._registerParents(e);var g;function j(c){var a;if(typeof c===h)c={typeName:c};else a=c.name;if(!a){a=c.typeName;var i=a.lastIndexOf(".");if(i>=0)a=a.substr(i+1);a=a.substr(0,1).toLowerCase()+a.substr(1);c.name=a}c._isBehavior=g;c.script=e;var d=b.components,k=d[a]=u(d[a],c),j=b._getCreate(c),f=g?b.ElementSet.prototype:b.create;f[a]=f[a]||j}d(e.components,j);g=a;d(e.behaviors,j);d(e.plugins,function(d){var g=d.name,i=d.functionName||g,h=b.plugins;d.script=e;h[g]=u(h[g],d);var f=d.global?b:d.dom?b.ElementSet.prototype:d.components?b.ComponentSet.prototype:c;if(f)f[i]=f[i]||b._getCreate(d,a)})}if(e.isLoaded)e._state=U;e._isScript=a},defineScripts:function(a,e){d(e,function(d){b.loader.defineScript(u(c,a,d))})},registerScript:function(i,f,g){var b=E(i);b._callback=g;var e=j(b,q,[]),h=eb(e);d(f,function(a){!h[a]&&e.push(a)});this._registerParents(b);k(b,x);F(b,c,c,a)}}});b._getComponent=b._getComponent||function(){};b._2Pass=b._2Pass||function(a){d(a,function(a){a()})};var m;if(!b.ElementSet){m=b.ElementSet=function(c,a){this._elements=typeof a==="object"&&typeof a.query===n?a.query(c).get():b._find(c,a)||[]};m.prototype={__class:a,components:function(d,c){var a=new b.ElementSet(this.get());return new b.ComponentSet(a,d,c)},component:function(b,a){return this.components(b,a).get(0)},each:function(c){for(var b=this._elements,a=0,d=b.length;a<d;a++)if(c.call(b[a],a)===e)break;return this},"get":function(b){var a=this._elements;return typeof b===f?Array.apply(c,a):a[b]||c},find:function(a){return new b.ElementSet(a,this)},filter:function(c){return new b.ElementSet(b._find(c,this._elements,e,a))}}}if(!b.ComponentSet){m=b.ComponentSet=function(a,d,c){this._elementSet=a||(a=new b.ElementSet);this._components=this._execute(a,d,c)};m.prototype={__class:a,setProperties:function(a){return this.each(function(){b._set(this,a)})},"get":function(b){var a=this._components;return typeof b===f?Array.apply(c,a):a[b||0]||c},each:function(b){d(this._components,function(c,d){if(b.call(c,d)===e)return a});return this},elements:function(){return this._elementSet},_execute:function(g,b,c){var a=[];function e(c){var a;return c instanceof b||(a=c.constructor)&&(a===b||a.inheritsFrom&&a.inheritsFrom(b)||a.implementsInterface&&a.implementsInterface(b))}if(b instanceof Array)a.push.apply(a,b);else g.each(function(){var c=this.control;c&&(!b||e(c))&&a.push(c);d(this._behaviors,function(c){(!b||e(c))&&a.push(c)})});if(typeof c!==f)if(a[c])a=[a[c]];else a=[];return a}}}m=c;var gb=function(){var b=function(){};b._slmock=a;return b};b._getCreate=b._getCreate||gb;m=b.loader;m.defineScripts({releaseUrl:"%/MicrosoftAjax{0}.js",debugUrl:"%/MicrosoftAjax{0}.debug.js",executionDependencies:[M]},[{name:M,executionDependencies:c,isLoaded:!!g.Type},{name:w,plugins:[{name:"setCommand",dom:a},{name:"addHandler",dom:a},{name:"addHandlers",dom:a},{name:"removeHandler",dom:a},{name:"clearHandlers",dom:a}],isLoaded:!!b.Component},{name:"History",executionDependencies:[w,t],isLoaded:!!(b.Application&&b.Application.get_stateString)},{name:t,isLoaded:!!b.Serialization},{name:N,executionDependencies:[t],isLoaded:!!(b.Net&&b.Net.WebRequest)},{name:D,executionDependencies:[N],isLoaded:!!(b.Net&&b.Net.WebServiceProxy)},{name:"ApplicationServices",executionDependencies:[D],isLoaded:!!(b.Services&&b.Services.RoleService&&b.Services.RoleService.get_path)},{name:Y,isLoaded:!!Number._parse},{name:"OpenData",executionDependencies:[Z],components:["Sys.Data.OpenDataContext",{typeName:"Sys.Data.OpenDataServiceProxy",parameters:["serviceUri"]}],isLoaded:!!(b.Data&&b.Data.OpenDataServiceProxy)},{name:Z,executionDependencies:[w,t,D],components:["Sys.Data.DataContext"],isLoaded:!!(b.Data&&b.Data.DataContext)},{name:"Templates",executionDependencies:[w,t],behaviors:["Sys.UI.DataView"],plugins:[{name:O,global:a},{name:O,dom:a},{name:O,components:a},{name:"activateElements",dom:a}],isLoaded:!!(b.UI&&b.UI.Template)},{name:"MicrosoftAjax",releaseUrl:"%/MicrosoftAjax.js",debugUrl:"%/MicrosoftAjax.debug.js",executionDependencies:c,contains:[M,w,"History",t,N,D,Y]}]);var K=(g.location.protocol==="https:"?"https":"http")+"://ajax.microsoft.com/ajax/";m.defineScripts(c,[{name:"jQuery",releaseUrl:K+"jquery/jquery-1.4.1.min.js",debugUrl:K+"jquery/jquery-1.4.1.js",isLoaded:!!g.jQuery},{name:"jQueryValidate",releaseUrl:K+"jquery.validate/1.6/jquery.validate.min.js",debugUrl:K+"jquery.validate/1.6/jquery.validate.js",dependencies:["jQuery"],isLoaded:!!(g.jQuery&&jQuery.fn.validate)}]);m._init();if(!g.Type){g.Type=Function;Type.registerNamespace=Type.registerNamespace||function(e){L(b,"_ns",e);var a=g;d(e.split("."),function(b){a=a[b]=a[b]||{}});a=c}}b._domLoaded()}})(window,window.Sys);�.// (c) 2010 CodePlex Foundation
Type.registerNamespace("Sys.Extended.UI.Seadragon");Type.registerNamespace("Seadragon");var QUOTA=100,MIN_PIXEL_RATIO=.5,browser=Seadragon.Utils.getBrowser(),browserVer=Seadragon.Utils.getBrowserVersion(),subpixelRenders=browser==Seadragon.Browser.FIREFOX||browser==Seadragon.Browser.OPERA||browser==Seadragon.Browser.SAFARI&&browserVer>=4||browser==Seadragon.Browser.CHROME&&browserVer>=2,useCanvas=typeof document.createElement("canvas").getContext=="function"&&subpixelRenders;Sys.Extended.UI.Seadragon.Tile=function(e,g,h,c,d,f){var b=null,a=this;a.level=e;a.x=g;a.y=h;a.bounds=c;a.exists=d;a.loaded=false;a.loading=false;a.elmt=b;a.image=b;a.url=f;a.style=b;a.position=b;a.size=b;a.blendStart=b;a.opacity=b;a.distance=b;a.visibility=b;a.beingDrawn=false;a.lastTouchTime=0};Sys.Extended.UI.Seadragon.Tile.prototype={dispose:function(){},toString:function(){return this.level+"/"+this.x+"_"+this.y},drawHTML:function(e){var b="px",a=this;if(!a.loaded){Seadragon.Debug.error("Attempting to draw tile "+a.toString()+" when it's not yet loaded.");return}if(!a.elmt){a.elmt=Seadragon.Utils.makeNeutralElement("img");a.elmt.src=a.url;a.style=a.elmt.style;a.style.position="absolute";a.style.msInterpolationMode="nearest-neighbor"}var d=a.elmt,c=a.style,f=a.position.apply(Math.floor),g=a.size.apply(Math.ceil);d.parentNode!=e&&e.appendChild(d);c.left=f.x+b;c.top=f.y+b;c.width=g.x+b;c.height=g.y+b;Seadragon.Utils.setElementOpacity(d,a.opacity)},drawCanvas:function(c){var a=this;if(!a.loaded){Seadragon.Debug.error("Attempting to draw tile "+a.toString()+" when it's not yet loaded.");return}var b=a.position,d=a.size;c.globalAlpha=a.opacity;c.drawImage(a.image,b.x,b.y,d.x,d.y)},unload:function(){var a=this;a.elmt&&a.elmt.parentNode&&a.elmt.parentNode.removeChild(a.elmt);a.elmt=null;a.image=null;a.loaded=false;a.loading=false}};Sys.Extended.UI.Seadragon.Tile.registerClass("Sys.Extended.UI.Seadragon.Tile",null,Sys.IDisposable);Sys.Extended.UI.Seadragon.Overlay=function(c,a,d){var b=this;b.elmt=c;b.scales=a instanceof Sys.Extended.UI.Seadragon.Rect;b.bounds=new Sys.Extended.UI.Seadragon.Rect(a.x,a.y,a.width,a.height);b.placement=a instanceof Sys.Extended.UI.Seadragon.Point?d:Sys.Extended.UI.Seadragon.OverlayPlacement.TOP_LEFT;b.position=new Sys.Extended.UI.Seadragon.Point(a.x,a.y);b.size=new Sys.Extended.UI.Seadragon.Point(a.width,a.height);b.style=c.style};Sys.Extended.UI.Seadragon.Overlay.prototype={adjust:function(a,b){switch(this.placement){case Sys.Extended.UI.Seadragon.OverlayPlacement.TOP_LEFT:break;case Sys.Extended.UI.Seadragon.OverlayPlacement.TOP:a.x-=b.x/2;break;case Sys.Extended.UI.Seadragon.OverlayPlacement.TOP_RIGHT:a.x-=b.x;break;case Sys.Extended.UI.Seadragon.OverlayPlacement.RIGHT:a.x-=b.x;a.y-=b.y/2;break;case Sys.Extended.UI.Seadragon.OverlayPlacement.BOTTOM_RIGHT:a.x-=b.x;a.y-=b.y;break;case Sys.Extended.UI.Seadragon.OverlayPlacement.BOTTOM:a.x-=b.x/2;a.y-=b.y;break;case Sys.Extended.UI.Seadragon.OverlayPlacement.BOTTOM_LEFT:a.y-=b.y;break;case Sys.Extended.UI.Seadragon.OverlayPlacement.LEFT:a.y-=b.y/2;break;case Sys.Extended.UI.Seadragon.OverlayPlacement.CENTER:default:a.x-=b.x/2;a.y-=b.y/2}},destroy:function(){var b=this.elmt,a=this.style;b.parentNode&&b.parentNode.removeChild(b);a.top="";a.left="";a.position="";if(this.scales){a.width="";a.height=""}},drawHTML:function(g){var e="px",a=this,f=a.elmt,c=a.style,h=a.scales;f.parentNode!=g&&g.appendChild(f);if(!h)a.size=Seadragon.Utils.getElementSize(f);var b=a.position,d=a.size;a.adjust(b,d);b=b.apply(Math.floor);d=d.apply(Math.ceil);c.left=b.x+e;c.top=b.y+e;c.position="absolute";if(h){c.width=d.x+e;c.height=d.y+e}},update:function(a,b){this.scales=a instanceof Sys.Extended.UI.Seadragon.Rect;this.bounds=new Sys.Extended.UI.Seadragon.Rect(a.x,a.y,a.width,a.height);this.placement=a instanceof Sys.Extended.UI.Seadragon.Point?b:Sys.Extended.UI.Seadragon.OverlayPlacement.TOP_LEFT}};Sys.Extended.UI.Seadragon.Overlay.registerClass("Sys.Extended.UI.Seadragon.Overlay",null,Sys.IDisposable);Sys.Extended.UI.Seadragon.Drawer=function(b,c,d){var a=this;a._container=Seadragon.Utils.getElement(d);a._canvas=Seadragon.Utils.makeNeutralElement(useCanvas?"canvas":"div");a._context=useCanvas?a._canvas.getContext("2d"):null;a._viewport=c;a._source=b;a.config=a._viewport.config;a._imageLoader=new Sys.Extended.UI.Seadragon.ImageLoader(a.config.imageLoaderLimit);a._profiler=new Sys.Extended.UI.Seadragon.Profiler;a._minLevel=b.minLevel;a._maxLevel=b.maxLevel;a._tileSize=b.tileSize;a._tileOverlap=b.tileOverlap;a._normHeight=b.dimensions.y/b.dimensions.x;a._cacheNumTiles={};a._cachePixelRatios={};a._tilesMatrix={};a._tilesLoaded=[];a._coverage={};a._overlays=[];a._lastDrawn=[];a._lastResetTime=0;a._midUpdate=false;a._updateAgain=true;a.elmt=a._container;a._init()};Sys.Extended.UI.Seadragon.Drawer.prototype={dispose:function(){},_init:function(){var a=this;a._canvas.style.width="100%";a._canvas.style.height="100%";a._canvas.style.position="absolute";a._container.style.textAlign="left";a._container.appendChild(a._canvas)},_compareTiles:function(b,a){if(!b)return a;if(a.visibility>b.visibility)return a;else if(a.visibility==b.visibility)if(a.distance<b.distance)return a;return b},_getNumTiles:function(b){var a=this;if(!a._cacheNumTiles[b])a._cacheNumTiles[b]=a._source.getNumTiles(b);return a._cacheNumTiles[b]},_getPixelRatio:function(b){var a=this;if(!a._cachePixelRatios[b])a._cachePixelRatios[b]=a._source.getPixelRatio(b);return a._cachePixelRatios[b]},_getTile:function(b,c,d,l,e,f){var a=this;if(!a._tilesMatrix[b])a._tilesMatrix[b]={};if(!a._tilesMatrix[b][c])a._tilesMatrix[b][c]={};if(!a._tilesMatrix[b][c][d]){var g=(e+c%e)%e,h=(f+d%f)%f,i=a._source.getTileBounds(b,g,h),k=a._source.tileExists(b,g,h),m=a._source.getTileUrl(b,g,h);i.x+=1*(c-g)/e;i.y+=a._normHeight*(d-h)/f;a._tilesMatrix[b][c][d]=new Sys.Extended.UI.Seadragon.Tile(b,c,d,i,k,m)}var j=a._tilesMatrix[b][c][d];j.lastTouchTime=l;return j},_loadTile:function(a,b){a.loading=this._imageLoader.loadImage(a.url,Seadragon.Utils.createCallback(null,Function.createDelegate(this,this._onTileLoad),a,b))},_onTileLoad:function(b,m,j){var a=this;b.loading=false;if(a._midUpdate){Seadragon.Debug.error("Tile load callback in middle of drawing routine.");return}else if(!j){Seadragon.Debug.log("Tile "+b+" failed to load: "+b.url);b.exists=false;return}else if(m<a._lastResetTime){Seadragon.Debug.log("Ignoring tile "+b+" loaded before reset: "+b.url);return}b.loaded=true;b.image=j;var g=a._tilesLoaded.length;if(a._tilesLoaded.length>=QUOTA){for(var n=Math.ceil(Math.log(a._tileSize)/Math.log(2)),c=null,f=-1,e=a._tilesLoaded.length-1;e>=0;e--){var d=a._tilesLoaded[e];if(d.level<=a._cutoff||d.beingDrawn)continue;else if(!c){c=d;f=e;continue}var i=d.lastTouchTime,h=c.lastTouchTime,l=d.level,k=c.level;if(i<h||i==h&&l>k){c=d;f=e}}if(c&&f>=0){c.unload();g=f}}a._tilesLoaded[g]=b;a._updateAgain=true},_clearTiles:function(){this._tilesMatrix={};this._tilesLoaded=[]},_providesCoverage:function(b,c,f){var a=this;if(!a._coverage[b])return false;if(c===undefined||f===undefined){var e=a._coverage[b];for(var g in e)if(e.hasOwnProperty(g)){var d=e[g];for(var h in d)if(d.hasOwnProperty(h)&&!d[h])return false}return true}return a._coverage[b][c]===undefined||a._coverage[b][c][f]===undefined||a._coverage[b][c][f]===true},_isCovered:function(b,c,d){var a=this;return c===undefined||d===undefined?a._providesCoverage(b+1):a._providesCoverage(b+1,2*c,2*d)&&a._providesCoverage(b+1,2*c,2*d+1)&&a._providesCoverage(b+1,2*c+1,2*d)&&a._providesCoverage(b+1,2*c+1,2*d+1)},_setCoverage:function(a,c,e,d){var b=this;if(!b._coverage[a]){Seadragon.Debug.error("Setting coverage for a tile before its level's coverage has been reset: "+a);return}if(!b._coverage[a][c])b._coverage[a][c]={};b._coverage[a][c][e]=d},_resetCoverage:function(a){this._coverage[a]={}},_compareTiles:function(b,a){if(!b)return a;if(a.visibility>b.visibility)return a;else if(a.visibility==b.visibility)if(a.distance<b.distance)return a;return b},_getOverlayIndex:function(b){for(var a=this._overlays.length-1;a>=0;a--)if(this._overlays[a].elmt==b)return a;return-1},_updateActual:function(){var c=true,e=false,a=this;a._updateAgain=e;var r=a._canvas,R=a._context,gb=a._container,K=useCanvas,m=a._lastDrawn;while(m.length>0){var b=m.pop();b.beingDrawn=e}var H=a._viewport.getContainerSize(),F=H.x,D=H.y;r.innerHTML="";if(K){r.width=F;r.height=D;R.clearRect(0,0,F,D)}var C=a._viewport.getBounds(c),h=C.getTopLeft(),g=C.getBottomRight();if(!a.config.wrapHorizontal&&(g.x<0||h.x>1))return;else if(!a.config.wrapVertical&&(g.y<0||h.y>a._normHeight))return;var kb=Math.abs,mb=Math.ceil,U=Math.floor,t=Math.log,y=Math.max,f=Math.min,bb=a.config.alwaysBlend,B=1e3*a.config.blendTime,W=a.config.immediateRender,u=a.config.minZoomDimension,lb=a.config.minImageRatio,E=a.config.wrapHorizontal,I=a.config.wrapVertical;if(!E){h.x=y(h.x,0);g.x=f(g.x,1)}if(!I){h.y=y(h.y,0);g.y=f(g.y,a._normHeight)}var s=null,p=e,n=(new Date).getTime(),Y=a._viewport.pixelFromPoint(a._viewport.getCenter()),fb=a._viewport.deltaPixelsFromPoints(a._source.getPixelRatio(0),e).x,z=W?1:fb;u=u||64;var o=y(a._minLevel,U(t(u)/t(2))),eb=a._viewport.deltaPixelsFromPoints(a._source.getPixelRatio(0),c).x,G=f(a._maxLevel,U(t(eb/MIN_PIXEL_RATIO)/t(2)));o=f(o,G);for(var d=G;d>=o;d--){var M=e,A=a._viewport.deltaPixelsFromPoints(a._source.getPixelRatio(d),c).x;if(!p&&A>=MIN_PIXEL_RATIO||d==o){M=c;p=c}else if(!p)continue;a._resetCoverage(d);var Z=f(1,(A-.5)/.5),V=a._viewport.deltaPixelsFromPoints(a._source.getPixelRatio(d),e).x,X=z/kb(z-V),T=a._source.getTileAtPoint(d,h),k=a._source.getTileAtPoint(d,g),Q=a._getNumTiles(d),N=Q.x,O=Q.y;if(!E)k.x=f(k.x,N-1);if(!I)k.y=f(k.y,O-1);for(var i=T.x;i<=k.x;i++)for(var j=T.y;j<=k.y;j++){var b=a._getTile(d,i,j,n,N,O),v=M;a._setCoverage(d,i,j,e);if(!b.exists)continue;if(p&&!v)if(a._isCovered(d,i,j))a._setCoverage(d,i,j,c);else v=c;if(!v)continue;var P=b.bounds.getTopLeft(),J=b.bounds.getSize(),hb=a._viewport.pixelFromPoint(P,c),x=a._viewport.deltaPixelsFromPoints(J,c);if(!a._tileOverlap)x=x.plus(new Sys.Extended.UI.Seadragon.Point(1,1));var ib=a._viewport.pixelFromPoint(P,e),jb=a._viewport.deltaPixelsFromPoints(J,e),db=ib.plus(jb.divide(2)),ab=Y.distanceTo(db);b.position=hb;b.size=x;b.distance=ab;b.visibility=X;if(b.loaded){if(!b.blendStart)b.blendStart=n;var L=n-b.blendStart,w=f(1,L/B);if(bb)w*=Z;b.opacity=w;m.push(b);if(w==1)a._setCoverage(d,i,j,c);else if(L<B)updateAgain=c}else if(!b.Loading)s=a._compareTiles(s,b)}if(a._providesCoverage(d))break}for(var l=m.length-1;l>=0;l--){var b=m[l];if(K)b.drawCanvas(R);else b.drawHTML(r);b.beingDrawn=c}for(var cb=a._overlays.length,l=0;l<cb;l++){var q=a._overlays[l],S=q.bounds;q.position=a._viewport.pixelFromPoint(S.getTopLeft(),c);q.size=a._viewport.deltaPixelsFromPoints(S.getSize(),c);q.drawHTML(gb)}if(s){a._loadTile(s,n);a._updateAgain=c}},addOverlay:function(a,c,b){var a=Seadragon.Utils.getElement(a);if(this._getOverlayIndex(a)>=0)return;this._overlays.push(new Sys.Extended.UI.Seadragon.Overlay(a,c,b));this._updateAgain=true},updateOverlay:function(a,d,c){var a=Seadragon.Utils.getElement(a),b=this._getOverlayIndex(a);if(b>=0){this._overlays[b].update(d,c);this._updateAgain=true}},removeOverlay:function(c){var a=this,c=Seadragon.Utils.getElement(c),b=a._getOverlayIndex(c);if(b>=0){a._overlays[b].destroy();a._overlays.splice(b,1);a._updateAgain=true}},clearOverlays:function(){while(this._overlays.length>0){this._overlays.pop().destroy();this._updateAgain=true}},needsUpdate:function(){return this._updateAgain},numTilesLoaded:function(){return this._tilesLoaded.length},reset:function(){this._clearTiles();this._lastResetTime=(new Date).getTime();this._updateAgain=true},update:function(){var a=this;a._profiler.beginUpdate();a._midUpdate=true;a._updateActual();a._midUpdate=false;a._profiler.endUpdate()},idle:function(){}};Sys.Extended.UI.Seadragon.Drawer.registerClass("Sys.Extended.UI.Seadragon.Drawer",null,Sys.IDisposable);�O// (c) 2010 CodePlex Foundation


/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />

(function () {
    var scriptName = "ExtendedRoundedCorners";

    function execute() {

        Type.registerNamespace('Sys.Extended.UI');

        Sys.Extended.UI.BoxCorners = function () {
            /// <summary>
            /// Corners of an element
            /// </summary>
            /// <field name="None" type="Number" integer="true" />
            /// <field name="TopLeft" type="Number" integer="true" />
            /// <field name="TopRight" type="Number" integer="true" />
            /// <field name="BottomRight" type="Number" integer="true" />
            /// <field name="BottomLeft" type="Number" integer="true" />
            /// <field name="Top" type="Number" integer="true" />
            /// <field name="Right" type="Number" integer="true" />
            /// <field name="Bottom" type="Number" integer="true" />
            /// <field name="Left" type="Number" integer="true" />
            /// <field name="All" type="Number" integer="true" />
            throw Error.invalidOperation();
        }
        Sys.Extended.UI.BoxCorners.prototype = {
            None: 0x00,

            TopLeft: 0x01,
            TopRight: 0x02,
            BottomRight: 0x04,
            BottomLeft: 0x08,

            Top: 0x01 | 0x02,
            Right: 0x02 | 0x04,
            Bottom: 0x04 | 0x08,
            Left: 0x08 | 0x01,
            All: 0x01 | 0x02 | 0x04 | 0x08
        }
        Sys.Extended.UI.BoxCorners.registerEnum("Sys.Extended.UI.BoxCorners", true);


        Sys.Extended.UI.RoundedCornersBehavior = function (element) {
            /// <summary>
            /// The RoundedCornersBehavior rounds the corners of its target element
            /// </summary>
            /// <param name="element" type="Sys.UI.DomElement" domElement="true">
            /// DOM element associated with the behavior
            /// </param>
            Sys.Extended.UI.RoundedCornersBehavior.initializeBase(this, [element]);

            this._corners = Sys.Extended.UI.BoxCorners.All;
            this._radius = 5;
            this._color = null;
            this._parentDiv = null;
            this._originalStyle = null;
            this._borderColor = null;
            this._isDirty = true;
        }
        Sys.Extended.UI.RoundedCornersBehavior.prototype = {
            initialize: function () {
                /// <summary>
                /// Initialize the behavior
                /// </summary>
                Sys.Extended.UI.RoundedCornersBehavior.callBaseMethod(this, 'initialize');
                this.update();
            },

            dispose: function () {
                /// <summary>
                /// Dispose the behavior
                /// </summary>

                this.disposeParentDiv();
                Sys.Extended.UI.RoundedCornersBehavior.callBaseMethod(this, 'dispose');
            },

            update: function () {
                /// <summary>
                /// Create the surrounding div that will have rounded corners
                /// </summary>
                var e = this.get_element();

                if (!e || !this._isDirty || this.get_isUpdating()) return;

                this.disposeParentDiv();


                if (e.style.borderRadius != undefined) {
                    e.style.borderRadius = this._radius + "px";

                    if (this._borderColor) {
                        e.style.border = "solid";
                        e.style.borderWidth = "1px";
                        e.style.borderColor = this._borderColor;
                    }
                    else {
                        e.style.border = "none";
                        e.style.borderWidth = "0px";
                    }

                    if (!this.isCornerSet(Sys.Extended.UI.BoxCorners.TopLeft)) {
                        e.style.borderTopLeftRadius = "0px";
                    }

                    if (!this.isCornerSet(Sys.Extended.UI.BoxCorners.BottomLeft)) {
                        e.style.borderBottomLeftRadius = "0px";
                    }

                    if (!this.isCornerSet(Sys.Extended.UI.BoxCorners.TopRight)) {
                        e.style.borderTopRightRadius = "0px";
                    }

                    if (!this.isCornerSet(Sys.Extended.UI.BoxCorners.BottomRight)) {
                        e.style.borderBottomRightRadius = "0px";
                    }

                }
                else if (e.style.MozBorderRadius != undefined) {
                    e.style.MozBorderRadius = this._radius + "px";

                    if (this._borderColor) {
                        e.style.border = "solid";
                        e.style.borderWidth = "1px";
                        e.style.borderColor = this._borderColor;
                    }
                    else {
                        e.style.border = "none";
                        e.style.borderWidth = "0px";
                    }

                    if (!this.isCornerSet(Sys.Extended.UI.BoxCorners.TopLeft)) {
                        e.style.MozBorderRadiusTopleft = "0px";
                    }

                    if (!this.isCornerSet(Sys.Extended.UI.BoxCorners.BottomLeft)) {
                        e.style.MozBorderRadiusBottomleft = "0px";
                    }

                    if (!this.isCornerSet(Sys.Extended.UI.BoxCorners.TopRight)) {
                        e.style.MozBorderRadiusTopright = "0px";
                    }

                    if (!this.isCornerSet(Sys.Extended.UI.BoxCorners.BottomRight)) {
                        e.style.MozBorderRadiusBottomright = "0px";
                    }

                }
                else if (e.style.WebkitBorderRadius != undefined) {
                    e.style.WebkitBorderRadius = this._radius + "px";

                    if (this._borderColor) {
                        e.style.border = "solid";
                        e.style.borderWidth = "1px";
                        e.style.borderColor = this._borderColor;
                    }
                    else {
                        e.style.border = "none";
                        e.style.borderWidth = "0px";
                    }

                    if (!this.isCornerSet(Sys.Extended.UI.BoxCorners.TopLeft)) {
                        e.style.WebkitBorderRadiusTopLeft = "0px";
                    }

                    if (!this.isCornerSet(Sys.Extended.UI.BoxCorners.BottomLeft)) {
                        e.style.WebkitBorderRadiusBottomLeft = "0px";
                    }

                    if (!this.isCornerSet(Sys.Extended.UI.BoxCorners.TopRight)) {
                        e.style.WebkitBorderRadiusTopRight = "0px";
                    }

                    if (!this.isCornerSet(Sys.Extended.UI.BoxCorners.BottomRight)) {
                        e.style.WebkitBorderRadiusBottomRight = "0px";
                    }
                }
                else {

                    var color = this.getBackgroundColor();
                    var originalWidth = e.offsetWidth;
                    var newParent = e.cloneNode(false);

                    this.moveChildren(e, newParent);

                    this._originalStyle = e.style.cssText;
                    e.style.backgroundColor = "transparent";
                    e.style.verticalAlign = "top";
                    e.style.padding = "0";
                    e.style.overflow = "";
                    e.style.className = "";
                    if (e.style.height && e.style.height != "auto") {
                        e.style.height = parseInt($common.getCurrentStyle(e, 'height')) + (this._radius * 2) + "px";
                    } else {
                        if (!e.style.width && (0 < originalWidth)) {
                            e.style.width = originalWidth + "px";
                        }
                    }

                    newParent.style.position = "";
                    newParent.style.border = "";
                    newParent.style.margin = "";
                    newParent.style.width = "100%";
                    if ((newParent.style.overflow == "") && ($common.getCurrentStyle(e, "overflow") == "visible")) {
                        newParent.style.overflow = "auto";
                    }
                    newParent.id = "";
                    newParent.removeAttribute("control");

                    if (this._borderColor) {
                        newParent.style.borderTopStyle = "none";
                        newParent.style.borderBottomStyle = "none";
                        newParent.style.borderLeftStyle = "solid";
                        newParent.style.borderRightStyle = "solid";
                        newParent.style.borderLeftColor = this._borderColor;
                        newParent.style.borderRightColor = this._borderColor;
                        newParent.style.borderLeftWidth = "1px";
                        newParent.style.borderRightWidth = "1px";
                        if (this._radius == 0) {
                            newParent.style.borderTopStyle = "solid";
                            newParent.style.borderBottomStyle = "solid";
                            newParent.style.borderTopColor = this._borderColor;
                            newParent.style.borderBottomColor = this._borderColor;
                            newParent.style.borderTopWidth = "1px";
                            newParent.style.borderBottomWidth = "1px";
                        }
                    } else {
                        newParent.style.borderTopStyle = "none";
                        newParent.style.borderBottomStyle = "none";
                        newParent.style.borderLeftStyle = "none";
                        newParent.style.borderRightStyle = "none";
                    }


                    var lastDiv = null;
                    var radius = this._radius;
                    var lines = this._radius;
                    var lastDelta = 0;

                    for (var i = lines; i > 0; i--) {

                        var angle = Math.acos(i / radius);
                        var delta = radius - Math.round(Math.sin(angle) * radius);


                        var newDiv = document.createElement("DIV");
                        newDiv.__roundedDiv = true;
                        newDiv.style.backgroundColor = color;
                        newDiv.style.marginLeft = delta + "px";
                        newDiv.style.marginRight = (delta - (this._borderColor ? 2 : 0)) + "px";
                        newDiv.style.height = "1px";
                        newDiv.style.fontSize = "1px"; // workaround for IE wierdness with 1px divs.
                        newDiv.style.overflow = "hidden";

                        if (this._borderColor) {
                            newDiv.style.borderLeftStyle = "solid";
                            newDiv.style.borderRightStyle = "solid";
                            newDiv.style.borderLeftColor = this._borderColor;
                            newDiv.style.borderRightColor = this._borderColor;

                            var offset = Math.max(0, lastDelta - delta - 1);
                            newDiv.style.borderLeftWidth = (offset + 1) + "px";
                            newDiv.style.borderRightWidth = (offset + 1) + "px";

                            if (i == lines) {
                                newDiv.__roundedDivNoBorder = true;
                                newDiv.style.backgroundColor = this._borderColor;
                            }
                        }

                        e.insertBefore(newDiv, lastDiv);

                        var topDiv = newDiv;

                        newDiv = newDiv.cloneNode(true);
                        newDiv.__roundedDiv = true;

                        e.insertBefore(newDiv, lastDiv);

                        var bottomDiv = newDiv;

                        lastDiv = newDiv;
                        lastDelta = delta;

                        if (!this.isCornerSet(Sys.Extended.UI.BoxCorners.TopLeft)) {
                            topDiv.style.marginLeft = "0";
                            if (this._borderColor) {
                                topDiv.style.borderLeftWidth = "1px";
                            }
                        }
                        if (!this.isCornerSet(Sys.Extended.UI.BoxCorners.TopRight)) {
                            topDiv.style.marginRight = "0";
                            if (this._borderColor) {
                                topDiv.style.borderRightWidth = "1px";
                                topDiv.style.marginRight = "-2px";
                            }
                        }
                        if (!this.isCornerSet(Sys.Extended.UI.BoxCorners.BottomLeft)) {
                            bottomDiv.style.marginLeft = "0";
                            if (this._borderColor) {
                                bottomDiv.style.borderLeftWidth = "1px";
                            }
                        }
                        if (!this.isCornerSet(Sys.Extended.UI.BoxCorners.BottomRight)) {
                            bottomDiv.style.marginRight = "0";
                            if (this._borderColor) {
                                bottomDiv.style.borderRightWidth = "1px";
                                bottomDiv.style.marginRight = "-2px";
                            }
                        }
                    }

                    e.insertBefore(newParent, lastDiv);
                    this._parentDiv = newParent;
                    this._isDirty = false;
                }
            },

            disposeParentDiv: function () {
                /// <summary>
                /// Dispose the surrounding div with rounded corners
                /// </summary>

                if (this._parentDiv) {
                    var e = this.get_element();
                    var children = e.childNodes;
                    for (var i = children.length - 1; i >= 0; i--) {
                        var child = children[i];
                        if (child) {
                            if (child == this._parentDiv) {
                                this.moveChildren(child, e);
                            }
                            try {
                                e.removeChild(child);
                            } catch (e) {
                            }
                        }
                    }

                    if (this._originalStyle) {
                        e.style.cssText = this._originalStyle;
                        this._originalStyle = null;
                    }
                    this._parentDiv = null;
                }
            },

            getBackgroundColor: function () {
                /// <summary>
                /// Get the background color of the target element
                /// </summary>
                if (this._color) {
                    return this._color;
                }
                return $common.getCurrentStyle(this.get_element(), 'backgroundColor');
            },

            moveChildren: function (src, dest) {
                /// <summary>
                /// Move the child nodes from one element to another
                /// </summary>
                /// <param name="src" type="Sys.UI.DomElement" domElement="true">
                /// DOM Element
                /// </param>
                /// <param name="dest" type="Sys.UI.DomElement" domElement="true">
                /// DOM Element
                /// </param>

                var moveCount = 0;
                while (src.hasChildNodes()) {
                    var child = src.childNodes[0];
                    child = src.removeChild(child);
                    dest.appendChild(child);
                    moveCount++;
                }
                return moveCount;
            },

            isCornerSet: function (corner) {
                /// <summary>
                /// Check whether the a flag for this corner has been set
                /// </summary>
                /// <param name="corner" type="AjaxControlTooolkit.BoxCorners">
                /// Corner to check
                /// </param>
                /// <returns type="Boolean">
                /// True if it is included in the flags, false otherwise
                /// </returns>
                return (this._corners & corner) != Sys.Extended.UI.BoxCorners.None;
            },

            setCorner: function (corner, value) {
                /// <summary>
                /// Set a corner as one that should be rounded
                /// </summary>
                /// <param name="corner" type="Sys.Extended.UI.BoxCorners">
                /// Corner to set
                /// </param>
                /// <param name="value" type="Boolean">
                /// True to set the value, False to clear it
                /// </param>
                if (value) {
                    this.set_Corners(this._corners | corner);
                } else {
                    this.set_Corners(this._corners & ~corner);
                }
            },

            get_Color: function () {
                /// <value type="String">
                /// The background color of the rounded area an corners.  By default this picks up the background color of the panel that it is attached to.
                /// </value>
                return this._color;
            },
            set_Color: function (value) {
                if (value != this._color) {
                    this._color = value;
                    this._isDirty = true;
                    this.update();
                    this.raisePropertyChanged('Color');
                }
            },

            get_Radius: function () {
                /// <value type="Number" integer="true">
                /// The radius of the corners (and height of the added area).  Default is 5.
                /// </value>
                return this._radius;
            },
            set_Radius: function (value) {
                if (value != this._radius) {
                    this._radius = value;
                    this._isDirty = true;
                    this.update();
                    this.raisePropertyChanged('Radius');
                }
            },

            get_Corners: function () {
                /// <value type="Sys.Extended.UI.BoxCorners">
                /// Corners that should be rounded
                /// </value>
                return this._corners;
            },
            set_Corners: function (value) {
                if (value != this._corners) {
                    this._corners = value;
                    this._isDirty = true;
                    this.update();
                    this.raisePropertyChanged("Corners");
                }
            },

            get_BorderColor: function () {
                /// <value type="String">
                /// Color of the border (and hence the rounded corners)
                /// </value>
                return this._borderColor;
            },
            set_BorderColor: function (value) {
                if (value != this._borderColor) {
                    this._borderColor = value;
                    this._isDirty = true;
                    this.update();
                    this.raisePropertyChanged("BorderColor");
                }
            }
        }
        Sys.Extended.UI.RoundedCornersBehavior.registerClass('Sys.Extended.UI.RoundedCornersBehavior', Sys.Extended.UI.BehaviorBase);
        Sys.registerComponent(Sys.Extended.UI.RoundedCornersBehavior, { name: "rounded" });

    } // execute

    if (window.Sys && Sys.loader) {
        Sys.loader.registerScript(scriptName, ["ExtendedBase", "ExtendedCommon"], execute);
    }
    else {
        execute();
    }

})();

Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.NoBotBehavior=function(a){Sys.Extended.UI.NoBotBehavior.initializeBase(this,[a]);this._ChallengeScript=""};Sys.Extended.UI.NoBotBehavior.prototype={initialize:function(){Sys.Extended.UI.NoBotBehavior.callBaseMethod(this,"initialize");var a=eval(this._ChallengeScript);Sys.Extended.UI.NoBotBehavior.callBaseMethod(this,"set_ClientState",[a])},dispose:function(){Sys.Extended.UI.NoBotBehavior.callBaseMethod(this,"dispose")},get_ChallengeScript:function(){return this._ChallengeScript},set_ChallengeScript:function(a){if(this._ChallengeScript!=a){this._ChallengeScript=a;this.raisePropertyChanged("ChallengeScript")}}};Sys.Extended.UI.NoBotBehavior.registerClass("Sys.Extended.UI.NoBotBehavior",Sys.Extended.UI.BehaviorBase);�"// (c) 2010 CodePlex Foundation

//!/ <reference name="MicrosoftAjaxComponentModel.js" />
//!/ <reference name="MicrosoftAjaxSerialization.js" />

(function() {

function execute($) {
Type._registerScript("MicrosoftAjaxTemplates.js", ["MicrosoftAjaxComponentModel.js", "MicrosoftAjaxSerialization.js"]);

var $type, $prototype,
    merge = Sys._merge,
	foreach = Sys._foreach,
	forIn = Sys._forIn,
	isBrowser = Sys._isBrowser;

function serialize(obj) {
	return Sys.Serialization.JavaScriptSerializer.serialize(obj);
}

Type.registerNamespace("Sys.Net");

$type = Sys.Net.WebRequestEventArgs = function WebRequestEventArgs(executor, error, result) {
    /// <summary locid="M:J#Sys.Net.WebRequestEventArgs.#ctor"></summary>
    /// <param name="executor" type="Sys.Net.WebRequestExecutor" mayBeNull="true"></param>
    /// <param name="error" type="Sys.Net.WebServiceError" optional="true" mayBeNull="true"></param>
    /// <param name="result" optional="true" mayBeNull="true"></param>
    this._executor = executor;
    this._error = error || null;
    this._result = typeof (result) === "undefined" ? null : result;
    Sys.Net.WebRequestEventArgs.initializeBase(this);
}
$type.prototype = {
    get_error: function WebRequestEventArgs$get_error() {
        /// <value type="Sys.Net.WebServiceError" mayBeNull="true" locid="P:J#Sys.Net.WebRequestEventArgs.error"></value>
        return this._error || null;
    },
    get_executor: function WebRequestEventArgs$get_executor() {
        /// <value type="Sys.Net.WebRequestExecutor" mayBeNull="true" locid="P:J#Sys.Net.WebRequestEventArgs.executor"></value>
        return this._executor;
    },
    get_result: function WebRequestEventArgs$get_result() {
        /// <value mayBeNull="true" locid="P:J#Sys.Net.WebRequestEventArgs.result"></value>
        return this._result;
    }
};
$type.registerClass("Sys.Net.WebRequestEventArgs", Sys.EventArgs);

Type.registerNamespace("Sys.Data");

if (!Sys.Data.IDataProvider) {
$type = Sys.Data.IDataProvider = function Data$IDataProvider() {
}
$type.prototype = {
    fetchData: function IDataProvider$fetchData(operation, parameters, mergeOption, httpVerb, succeededCallback, failedCallback, timeout, userContext) {
        /// <summary locid="M:J#Sys.Data.IDataProvider.fetchData">Fetches data from the service.</summary>
        /// <param name="operation">The operation to fetch data with.</param>
        /// <param name="parameters" type="Object" mayBeNull="true" optional="true"></param>
        /// <param name="mergeOption" type="Sys.Data.MergeOption" mayBeNull="true" optional="true">Determines how the returned data is tracked if the DataProvider supports it.</param>
        /// <param name="httpVerb" type="String" mayBeNull="true" optional="true"></param>
        /// <param name="succeededCallback" type="Function" mayBeNull="true" optional="true"></param>
        /// <param name="failedCallback" type="Function" mayBeNull="true" optional="true"></param>
        /// <param name="timeout" type="Number" integer="true" mayBeNull="true" optional="true"></param>
        /// <param name="userContext" mayBeNull="true" optional="true"></param>
        /// <returns type="Sys.Net.WebRequest"></returns>
        throw Error.notImplemented();
    }
}
$type.registerInterface("Sys.Data.IDataProvider");
}
if (!Sys.Data.MergeOption) {
$type = Sys.Data.MergeOption = function Data$MergeOption() {
    /// <summary locid="M:J#Sys.Data.MergeOption.#ctor">Describes how an item has changed.</summary>
    /// <field name="appendOnly" type="Number" integer="true" static="true" locid="F:J#Sys.Data.MergeOption.appendOnly"></field>
    /// <field name="overwriteChanges" type="Number" integer="true" static="true" locid="F:J#Sys.Data.MergeOption.overwriteChanges"></field>
    throw Error.notImplemented();
}
$type.prototype = {
    appendOnly: 0,
    overwriteChanges: 1
}
$type.registerEnum("Sys.Data.MergeOption");

}

Type.registerNamespace("Sys.UI");

$type = Sys.Application;
$type.registerMarkupExtension = function Application$registerMarkupExtension(extensionName, extension, isExpression) {
    /// <summary locid="M:J#Sys.Application.registerMarkupExtension">Registers a callback for processing of a markup extension.</summary>
    /// <param name="extensionName" type="String">The name of the extension.</param>
    /// <param name="extension" type="Function">The callback called while processing the extension in templtae markup.</param>
    /// <param name="isExpression" type="Boolean" optional="true">Specifies whether the extension executes a statement or provides a value.</param>
    if (!this._extensions) {
        this._extensions = {};
    }
    isExpression = ((typeof (isExpression) === "undefined") || (isExpression === true));
    this._extensions[extensionName] = { expression: isExpression, extension: extension };
}
$type._getMarkupExtension = function Application$_getMarkupExtension(name) {
    var extension = this._extensions ? this._extensions[name] : null;
    if (!extension) {
        throw Error.invalidOperation(String.format(Sys.UI.TemplatesRes.cannotFindMarkupExtension, name));
    }
    return extension;
}
$type = Sys.UI.Template = function Template(element) {
    /// <summary locid="M:J#Sys.UI.Template.#ctor"></summary>
    /// <param name="element" domElement="true" mayBeNull="false">The element that contains the template.</param>
    this._element = element;
    this._instantiateIn = null;
    this._instanceId = 0;
}
$type.prototype = {
    get_element: function Template$get_element() {
        /// <value domElement="true" locid="P:J#Sys.UI.Template.element">The root element of the template.</value>
        return this._element;
    },
    dispose: function Template$dispose() {
        this._element = null;
        this._instantiateIn = null;
    },
    _appendTextNode: function Template$_appendTextNode(code, storeElementCode, text) {
        code.push(storeElementCode, "document.createTextNode(", serialize(text), "));\n");
    },
    _appendAttributeSetter: function Template$_appendAttributeSetter(code, typeIndex, attrib, expression, isExpression, booleanValue) {
        var ns = attrib.ns, name = attrib.name, restricted = (!ns && Sys.UI.Template._isRestricted(name));
        if (restricted) {
            expression = "Sys.UI.Template._checkAttribute('" + name + "', " + expression + ")";
        }
        switch (attrib.type) {
            case 1:
                code.push("  $component = $element;\n  ");
                if (isExpression) {
                    if (attrib.textNode) {
                        code.push("$element.appendChild(document.createTextNode(", expression, "));\n");
                    }
                    else {
                        code.push("$element.", name, " = ", expression, ";\n");
                    }
                }
                else {
                    code.push(expression, ";\n");
                }
                if (attrib.textNode || name === "innerHTML") return true;
                break;
            case 2: 
                if (isExpression) {
                    name = serialize(name);
                    code.push("  $component = $element;\n    (", expression,
                                ") ? Sys.UI.DomElement.addCssClass($element, ", name,
                                ") : Sys.UI.DomElement.removeCssClass($element, ", name, ");\n");
                }
                else {
                    code.push("  $component = $element;\n  ", expression, ";\n");
                }
                break;
            case 3:
                var index = typeIndex[ns];
                if (index.isClass) {
                    code.push("  $component = __componentIndex['", ns, "'];\n");
                    if (isExpression) {
                        var map = attrib.map;
                        if (map.type === 1) {
                            code.push("  $component.", map.setterName, "(", expression, ");\n");
                        }
                        else if (map.type === 2) {
                            code.push("  __f = ", expression, ";\n", 
                                      "  $component.", map.setterName, '(typeof(__f) === "function" ? __f : new Function("sender", "args", __f));\n');
                        }
                        else {
                            code.push("  $component.", map.name, " = ", expression, ";\n");
                        }
                    }
                    else {
                        code.push("  ", expression, ";\n");
                    }
                }
                else {
                    if (!isExpression) {
                        throw Error.invalidOperation(); // todo: can't have a non-expression based attribute for a fn() call
                    }
                    var prop = serialize(attrib.name) + ": " + expression;
                    if (!index.props) {
                        index.props = prop;
                    }
                    else {
                        index.props += ", " + prop;
                    }
                }
                break;
            case 4:
                this["_" + name] = expression;
                break;
            default:
                if (isExpression) {
                    if (/^on/i.test(name)) {
                        code.push("  $component = $element;\n  $element." + name + " = new Function(" +
                            (document.attachEvent ? "" : "'event', ") + expression + ");\n");
                    }
                    else {
                        if (booleanValue) {
                            code.push("  $component = $element;\n  if (" + expression +
                                        ") {\n    __e = document.createAttribute('" + name +
                                        "');\n    __e.nodeValue = \"" + booleanValue + "\";\n    $element.setAttributeNode(__e);\n  }\n");
                        }
                        else {
                            code.push("  $component = $element;\n  __e = document.createAttribute('" + name + "');\n  __e.nodeValue = " +
                                    expression + ";\n  $element.setAttributeNode(__e);\n");
                        }
                    }
                }
                else {
                    code.push("  $component = $element;\n  " + expression + ";\n");
                }
                break;
        }
        return false;
    },
    _processAttribute: function Template$_processAttribute(code, typeIndex, attrib, value, booleanValue) {
        value = this._getAttributeExpression(attrib, value);
        if (value) {
            return this._appendAttributeSetter(code, typeIndex, attrib,
                value.code, value.isExpression, booleanValue);
        }
        return false;
    },
    _getAttributeExpression: function Template$_getAttributeExpression(attrib, value, noSerialize) {
        var type = typeof(value);
        if (type === "undefined") return null;
        if (value === null) return { isExpression: true, code: "null" };
        if (!attrib.isNative && (type === "string")) {
            if (value.startsWith("{{") && value.endsWith("}}")) {
                return { isExpression: true, code: value.slice(2, -2).trim() };
            }
            else if (value.startsWith("{") && value.endsWith("}")) {
                var ext = Sys.Application._getExtensionCode(value.slice(1, -1)),
                    properties = ext.properties,
                    props = "";
                for (var name in properties) {
                    var subValue = this._getAttributeExpression(attrib, properties[name]);
                    if (subValue && subValue.isExpression) {
                        var prop = serialize(name) + ":" + subValue.code;
                        if (props) {
                            props += "," + prop;
                        }
                        else {
                            props = prop;
                        }
                    }
                }
                return { isExpression: ext.instance.expression, 
                    code: "Sys.Application._getMarkupExtension(" + serialize(ext.name) + ").extension($component, " +
                        serialize((attrib.type === 2 ? "class:" : "") + attrib.name) +
                        ", $context, {" + props + "})" };
            }
        }
        if (attrib.isId) {
            noSerialize = true;
            value = '$id(' + serialize(value) + ')';
        }
        return { isExpression: true, code: (noSerialize ? value : serialize(value)) };
    },
    _processBooleanAttribute: function Template$_processBooleanAttribute(element, code, typeIndex, name) {
        var value, isNative, node = element.getAttributeNode("sys:" + name);
        if (!node) {
            isNative = true;
            node = element.getAttributeNode(name);
            if (node && (node.specified || (node.nodeValue === true))) {
                value = true;
            }
            else if (element.getAttribute(name) === name) {
                value = true;
            }
            else {
                return;
            }
        }
        else {
            value = node.nodeValue;
            if (value === "true") {
                value = true;
            }
            else if (value === "false") {
                return;
            }
        }
        this._processAttribute(code, typeIndex, { name: name, isNative: isNative }, value, name);
    },
    _processBooleanAttributes: function Template$_processBooleanAttributes(element, code, typeIndex, attributes) {
        var name, node, value;
        for (var i = 0, l = attributes.length; i < l; i++) {
            this._processBooleanAttribute(element, code, typeIndex, attributes[i]);
        }
    },
    _processCodeBlock: function Template$_processCodeBlock(name, element, code) {
        var value = this._getExplicitAttribute(null, null, element, name);
        if (value) {
            value = this._getAttributeExpression({ name: name }, value, true).code;
            code.push((name === "sys:if") ? ("  if (" + value + ") {\n")
                        : ("  " + value + "\n"));
        }
        return !!value;
    },
    _getExplicitAttribute: function Template$_getExplicitAttribute(code, typeIndex, element, name, processName, isNative, attrib) {
        var e, node, value;
        if (name === "style" && element.style) {
            value = element.style.cssText;
        }
        else {
            try {
                node = element.getAttributeNode(name);
                if (node && node.specified) {
                    value = node.nodeValue;
                }
            }
            catch (e) {
            }
        }
        if (value && processName) {
            this._processAttribute(code, typeIndex, merge({ name: processName, type: 1, isNative: isNative }, attrib), value);
        }
        return value;
    },
    _buildTemplateCode: function Template$_buildTemplateCode(nestedTemplates, element, code, depth) {
        var i, j, l, m, typeName, isInput, isButton,
            expressionRegExp = Sys.UI.Template._expressionRegExp,
            storeElementCode = "  " + (depth ? ("__p[__d-1].appendChild(") : "__topElements.push("),
            isIE = isBrowser("InternetExplorer");
            
        code.push("  __d++;\n");
        for (i = 0, l = element.childNodes.length; i < l; i++) {
            var childNode = element.childNodes[i], text = childNode.nodeValue;

            if (childNode.nodeType === 8) {
                code.push(storeElementCode + "document.createComment(" + serialize(text) + "));\n");
            }
            else if (childNode.nodeType === 3) {
                var trimText = text.trim();
                if (trimText.startsWith("{") && trimText.endsWith("}") && (!trimText.startsWith("{{") || !trimText.endsWith("}}"))) {
                    var attribName, setComponentCode;
                    setComponentCode = '$component=$element;\n';
                    if (element.tagName.toLowerCase() === "textarea") {
                        attribName = "value";
                    }
                    else {
                        attribName = "innerText";
                    }
                    var expr = this._getAttributeExpression({name:attribName}, trimText);
                    if (expr.isExpression) {
                        code.push(storeElementCode, "document.createTextNode(", expr.code, "));\n");
                    }
                    else {
                        code.push('$component=$element;\n', '  ', expr.code, ';\n');
                    }
                }
                else {
                    var match = expressionRegExp.exec(text), lastIndex = 0;
                    while (match) {
                        var catchUpText = text.substring(lastIndex, match.index);
                        if (catchUpText) {
                            this._appendTextNode(code, storeElementCode, catchUpText);
                        }
                        code.push(storeElementCode, "document.createTextNode(", match[1], "));\n");
                        lastIndex = match.index + match[0].length;
                        match = expressionRegExp.exec(text);
                    }
                    if (lastIndex < text.length) {
                        this._appendTextNode(code, storeElementCode, text.substr(lastIndex));
                    }
                }
            }
            else {
                var attributes = childNode.attributes,
                    typeNames = null, sysAttribute = null, typeIndex = {},
                    tagName = childNode.tagName.toLowerCase(),
                    booleanAttributes,  dp1 = depth + 1;
                if (tagName === "script") {
                    continue;
                }
                var isCodeIfGenerated = this._processCodeBlock("sys:if", childNode, code);
                this._processCodeBlock("sys:codebefore", childNode, code);
                isButton = (tagName === "button");
                isInput = isButton || (tagName === "input");
                if (isInput) {
                    var typeExpression = childNode.getAttribute("sys:type");
                    typeExpression = typeExpression ?
                        this._getAttributeExpression({ name: "type" }, typeExpression) :
                        this._getAttributeExpression({ name: "type", isNative: true }, childNode.getAttribute("type"));             
                    var nameExpression = childNode.getAttribute("sys:name");
                    nameExpression = nameExpression ?
                        this._getAttributeExpression({ name: "name" }, nameExpression) :
                        this._getAttributeExpression({ name: "name", isNative: true }, childNode.getAttribute("name"));
                    if (!typeExpression.isExpression || !nameExpression.isExpression) {
                        throw Error.invalidOperation(Sys.UI.TemplatesRes.mustSetInputElementsExplicitly);
                    }
                    code.push("  $element=__p[__d]=Sys.UI.Template._createInput(" + typeExpression.code + ", " + nameExpression.code + ", " + isButton + ");\n");
                    booleanAttributes = Sys.UI.Template._inputBooleanAttributes;
                    this._processBooleanAttributes(childNode, code, typeIndex, booleanAttributes[" list"]);
                }
                else {
                    code.push("  $element=__p[__d]=document.createElement('" + childNode.nodeName + "');\n");
                }
                if (!depth) {
                    code.push(" $element.__mstcindex = $context._tcindex;\n");
                }
                this._getExplicitAttribute(code, typeIndex, childNode, "sys:id", "id", false, { isId: true }) ||
                    this._getExplicitAttribute(code, typeIndex, childNode, "id", "id", true, { isId: true });

                typeNames = this._getExplicitAttribute(code, typeIndex, childNode, "sys:attach");
                if (typeNames) {
                    typeNames = typeNames.split(',');
                    code.push("  __componentIndex = {}\n");
                    for (j = 0, m = typeNames.length; j < m; j++) {
                        typeName = typeNames[j].trim();
                        if (typeIndex[typeName]) continue; // already creating that type
                        var type = Sys.Application._findType(childNode, typeName, isIE);
                        if (!type) {
                            throw Error.invalidOperation(String.format(Sys.UI.TemplatesRes.invalidAttach, "sys:attach", typeName));
                        }
                        var isComponent, isControlOrBehavior, isContext,
                            isClass = typeof(type) !== "string";
                        if (isClass) {
                            isComponent = type.inheritsFrom(Sys.Component);
                            isControlOrBehavior = (isComponent && (type.inheritsFrom(Sys.UI.Behavior) || type.inheritsFrom(Sys.UI.Control)));
                            isContext = type.implementsInterface(Sys.UI.ITemplateContextConsumer);
                        }
                        typeIndex[typeName] = { type: type, isClass: isClass, isComponent: isComponent };
                        if (isClass) {
                            code.push("  __componentIndex['" + typeName + "'] = $component = new " + type.getName());
                            if (isControlOrBehavior) {
                                code.push("($element);\n");
                            }
                            else {
                                code.push("();\n  Sys.Application._registerComponent($element, $component);\n");
                            }
                            if (isComponent) {
                                code.push("  $component.beginUpdate();\n");
                            }
                            if (isContext) {
                                code.push("  $component.set_templateContext($context);\n");
                            }
                            var idattr = typeName + ":id",
                                typeattr = Sys.Application._splitAttribute(idattr, false, typeIndex);
                            typeattr.isId = true;
                            this._getExplicitAttribute(code, typeIndex, childNode, idattr, "id", false, typeattr);
                        }
                    }
                }
                this._getExplicitAttribute(code, typeIndex, childNode, "style", "style.cssText", true);
                this._getExplicitAttribute(code, typeIndex, childNode, "class", "className", true);
                
                if (!isInput) {
                    booleanAttributes = Sys.UI.Template._booleanAttributes[tagName] ||
                        Sys.UI.Template._commonBooleanAttributes;
                    this._processBooleanAttributes(childNode, code, typeIndex, booleanAttributes[" list"]);
                }
                
                var isSelect = (tagName === "select"),
                    delayedAttributes = null,
                    split = Sys.Application._splitAttribute,
                    skipChildren = false,
                    skip = {'id':1,'class':1,'style':1,'sys:attach':1,'sys:id':1,'sys:disabled':1,'sys:checked':1,'sys:readonly':1,'sys:ismap':1,'sys:multiple':1,'sys:selected':1,'sys:if':1,'sys:codebefore':1,'sys:codeafter':1};
                for (j = 0, m = attributes.length; j < m; j++) {
                    var attribute = attributes[j], name = attribute.nodeName, lowerName = name.toLowerCase();
                    if (!attribute.specified && (!isInput || lowerName !== "value")) continue;
                    if (skip[lowerName] || booleanAttributes[lowerName]) continue;
                    if (isInput && Sys.UI.Template._inputRequiredAttributes[lowerName]) continue;
                    var attrib = split(name, isSelect, typeIndex),
                        ns = attrib.ns,
                        value = attribute.nodeValue,
                        atype = attrib.type;
                    name = attrib.name;
                    if (atype === 1) {
                        if (isSelect && (!ns || ns === "sys")) {
                            delayedAttributes = delayedAttributes || [];
                            delayedAttributes.push([attrib,value]);
                            continue;
                        }
                        skip[name.toLowerCase()] = true;
                    }
                    else if (atype === 0) {
                        skip[name.toLowerCase()] = true;                        
                    }
                    else if (atype === 3 && name === "id" && typeIndex[ns] && typeIndex[ns].isClass) {
                        continue;
                    }
                    if (this._processAttribute(code, typeIndex, attrib, value)) {
                        skipChildren = true;
                    }
                }
                if (this._command) {
                    code.push(" Sys.query($element).setCommand(" + this._command  + ", " + (this._commandargument || 'null') + ", Sys.UI.DomElement._ensureGet(" + (this._commandtarget || 'null') + ", $context, 'sys:commandtarget'));\n");
                    this._command = null;
                }
                this._commandargument = null;
                this._commandtarget = null;

                code.push(storeElementCode + "$element);\n");
                
                for (typeName in typeIndex) {
                    var index = typeIndex[typeName];
                    if (index.isClass) {
                        code.push("  $context._registerComponent(__componentIndex['" + typeName + "']);\n");
                    }
                    else {
                        code.push("  $context._registerIf(");
                        code.push(index.type);
                        code.push("($element, ");
                        code.push("{" + (index.props||"") + "}, $context));\n");
                    }
                }
                if (Sys.UI.Template._isTemplate(childNode)) {
                    var nestedTemplate = new Sys.UI.Template(childNode);
                    nestedTemplate.recompile();
                    nestedTemplates.push(childNode._msajaxtemplate);
                    code.push("  $element._msajaxtemplate = this.get_element()._msajaxtemplate[1][" + (nestedTemplates.length-1) + "];\n");
                }
                else if (!skipChildren) {
                    this._buildTemplateCode(nestedTemplates, childNode, code, dp1);
                    code.push("  $element=__p[__d];\n");
                }
                if (delayedAttributes) {
                    for (j = 0, m = delayedAttributes.length; j < m; j++) {
                        attribute = delayedAttributes[j];
                        this._processAttribute(code, typeIndex, attribute[0], attribute[1]);
                    }
                }
                this._processCodeBlock("sys:codeafter", childNode, code);
                if (isCodeIfGenerated) {
                    code.push("  }\n");
                }
            }
        }
        code.push("  --__d;\n");
    },
    _ensureCompiled: function Template$_ensureCompiled() {
        if (!this._instantiateIn) {
            var element = this.get_element();
            if (element._msajaxtemplate) {
                this._instantiateIn = element._msajaxtemplate[0];
            }
            else {
                this.recompile();
            }
        }
    },
    recompile: function Template$recompile() {
        /// <summary locid="M:J#Sys.UI.Template.recompile">Compiles the template.</summary>
        var element = this.get_element(),
            code = [" $index = (typeof($index) === 'number' ? $index : __instanceId);\n var $component, __componentIndex, __e, __f, __topElements = [], __d = 0, __p = [__containerElement], $element = __containerElement, $context = new Sys.UI.TemplateContext(), $id = function(prefix) { return $context.getInstanceId(prefix); };\n $context.data = (typeof(__data) === 'undefined' ? null : __data);\n $context.components = [];\n $context.nodes = __topElements;\n $context.dataItem = $dataItem;\n $context.index = $index;\n $context.parentContext = __parentContext;\n $context.containerElement = __containerElement;\n $context.insertBeforeNode = __referenceNode;\n $context.template = this;\n with($dataItem || {}) {\n"],
            nestedTemplates = [];
        this._buildTemplateCode(nestedTemplates, element, code, 0);
        code.push("}\n $context._onInstantiated(__referenceNode);\n return $context;");
        code = code.join('');
        element._msajaxtemplate = [this._instantiateIn = new Function("__containerElement", "__data", "$dataItem", "$index", "__referenceNode", "__parentContext", "__instanceId", code), nestedTemplates];
    },
    instantiateIn: function Template$instantiateIn(containerElement, data, dataItem, dataIndex, nodeToInsertTemplateBefore, parentContext) {
        /// <summary locid="M:J#$id"></summary>
        /// <param name="containerElement"></param>
        /// <param name="data" optional="true" mayBeNull="true"></param>
        /// <param name="dataItem" optional="true" mayBeNull="true"></param>
        /// <param name="dataIndex" optional="true" mayBeNull="true" type="Number" integer="true"></param>
        /// <param name="nodeToInsertTemplateBefore" optional="true" mayBeNull="true">The child node of container before which to instantiate the template.</param>
        /// <param name="parentContext" type="Sys.UI.TemplateContext" optional="true" mayBeNull="true"></param>
        /// <returns type="Sys.UI.TemplateContext"></returns>
        containerElement = Sys.UI.DomElement._ensureGet(containerElement, null, "containerElement");
        nodeToInsertTemplateBefore = Sys.UI.DomElement._ensureGet(nodeToInsertTemplateBefore, null, "nodeToInsertTemplateBefore");
        this._ensureCompiled();
        return this._instantiateIn(containerElement, data, dataItem, dataIndex, nodeToInsertTemplateBefore, parentContext, this._instanceId++);
    }
}
$type._isRestricted = function Template$_isRestricted(name) {
    var restricted = Sys.UI.Template._getRestrictedIndex();
    return restricted.attributes[name.toLowerCase()];
}
$type._checkAttribute = function Template$_checkAttribute(name, value) {
    if (!value) return value;
    var newValue = value, restricted = Sys.UI.Template._getRestrictedIndex();
    if (restricted.attributes[name.toLowerCase()]) {
        if (typeof(value) !== "string") {
            value = value.toString();
        }
        var match = Sys.UI.Template._protocolRegExp.exec(value.toLowerCase());
        if (match) {
            if (!restricted.protocols[match[1]]) {
                newValue = "";
            }
        }
    }
    return newValue;
}
$type._getIdFunction = function Template$_getIdFunction(instance) {
    return function(prefix) {
        return prefix + instance;
    }
}
$type._createInput = function Template$_createInput(type, name, isButton) {
    var err, element, callee = arguments.callee, dynamic = callee._dynamic;
    if (dynamic === true) {
        element = document.createElement(isButton ? 'button' : 'input');
        if (type) {
            element.setAttribute("type", type);
        }
        if (name) {
            element.setAttribute("name", name);
        }
    }
    else {
        var html = isButton ? "<button " : "<input ";
        if (type) {
            html += "type='" + type + "' ";
        }
        if (name) {
            html += "name='" + name + "' ";
        }
        html += isButton ? "></button>" : "/>";
        try {
            element = document.createElement(html);
        }
        catch (err) {
            dynamic = true;
        }
        if (typeof(dynamic) === "undefined") {
            dynamic = (element.tagName.toLowerCase() !== (isButton ? "button" : "input"));
        }
        callee._dynamic = dynamic;
        if (dynamic) {
            element = callee(type, name, isButton);
        }
    }
    return element;
}
$type._isTemplate = function Template$_isTemplate(element) {
    var className = element.className;
    return (className && ((className === "sys-template") || /(^| )sys\-template($| )/.test(className)));
}
$type._inputRequiredAttributes = {"type":1, "name":1, "sys:type":1, "sys:name":1};
$type._commonBooleanAttributes = { disabled: true, " list" : ["disabled"] };
$type._inputBooleanAttributes =
    { disabled: true, checked: true, readonly: true,
        " list": ["disabled", "checked", "readonly"] };
$type._booleanAttributes = {
    "input": Sys.UI.Template._inputBooleanAttributes,
    "select": { disabled: true, multiple: true, " list": ["disabled", "multiple"] },
    "option": { disabled: true, selected: true, " list": ["disabled", "selected"] },
    "img": { disabled: true, ismap: true, " list": ["disabled", "ismap"] },
    "textarea": { disabled: true, readonly: true, " list": ["disabled", "readonly"] }
};
$type._expressionRegExp = /\{\{\s*([\w\W]*?)\s*\}\}/g;
$type.allowedProtocols = [
    "http",
    "https"
];
$type.restrictedAttributes = [
    "src",
    "href",
    "codebase",
    "cite",
    "background",
    "action",
    "longdesc",
    "profile",
    "usemap",
    "classid",
    "data"
];
$type._getRestrictedIndex = function Template$_getRestrictedIndex() {
    var i, l, protocolIndex, attributeIndex,
        protocols = Sys.UI.Template.allowedProtocols || [],
        attributes = Sys.UI.Template.restrictedAttributes || [],
        index = Sys.UI.Template._restrictedIndex;
    if (!index || (index.allowedProtocols !== protocols) || (index.restrictedAttributes !== attributes)) {
        index = { allowedProtocols: protocols, restrictedAttributes: attributes };
        index.protocols = protocolIndex = {};
        for (i = 0, l = protocols.length; i < l; i++) {
            protocolIndex[protocols[i]] = true;
        }
        index.attributes = attributeIndex = {};
        for (i = 0, l = attributes.length; i < l; i++) {
            attributeIndex[attributes[i]] = true;
        }
        Sys.UI.Template._restrictedIndex = index;
    }
    return index;
}
$type.registerClass("Sys.UI.Template", null, Sys.IDisposable);

$type._protocolRegExp = /^\s*([a-zA-Z0-9\+\-\.]+)\:/;

$type.findContext = function Template$findContext(element) {
    /// <summary locid="M:J#Sys.UI.Template.findContext"></summary>
    /// <param name="element" domElement="true"></param>
    /// <returns type="Sys.UI.TemplateContext"></returns>
    var tc;
    for (tc = Sys.UI.TemplateContext._contexts[element.__mstcindex]; !tc && element; element = element.parentNode);
    return tc || Sys.Application.get_templateContext();
}

$prototype = Sys._Application.prototype;
$prototype.get_templateContext = function _Application$get_templateContext() {
    /// <summary locid="M:J#Sys._Application.get_templateContext"></summary>
    return this._context || null;
}


$prototype._baseDispose = $prototype.dispose;
$prototype.dispose = function _Application$dispose() {
    var ctx = this._context;
    if (ctx) ctx.dispose();
    this._context = null;
    this._baseDispose();
}

$prototype.removeComponent = function _Application$removeComponent(component) {
    /// <summary locid="M:J#Sys._Application.removeComponent">Removes a top-level component from the application.</summary>
    /// <param name="component" type="Sys.Component">The component to remove.</param>
    var id = component.get_id();
    if (id) delete this._components[id];
    var ctx = this._context;
    if (ctx) {
        var tc = component.__tc;
        if (tc && tc[0] === ctx._tcindex) {
            delete ctx.components[tc[1]];
        }
    }
}
$type = Sys.UI.TemplateContext = function TemplateContext() {
    /// <summary locid="M:J#Sys.UI.TemplateContext.#ctor">Represents the results of a template instantiation.</summary>
    /// <field name="data" locid="F:J#Sys.UI.TemplateContext.data"></field>
    /// <field name="dataItem" locid="F:J#Sys.UI.TemplateContext.dataItem"></field>
    /// <field name="index" type="Number" integer="true" locid="F:J#Sys.UI.TemplateContext.index"></field>
    /// <field name="getInstanceId" type="Function" locid="F:J#Sys.UI.TemplateContext.getInstanceId"></field>
    /// <field name="parentContext" type="Sys.UI.TemplateContext" locid="F:J#Sys.UI.TemplateContext.parentContext"></field>
    /// <field name="containerElement" domElement="true" locid="F:J#Sys.UI.TemplateContext.containerElement"></field>
    /// <field name="components" type="Array" elementType="Object" locid="F:J#Sys.UI.TemplateContext.components"></field>
    /// <field name="nodes" type="Array" elementDomElement="true" locid="F:J#Sys.UI.TemplateContext.nodes"></field>
    var index = this._tcindex = Sys.UI.TemplateContext._tcindex++;
    Sys.UI.TemplateContext._contexts[index] = this;
    this._completed = [];
    this.nodes = [];
    Sys.UI.TemplateContext.initializeBase(this);
}
$type.prototype = {
    data: null,
    dataItem: null,
    index: 0,
    parentContext: null,
    containerElement: null,
    insertBeforeNode: null,
    components: null,
    nodes: null,
    isDisposed: false,
    _lastIndex: -1,
    dispose: function TemplateContext$dispose() {
        /// <summary locid="M:J#Sys.UI.TemplateContext.dispose">Disposes of the template context and the components that were created.</summary>
        if (!this._global) {
            var nodes = this.nodes;
            if (nodes) {
                for (var i = 0, l = nodes.length; i < l; i++) {
                    var element = nodes[i];
                    if (element.nodeType === 1) {
                        Sys.Application.disposeElement(element, false);
                    }
                }
            }
        }
        delete Sys.UI.TemplateContext._contexts[this._tcindex];
        this.nodes = this.dataItem = this.components = this.getInstanceId =
        this.containerElement = this.insertBeforeNode = this.parentContext = this.data = null;
        this.isDisposed = true;
    },
    query: function TemplateContext$query(selector) {
        return new Sys.ElementSet(this._find(selector));
    },
    get: function TemplateContext$get(selector) {
        return this._find(selector, true);
    },
    _find: function TemplateContext$_find(selector, single) {
        var found = [],
            selectors;
        if (typeof(selector) === "string") {
            selectors = [selector];
        }
        else {
            selectors = selector;
        }
        var idBased = /^[#\$](\w|[$:\.\-])+$/;
        var tc = this;
        foreach(selectors, function(selector) {
            var result = idBased.test(selector) ?
                    tc._findById(selector.substr(0, 1), selector.substr(1), single) :
                    Sys._find(selector, tc.nodes, single);
            if (result) {
                if (single) {
                    found.push(result);
                    return true;
                }
                else {
                    found.push.apply(found, result);
                }
            }
        });
        return single ? (found[0] || null) : found;
    },
    _findById: function TemplateContext$_findById(kind, id, single) {
        var element = null;
        for (var context = this; !element && context; context = context.parentContext) {
            var nodes = context.nodes,
                instanceId = kind + context.getInstanceId(id);
            if (context._global) {
                element = Sys.get(instanceId) || Sys.get(instanceId, nodes);
            }
            else {
                element = Sys.get(instanceId, nodes);
            }
        }
        element = element || Sys.get(kind + id);
        return single ? element : (element ? [element] : []);
    },
    getInstanceId: function TemplateContext$getInstanceId(prefix) {
        /// <summary locid="M:J#Sys.UI.TemplateContext.getInstanceId">Generates an element id suffixed by this template context's index.</summary>
        /// <param name="prefix" type="String">The prefix.</param>
        /// <returns type="String">The generated id.</returns>
        var s;
        if (this._global) {
            s = "";
        }
        else {
            s = this.index;
            var ctx = this.parentContext;
            while (ctx && !ctx._global) {
                s = ctx.index + "_" + s;
                ctx = ctx.parentContext;
            }
        }
        return prefix + s;
    },
    initializeComponents: function TemplateContext$initializeComponents() {
        /// <summary locid="M:J#Sys.UI.TemplateContext.initializeComponents">Initializes the components created by the template instantiation.</summary>
        var components = this.components;
        if (components) {
            var i = components.length - 1, index = this._lastIndex;
            this._lastIndex = i;
            for (; i > index; i--) {
                var component = components[i];
                if (component && Sys.Component.isInstanceOfType(component)) {
                    if (component.get_isUpdating()) {
                        component.endUpdate();
                    }
                    else if (!component.get_isInitialized()) {
                        component.initialize();
                    }
                }
            }
        }
    },
    _onInstantiated: function TemplateContext$_onInstantiated(referenceNode, global) {
        foreach(this._completed, function(callback) {
            callback();
        });
        this._completed = [];
        if (!global) {
            var container = this.containerElement;
            foreach(this.nodes, function(node) {
                container.insertBefore(node, referenceNode || null);
            });
        }
    },
    _registerComponent: function TemplateContext$_registerComponent(component) {
        var components = this.components;
        component.__tc = [this._tcindex, components.length];
        components.push(component);
        Sys.Component._register(component, null, true);
    },
    _registerIf: function TemplateContext$_registerIf(result) {
        if (result instanceof Array) {
            for (var i = 0, l = result.length; i < l; i++) {
                this._registerComponent(result[i]);
            }
        }
        else if (result && typeof (result) === 'object') {
            this._registerComponent(result);
        }
    }
}
$type.registerClass("Sys.UI.TemplateContext", null, Sys.IDisposable);
$type._tcindex = 0;
$type._contexts = [];
$type = Sys.UI.ITemplateContextConsumer = function ITemplateContextConsumer() {
    throw Error.notImplemented();
}
$type.prototype = {
    get_templateContext: function ITemplateContextConsumer$get_templateContext() {
        /// <value type="Sys.UI.TemplateContext" mayBeNull="true" locid="P:J#Sys.UI.ITemplateContextConsumer.templateContext"></value>
        throw Error.notImplemented();
    },
    set_templateContext: function ITemplateContextConsumer$set_templateContext(value) {
        throw Error.notImplemented();
    }
}
$type.registerInterface("Sys.UI.ITemplateContextConsumer");
$type = Sys.Application;
$type._caseIndex = {};
$type._prototypeIndex = {};

$type._context = new Sys.UI.TemplateContext();
$type._context._global = true;

Sys.registerPlugin({
    name: "activateElements",
    dom: true,
    returnType: "Sys.UI.TemplateContext",
    parameters: [
        {name: "bindingContext", description: "The binding context."},
        {name: "recursive", type: "Boolean", description: "Specifies whether processing should occur recursively."}
    ],
    plugin: function(bindingContext, recursive) {
        var elements = this.get(),
            app = Sys.Application,
            tc = app._context,
            useDirect = isBrowser("InternetExplorer");
        elements = elements || document.documentElement;
        tc.dataItem = typeof(bindingContext) === "undefined" ? null : bindingContext;
        tc.components = tc.components || [];
        tc.nodes = [];
        recursive = (recursive !== false);
        Sys.query(elements).each(function() {
            tc.nodes.push(this);
            app._activateElement(this, tc, useDirect, recursive);
        });
        tc.initializeComponents();
        tc._onInstantiated(null, true);
        return tc;
    }
});

$type._findType = function Application$_findType(element, prefix, useDirect) {
    var er, err, type, xmlns = "xmlns:" + prefix;
    function getType() {
        var ns;
        try { ns = useDirect ? element[xmlns] : element.getAttribute(xmlns); }
        catch(er) { }
        if (ns && ns.substr(0, 11) === "javascript:") {
            ns = ns.substr(11);
            type = null;          
            try {
                type = Type.parse(ns);
            }
            catch(er) {
                err = String.format(Sys.UI.TemplatesRes.invalidTypeNamespace, ns);
                return;
            }
            if (type && type.__class) {
                return;
            }
            else {
                type = ns; 
            }
        }
    }
    for (; element; element = element.parentNode) {
        getType();
        if (err) {
            throw Error.invalidOperation(err);
        }
        if (type) return type;
    }
    element = document.body;
    getType();
    if (err) {
        throw Error.invalidOperation(err);
    }
    return type;
}

$type._activateElement = function Application$_activateElement(parent, templateContext, useDirect, recursive) {
    if (recursive) {
        recursive = !Sys.UI.Template._isTemplate(parent);
    }
    var i = -1,
        allElements = recursive ? (useDirect ? parent.all : parent.getElementsByTagName("*")) : [],
        isTemplate = /(^| )sys\-template($| )/,
        expandosAreLast = useDirect && Sys.Browser.version <= 7,
        element = parent;
    do {
        if (element.nodeType !== 1) continue; // includes comment nodes in IE
        ///// this code is inline rather than factored out into a function because
        ///// performance testing has shown that calling the factored method causes activation
        ///// to be measurably slower in IE, due to the overhead of invoking a function.
        ///// begin element activation

        var err, j, m, typeList = null, entry = null, index = null, fnIndex = null,
            activated = false,
            nodeName = null,
            attributes = element.attributes,
            alength = attributes.length - 1,
            attributes2 = null;
        if (alength >= 0 && (!expandosAreLast || attributes[alength].expando) && !element.__msajaxactivated) {
            for (j = alength; j >= 0; j--) {
                var attribute = attributes[j];
                if (expandosAreLast && !attribute.expando) break;
                if (!attribute.specified || attribute.nodeName.indexOf(':') < 0) continue;
                activated = true;
                nodeName = attribute.nodeName;
                var value = attribute.nodeValue;
                switch (nodeName) {
                case "sys:attach":
                    typeList = value.split(',');
                    break;
                case "sys:command":
                    var command = Sys.Application._getPropertyValue(null, null, null, value, templateContext, null, true);
                    var commandArg = Sys.Application._getCommandAttr(element, "sys:commandargument", useDirect, templateContext),
                        commandTarget = Sys.Application._getCommandAttr(element, "sys:commandtarget", useDirect, templateContext);
                    Sys.query(element).setCommand(command||"", commandArg||null, Sys.UI.DomElement._ensureGet(commandTarget, templateContext, "sys:commandtarget"));
                    break;
                default:
                    attributes2 = attributes2 || [];
                    attributes2.push(attribute);
                }
            } // end for each attribute
            if (activated)  {
                element.__msajaxactivated = true;
                if (typeList) {
                    index = {};
                    for (var k = 0, n = typeList.length; k < n; k++) {
                        var typeName = typeList[k].trim();
                        if (index[typeName]) continue; // already exists
                        var type = Sys.Application._findType(element, typeName, useDirect);
                        if (!type) {
                            throw Error.invalidOperation(String.format(Sys.UI.TemplatesRes.invalidAttach, "sys:attach", typeName));
                        }
                        var props = null, isComponent = 0, isControlOrBehavior = 0, isContext = 0,
                            isClass = (typeof(type) !== "string"),
                            instance = null;
                        if (isClass) {
                            isComponent = type.inheritsFrom(Sys.Component);
                            isControlOrBehavior = (isComponent && (type.inheritsFrom(Sys.UI.Behavior) || type.inheritsFrom(Sys.UI.Control)));
                            isContext = type.implementsInterface(Sys.UI.ITemplateContextConsumer);
                            instance = isControlOrBehavior ? new type(element) : new type();
                            if (isComponent) {
                                instance.beginUpdate();
                            }
                            if (!isControlOrBehavior) {
                                Sys.Application._registerComponent(element, instance);
                            }
                            if (isContext) {
                                instance.set_templateContext(templateContext);
                            }
                            entry = { instance: instance, isClass: true, typeName: typeName, type: type};
                        }
                        else {
                            props = {};
                            instance = Type.parse(type);
                            entry = { instance: instance, props: props, typeName: typeName, type: type};
                            fnIndex = (fnIndex || []);
                            fnIndex.push(entry);
                        }
                        index[typeName] = entry;
                    }             
                } // typeList
                if (attributes2) {
                    for (j = attributes2.length - 1; j >= 0; j--) {
                        attribute = attributes2[j];
                        nodeName = attribute.nodeName;
                        value = attribute.nodeValue;
                        var isSelect = (/^select$/i.test(element.tagName)),
                            attrib = Sys.Application._splitAttribute(nodeName, isSelect, index),
                            atype = attrib.type,
                            ns = attrib.ns,
                            name = attrib.name;
                        if (atype < 0) continue;
                        if (atype === 3) {
                            entry = attrib.index;
                            var target = entry.instance;
                            value = Sys.Application._getPropertyValue(attrib, target, name, value, templateContext);
                            if (typeof(value) === "undefined") continue;
                            if (entry.isClass) {
                                switch (attrib.map.type) {
                                    case 1:
                                        attrib.map.setter.call(target, value);
                                        break;
                                    case 2:
                                        attrib.map.setter.call(target, typeof(value) === "function" ? value : new Function("sender", "args", value));
                                        break;
                                    default:
                                        target[name] = value;
                                }
                            }
                            else {
                                entry.props[name] = value;
                            }
                        }
                        else if (atype <= 2) {
                            if (attrib.textNode || (name === "innerHTML")) {
                                Sys.Application._clearContent(element);
                            }
                            value = Sys.Application._getPropertyValue(attrib, element, name, value, templateContext);
                            if (typeof(value) === "undefined") continue;
                            switch(attrib.type) {
                                case 0:
                                    if (/^on/i.test(name)) {
                                        element[name] = document.attachEvent ? new Function(value) : new Function("event", value);
                                        break;
                                    }
                                    if (isSelect && (name === "value")) {
                                        element.value = value;
                                        break;
                                    }
                                    var booleans = Sys.UI.Template._booleanAttributes,
                                        lowerTag = element.tagName.toLowerCase(),
                                        isbool = (name === "disabled") || (booleans[lowerTag] && booleans[lowerTag][name]);
                                    if (isbool) {
                                        if (name === "selected") {
                                            element.selected = value;
                                        }
                                        if (!value) {
                                            element.removeAttribute(name);
                                            break;
                                        }
                                        else if (name === "checked") {
                                            element.setAttribute(name, name);
                                            break;
                                        }
                                    }
                                    var a = document.createAttribute(name);
                                    a.nodeValue = isbool ? name : value;
                                    element.setAttributeNode(a);
                                    break;
                                case 1:
                                    if (attrib.textNode) {
                                        Sys.Application._clearContent(element);
                                        element.appendChild(document.createTextNode(value));
                                    }
                                    else {
                                        Sys.Observer.setValue(element, name, value);
                                    }
                                    break;
                                case 2:
                                    value ? Sys.UI.DomElement.addCssClass(element, name) : Sys.UI.DomElement.removeCssClass(element, name);
                                    break;
                            }
                        }
                    }
                }
                if (fnIndex) {  
                    for (j = 0, m = fnIndex.length; j < m; j++) {
                        entry = fnIndex[j];
                        templateContext._registerIf(entry.instance(element, entry.props, templateContext));
                    }      
                }
                if (index) {
                    for (entry in index) {
                        if (index.hasOwnProperty(entry)) {
                            entry = index[entry];
                            if (entry && entry.isClass) {
                                templateContext._registerComponent(entry.instance);
                            }
                        }
                    }
                }
            } // if activated
            ///// end element activatation
        } // no expandos or already activated
        if (recursive) {
            var className = element.className;
            if (className && (className.length >= 12) && ((className === "sys-template") || isTemplate.test(className))) {
                var next = element.nextSibling;
                while (next && (next.nodeType !== 1)) {
                    next = next.nextSibling;
                }
                while (!next) {                        
                    element = element.parentNode;
                    if (element === parent) {
                        break;
                    }
                    next = element.nextSibling;
                    while (next && (next.nodeType !== 1)) {
                        next = next.nextSibling;
                    }
                }
                if (!next || (next.nodeType !== 1)) {
                    break;
                }
                do {
                    element = allElements[i+1];
                    if (element === next) break;
                    i++;
                }
                while (element);
            }
        }
    } // allElements
    while (!!(element = allElements[++i])); 
}

$type._clearContent = function Application$_clearContent(element) {
    var err;
    Sys.Application.disposeElement(element, true);
    try { element.innerHTML = ""; }
    catch(err) {
        while (element.firstChild) {
            element.removeChild(element.firstChild);
        }
    }
}
$type._getCommandAttr = function Application$_getCommandAttr(element, name, useDirect, templateContext) {
    var err, value = null;
    try {
        value = useDirect ? element[name] : element.getAttribute(name);
        value = value ? Sys.Application._getPropertyValue(null, null, null, value, templateContext, null, true) : null;
    }
    catch(err) { }
    return value;
}
$type._directAttributes = {
    "style": "style.cssText",
    "class": "className",
    "cellpadding" : "cellPadding",
    "cellspacing" : "cellSpacing",
    "colspan" : "colSpan",
    "rowspan" : "rowSpan",
    "contenteditable" : "contentEditable",
    "valign" : "vAlign",
    "innertext": "innerText",
    "innerhtml": "innerHTML"
}
$type._splitAttribute = function Application$_splitAttribute(attributeName, isSelect, typeIndex) {
    var nameParts = attributeName.split(':'),
            ns = nameParts.length > 1 ? nameParts[0] : null,
            name = nameParts[ns ? 1 : 0],
            type = -1,
            textNode, map, index, isSys = (ns === "sys"),
            lowerName = name.toLowerCase(),
            isNative = !ns;
    if (!ns || isSys) {
        var newName = Sys.Application._directAttributes[lowerName];
        if (newName) {
            type = 1;
            if (name === "innertext") {
                textNode = true;
            }
            name = newName;
        }
        else if (isSelect) {
            if (lowerName === "selectedindex") {
                name = "selectedIndex";
                type = 1;
            }
            else if (name === "value") {
                type = 1;
            }
            else if (isSys) {
                type = 0;
                ns = null;
            }
        }
        else if (isSys) {
            if ((name === "command") || (name === "commandargument") || (name === "commandtarget")) {
                type = 4; // command bubbling
            }
            else if (name.indexOf("style-") === 0) {
                name = "style." + Sys.Application._translateStyleName(name.substr(6));
                type = 1;
            }
            else if (name.indexOf("class-") === 0) {
                name = name.substr(6);
                type = 2;
            }
            else {
                ns = null;
                type = 0;
            }        
        }
    }
    else if (typeIndex) {
        index = typeIndex[ns];
        if (index) {
            type = 3;
            if (index.isClass) {
                map = Sys.Application._translateName(name, index.type);
                name = map.name;
            }
        }
        else {
            name = ns + ":" + name;
            ns = null;
            type = -1;
       }
    }
    else {
        name = ns + ":" + name;
        ns = null;
        type = -1;
    }
    return { ns: ns, name: name, type: type, map: map, index: index, textNode: textNode, isNative: isNative };
}

$type._translateStyleName = function Application$_translateStyleName(name) {
    if (name.indexOf('-') === -1) return name;
    var parts = name.toLowerCase().split('-'),
        newName = parts[0];
    for (var i = 1, l = parts.length; i < l; i++) {
        var part = parts[i];
        newName += part.substr(0, 1).toUpperCase() + part.substr(1);
    }
    return newName;
}

$type._getExtensionCode = function Application$_getExtensionCode(extension, doEval, templateContext) {
    extension = extension.trim();
    var name, properties, propertyBag = {}, spaceIndex = extension.indexOf(' ');
    if (spaceIndex !== -1) {
        name = extension.substr(0, spaceIndex);
        properties = extension.substr(spaceIndex + 1);
        if (properties) {
            properties = properties.replace(/\\,/g, '\u0000').split(",");
            for (var i = 0, l = properties.length; i < l; i++) {
                var property = properties[i].replace(/\u0000/g, ","),
                        equalIndex = property.indexOf('='),
                        pValue, pName;
                if (equalIndex !== -1) {
                    pName = property.substr(0, equalIndex).trim();
                    pValue = property.substr(equalIndex + 1).trim();
                    if (doEval) {
                        pValue = this._getPropertyValue(null, null, null, pValue, templateContext, true);
                    }
                }
                else {
                    pName = "$default";
                    pValue = property.trim();
                }
                propertyBag[pName] = pValue;
            }
        }
    }
    else {
        name = extension;
    }
    return { instance: Sys.Application._getMarkupExtension(name), name: name, properties: propertyBag };
}

$type._getPropertyValue = function Application$_getPropertyValue(attrib, target, name, value, templateContext, inExtension, suppressExtension) {
    var propertyValue = value;
    if (value.startsWith("{{") && value.endsWith("}}")) {
        propertyValue = this._evaluateExpression(value.slice(2, -2), templateContext);
    }
    else if (!suppressExtension && !inExtension && value.startsWith("{") && value.endsWith("}")) {
        var extension = this._getExtensionCode(value.slice(1, -1), true, templateContext);
        propertyValue = extension.instance.extension(target, (attrib.type === 2 ? "class:" : "") + name, templateContext, extension.properties);
    }
    return propertyValue;
}
$type._tryName = function Application$_tryName(name, type) {
    var prototype = type.prototype,
        setterName = "set_" + name, setter = prototype[setterName];
    if (setter) {
        return { name: name, setterName: setterName, setter: setter, type: 1 };
    }
    if (name.startsWith('on')) {
        setterName = "add_" + name.substr(2);
        var adder = prototype[setterName];
        if (adder) {
            return { name: name, setterName: setterName, setter: adder, type: 2 };
        }
    }
    if (typeof(prototype[name]) !== "undefined") {
        return { name: name };
    }
    return null;
}
$type._translateName = function Application$_translateName(name, type) {
    if (name && (name !== name.toLowerCase())) {
        throw Error.invalidOperation(String.format(Sys.UI.TemplatesRes.invalidAttributeName, name));
    }
    var cache, index = Sys.Application._prototypeIndex[type.__typeName];
    if (index) {
        cache = index[name];
        if (cache) return cache;
    }
    else {
        index = {};
    }    
    type.resolveInheritance();
    cache = Sys.Application._tryName(name, type);
    if (!cache) {
        var casedName = Sys.Application._mapToPrototype(name, type);
        if (casedName && (casedName !== name)) {
            cache = Sys.Application._tryName(casedName, type);
        }
        if (!cache) {
            cache = { name: name };
        }
    }
    index[name] = cache;
    return cache;
}
$type._mapToPrototype = function Application$_mapToPrototype(name, type) {
    var fixedName, caseIndex = Sys.Application._caseIndex[type.__typeName];
    if (!caseIndex) {
        caseIndex = {};
        type.resolveInheritance();
        for (var memberName in type.prototype) {
            if (memberName.startsWith("get_") || memberName.startsWith("set_") || memberName.startsWith("add_")) {
                memberName = memberName.substr(4);
            }
            else if (memberName.startsWith("remove_")) {
                memberName = memberName.substr(7);
            }
            caseIndex[memberName.toLowerCase()] = memberName;
        }
        Sys.Application._caseIndex[type.__typeName] = caseIndex;
    }
    name = name.toLowerCase();
    if (name.startsWith('on')) {
        fixedName = caseIndex[name.substr(2)];
        if (fixedName) {
            fixedName = "on" + fixedName;
        }
        else {
            fixedName = caseIndex[name];
        }
    }
    else {
        fixedName = caseIndex[name];
    }
    return fixedName;
}
$type._doEval = function Application$_doEval(__expression, $context) {
    with({$context:$context}) {
        with($context.dataItem || {}) {
            return eval("(" + __expression + ")");
        }
    }
}
$type._evaluateExpression = function Application$_evaluateExpression($expression, $templateContext) {
    return Sys.Application._doEval.call($templateContext.dataItem, $expression, $templateContext);
}

$type._registerComponent = function Application$_registerComponent(element, component) {
    var components = element._components;
    if (!components) {
        element._components = components = [];
    }
    components.push(component);
}

$type._activateOnPartial = function Application$_activateOnPartial(panel, rendering) {
    this._doUpdatePanel(panel, rendering);
    if (Sys.activateDom) {
        Sys.query(panel).activateElements();
    }
}

$type._raiseInit = function Application$_raiseInit() {
    this.beginCreateComponents();
    Sys.Observer.raiseEvent(this, "init");
    if (Sys.activateDom) {
        Sys.query(document.documentElement).activateElements();
    }
    if (Sys.WebForms && Sys.WebForms.PageRequestManager) {
        var prm = Sys.WebForms.PageRequestManager.getInstance();
        prm._doUpdatePanel = prm._updatePanel;
        prm._updatePanel = Sys.Application._activateOnPartial;
    }
    this.endCreateComponents();
}
$type = Sys.BindingMode = function BindingMode() {
}
$type.prototype = {
    auto: 0,
    oneTime: 1,
    oneWay: 2,
    twoWay: 3,
    oneWayToSource: 4
}

$type.registerEnum("Sys.BindingMode");

$type = Sys.Binding = function Binding() {
    Sys.Binding.initializeBase(this);
    this._sourceHandlers = [];
    this._targetHandlers = [];
    this._onSourceChanged = Function.createDelegate(this, this._sourceChanged);
    this._onTargetChanged = Function.createDelegate(this, this._targetChanged);
    this._onOptionsUpdated = Function.createDelegate(this, this._optionsUpdated);
    this._onDispose = Function.createDelegate(this, this.dispose);
}
$type.prototype = {
    _defaultValue: null,
    get_convert: function Binding$get_convert() {
        /// <value mayBeNull="true" locid="P:J#Sys.Binding.convert">A function or function name to call when updating the target.</value>
        return this._convert || null;
    },
    set_convert: function Binding$set_convert(value) {
       this._convert = value;
       this._convertFn = this._resolveFunction(value);
    },
    get_convertBack: function Binding$get_convertBack() {
        /// <value mayBeNull="true" locid="P:J#Sys.Binding.convertBack">A function or function name to call when updating the source.</value>
        return this._convertBack || null;
    },
    set_convertBack: function Binding$set_convertBack(value) {
       this._convertBack = value;
       this._convertBackFn = this._resolveFunction(value);
    },
    get_ignoreErrors: function Binding$get_ignoreErrors() {
        /// <value type="Boolean" mayBeNull="false" locid="P:J#Sys.Binding.ignoreErrors">The option to ignore errors in convert/convertBack</value>
        return !!this._ignoreErrors;
    },
    set_ignoreErrors: function Binding$set_ignoreErrors(value) {
       this._ignoreErrors = value;
    },
    get_mode: function Binding$get_mode() {
        /// <value type="Sys.BindingMode" mayBeNull="false" locid="P:J#Sys.Binding.mode">The mode input</value>
        return this._mode || Sys.BindingMode.auto;
    },
    set_mode: function Binding$set_mode(value) {
        if (this._initialized) {
            throw Error.invalidOperation(String.format(Sys.UI.TemplatesRes.commonNotAfterInit, "Binding", "mode"));
        }
        this._mode = value;
    },
    get_defaultValue: function Binding$get_defaultValue() {
        /// <value mayBeNull="true" locid="P:J#Sys.Binding.defaultValue">The value to use when the source path evalulates to null or undefined.</value>
        return this._defaultValue;
    },
    set_defaultValue: function Binding$set_defaultValue(value) {
        this._defaultValue = value;
    },
    get_source: function Binding$get_source() {
        /// <value mayBeNull="true" locid="P:J#Sys.Binding.source">The source input</value>
        return this._source || null;
    },
    set_source: function Binding$set_source(value) {
        if (this._initialized) {
            throw Error.invalidOperation(String.format(Sys.UI.TemplatesRes.commonNotAfterInit, "Binding", "source"));
        }
        if (value instanceof Sys.ComponentSet || value instanceof Sys.ElementSet) {
            value = value.get(0);
        }
        this._source = value;
    },
    get_templateContext: function Binding$get_templateContext() {
        /// <value mayBeNull="true" type="Sys.UI.TemplateContext" locid="P:J#Sys.Binding.templateContext"></value>
        return this._templateContext || null;
    },
    set_templateContext: function Binding$set_templateContext(value) {
        this._templateContext = value;
    },
    get_path: function Binding$get_path() {
        /// <value type="String" mayBeNull="true" locid="P:J#Sys.Binding.path">The source datapath input</value>
        return this._path || "";
    },
    set_path: function Binding$set_path(value) {
        if (this._initialized) {
            throw Error.invalidOperation(String.format(Sys.UI.TemplatesRes.commonNotAfterInit, "Binding", "path"));
        }
        this._path = value;
        this._pathArray = value ? value.split('.') : null;
    },
    get_target: function Binding$get_target() {
        /// <value mayBeNull="true" locid="P:J#Sys.Binding.target">The target object.</value>
        return this._target || null;
    },
    set_target: function Binding$set_target(value) {
        if (this._initialized) {
            throw Error.invalidOperation(String.format(Sys.UI.TemplatesRes.commonNotAfterInit, "Binding", "target"));
        }
        if (value instanceof Sys.ComponentSet || value instanceof Sys.ElementSet) {
            value = value.get(0);
        }
        this._target = value;
    },
    get_targetProperty: function Binding$get_targetProperty() {
        /// <value type="String" mayBeNull="true" locid="P:J#Sys.Binding.targetProperty">The target data path input</value>
        return this._targetProperty || "";
    },
    set_targetProperty: function Binding$set_targetProperty(value) {
        if (this._initialized) {
            throw Error.invalidOperation(String.format(Sys.UI.TemplatesRes.commonNotAfterInit, "Binding", "targetProperty"));
        }
        this._targetProperty = value;
        this._targetPropertyArray = value ? value.split('.') : null;
    },
    _addBinding: function Binding$_addBinding(element) {
        if (element.nodeType === 3) {
            element = element.parentNode;
            if (!element) return;
        }
        var bindings = element.__msajaxbindings = element.__msajaxbindings || [];
        bindings.push(this);
        Sys.UI.DomElement._onDispose(element, Sys.Binding._disposeBindings);
    },
    dispose: function Binding$dispose() {
        /// <summary locid="M:J#Sys.Binding.dispose"></summary>
        if (!this._disposed) {
            this._disposed = true;
            this._watchObject(null);
            this._watchObject(null, true);
            this._targetHandlers = null;
            this._sourceHandlers = null;
            var source = this._source,
                target = this._target;
            if (source) {
                if (this._sourceOption) Sys.Observer.removeEventHandler(source, "optionsChanged", this._onOptionsUpdated);
                if (Sys.INotifyDisposing.isImplementedBy(source)) source.remove_disposing(this._onDispose);
            }
            if (target) {
                if (this._targetOption) Sys.Observer.removeEventHandler(target, "optionsChanged", this._onOptionsUpdated);
                if (Sys.INotifyDisposing.isImplementedBy(target)) target.remove_disposing(this._onDispose);
            }
            this._convert = null;
            this._convertBack = null;
            this._convertFn = null;
            this._convertBackFn = null;
            this._lastSource = null;
            this._lastTarget = null;
            this._source = null;
            this._target = null;
            this._pathArray = null;
            this._defaultValue = null;
            this._targetPropertyArray = null;
            this._templateContext = null;
        }
        Sys.Binding.callBaseMethod(this, 'dispose');
    },
    _getPropertyFromIndex: function Binding$_getPropertyFromIndex(obj, path, startIndex, endIndex) {
        for (var i = startIndex; i <= endIndex; i++) {
            if (obj === null || typeof(obj) === "undefined") {
                return null;
            }
            obj = this._getPropertyData(obj, path[i]);
        }
        return obj;
    },
    _getPropertyData: function Binding$_getPropertyData(obj, name) {
        if (typeof (obj["get_" + name]) === "function") {
            return obj["get_" + name]();
        }
        else {
            return obj[name];
        }
    },
    _watchObject: function Binding$_watchObject(object, isSource) {
        var path = isSource ? this._pathArray : this._targetPropertyArray,
            handlers = isSource ? this._sourceHandlers : this._targetHandlers,
            observable = !!object;
        if (path) {
            for (var i = 0, l = path.length; i < l; i++) {
                var property = path[i],
                    handler = handlers[i];
                if (!handler || handler.object !== object) {
                    if (handler) {
                        this._forget(handler);
                        handlers[i] = null;
                    }
                    if (observable) {
                        handlers[i] = this._listen(object, property, isSource);
                    }
                }
                if (observable) {
                    object = this._getPropertyData(object, property);
                    observable = (object && (typeof(object) === "object" || (object instanceof Array) || Sys._isDomElement(object)));
                }
                else {
                    object = null;
                }
            }
        }
    },
    _isInput: function Binding$_isInput(element, property) {
        var ret,
            tag = (Sys.UI.DomElement.isDomElement(element) && element.nodeType === 1 && element.tagName) ?
                element.tagName.toLowerCase() : "";
        if (tag === "select" || tag === "input" || tag === "textarea") {
            property = (property||"").toLowerCase();
            if (property === "value" || property === "selectedindex" || property === "checked") {
                if (tag !== "input" || (tag === "input" && !/button|image|hidden|submit|reset/i.test(element.type))) {
                    ret = tag;
                }
            }
        }
        return ret;
    },
    _listen: function Binding$_listen(object, property, isSource) {
        var _this = this,
            listener = isSource ? this._onSourceChanged : this._onTargetChanged,
            handlers = {
                listener: listener,
                object: object,
                pc: function(sender, args) {
                    var changed = args.get_propertyName();
                    if (!changed || changed === property) {
                        listener();
                    }
                },
                dom: []
            };
        Sys.Observer._addEventHandler(object, "propertyChanged", handlers.pc);
        var isInput = this._isInput(object, property),
            adder = Sys.UI.DomEvent.addHandler;
        if (isInput) {
            handlers.dom.push("change");
            adder(object, "change", listener);
            if (isInput !== "textarea") {
                handlers.dom.push("click");
                adder(object, "click", listener);
                if (isInput === "select") {
                    handlers.dom.push("keyup");
                    adder(object, "keyup", listener);
                }
            }
        }
        object = null;
        return handlers;
    },
    _forget: function Binding$_forget(handler) {
        var object = handler.object,
            dom = handler.dom;
        Sys.Observer._removeEventHandler(object, "propertyChanged", handler.pc);
        for (var i = 0, l = dom.length; i < l; i++) {
            Sys.UI.DomEvent.removeHandler(object, dom[i], handler.listener);
        }
    },
    _resolveFunction: function Binding$_resolveFunction(value) {
        var e, ret;
        if (typeof(value) === 'function') { // this is a function, call it directly.
            ret = value;
        }
        else {
            if (typeof(value) !== "string") {
                throw Error.invalidOperation(String.format(Sys.UI.TemplatesRes.invalidFunctionName, value));
            }
            ret = Sys.converters[value];
            if (!ret) {
                try {
                    ret = Type.parse(value);
                }
                catch (e) {
                    throw Error.invalidOperation(String.format(Sys.UI.TemplatesRes.functionNotFound, value));
                }
            }
        }
        return ret;
    },
    update: function Binding$update(mode) {
        /// <summary locid="M:J#Sys.Binding.update"></summary>
        /// <param name="mode" optional="true" mayBeNull="true">The updating direction.</param>
        if (!this._initialized) {
            throw Error.invalidOperation(Sys.UI.TemplatesRes.updateBeforeInit);
        }
        mode = mode || this.get_mode();
        if (mode === Sys.BindingMode.oneWayToSource) {
            this._targetChanged(true);
        }
        else {
            this._sourceChanged(true);
        }
    },
    _notSet: function Binding$_notSet(name) {
       throw Error.invalidOperation(String.format(Sys.UI.TemplatesRes.bindingPropertyNotSet, name));
    },
    initialize: function Binding$initialize() {
        if (!this.get_isInitialized()) {
            if (!this.get_targetProperty()) {
                this._notSet("targetProperty");
            }
            var tc = this.get_templateContext();
            if (!tc) {
                this._doInitialize();
            }
            else {
                tc._completed.push(Function.createDelegate(this, this._doInitialize));
            }
        }
    },
    _doInitialize: function Binding$_doInitialize() {
        var source = this.get_source(),
            target = this.get_target();
        if (typeof(source) === "string") {
            this.set_source(source = this._resolveReference(source) || null);
        }
        if (typeof(target) === "string") {
            this.set_target(target = this._resolveReference(target) || null);
        }
        var mode = this.get_mode();
        if (target && (mode === Sys.BindingMode.auto)) {
            mode = "oneWay";
            if ((this._isInput(target, this._targetPropertyArray ? this._targetPropertyArray[0] : "")) ||
                Sys.INotifyPropertyChange.isImplementedBy(target)) {
                mode = "twoWay";
            }
            mode = Sys.BindingMode[mode];
            this.set_mode(mode);
        }
        Sys.Binding.callBaseMethod(this, 'initialize');        
        this.update(mode);

        if (mode !== Sys.BindingMode.oneTime) {
            if (source) {
                if (mode !== Sys.BindingMode.oneWayToSource) {
                    this._watchObject(source, true);
                    if (Sys.INotifyDisposing.isImplementedBy(source)) {
                        source.add_disposing(this._onDispose);
                    }
                }
                if (Sys.UI.DomElement.isDomElement(source)) {
                    this._addBinding(source);
                }
            }
            if (target) {
                if (mode !== Sys.BindingMode.oneWay) {
                    this._watchObject(target);
                    if (Sys.INotifyDisposing.isImplementedBy(target)) {
                        target.add_disposing(this._onDispose);
                    }
                }
                if (Sys.UI.DomElement.isDomElement(target)) {
                    this._addBinding(target);
                }
            }
        }
        function listen(e, p) {
            if (Sys.UI.DomElement.isDomElement(e) && /^select$/i.test(e.tagName) && /^(selectedIndex|value)$/i.test(p)) {
                Sys.Observer.addEventHandler(e, "optionsChanged", this._onOptionsUpdated);
                return true;
            }
            return false;
        }
        if (source && mode >= 3) {
            this._sourceOption = listen.call(this, source, this.get_path());
        }
        if (target && mode <= 3) {
            this._targetOption = listen.call(this, target, this.get_targetProperty());
        }
    },
    _isChecked: function Binding$_isChecked(element, name) {
        return (name === "checked") && (element.tagName.toLowerCase() === "input");
    },
    _optionsUpdated: function Binding$_optionsUpdated(select) {
        if (!this._disposed) {
            this.update(select === this.get_source() ? 4/*oneWayToSource*/ : 2/*oneWay*/);
        }
    },
    _sourceChanged: function Binding$_sourceChanged(force) {
        if (this._disposed) return;
        force = force === true;
        var er,
            target = this.get_target(),
            source = this.get_source();
        if (!target) return;
        source = (source && this._pathArray)
                    ? this._getPropertyFromIndex(source, this._pathArray, 0, this._pathArray.length - 1)
                    : source;
        if (!this._updateSource && (force || (source !== this._lastSource))) {
            try {
                this._updateTarget = true;
                this._lastSource = this._lastTarget = source;
                if (this._convertFn) {
                    if (this._ignoreErrors) {
                        try {
                            source = this._convertFn(source, this);
                        }
                        catch (er) {}
                    }
                    else {
                        source = this._convertFn(source, this);
                    }
                }
                if ((source === null) || (typeof(source) === "undefined")) {
                    source = this.get_defaultValue();
                }
                if (this._targetProperty && this._targetProperty.startsWith("class:")) {
                    var className = this._targetProperty.substr(6).trim();
                    source ? Sys.UI.DomElement.addCssClass(target, className) : Sys.UI.DomElement.removeCssClass(target, className);
                }
                else {
                    var targetArrayLength = this._targetPropertyArray.length;
                    target = this._getPropertyFromIndex(target, this._targetPropertyArray, 0, targetArrayLength - 2);
                    if ((target !== null) && (typeof(target) !== "undefined")) {
                        var name = this._targetPropertyArray[targetArrayLength - 1],
                            isElement = Sys.UI.DomElement.isDomElement(target);
                        if (isElement) {
                            source = Sys.UI.Template._checkAttribute(name, source) || "";
                        }
                        if (isElement && (name === "innerHTML" || name === "innerText")) {
                            Sys.Application._clearContent(target);
                            if (name === "innerHTML") {
                                target.innerHTML = source;
                            }
                            else {
                                target.appendChild(document.createTextNode(source));
                            }
                            Sys.Observer.raisePropertyChanged(target, name);
                        }
                        else {
                            Sys.Observer._setValue(target, name, source);
                        }
                        if (source && isElement && this._isChecked(target, name)) {
                            var a = document.createAttribute(name);
                            a.nodeValue = name;
                            target.setAttributeNode(a);
                        }
                    }
                }
            }
            finally {
                this._updateTarget = false;
            }
        }
        if (!force) {
            this._watchObject(this.get_source(), true);
        }
    },
    _targetChanged: function Binding$_targetChanged(force) {
        if (this._disposed) return;
        force = force === true;
        var target = this.get_target(),
            source = this.get_source();
        if (!source) return;
        target = !target ? null : this._getPropertyFromIndex(target, this._targetPropertyArray, 
                                                0, this._targetPropertyArray.length - 1);
        if (!this._updateTarget && (force || (target !== this._lastTarget))) {
            try {
                this._updateSource = true;
                this._lastTarget = this._lastSource = target;
                if (this._convertBackFn) {
                    if (this._ignoreErrors) {
                        try {
                            target = this._convertBackFn(target, this);
                        }
                        catch (e) {}
                    }
                    else {
                        target = this._convertBackFn(target, this);
                    }
                }
                if (this._pathArray) {
                    var sourceArrayLength = this._pathArray.length;
                    source = this._getPropertyFromIndex(source, this._pathArray, 0, sourceArrayLength - 2);
                    if ((source !== null) && (typeof(source) !== "undefined")) {                     
                        var name = this._pathArray[sourceArrayLength - 1],
                            isElement = Sys.UI.DomElement.isDomElement(source);
                        if (isElement) {
                            target = Sys.UI.Template._checkAttribute(name, target);
                            if (name === "innerHTML") {
                                Sys.Application._clearContent(source);
                            }
                        }
                        Sys.Observer._setValue(source, name, target);
                        if (target && isElement && this._isChecked(source, name)) {
                            var a = document.createAttribute(name);
                            a.nodeValue = name;
                            source.setAttributeNode(a);
                        }
                    }
                }
            }
            finally {
                this._updateSource = false;
            }
        }
        if (!force) {
            this._watchObject(this.get_target());
        }
    },
    _resolveReference: function Binding$_resolveReference(str) {
        var ref = Sys.get(str, this.get_templateContext());
        if ((ref === null) || (typeof(ref) === "undefined")) {
            throw Error.invalidOperation(String.format(Sys.UI.TemplatesRes.unresolvedReference, str));
        }
        return ref || null;
    }
}
$type._disposeBindings = function Binding$_disposeBindings() {
    var bindings = this.__msajaxbindings;    
    if (bindings) {
        for(var i = 0, l = bindings.length; i < l; i++) {
            bindings[i].dispose();
        }
    }
    this.__msajaxbindings = null;
}
$type.registerClass("Sys.Binding", Sys.Component, Sys.UI.ITemplateContextConsumer);
Sys.converters = Sys.converters || {};

$type._bindThis = function (propertyOrOptions, source, path, options) {
    if (arguments.length > 1) {
        options = merge({
            targetProperty: propertyOrOptions,
            source: source,
            path: path
        }, options);
    }
    else {
        options = propertyOrOptions;
    }
    this.each(function() {
        options.target = this;
        Sys.binding(options);
    });
    return this;
}

Sys.registerPlugin({
    name: "binding",
    global: true,
    returnType: "Sys.Binding",
    description: "Creates a binding between two objects.",
    parameters: [
        { name: "targetOrOptions", description: "&lt;target: The target to bind to.??&gt; OR &lt;options (object): An object containing fields for each of the desired Sys.Binding properties to set&gt;" },
        { name: "property", description: "The property or attribute of the target to bind to." },
        { name: "source", description: "The object to bind from." },
        { name: "path", type: "String", description: "The property or dotted property path on the source object to bind from." },
        { name: "options", type: "Object", description: "An object containing fields for each of the desired Sys.Binding properties to set." }
    ],
    plugin: function(targetOrOptions, property, source, path, options) {
        if (arguments.length > 1) {
            options = merge({
                target: targetOrOptions,
                targetProperty: property,
                source: source,
                path: path,
                templateContext: Sys._isInstanceOfType(Sys.UI.TemplateContext, this) ? this : null
            }, options);
        }
        else {
            options = targetOrOptions;
        }
        var value = options.mode;
        if (typeof(value) === "string") {
            options.mode = Sys.BindingMode.parse(value);
        }
        value = options.ignoreErrors;
        if (typeof(value) === "string") {
            options.ignoreErrors = Boolean.parse(value);
        }
        var binding = new Sys.Binding();
        forIn(options, function(v, n) {
            if (typeof(v) !== "undefined") Sys.Observer.setValue(binding, n, v);
        });
        binding.initialize();
        return binding;
    }
});

Sys.registerPlugin({
    name: "domBinding",
    functionName: "binding",
    dom: true,
    returnType: "Sys.ElementSet",
    description: "Binds the set of objects to a given source.",
    parameters: [
        { name: "propertyOrOptions", description: "&lt;property (string): The property or attribute of the target to bind to&gt; OR &lt;options (object): An object containing fields for each of the desired Sys.Binding properties to set&gt;" },
        { name: "source", description: "The source object to bind to." },
        { name: "path", type:"String", description: "The property or dotted property path on the source object to bind to." },
        { name: "options", type:"Object", description: "An object containing fields for each of the desired Sys.Binding properties to set." }
    ],
    plugin: Sys.Binding._bindThis
});

Sys.registerPlugin({
    name: "componentBinding",
    functionName: "binding",
    components: true,
    returnType: "Sys.ComponentSet",
    description: "Binds the set of objects to a given source.",
    parameters: [
        { name: "propertyOrOptions", description: "&lt;property (string): The property or attribute of the target to bind to&gt; OR &lt;options (object): An object containing fields for each of the desired Sys.Binding properties to set&gt;" },
        { name: "source", description: "The source object to bind to." },
        { name: "path", type:"String", description: "The property or dotted property path on the source object to bind to." },
        { name: "options", type:"Object", description: "An object containing fields for each of the desired Sys.Binding properties to set." }
    ],
    plugin: Sys.Binding._bindThis
});


Sys.Application.registerMarkupExtension(
"binding", 
function(component, targetProperty, templateContext, properties) {
    var options = merge({
        source: templateContext.dataItem,
        templateContext: templateContext,
        target: component,
        targetProperty: targetProperty
    }, properties);
    options.path = options.path || options.$default;
    delete options.$default;
    var binding = Sys.binding(options);
    templateContext.components.push(binding);
}, 
false);
$type = Sys.UI.DataView = function DataView(element) {
    /// <summary locid="M:J#Sys.UI.DataView.#ctor">Uses a template to render a view of a data source.</summary>
    /// <param name="element">The element this control attaches to.</param>
    Sys.UI.DataView.initializeBase(this, [element]);
}
$type.prototype = {
    _autoFetch: false,
    _fetching: false,
    _changed: false,
    _data: null,
    _dataProvider: null,
    _wsp: null,
    _wspClass: null,
    _dirty: false,
    _stale: true,
    _dvTemplate: null,
    _eventType: 0,
    _httpVerb: null,
    _initialSelectedIndex: -1,
    _fetchParameters: null,
    _parentContext: null,
    _placeholder: null,
    _query: null,
    _contexts: null,
    _selectedIndex: -1,
    _selectedItemClass: null,
    _template: null,
    _timeout: 0,
    _request: null,
    add_command: function DataView$add_command(handler) {
    /// <summary locid="E:J#Sys.UI.DataView.command"></summary>
        this._addHandler("command", handler);
    },
    remove_command: function DataView$remove_command(handler) {
        this._removeHandler("command", handler);
    },
    add_rendering: function DataView$add_rendering(handler) {
    /// <summary locid="E:J#Sys.UI.DataView.rendering"></summary>
        this._addHandler("rendering", handler);
    },
    remove_rendering: function DataView$remove_rendering(handler) {
        this._removeHandler("rendering", handler);
    },
    add_rendered: function DataView$add_rendered(handler) {
    /// <summary locid="E:J#Sys.UI.DataView.rendered"></summary>
        this._addHandler("rendered", handler);
    },
    remove_rendered: function DataView$remove_rendered(handler) {
        this._removeHandler("rendered", handler);
    },
    add_itemRendered: function DataView$add_itemRendered(handler) {
    /// <summary locid="E:J#Sys.UI.DataView.itemRendered"></summary>
        this._addHandler("itemRendered", handler);
    },
    remove_itemRendered: function DataView$remove_itemRendered(handler) {
        this._removeHandler("itemRendered", handler);
    },
    add_itemRendering: function DataView$add_itemRendering(handler) {
    /// <summary locid="E:J#Sys.UI.DataView.itemRendering"></summary>
        this._addHandler("itemRendering", handler);
    },
    remove_itemRendering: function DataView$remove_itemRendering(handler) {
        this._removeHandler("itemRendering", handler);
    },
    add_fetchFailed: function DataView$add_fetchFailed(handler) {
    /// <summary locid="E:J#Sys.UI.DataView.fetchFailed"></summary>
        this._addHandler("fetchFailed", handler);
    },
    remove_fetchFailed: function DataView$remove_fetchFailed(handler) {
        this._removeHandler("fetchFailed", handler);
    },
    add_fetchSucceeded: function DataView$add_fetchSucceeded(handler) {
    /// <summary locid="E:J#Sys.UI.DataView.fetchSucceeded"></summary>
        this._addHandler("fetchSucceeded", handler);
    },
    remove_fetchSucceeded: function DataView$remove_fetchSucceeded(handler) {
        this._removeHandler("fetchSucceeded", handler);
    },
    get_viewData: function DataView$get_viewData() {
        /// <value mayBeNull="true" locid="P:J#Sys.UI.DataView.viewData">The data used to render the DataView.</value>
        return this._viewData || null;
    },
    get_data: function DataView$get_data() {
        /// <value mayBeNull="true" locid="P:J#Sys.UI.DataView.data">The data the DataView is bound to.</value>
        return this._data;
    },
    set_data: function DataView$set_data(value) {
        if (!this._setData || (this._data !== value)) {
            this._loadData(value);
        }
    },
    get_dataProvider: function DataView$get_dataProvider() {
        /// <value mayBeNull="true" locid="P:J#Sys.UI.DataView.dataProvider">The data provider to fetch data from. May be a JSON webservice service URI, instance of a Sys.Net.WebServiceProxy, or a class that implements Sys.Data.IDataProvider.</value>
        return this._provider || null;
    },
    set_dataProvider: function DataView$set_dataProvider(value) {
        this._dataProvider = this._wsp = this._wspClass = null;
        if (value instanceof Sys.ComponentSet) {
            value = value.get(0);
        }
        if (Sys.Data.IDataProvider.isImplementedBy(value)) {
            this._dataProvider = value;
        }
        else if (Sys.Net.WebServiceProxy.isInstanceOfType(value)) {
            this._wsp = value;
        }
        else if (Type.isClass(value) && value.inheritsFrom(Sys.Net.WebServiceProxy) && typeof(value.get_path) === "function") {
            this._wspClass = value;
        }
        else if ((value !== null) && (typeof(value) !== "string")) {
            throw Error.argument("dataProvider", Sys.UI.TemplatesRes.invalidDataProviderType);
        }
        this._provider = value;
        if (this.get_autoFetch() && this._isActive()) {
            if (value) {
                this._doAutoFetch();
            }
        }
        else {
            this._stale = true;
        }
    },
    get_autoFetch: function DataView$get_autoFetch() {
        /// <value locid="P:J#Sys.UI.DataView.autoFetch"></value>
        return this._autoFetch;
    },
    set_autoFetch: function DataView$set_autoFetch(value) {
        var was = this._autoFetch;
        if (typeof(value) === "string") {
            value = Boolean.parse(value);
        }
        else if (typeof(value) !== "boolean") {
            throw Error.invalidOperation(Sys.UI.TemplatesRes.stringOrBoolean);
        }
        this._autoFetch = value;
        if (this._isActive() && this._stale && !was && value) {
            this._doAutoFetch();
        }
    },
    get_isFetching: function DataView$get_isFetching() {
        /// <value type="Boolean" locid="P:J#Sys.UI.DataView.isFetching"></value>
        return this._fetching;
    },
    get_httpVerb: function DataView$get_httpVerb() {
        /// <value type="String" locid="P:J#Sys.UI.DataView.httpVerb"></value>
        return this._httpVerb || "POST";
    },
    set_httpVerb: function DataView$set_httpVerb(value) {
        this._httpVerb = value;
    },
    get_contexts: function DataView$get_contexts() {
        /// <value type="Array" elementType="Sys.UI.TemplateContext" elementMayBeNull="true" locid="P:J#Sys.UI.DataView.contexts"></value>
        return this._contexts;
    },
    get_fetchParameters: function DataView$get_fetchParameters() {
        /// <value type="Object" mayBeNull="true" locid="P:J#Sys.UI.DataView.fetchParameters">A dictionary of parameters to pass to the data service when fetching data.</value>
        return this._fetchParameters;
    },
    set_fetchParameters: function DataView$set_fetchParameters(value) {
        if (this._fetchParameters !== value) {
            this._fetchParameters = value;
            if (this.get_autoFetch() && this._isActive()) {
                this._doAutoFetch();
            }
            else {
                this._stale = true;
            }
        }
    },
    get_selectedData: function DataView$get_selectedData() {
        /// <value mayBeNull="true" locid="P:J#Sys.UI.DataView.selectedData">The data that is currently selected, or null if none.</value>
        var ret = null, selectedIndex = this.get_selectedIndex();
        if (selectedIndex > -1) {
            var data = this.get_viewData();
            if (data instanceof Array) {
                if (selectedIndex < data.length) {
                    ret = data[selectedIndex];
                }
            }
            else {
                ret = data;
            }
        }
        return ret;
    },
    get_selectedIndex: function DataView$get_selectedIndex() {
        /// <value locid="P:J#Sys.UI.DataView.selectedIndex">The current selected index.</value>
        return this._selectedIndex;
    },
    set_selectedIndex: function DataView$set_selectedIndex(value) {
        value = this._validateIndexInput(value);
        if (value < -1) {
            throw Error.argumentOutOfRange("value", value);
        }
        if (!this.get_isInitialized() || !this._setData) {
            this._selectedIndex = value;
        }
        else {
            this._applySelectedIndex(value);
        }
    },
    get_initialSelectedIndex: function DataView$get_initialSelectedIndex() {
        /// <value locid="P:J#Sys.UI.DataView.initialSelectedIndex">The initial selected index that selectedIndex will default to when data is loaded.</value>
        return this._initialSelectedIndex;
    },
    set_initialSelectedIndex: function DataView$set_initialSelectedIndex(value) {
        value = this._validateIndexInput(value);
        if (value < -1) {
            throw Error.argumentOutOfRange("value", value);
        }
        if (value !== this.get_initialSelectedIndex()) {
            this._initialSelectedIndex = value;
            this._raiseChanged("initialSelectedIndex");
        }
    },
    get_selectedItemClass: function DataView$get_selectedItemClass() {
        /// <value type="String" locid="P:J#Sys.UI.DataView.selectedItemClass"></value>
        return this._selectedItemClass || "";
    },
    set_selectedItemClass: function DataView$set_selectedItemClass(value) {
        var name = this.get_selectedItemClass();
        if (value !== name) {
            var index = this.get_selectedIndex();
            this._addRemoveCssClass(index, name, Sys.UI.DomElement.removeCssClass);
            this._addRemoveCssClass(index, value, Sys.UI.DomElement.addCssClass);
            this._selectedItemClass = value;
        }
    },
    get_timeout: function DataView$get_timeout() {
        /// <value type="Number" integer="true" locid="P:J#Sys.UI.DataView.timeout"></value>
        return this._timeout;
    },
    set_timeout: function DataView$set_timeout(value) {
        this._timeout = value;
    },
    get_fetchOperation: function DataView$get_fetchOperation() {
        /// <value mayBeNull="true" locid="P:J#Sys.UI.DataView.fetchOperation"></value>
        return this._query || "";
    },
    set_fetchOperation: function DataView$set_fetchOperation(value) {
        if (this._query !== value) {
            this._query = value;
            if (this.get_autoFetch() && this._isActive()) {
                if (value) {
                    this._doAutoFetch();
                }
            }
            else {
                this._stale = true;
            }
        }
    },    
    get_itemPlaceholder: function DataView$get_itemPlaceholder() {
        /// <value mayBeNull="true" locid="P:J#Sys.UI.DataView.itemPlaceholder">The DOM element or DOM element id next to which the DataView renders the item template.</value>
        return this._placeholder || null;
    },
    set_itemPlaceholder: function DataView$set_itemPlaceholder(value) {
        if (this._placeholder !== value) {
            this._placeholder = value;
            this._dirty = true;
            this._raiseChanged("itemPlaceholder");
        }
    },
    get_templateContext: function DataView$get_templateContext() {
        /// <value mayBeNull="true" type="Sys.UI.TemplateContext" locid="P:J#Sys.UI.DataView.templateContext">Used by nested templates to provide the context of the parent template.</value>
        return this._parentContext || Sys.UI.Template.findContext(this.get_element());
    },
    set_templateContext: function DataView$set_templateContext(value) {
        if (this._parentContext !== value) {
            this._parentContext = value;
            this._dirty = true;
            this._raiseChanged("templateContext");
        }
    },    
    get_itemTemplate: function DataView$get_itemTemplate() {
        /// <value mayBeNull="true" locid="P:J#Sys.UI.DataView.itemTemplate">The template to instantiate.</value>
        return this._template || null;
    },
    set_itemTemplate: function DataView$set_itemTemplate(value) {
        if (this._template !== value) {
            this._template = value;
            this._dirty = true;
            if (this._dvTemplate) {
                this._dvTemplate.dispose();
                this._dvTemplate = null;
            }
            if (this._isActive()) {
                this.raisePropertyChanged("itemTemplate");
                this.refresh();
            }
            else {
                this._changed = true;
            }
        }
    },
    _applySelectedIndex: function DataView$_applySelectedIndex(value, force) {
        var currentIndex = this.get_selectedIndex();
        if (force || (value !== currentIndex)) {
            var data = this.get_viewData(); 
            if (!(data instanceof Array)) {
                data = [data];
            }
            var outOfRange = (value < -1) || (value >= data.length);
            if (outOfRange) {
                throw Error.argumentOutOfRange("value", value);
            }
            this._selectedIndex = value;
            this._currentData = ((value === -1) || outOfRange) ? null : data[value];
            var className = this.get_selectedItemClass();
            this._addRemoveCssClass(currentIndex, className, Sys.UI.DomElement.removeCssClass);
            this._addRemoveCssClass(value, className, Sys.UI.DomElement.addCssClass);
            if (!this.get_isUpdating()) {
                if (value !== currentIndex) {
                    this.raisePropertyChanged('selectedIndex');
                }
            }
            else {
                this._changed = true;
            }
        }
        if (!this.get_isUpdating()) {
            this._raiseSelectedData();
        }
        else {
            this._changed = true;
        }
    },
    _addRemoveCssClass: function DataView$_addRemoveCssClass(index, className, addRemove) {
        if (className && (index > -1)) {
            var items = this.get_contexts(), l = items ? items.length : -1;
            if (l && (index < l)) {
                var elementsSet = items[index].nodes;
                if (elementsSet) {
                    for (var i = 0, len = elementsSet.length; i < len; i++) {
                        var element = elementsSet[i];
                        if (element.nodeType === 1) {
                            addRemove(element, className);
                        }
                    }
                }
            }
        }
    },
    _collectionChanged: function DataView$_collectionChanged(sender, args) {
        var oldSelected = this._currentData,
            changes = args.get_changes(),
            selectedIndex = this.get_selectedIndex(), oldIndex = selectedIndex;
        if (this._isActive()) {
            this._changing = true;
            this.refresh();
        }
        else {
            this._dirty = true;
            return;
        }
        var data = this.get_viewData();
        if ((selectedIndex !== -1) && (selectedIndex < data.length) &&
            (data[selectedIndex] === oldSelected)) {
            return;
        }
        for (var i = 0, l = changes.length; i < l; i++) {
            var change = changes[i];
            if (change.action === Sys.NotifyCollectionChangedAction.add) {
                if (selectedIndex >= change.newStartingIndex) {
                    selectedIndex += change.newItems.length;
                }
            }
            else {
                var index = change.oldStartingIndex, len = change.oldItems.length, lastIndex = index + len - 1;
                if (selectedIndex > lastIndex) {
                    selectedIndex -= len;
                }
                else if (selectedIndex >= index) {
                    selectedIndex = -1;
                    break;
                }
            }
        }
        if (selectedIndex !== oldIndex) {
            this.set_selectedIndex(selectedIndex);
        }
    },
    _elementContains: function DataView$_elementContains(container, element, excludeSelf) {
        if (container === element) {
            return !excludeSelf;
        }
        do {
            element = element.parentNode;
            if (element === container) return true;
        }
        while (element);
        return false;
    },
    _raiseChanged: function DataView$_raiseChanged(name) {
        if (this._isActive()) {
            this.raisePropertyChanged(name);
        }
        else {
            this._changed = true;
        }
    },
    _raiseFailed: function DataView$_raiseFailed(request, error) {
	    var args = new Sys.Net.WebRequestEventArgs(request ? request.get_executor() : null, error);
        this.onFetchFailed(args);
        Sys.Observer.raiseEvent(this, "fetchFailed", args);
    },
    _raiseSelectedData: function DataView$_raiseSelectedData() {
        if (this._lastData !== this._currentData) {
            this._lastData = this._currentData;
            this.raisePropertyChanged('selectedData');
        }
    },
    _raiseSucceeded: function DataView$_raiseSucceeded(request, result) {
	    var args = new Sys.Net.WebRequestEventArgs(request ? request.get_executor() : null, null, result);
        this.onFetchSucceeded(args);
        Sys.Observer.raiseEvent(this, "fetchSucceeded", args);
    },
    _ensureTemplate: function DataView$_ensureTemplate(template) {
        if (!Sys.UI.Template.isInstanceOfType(template)) {
            template = Sys.UI.DomElement._ensureGet(template, this.get_templateContext(), "itemTemplate");
            if (template) {
                template = new Sys.UI.Template(template);
            }
        }
        return template;
    },
    _getTemplate: function DataView$_getTemplate() {
        if (this._dvTemplate) return this._dvTemplate;
        var template = this.get_itemTemplate();
        if (!template) {
            var element = this.get_element();
            if (Sys.UI.Template._isTemplate(element)) {
                this._dvTemplate = template = new Sys.UI.Template(element);
            }
        }
        else if (!Sys.UI.Template.isInstanceOfType(template)) {
            template = Sys.UI.DomElement._ensureGet(template, this.get_templateContext(), "itemTemplate");
            var e = this.get_element();
            if ((e !== template) && this._elementContains(e, template, true)) {
                throw Error.invalidOperation(Sys.UI.TemplatesRes.misplacedTemplate);
            }
            this._dvTemplate = template = new Sys.UI.Template(template);
        }
        else {
            if (this._elementContains(this.get_element(), template.get_element(), true)) {
                throw Error.invalidOperation(Sys.UI.TemplatesRes.misplacedTemplate);
            }
        }
        return template;
    },
    _loadData: function DataView$_loadData(value) {
        this._swapData(this._data, value);
        this._data = value;
        this._setData = true;
        this._stale = false;
        this._dirty = true;
        if (this._isActive()) {
            this.refresh();
            this.raisePropertyChanged("data");
        }
        else {
            this._changed = true;
        }
    },
    _resetSelectedIndex: function DataView$_resetSelectedIndex() {
        var data = this.get_viewData(), initialSelectedIndex = this.get_initialSelectedIndex(),
            selectedIndex = this.get_selectedIndex();
        if (!(data instanceof Array) || (initialSelectedIndex >= data.length)) {
            if (selectedIndex !== -1) {
                this.set_selectedIndex(-1);
                return;
            }
        } 
        else if (selectedIndex !== initialSelectedIndex) {
            this.set_selectedIndex(initialSelectedIndex);
            return;
        }
        this._currentData = this.get_selectedData();
        this._raiseSelectedData();
    },
    _initializeResults: function DataView$_initializeResults() {
        for (var i = 0, l = this._contexts.length; i < l; i++) {
            var ctx = this._contexts[i];
            if (ctx) ctx.initializeComponents();
        }
    },    
    _isActive: function DataView$_isActive() {
        return (this.get_isInitialized() && !this.get_isUpdating());
    },
    _raiseCommand: function DataView$_raiseCommand(args) {
        this.onCommand(args);
        Sys.Observer.raiseEvent(this, "command", args);
    },
    _raiseItem: function DataView$_raiseItem(type, args) {
        this['onItem' + type](args);
        Sys.Observer.raiseEvent(this, "item" + type, args);
    },
    abortFetch: function DataView$abortFetch() {
        /// <summary locid="M:J#Sys.UI.DataView.abortFetch">Aborts the current fetch request, if any.</summary>
        if (this._request) {
            this._request.get_executor().abort();
            this._request = null;
        }
        if (this._fetching) {
            this._fetching = false;
            this._raiseChanged("isFetching");
        }
    },    
    onBubbleEvent: function DataView$onBubbleEvent(source, args) {
        /// <summary locid="M:J#Sys.UI.DataView.onBubbleEvent"></summary>
        /// <param name="source">The object that triggered the event.</param>
        /// <param name="args" type="Sys.EventArgs">The event arguments.</param>
        /// <returns type="Boolean">If either the command is handled by a custom handler (args.set_cancel(true) is called), or  the command is 'select' and a selection is done, return true and stop bubbling. Otherwise, return false, and let the command bubbled up the hierarchy.</returns>
        if (Sys.CommandEventArgs.isInstanceOfType(args)) {
            this._raiseCommand(args);
            if (args.get_cancel()) {
                return true;
            }
            else {
                var name = args.get_commandName();
                if (name && (name.toLowerCase() === "select")) {
                    var index = args.get_commandArgument();
                    if (typeof(index) === "string") {
                        index = parseInt(index);
                    }
                    if (isNaN(index) || index === null) {
                        index = this._findContextIndex(source);
                        if (index === -1) {
                            index = this._findContextIndex(args.get_commandSource());
                            if (index === -1) {
                                index = null;
                            }
                        }
                    }
                    if (typeof(index) === "number") {
                        this.set_selectedIndex(index);
                        return true;
                    }
                }
            }
        }
        return false;
    },
    onRendering: function DataView$onRendering(args) {
        /// <summary locid="M:J#Sys.UI.DataView.onRendering">Called when a new set of data is about to be rendered by the DataView control.</summary>
        /// <param name="args" type="Sys.UI.DataViewEventArgs">Information about the data that is about to render.</param>
    },
    onRendered: function DataView$onRendered(args) {
        /// <summary locid="M:J#Sys.UI.DataView.onRendered">Called when a new set of data has rendered.</summary>
        /// <param name="args" type="Sys.UI.DataViewEventArgs">Information about the data that rendered.</param>
    },
    onFetchFailed: function DataView$onFetchFailed(args) {
        /// <summary locid="M:J#Sys.UI.DataView.onFetchFailed">Called when a request to fetch data has failed.</summary>
        /// <param name="args" type="Sys.Net.WebRequestEventArgs"></param>
    },
    onFetchSucceeded: function DataView$onFetchSucceeded(args) {
        /// <summary locid="M:J#Sys.UI.DataView.onFetchSucceeded">Called when a request to fetch data has succeeded.</summary>
        /// <param name="args" type="Sys.Net.WebRequestEventArgs"></param>
    },
    _doAutoFetch: function DataView$_doAutoFetch() {
        var e;
        try {
            if (this._dataProvider || this._provider) {
                this.fetchData();
                this._stale = false;
            }
        }
        catch (e) {
            this._raiseFailed(null, null);
        }
    },
    _findContextIndex: function DataView$_findContextIndex(source) {
        var containers = this._containers;
        if (source && containers) {
            var results = this.get_contexts();
            if (results) {
                var element = Sys.UI.DomElement._ensureGet(source, this.get_templateContext(), "source");
                if (element) {
                    var parent = element.parentNode, dvElement = this.get_element(), cindex = -1;
                    while (parent && ((cindex = Sys._indexOf(containers, parent)) < 0) && (parent !== dvElement)) {
                        element = parent;
                        parent = parent.parentNode;
                    }
                    if (cindex > -1) {
                        var container = containers[cindex];
                        for (var i = 0, l = results.length; i < l; i++) {
                            var result = results[i];
                            if ((result.containerElement === container) && (Sys._indexOf(result.nodes, element) > -1)) {
                                return i;
                            }
                        }
                    }
                }
            }
        }
        return -1;
    },
    findContext: function DataView$findContext(source) {
        /// <summary locid="M:J#Sys.UI.DataView.findContext">Finds the item context for a given DOM element.</summary>
        /// <param name="source">The element or element ID to get the context from.</param>
        /// <returns type="Sys.UI.TemplateContext" mayBeNull="true"></returns>
        var index = this._findContextIndex(source);
        return (index !== -1) ? this.get_contexts()[index] : null;
    },
    _clearContainer: function DataView$_clearContainer(container, placeholder) {
        var count = placeholder ? placeholder.__msajaxphcount : -1;
        if ((count > -1) && placeholder) placeholder.__msajaxphcount = 0;
        if (count < 0) {
            if (placeholder) {
                container.removeChild(placeholder);
            }
            Sys.Application.disposeElement(container, true);
            try {
                container.innerHTML = "";
            }
            catch(err) {
                var child;
                while((child = container.firstChild)) {
                    container.removeChild(child);
                }
            }
            if (placeholder) {
                container.appendChild(placeholder);
            }
        }
        else if (count > 0) {
            var i, l, start, children = container.childNodes;
            for (i = 0, l = children.length; i < l; i++) {
                if (children[i] === placeholder) {
                    break;
                }
            }
            start = i - count;
            for (i = 0; i < count; i++) {
                var element = children[start];
                Sys.Application.disposeElement(element, false);
                container.removeChild(element);
            }
        }
    },
    _clearContainers: function DataView$_clearContainers(placeholders) {
        var i, l;
        for (i = 0, l = placeholders.length; i < l; i++) {
            var ph = placeholders[i],
                container = ph ? ph.parentNode : this.get_element();
            this._clearContainer(container, ph);
        }
        for (i = 0, l = this._contexts.length; i < l; i++) {
            var ctx = this._contexts[i];
            ctx.nodes = null;
            ctx.dispose();
        }
    },
    _isAlone: function DataView$_isAlone(container, ph) {
        var childNodes = container.childNodes;
        if (childNodes.length === 1) return true;
        var node = container.firstChild, notWhitespace = /\S/;
        while (node) {
            if (node !== ph) {
                var type = node.nodeType;
                if (type === 3) {
                    if (notWhitespace.test(node.nodeValue)) return false;
                }
                else if (type !== 8) {
                    return false;
                }
            }
            node = node.nextSibling;
        }
        return true;
    },
    refresh: function DataView$refresh() {
        /// <summary locid="M:J#Sys.UI.DataView.refresh">Forces a refresh of the rendering of the current data. Normally, a refresh occurs automatically when the data changes.</summary>
        if (!this._setData) return;
        var collectionChange = this._changing;
        this._changing = false;
        var data = this.get_data(),
            pctx = this.get_templateContext(),        
            renderArgs = new Sys.UI.DataViewEventArgs(data);
        renderArgs.itemTemplate = this._getTemplate();
        renderArgs.itemPlaceholder = Sys.UI.DomElement._ensureGet(this.get_itemPlaceholder(), pctx, "itemPlaceholder");
        this.onRendering(renderArgs);
        Sys.Observer.raiseEvent(this, "rendering", renderArgs);
        if (renderArgs.get_cancel()) return;
        this._viewData = data = renderArgs.data;

        var template = this._ensureTemplate(renderArgs.itemTemplate);
        this._dirty = false;
        var ph = Sys.UI.DomElement._ensureGet(renderArgs.itemPlaceholder, pctx, "itemPlaceholder"),
            element = this.get_element(),
            result, itemTemplate, args;
        if (this._placeholders) {
            this._clearContainers(this._placeholders);
        }
        var list = data;
        var len;
        if ((data === null) || (typeof(data) === "undefined")) {
            len = 0;
        }
        else if (!(data instanceof Array)) {
            list = [data];
            len = 1;
        }
        else {
            len = data.length;
        }
        function clearAndShow() {
            if (!this._cleared) {
                if (Sys.UI.Template._isTemplate(element)) {
                    var selfTemplate = new Sys.UI.Template(element);
                    selfTemplate._ensureCompiled();
                    selfTemplate.dispose();
                    Sys.UI.DomElement.removeCssClass(element, "sys-template");
                }
                this._clearContainer(element, null);
                element.__msajaxphcount = -1;
                this._cleared = true;
            }
        }
        if (!len && template && template.get_element() === element) {
            clearAndShow.call(this);
        }
        var currentPh, lastPh, placeholders, container, containers, optionsChanged;
        this._placeholders = placeholders = [];
        this._containers = containers = [];
        this._contexts = new Array(len);
        if (ph) ph.style.display = 'none';
        for (var i = 0; i < len; i++) {
            var item = list[i];
            args = new Sys.UI.DataViewEventArgs(item);
            args.itemTemplate = template;
            args.itemPlaceholder = ph;
            this._raiseItem("Rendering", args);
            itemTemplate = this._ensureTemplate(args.itemTemplate);
            currentPh = Sys.UI.DomElement._ensureGet(args.itemPlaceholder, pctx, "itemPlaceholder");
            currentPh = currentPh ? (currentPh.__msajaxphoption || currentPh) : null;
            if (currentPh !== lastPh) {
                container = currentPh ? currentPh.parentNode : element;
                if (Sys._indexOf(placeholders, currentPh) < 0) {
                    if (currentPh) {
                        if (/^option$/i.test(currentPh.tagName) && /select/i.test(container.tagName)) {
                            var newPh = document.createElement('_hiddenPlaceholder');
                            container.replaceChild(newPh, currentPh);
                            currentPh.__msajaxphoption = newPh;
                            newPh.appendChild(currentPh);
                            currentPh = newPh;
                        }
                        currentPh.style.display = 'none';
                        var phcount = currentPh.__msajaxphcount;
                        if (typeof(phcount) === "undefined" && this._isAlone(container, currentPh)) {
                            currentPh.__msajaxphcount = -1;
                            this._clearContainer(container, currentPh);
                        }
                    }
                    else {
                        clearAndShow.call(this);
                    }
                    placeholders.push(currentPh);
                    if (Sys._indexOf(containers, container) < 0) {
                        containers.push(container);
                        if (/^select$/i.test(container.tagName)) {
                            optionsChanged = optionsChanged || [];
                            optionsChanged.push(container);
                        }
                    }
                }
            }
            lastPh = currentPh;
            if (itemTemplate) {
                result = itemTemplate.instantiateIn(container, data, item, i, currentPh, pctx);
            }
            else {
                result = merge(new Sys.UI.TemplateContext(), {
                    nodes: [],
                    dataItem: item,
                    data: data,
                    index: i,
                    parentContext: pctx
                });
            }
            args.context = result;
            this._contexts[i] = result;
            this._raiseItem("Rendered", result);
            if (itemTemplate && currentPh) {
                var count = currentPh.__msajaxphcount || 0;
                if (count > -1) {
                    currentPh.__msajaxphcount = count + result.nodes.length;
                }
            }
        }
        
        if (optionsChanged) {
            for (i = 0; i < optionsChanged.length; i++) {
                Sys.Observer.raiseEvent(optionsChanged[i], "optionsChanged", Sys.EventArgs.Empty);
            }
        }

        if (!collectionChange) {
            if (!this._rendered && this.get_selectedIndex() > -1) {
                this._applySelectedIndex(this.get_selectedIndex(), true);
            }
            else {
                this._resetSelectedIndex();
            }
        }
        this._rendered = true;

        var selectedClass = this.get_selectedItemClass();
        if (selectedClass) {
            var selectedIndex = this.get_selectedIndex();
            if (selectedIndex !== -1) {
                this._addRemoveCssClass(selectedIndex, selectedClass, Sys.UI.DomElement.addCssClass);
            }
        }
        this.raisePropertyChanged("viewData");
        this.onRendered(renderArgs);
        Sys.Observer.raiseEvent(this, "rendered", renderArgs);
        this._initializeResults();
    },
    _swapData: function DataView$_swapData(oldData, newData) {
        if (oldData) {
            switch (this._eventType) {
                case 1:
                    oldData.remove_collectionChanged(this._changedHandler);
                    break;
                case 2:
                    Sys.Observer.removeCollectionChanged(oldData, this._changedHandler);
                    break;
            }
        }
        this._eventType = 0;
        if (newData) {
            if (!this._changedHandler) {
                this._changedHandler = Function.createDelegate(this, this._collectionChanged);
            }
            if (typeof(newData.add_collectionChanged) === "function") {
                newData.add_collectionChanged(this._changedHandler);
                this._eventType = 1;
            }
            else if (newData instanceof Array) {
                Sys.Observer.addCollectionChanged(newData, this._changedHandler);
                this._eventType = 2;
            }
        }
    },
    _validateIndexInput: function DataView$_validateIndexInput(value) {
        var type = typeof(value);
        if (type === "string") {
            value = parseInt(value);
            if (isNaN(value)) {
                throw Error.argument(Sys.UI.TemplatesRes.invalidSelectedIndexValue);
            }
        }
        else if (type !== "number") {
            throw Error.argument(Sys.UI.TemplatesRes.invalidSelectedIndexValue);
        }
        return value;
    },
    dispose: function DataView$dispose() {
        /// <summary locid="M:J#clearAndShow"></summary>
        if (this._placeholders && !Sys.Application.get_isDisposing()) {
            this._clearContainers(this._placeholders);
        }
        if (this._dvTemplate) {
            this._dvTemplate.dispose();
        }
        if (this.get_isFetching()) {
            this.abortFetch();
            this._fetching = false;
        }
        this._swapData(this._data, null);
        this._currentData = this._lastData = this._placeholders = this._containers = this._placeholder =
        this._contexts = this._parentContext = this._dvTemplate = this._request = this._dataProvider =
        this._wsp = this._wspClass = this._provider = this._data = this._fetchParameters = this._query = null;
        Sys.UI.DataView.callBaseMethod(this, "dispose")
    }, 
    initialize: function DataView$initialize() {
        /// <summary locid="M:J#clearAndShow">Called when the component is initialized.</summary>
        Sys.UI.DataView.callBaseMethod(this, "initialize");
        this.refresh();
        this.updated();
    },
    fetchData: function DataView$fetchData(succeededCallback, failedCallback, mergeOption, userContext) {
        /// <summary locid="M:J#clearAndShow">Fetches data from the DataContext.</summary>
        /// <param name="succeededCallback" type="Function" mayBeNull="true" optional="true"></param>
        /// <param name="failedCallback" type="Function" mayBeNull="true" optional="true"></param>
        /// <param name="mergeOption" type="Sys.Data.MergeOption" mayBeNull="true" optional="true"></param>
        /// <param name="userContext" mayBeNull="true" optional="true"></param>
        /// <returns type="Sys.Net.WebRequest">The WebRequest used to perform the operation, if any.</returns>
        this._stale = false;
        var request, _this = this;
        function onSuccess(data) {
            _this._loadData(data);
            _this._fetching = false;
            _this._request = null;
            _this._raiseChanged("isFetching");
            _this._raiseSucceeded(request, data);
            if (succeededCallback) {
                succeededCallback(data, userContext, "fetchData");
            }
        }
        function onFail(error) {
            _this._fetching = false;
            _this._request = null;
            _this._raiseChanged("isFetching");
            _this._raiseFailed(request, error);
            if (failedCallback) {
                failedCallback(error, userContext, "fetchData");
            }
        }
        if (this._fetching) {
            this.abortFetch();
        }
        var dataProvider = this._dataProvider,
            wsp = this._wsp,
            wspc =  this._wspClass,
            query = this.get_fetchOperation(),
            parameters = this.get_fetchParameters() || null,
            httpVerb = this.get_httpVerb() || "POST",
            timeout = this.get_timeout() || 0;
        if (typeof(mergeOption) === "undefined") {
            mergeOption = null;
        }
        if (dataProvider) {
            request = dataProvider.fetchData(query, parameters, mergeOption, httpVerb, onSuccess, onFail, timeout, userContext);
        }
        else if (wsp) {
            var path = wsp.get_path();
            if (!path) {
                var type = Object.getType(wsp);
                if (type && (typeof(type.get_path) === "function")) {
                    path = type.get_path();
                }
            }
            Type._checkDependency("MicrosoftAjaxWebServices.js", "Sys.UI.DataView.fetchData");
            request = Sys.UI.DataView._fetchWSP(null, path, query, parameters, httpVerb, onSuccess, onFail, timeout || wsp.get_timeout());
        }
        else {
            Type._checkDependency("MicrosoftAjaxWebServices.js", "Sys.UI.DataView.fetchData");
            if (wspc) {
                request = Sys.UI.DataView._fetchWSP(null, wspc.get_path(), query, parameters, httpVerb, onSuccess, 
                                                         onFail, timeout || wspc.get_timeout());
            }
            else {
                request = Sys.UI.DataView._fetchWSP(null, this._provider, query, parameters, httpVerb, onSuccess, onFail, timeout);
            }
        }
        this._request = request;
        this._fetching = true;
        this._raiseChanged("isFetching");
        return request;
    },
    onCommand: function DataView$onCommand(args) {
        /// <summary locid="M:J#Sys.UI.DataView.onCommand">Raised when a command is raised.</summary>
        /// <param name="args" type="Sys.CommandEventArgs"></param>
    },
    onItemRendering: function DataView$onItemRendering(args) {
        /// <summary locid="M:J#Sys.UI.DataView.onItemRendering">Called before each item is rendered.</summary>
        /// <param name="args" type="Sys.UI.DataViewEventArgs"></param>
    },
    onItemRendered: function DataView$onItemRendered(args) {
        /// <summary locid="M:J#Sys.UI.DataView.onItemRendered">Called after each item is rendered.</summary>
        /// <param name="args" type="Sys.UI.TemplateContext"></param>
    },
    updated: function DataView$updated() {
        /// <summary locid="M:J#Sys.UI.DataView.updated">Called when beginUpdate and endUpdate are called.</summary>
        if (this._stale && this.get_autoFetch()) {
            this._doAutoFetch();
        }
        if (this._dirty) {
            this.refresh();
        }
        if (this._changed) {
            this.raisePropertyChanged("");
            this._changed = false;
        }
    }    
}
$type.registerClass("Sys.UI.DataView", Sys.UI.Control, Sys.UI.ITemplateContextConsumer);
Sys.registerComponent($type);
$type._fetchWSP = function DataView$_fetchWSP(dataContext, uri, operation, parameters, httpVerb, succeededCallback, failedCallback, timeout, context) {
    if (!uri) {
        throw Error.invalidOperation(Sys.UI.TemplatesRes.requiredUri);
    }
    return Sys.Net.WebServiceProxy.invoke(
        uri, operation,
        httpVerb === "GET", parameters, succeededCallback,
        failedCallback, context, timeout);
}
$type = Sys.UI.DataViewEventArgs = function UI$DataViewEventArgs(data) {
    /// <summary locid="M:J#Sys.UI.DataViewEventArgs.#ctor"></summary>
    /// <param name="data" mayBeNull="true" optional="true"></param>
    /// <field name="context" locid="P:J#Sys.UI.DataViewEventArgs.context">The template context associated with this event, if any.</field>
    /// <field name="data" locid="P:J#Sys.UI.DataViewEventArgs.data">The data associated with this event.</field>
    /// <field name="itemPlaceholder" locid="P:J#Sys.UI.DataViewEventArgs.itemPlaceholder">The location where the item template is instantiated.</field>
    /// <field name="itemTemplate" locid="P:J#Sys.UI.DataViewEventArgs.itemTemplate">The template used to render an item.</field>
    if (typeof(data) !== "undefined") {
        this.data = data;
    }
    Sys.UI.DataViewEventArgs.initializeBase(this);
}
$type.prototype = {
    data: null,
    itemTemplate: null,
    itemPlaceholder: null
};
$type.registerClass("Sys.UI.DataViewEventArgs", Sys.CancelEventArgs);
}

if (window.Sys && Sys.loader) {
	Sys.loader.registerScript("Templates", null, execute);
}
else {
	execute();
}

})();
�$// (c) 2010 CodePlex Foundation
(function(){var a=null;function b(){var i="Sys.Services.RoleService.load",h="Sys.Services.AuthenticationService.logout",j="undefined",e="Sys.Services.AuthenticationService.login",g="Sys.Services.ProfileService.save",f="Sys.Services.ProfileService.load",d=true,b=false;Type._registerScript("MicrosoftAjaxApplicationServices.js",["MicrosoftAjaxWebServices.js"]);var c,k;Type.registerNamespace("Sys.Services");Sys._defaultPath=Sys.Services._ProfileService.DefaultWebServicePath;c=Sys.Services._ProfileService=function(){Sys.Services._ProfileService.initializeBase(this);this.properties={}};c.DefaultWebServicePath=Sys._defaultPath||"";delete Sys._defaultPath;c.prototype={_defaultLoadCompletedCallback:a,_defaultSaveCompletedCallback:a,_path:"",_timeout:0,get_defaultLoadCompletedCallback:function(){return this._defaultLoadCompletedCallback},set_defaultLoadCompletedCallback:function(a){this._defaultLoadCompletedCallback=a},get_defaultSaveCompletedCallback:function(){return this._defaultSaveCompletedCallback},set_defaultSaveCompletedCallback:function(a){this._defaultSaveCompletedCallback=a},get_path:function(){return this._path||""},load:function(e,f,g,h){var a=this,d,c;if(!e){c="GetAllPropertiesForCurrentUser";d={authenticatedUserOnly:b}}else{c="GetPropertiesForCurrentUser";d={properties:a._clonePropertyNames(e),authenticatedUserOnly:b}}a._invoke(a._get_path(),c,b,d,Function.createDelegate(a,a._onLoadComplete),Function.createDelegate(a,a._onLoadFailed),[f,g,h])},save:function(f,d,e,g){var a=this,c=a._flattenProperties(f,a.properties);a._invoke(a._get_path(),"SetPropertiesForCurrentUser",b,{values:c.value,authenticatedUserOnly:b},Function.createDelegate(a,a._onSaveComplete),Function.createDelegate(a,a._onSaveFailed),[d,e,g,c.count])},_clonePropertyNames:function(f){for(var c=[],e={},b=0;b<f.length;b++){var a=f[b];if(!e[a]){Array.add(c,a);e[a]=d}}return c},_flattenProperties:function(a,h,i){var b={},d,c,f=0;if(a&&a.length===0)return{value:b,count:0};for(var e in h){d=h[e];c=i?i+"."+e:e;if(Sys.Services.ProfileGroup.isInstanceOfType(d)){var k=this._flattenProperties(a,d,c),g=k.value;f+=k.count;for(var j in g){var l=g[j];b[j]=l}}else if(!a||Array.indexOf(a,c)!==-1){b[c]=d;f++}}return{value:b,count:f}},_get_path:function(){var a=this.get_path();if(!a.length)a=Sys.Services._ProfileService.DefaultWebServicePath;if(!a||!a.length)throw Error.invalidOperation(Sys.Res.servicePathNotSet);return a},_onLoadComplete:function(b,e,i){var a=this;if(typeof b!=="object")throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,i,"Object"));var c=a._unflattenProperties(b);for(var g in c)a.properties[g]=c[g];var d=e[0]||a.get_defaultLoadCompletedCallback()||a.get_defaultSucceededCallback();if(d){var h=e[2]||a.get_defaultUserContext();d(b.length,h,f)}},_onLoadFailed:function(d,b){var a=b[1]||this.get_defaultFailedCallback();if(a){var c=b[2]||this.get_defaultUserContext();a(d,c,f)}},_onSaveComplete:function(b,c,h){var d=c[3];if(b!==a)if(b instanceof Array)d-=b.length;else if(typeof b==="number")d=b;else throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,h,"Array"));var e=c[0]||this.get_defaultSaveCompletedCallback()||this.get_defaultSucceededCallback();if(e){var f=c[2]||this.get_defaultUserContext();e(d,f,g)}},_onSaveFailed:function(d,b){var a=b[1]||this.get_defaultFailedCallback();if(a){var c=b[2]||this.get_defaultUserContext();a(d,c,g)}},_unflattenProperties:function(e){var c={},d,f,h=0;for(var a in e){h++;f=e[a];d=a.indexOf(".");if(d!==-1){var g=a.substr(0,d);a=a.substr(d+1);var b=c[g];if(!b||!Sys.Services.ProfileGroup.isInstanceOfType(b)){b=new Sys.Services.ProfileGroup;c[g]=b}b[a]=f}else c[a]=f}e.length=h;return c}};c.registerClass("Sys.Services._ProfileService",Sys.Net.WebServiceProxy);c=Sys.Services.ProfileGroup=function(a){if(a)for(var b in a)this[b]=a[b]};c.registerClass("Sys.Services.ProfileGroup");Sys._path=Sys.Services.ProfileService._path;Sys._properties=Sys.Services.ProfileService.properties;c=Sys.Services.ProfileService=new Sys.Services._ProfileService;if(Sys._path){c.set_path(Sys._path);delete Sys._path}if(Sys._properties){c.properties=Sys._properties;(function(b){for(var c in b){var a=b[c];if(a&&a._propertygroup)Sys.Services.ProfileService.properties[c]=new Sys.Services.ProfileGroup(a._propertygroup)}})(Sys._properties);delete Sys._properties}Sys._defaultPath=Sys.Services._AuthenticationService.DefaultWebServicePath;c=Sys.Services._AuthenticationService=function(){Sys.Services._AuthenticationService.initializeBase(this)};c.DefaultWebServicePath=Sys._defaultPath||"";delete Sys._defaultPath;c.prototype={_defaultLoginCompletedCallback:a,_defaultLogoutCompletedCallback:a,_path:"",_timeout:0,_authenticated:b,get_defaultLoginCompletedCallback:function(){return this._defaultLoginCompletedCallback},set_defaultLoginCompletedCallback:function(a){this._defaultLoginCompletedCallback=a},get_defaultLogoutCompletedCallback:function(){return this._defaultLogoutCompletedCallback},set_defaultLogoutCompletedCallback:function(a){this._defaultLogoutCompletedCallback=a},get_isLoggedIn:function(){return this._authenticated},get_path:function(){return this._path||""},login:function(e,d,c,j,h,f,g,i){var a=this;a._invoke(a._get_path(),"Login",b,{userName:e,password:d,createPersistentCookie:c},Function.createDelegate(a,a._onLoginComplete),Function.createDelegate(a,a._onLoginFailed),[e,d,c,j,h,f,g,i])},logout:function(e,c,d,f){var a=this;a._invoke(a._get_path(),"Logout",b,{},Function.createDelegate(a,a._onLogoutComplete),Function.createDelegate(a,a._onLogoutFailed),[e,c,d,f])},_get_path:function(){var a=this.get_path();if(!a.length)a=Sys.Services._AuthenticationService.DefaultWebServicePath;if(!a||!a.length)throw Error.invalidOperation(Sys.Res.servicePathNotSet);return a},_onLoginComplete:function(k,h,l){var f=this;if(typeof k!=="boolean")throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,l,"Boolean"));var g=h[4],i=h[7]||f.get_defaultUserContext(),c=h[5]||f.get_defaultLoginCompletedCallback()||f.get_defaultSucceededCallback();if(k){f._authenticated=d;c&&c(d,i,e);if(typeof g!==j&&g!==a)window.location.href=g}else c&&c(b,i,e)},_onLoginFailed:function(d,b){var a=b[6]||this.get_defaultFailedCallback();if(a){var c=b[7]||this.get_defaultUserContext();a(d,c,e)}},_onLogoutComplete:function(j,d,i){var c=this;if(j!==a)throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,i,"null"));var e=d[0],g=d[3]||c.get_defaultUserContext(),f=d[1]||c.get_defaultLogoutCompletedCallback()||c.get_defaultSucceededCallback();c._authenticated=b;f&&f(a,g,h);if(!e)window.location.reload();else window.location.href=e},_onLogoutFailed:function(c,b){var a=b[2]||this.get_defaultFailedCallback();a&&a(c,b[3],h)},_setAuthenticated:function(a){this._authenticated=a}};c.registerClass("Sys.Services._AuthenticationService",Sys.Net.WebServiceProxy);Sys._path=Sys.Services.AuthenticationService._path;Sys._auth=Sys.Services.AuthenticationService._auth;c=Sys.Services.AuthenticationService=new Sys.Services._AuthenticationService;if(Sys._path){c.set_path(Sys._path);delete Sys._path}if(typeof Sys._auth!==j){c._authenticated=Sys._auth;delete Sys._auth}Sys._defaultPath=Sys.Services._RoleService.DefaultWebServicePath;c=Sys.Services._RoleService=function(){Sys.Services._RoleService.initializeBase(this);this._roles=[]};c.DefaultWebServicePath=Sys._defaultPath||"";delete Sys._defaultPath;c.prototype={_defaultLoadCompletedCallback:a,_rolesIndex:a,_timeout:0,_path:"",get_defaultLoadCompletedCallback:function(){return this._defaultLoadCompletedCallback},set_defaultLoadCompletedCallback:function(a){this._defaultLoadCompletedCallback=a},get_path:function(){return this._path||""},get_roles:function(){return Array.clone(this._roles)},isUserInRole:function(a){var b=this._get_rolesIndex()[a.trim().toLowerCase()];return!!b},load:function(c,d,e){var a=this;Sys.Net.WebServiceProxy.invoke(a._get_path(),"GetRolesForCurrentUser",b,{},Function.createDelegate(a,a._onLoadComplete),Function.createDelegate(a,a._onLoadFailed),[c,d,e],a.get_timeout())},_get_path:function(){var a=this.get_path();if(!a||!a.length)a=Sys.Services._RoleService.DefaultWebServicePath;if(!a||!a.length)throw Error.invalidOperation(Sys.Res.servicePathNotSet);return a},_get_rolesIndex:function(){var a=this;if(!a._rolesIndex){for(var c={},b=0;b<a._roles.length;b++)c[a._roles[b].toLowerCase()]=d;a._rolesIndex=c}return a._rolesIndex},_onLoadComplete:function(c,e,h){var b=this;if(c&&!(c instanceof Array))throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,h,"Array"));b._roles=c;b._rolesIndex=a;var d=e[0]||b.get_defaultLoadCompletedCallback()||b.get_defaultSucceededCallback();if(d){var g=e[2]||b.get_defaultUserContext(),f=Array.clone(c);d(f,g,i)}},_onLoadFailed:function(d,b){var a=b[1]||this.get_defaultFailedCallback();if(a){var c=b[2]||this.get_defaultUserContext();a(d,c,i)}}};c.registerClass("Sys.Services._RoleService",Sys.Net.WebServiceProxy);Sys._path=Sys.Services.RoleService._path;Sys._roles=Sys.Services.RoleService._roles;c=Sys.Services.RoleService=new Sys.Services._RoleService;if(Sys._path){c.set_path(Sys._path);delete Sys._path}if(Sys._roles){c._roles=Sys._roles;delete Sys._roles}}if(window.Sys&&Sys.loader)Sys.loader.registerScript("ApplicationServices",a,b);else b()})();�y// (c) 2010 CodePlex Foundation
//!/ <reference name="MicrosoftAjaxWebServices.js" />

(function() {

function execute() {

Type._registerScript("MicrosoftAjaxApplicationServices.js", ["MicrosoftAjaxWebServices.js"]);

var $type, $prototype;
Type.registerNamespace('Sys.Services');

Sys._defaultPath = Sys.Services._ProfileService.DefaultWebServicePath;

$type = Sys.Services._ProfileService = function Services$_ProfileService() {
    /// <summary locid="M:J#Sys.Net.ProfileService.#ctor"></summary>
    if (arguments.length !== 0) throw Error.parameterCount();
    Sys.Services._ProfileService.initializeBase(this);
    this.properties = {};
}
$type.DefaultWebServicePath = Sys._defaultPath || '';
delete Sys._defaultPath;

$type.prototype = {
    _defaultLoadCompletedCallback: null,
    _defaultSaveCompletedCallback: null,
    _path: '',
    _timeout: 0,

    get_defaultLoadCompletedCallback: function _ProfileService$get_defaultLoadCompletedCallback() {
        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Services.ProfileService.defaultLoadCompletedCallback">Default callback to call when loading is complete.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._defaultLoadCompletedCallback;
    },
    set_defaultLoadCompletedCallback: function _ProfileService$set_defaultLoadCompletedCallback(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
        if (e) throw e;
        this._defaultLoadCompletedCallback = value;
    },

    get_defaultSaveCompletedCallback: function _ProfileService$get_defaultSaveCompletedCallback() {
        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Services.ProfileService.defaultSaveCompletedCallback">Default callback to call when saving is complete.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._defaultSaveCompletedCallback;
    },
    set_defaultSaveCompletedCallback: function _ProfileService$set_defaultSaveCompletedCallback(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
        if (e) throw e;
        this._defaultSaveCompletedCallback = value;
    },
    
    get_path: function _ProfileService$get_path() {
        /// <value type="String" mayBeNull="true" locid="P:J#Sys.Services.ProfileService.path">Path to a profile webservice.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._path || '';
    },
        
    load: function _ProfileService$load(propertyNames, loadCompletedCallback, failedCallback, userContext) {
        /// <summary locid="M:J#Sys.Services.ProfileService.load"></summary>
        /// <param name="propertyNames" type="Array" elementType="String" optional="true" elementMayBeNull="false" mayBeNull="true">A string array of profile properties to load.</param>
        /// <param name="loadCompletedCallback" type="Function" optional="true" mayBeNull="true">Callback to call when loading has completed.</param>
        /// <param name="failedCallback" type="Function" optional="true" mayBeNull="true">Callback to call if loading fails.</param>
        /// <param name="userContext" optional="true" mayBeNull="true">Custom context passed to the completed or failed callback.</param>
        var e = Function._validateParams(arguments, [
            {name: "propertyNames", type: Array, mayBeNull: true, optional: true, elementType: String},
            {name: "loadCompletedCallback", type: Function, mayBeNull: true, optional: true},
            {name: "failedCallback", type: Function, mayBeNull: true, optional: true},
            {name: "userContext", mayBeNull: true, optional: true}
        ]);
        if (e) throw e;
        var parameters;
        var methodName;
        if (!propertyNames) {
            methodName = "GetAllPropertiesForCurrentUser";
            parameters = { authenticatedUserOnly: false };
        }
        else {
            methodName = "GetPropertiesForCurrentUser";
            parameters = { properties: this._clonePropertyNames(propertyNames), authenticatedUserOnly: false };
        }

        this._invoke(this._get_path(),
                                        methodName,
                                        false,
                                        parameters,
                                        Function.createDelegate(this, this._onLoadComplete),
                                        Function.createDelegate(this, this._onLoadFailed),
                                        [loadCompletedCallback, failedCallback, userContext]);
    },

    save: function _ProfileService$save(propertyNames, saveCompletedCallback, failedCallback, userContext) {
        /// <summary locid="M:J#Sys.Services.ProfileService.save"></summary>
        /// <param name="propertyNames" type="Array" elementType="String" optional="true" elementMayBeNull="false" mayBeNull="true">A string array of profile properties to save.</param>
        /// <param name="saveCompletedCallback" type="Function" optional="true" mayBeNull="true">Callback to call when saving has completed.</param>
        /// <param name="failedCallback" type="Function" optional="true" mayBeNull="true">Callback to call if saving fails.</param>
        /// <param name="userContext" optional="true" mayBeNull="true">Custom context passed to the completed or failed callback.</param>
        var e = Function._validateParams(arguments, [
            {name: "propertyNames", type: Array, mayBeNull: true, optional: true, elementType: String},
            {name: "saveCompletedCallback", type: Function, mayBeNull: true, optional: true},
            {name: "failedCallback", type: Function, mayBeNull: true, optional: true},
            {name: "userContext", mayBeNull: true, optional: true}
        ]);
        if (e) throw e;
        var flattenedProperties = this._flattenProperties(propertyNames, this.properties);
        this._invoke(this._get_path(),
                                        "SetPropertiesForCurrentUser",
                                        false,
                                        { values: flattenedProperties.value, authenticatedUserOnly: false },
                                        Function.createDelegate(this, this._onSaveComplete),
                                        Function.createDelegate(this, this._onSaveFailed),
                                        [saveCompletedCallback, failedCallback, userContext, flattenedProperties.count]);
    },
    
    _clonePropertyNames: function _ProfileService$_clonePropertyNames(arr) {
        var nodups = [];
        var seen = {};
        for (var i=0; i < arr.length; i++) {
            var prop = arr[i];
            if(!seen[prop]) { Array.add(nodups, prop); seen[prop]=true; };
        }
        return nodups;
    },    

    _flattenProperties: function _ProfileService$_flattenProperties(/*string[]*/propertyNames, properties, groupName) {
        var flattenedProperties = {};
        var val;
        var key;
        var count = 0;
        if (propertyNames && propertyNames.length === 0) {
            return { value: flattenedProperties, count: 0 };
        }

        for (var property in properties) {
            val = properties[property];
            key = groupName ? groupName + "." + property : property;
            if(Sys.Services.ProfileGroup.isInstanceOfType(val)) {
                var obj = this._flattenProperties(propertyNames, val, key);
                var groupProperties = obj.value;
                count += obj.count; // count all the group's properties we're about to merge in
                for(var subKey in groupProperties) {
                    var subVal = groupProperties[subKey];
                    flattenedProperties[subKey] = subVal;
                }
            }
            else {
                if(!propertyNames || Array.indexOf(propertyNames, key) !== -1) {
                    flattenedProperties[key] = val;
                    count++; // keep track of how many properties are in the flattened dictionary
                }
            }
        }
        return { value: flattenedProperties, count: count };
    },
    
    _get_path: function _ProfileService$_get_path() {
        var path = this.get_path();
        if (!path.length) {
            path = Sys.Services._ProfileService.DefaultWebServicePath;
        }
        if (!path || !path.length) {
            throw Error.invalidOperation(Sys.Res.servicePathNotSet);
        }
        return path;
    },    

    _onLoadComplete: function _ProfileService$_onLoadComplete(result, context, methodName) {
        if (typeof(result) !== "object") {
            throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType, methodName, "Object"));
        }

        var unflattened = this._unflattenProperties(result);
        for (var name in unflattened) {
            this.properties[name] = unflattened[name];
        }
        
        var callback = context[0] || this.get_defaultLoadCompletedCallback() || this.get_defaultSucceededCallback();
        if (callback) {
            var userContext = context[2] || this.get_defaultUserContext();        
            callback(result.length, userContext, "Sys.Services.ProfileService.load");
        }
    },
    
    _onLoadFailed: function _ProfileService$_onLoadFailed(err, context, methodName) {
        var callback = context[1] || this.get_defaultFailedCallback();
        if (callback) {
            var userContext = context[2] || this.get_defaultUserContext();        
            callback(err, userContext, "Sys.Services.ProfileService.load");
        }
        else {
            Sys.Net.WebServiceProxy._defaultFailedCallback(err, methodName);
        }
    },
    
    _onSaveComplete: function _ProfileService$_onSaveComplete(result, context, methodName) {
        var count = context[3];
        if (result !== null) {
            if (result instanceof Array) {
                count -= result.length;
            }
            else if (typeof(result) === 'number') {
                count = result;
            }
            else {
                throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType, methodName, "Array"));
            }
        }
        
        var callback = context[0] || this.get_defaultSaveCompletedCallback() || this.get_defaultSucceededCallback();
        if (callback) {
            var userContext = context[2] || this.get_defaultUserContext();
            callback(count, userContext, "Sys.Services.ProfileService.save");
        }
    },
    
    _onSaveFailed: function _ProfileService$_onSaveFailed(err, context, methodName) {
        var callback = context[1] || this.get_defaultFailedCallback();
        if (callback) {
            var userContext = context[2] || this.get_defaultUserContext();
            callback(err, userContext, "Sys.Services.ProfileService.save");
        }
        else {
            Sys.Net.WebServiceProxy._defaultFailedCallback(err, methodName);
        }
    },
    
    _unflattenProperties: function _ProfileService$_unflattenProperties(properties) {
        var unflattenedProperties = {};
        var dotIndex;
        var val;
        var count = 0;
        for (var key in properties) {
            count++;
            val = properties[key];

            dotIndex = key.indexOf('.');
            if (dotIndex !== -1) {
                var groupName = key.substr(0, dotIndex);
                key = key.substr(dotIndex+1);
                var group = unflattenedProperties[groupName];
                if (!group || !Sys.Services.ProfileGroup.isInstanceOfType(group)) {
                    group = new Sys.Services.ProfileGroup();
                    unflattenedProperties[groupName] = group;
                }
                group[key] = val;
            }
            else {
                unflattenedProperties[key] = val;
            }
        }
        properties.length = count;
        return unflattenedProperties;
    }
}
$type.registerClass('Sys.Services._ProfileService', Sys.Net.WebServiceProxy);

$type = Sys.Services.ProfileGroup = function Services$ProfileGroup(properties) {
    /// <summary locid="M:J#Sys.Services.ProfileGroup.#ctor"></summary>
    /// <param name="properties" optional="true" mayBeNull="true">An object containing the settings for this profile group.</param>
    var e = Function._validateParams(arguments, [
        {name: "properties", mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    if (properties) {
        for (var property in properties) {
            this[property] = properties[property];
        }
    }
}
$type.registerClass('Sys.Services.ProfileGroup');

Sys._path = Sys.Services.ProfileService._path;
Sys._properties = Sys.Services.ProfileService.properties;

$type = Sys.Services.ProfileService = new Sys.Services._ProfileService();

if (Sys._path) {
    $type.set_path(Sys._path);
    delete Sys._path;
}
if (Sys._properties) {
    $type.properties = Sys._properties;
    (function(props) {
        for (var name in props) {
            var prop = props[name];
            if (prop && prop._propertygroup) {
                Sys.Services.ProfileService.properties[name] = new Sys.Services.ProfileGroup(prop._propertygroup);
            }
        }
    })(Sys._properties);
    delete Sys._properties;
}

Sys._defaultPath = Sys.Services._AuthenticationService.DefaultWebServicePath;

$type = Sys.Services._AuthenticationService = function Services$_AuthenticationService() {
    /// <summary locid="M:J#Sys.Services.AuthenticationService.#ctor">A proxy to an authentication service.</summary>
    if (arguments.length !== 0) throw Error.parameterCount();
    Sys.Services._AuthenticationService.initializeBase(this);
}
$type.DefaultWebServicePath = Sys._defaultPath || '';
delete Sys._defaultPath;

$type.prototype = {
    _defaultLoginCompletedCallback: null,
    _defaultLogoutCompletedCallback: null,
    _path: '',
    _timeout: 0,
    _authenticated: false,
    
    get_defaultLoginCompletedCallback: function _AuthenticationService$get_defaultLoginCompletedCallback() {
        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Services.AuthenticationService.defaultLoginCompletedCallback">Default callback to call when login completes.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._defaultLoginCompletedCallback;
    },
    set_defaultLoginCompletedCallback: function _AuthenticationService$set_defaultLoginCompletedCallback(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
        if (e) throw e;
        this._defaultLoginCompletedCallback = value;
    },

    get_defaultLogoutCompletedCallback: function _AuthenticationService$get_defaultLogoutCompletedCallback() {
        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Services.AuthenticationService.defaultLogoutCompletedCallback">Default callback to call when logout completes.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._defaultLogoutCompletedCallback;
    },
    set_defaultLogoutCompletedCallback: function _AuthenticationService$set_defaultLogoutCompletedCallback(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
        if (e) throw e;
        this._defaultLogoutCompletedCallback = value;
    },

    get_isLoggedIn: function _AuthenticationService$get_isLoggedIn() {
        /// <value type="Boolean" locid="P:J#Sys.Services.AuthenticationService.isLoggedIn">True if the user is currently authenticated.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._authenticated;
    },

    get_path: function _AuthenticationService$get_path() {
        /// <value type="String" mayBeNull="true" locid="P:J#Sys.Services.AuthenticationService.path">Path to an authentication webservice.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._path || '';
    },  
    
    login: function _AuthenticationService$login(username, password, isPersistent, customInfo, redirectUrl, loginCompletedCallback, failedCallback, userContext) {
        /// <summary locid="M:J#Sys.Services.AuthenticationService.login"></summary>
        /// <param name="username" type="String" mayBeNull="false">The username to authenticate.</param>
        /// <param name="password" type="String" mayBeNull="true">The user's password.</param>
        /// <param name="isPersistent" type="Boolean" optional="true" mayBeNull="true">Whether the issued authentication ticket should be persistent across browser sessions.</param>
        /// <param name="customInfo" type="String" optional="true" mayBeNull="true">Not used. Reserved for future use.</param>
        /// <param name="redirectUrl" type="String" optional="true" mayBeNull="true">A URL to redirect the browser to upon successful authentication. If you omit the redirectUrl parameter or pass null, no redirect will occur.</param>
        /// <param name="loginCompletedCallback" type="Function" optional="true" mayBeNull="true">Callback to be called when login has completed, success or fail.</param>
        /// <param name="failedCallback" type="Function" optional="true" mayBeNull="true">Callback to be called if the authenticaiton webservice fails.</param>
        /// <param name="userContext" optional="true" mayBeNull="true">Custom context passed to the completed or failed callback.</param>
        var e = Function._validateParams(arguments, [
            {name: "username", type: String},
            {name: "password", type: String, mayBeNull: true},
            {name: "isPersistent", type: Boolean, mayBeNull: true, optional: true},
            {name: "customInfo", type: String, mayBeNull: true, optional: true},
            {name: "redirectUrl", type: String, mayBeNull: true, optional: true},
            {name: "loginCompletedCallback", type: Function, mayBeNull: true, optional: true},
            {name: "failedCallback", type: Function, mayBeNull: true, optional: true},
            {name: "userContext", mayBeNull: true, optional: true}
        ]);
        if (e) throw e;
        this._invoke(this._get_path(), "Login", false,
                                        { userName: username, password: password, createPersistentCookie: isPersistent },
                                        Function.createDelegate(this, this._onLoginComplete),
                                        Function.createDelegate(this, this._onLoginFailed),
                                        [username, password, isPersistent, customInfo, redirectUrl, loginCompletedCallback, failedCallback, userContext]);
    },
    
    logout: function _AuthenticationService$logout(redirectUrl, logoutCompletedCallback, failedCallback, userContext) {
        /// <summary locid="M:J#Sys.Services.AuthenticationService.logout">If you omit the redirectUrl parameter or pass null, no redirect will occur.</summary>
        /// <param name="redirectUrl" type="String" optional="true" mayBeNull="true">A URL to redirect the browser to upon successful logout. If you omit the redirectUrl parameter or pass null, a redirect occurs back to the current page.</param>
        /// <param name="logoutCompletedCallback" type="Function" optional="true" mayBeNull="true">Callback to be called when logout has completed, success or fail.</param>
        /// <param name="failedCallback" type="Function" optional="true" mayBeNull="true">Callback to be called if the authenticaiton webservice fails.</param>
        /// <param name="userContext" optional="true" mayBeNull="true">Custom context passed to the completed or failed callback.</param>
        var e = Function._validateParams(arguments, [
            {name: "redirectUrl", type: String, mayBeNull: true, optional: true},
            {name: "logoutCompletedCallback", type: Function, mayBeNull: true, optional: true},
            {name: "failedCallback", type: Function, mayBeNull: true, optional: true},
            {name: "userContext", mayBeNull: true, optional: true}
        ]);
        if (e) throw e;
        this._invoke(this._get_path(), "Logout", false, {}, 
                                        Function.createDelegate(this, this._onLogoutComplete),
                                        Function.createDelegate(this, this._onLogoutFailed),
                                        [redirectUrl, logoutCompletedCallback, failedCallback, userContext]);
    },
    
    _get_path: function _AuthenticationService$_get_path() {
        var path = this.get_path();
        if(!path.length) {
            path = Sys.Services._AuthenticationService.DefaultWebServicePath;
        }
        if(!path || !path.length) {
            throw Error.invalidOperation(Sys.Res.servicePathNotSet);
        }
        return path;
    },
    
    _onLoginComplete: function _AuthenticationService$_onLoginComplete(result, /*login param list*/context, methodName) {
        if(typeof(result) !== "boolean") {
            throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType, methodName, "Boolean"));
        }
        
        var redirectUrl = context[4];
        var userContext = context[7] || this.get_defaultUserContext();
        var callback = context[5] || this.get_defaultLoginCompletedCallback() || this.get_defaultSucceededCallback();
        
        if(result) {
            this._authenticated = true;

            if (callback) {
                callback(true, userContext, "Sys.Services.AuthenticationService.login");
            }
            
            if (typeof(redirectUrl) !== "undefined" && redirectUrl !== null) {
                window.location.href = redirectUrl;
            }
        }
        else if (callback) {
            callback(false, userContext, "Sys.Services.AuthenticationService.login");
        }
    },
    
    _onLoginFailed: function _AuthenticationService$_onLoginFailed(err, context, methodName) {
        var callback = context[6] || this.get_defaultFailedCallback();
        if (callback) {
            var userContext = context[7] || this.get_defaultUserContext();
            callback(err, userContext, "Sys.Services.AuthenticationService.login");
        }
        else {
            Sys.Net.WebServiceProxy._defaultFailedCallback(err, methodName);
        }
    },
    
    _onLogoutComplete: function _AuthenticationService$_onLogoutComplete(result, context, methodName) {
        if(result !== null) {
            throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType, methodName, "null"));
        }
        
        var redirectUrl = context[0];
        var userContext = context[3] || this.get_defaultUserContext();
        var callback = context[1] || this.get_defaultLogoutCompletedCallback() || this.get_defaultSucceededCallback();

        this._authenticated = false;
        
        if (callback) {
            callback(null, userContext, "Sys.Services.AuthenticationService.logout");
        }
        
        if(!redirectUrl) {
            window.location.reload();
        }
        else {
            window.location.href = redirectUrl;
        }
    },
    
    _onLogoutFailed: function _AuthenticationService$_onLogoutFailed(err, context, methodName) {
        var callback = context[2] || this.get_defaultFailedCallback();
        if (callback) {
            callback(err, context[3], "Sys.Services.AuthenticationService.logout");
        }
        else {
            Sys.Net.WebServiceProxy._defaultFailedCallback(err, methodName);
        }
    },
    
    _setAuthenticated: function _AuthenticationService$_setAuthenticated(authenticated) {
        this._authenticated = authenticated;
    }    
}

$type.registerClass('Sys.Services._AuthenticationService', Sys.Net.WebServiceProxy);

Sys._path = Sys.Services.AuthenticationService._path;
Sys._auth = Sys.Services.AuthenticationService._auth;

$type = Sys.Services.AuthenticationService = new Sys.Services._AuthenticationService();

if (Sys._path) {
    $type.set_path(Sys._path);
    delete Sys._path;
}
if (typeof(Sys._auth) !== "undefined") {
    $type._authenticated = Sys._auth;
    delete Sys._auth;
}
Sys._defaultPath = Sys.Services._RoleService.DefaultWebServicePath;

$type = Sys.Services._RoleService = function Services$_RoleService() {
    /// <summary locid="M:J#Sys.Services.RoleService.#ctor"></summary>
    if (arguments.length !== 0) throw Error.parameterCount();
    Sys.Services._RoleService.initializeBase(this);
    this._roles = [];
}
$type.DefaultWebServicePath = Sys._defaultPath || '';
delete Sys._defaultPath;

$type.prototype = {
    _defaultLoadCompletedCallback: null,
    _rolesIndex: null,
    _timeout: 0,
    _path: '',

    get_defaultLoadCompletedCallback: function _RoleService$get_defaultLoadCompletedCallback() {
        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Services.RoleService.defaultLoadCompletedCallback">Default callback to call when loading is complete.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._defaultLoadCompletedCallback;
    },
    set_defaultLoadCompletedCallback: function _RoleService$set_defaultLoadCompletedCallback(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
        if (e) throw e;
        this._defaultLoadCompletedCallback = value;
    },
    
    get_path: function _RoleService$get_path() {
        /// <value type="String" mayBeNull="true" locid="P:J#Sys.Services.RoleService.path">Path to a role webservice.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._path || '';
    },

    get_roles: function _RoleService$get_roles() {
        /// <value type="Array" elementType="String" mayBeNull="false" locid="P:J#Sys.Services.RoleService.roles">An array of role names for the current user.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return Array.clone(this._roles);
    },

    isUserInRole: function _RoleService$isUserInRole(role) {
        /// <summary locid="M:J#Sys.Services.RoleService.isUserInRole">Gets a value indicating whether the current user is in the specified role.</summary>
        /// <param name="role" type="String" mayBeNull="false">The name of the role to search in.</param>
        /// <returns type="Boolean"></returns>
        var e = Function._validateParams(arguments, [
            {name: "role", type: String}
        ]);
        if (e) throw e;
        var v = this._get_rolesIndex()[role.trim().toLowerCase()];
        return !!v;
    },
    
    load: function _RoleService$load(loadCompletedCallback, failedCallback, userContext) {
        /// <summary locid="M:J#Sys.Services.RoleService.load"></summary>
        /// <param name="loadCompletedCallback" type="Function" optional="true" mayBeNull="true">Callback to call when loading has completed.</param>
        /// <param name="failedCallback" type="Function" optional="true" mayBeNull="true">Callback to call if loading fails.</param>
        /// <param name="userContext" optional="true" mayBeNull="true">Custom context passed to the completed or failed callback.</param>
        var e = Function._validateParams(arguments, [
            {name: "loadCompletedCallback", type: Function, mayBeNull: true, optional: true},
            {name: "failedCallback", type: Function, mayBeNull: true, optional: true},
            {name: "userContext", mayBeNull: true, optional: true}
        ]);
        if (e) throw e;
        Sys.Net.WebServiceProxy.invoke(
                    this._get_path(),
                    "GetRolesForCurrentUser",
                    false,
                    {} /* no params*/,
                    Function.createDelegate(this, this._onLoadComplete),
                    Function.createDelegate(this, this._onLoadFailed),
                    [loadCompletedCallback, failedCallback, userContext],
                    this.get_timeout());
    },

    _get_path: function _RoleService$_get_path() {
        var path = this.get_path();
        if(!path || !path.length) {
            path = Sys.Services._RoleService.DefaultWebServicePath;
        }
        if(!path || !path.length) {
            throw Error.invalidOperation(Sys.Res.servicePathNotSet);
        }
        return path;
    },  
    
    _get_rolesIndex: function _RoleService$_get_rolesIndex() {
        if (!this._rolesIndex) {
            var index = {};
            for(var i=0; i < this._roles.length; i++) {
                index[this._roles[i].toLowerCase()] = true;
            }
            this._rolesIndex = index;
        }
        return this._rolesIndex;
    },

    _onLoadComplete: function _RoleService$_onLoadComplete(result, context, methodName) {
        if(result && !(result instanceof Array)) {
            throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType, methodName, "Array"));
        }

        this._roles = result;
        this._rolesIndex = null;

        var callback = context[0] || this.get_defaultLoadCompletedCallback() || this.get_defaultSucceededCallback();
        if (callback) {
            var userContext = context[2] || this.get_defaultUserContext();
            var clonedResult = Array.clone(result);
            callback(clonedResult, userContext, "Sys.Services.RoleService.load");
        }
    },

    _onLoadFailed: function _RoleService$_onLoadFailed(err, context, methodName) {
        var callback = context[1] || this.get_defaultFailedCallback();
        if (callback) {
            var userContext = context[2] || this.get_defaultUserContext();
            callback(err, userContext, "Sys.Services.RoleService.load");
        }
        else {
            Sys.Net.WebServiceProxy._defaultFailedCallback(err, methodName);
        }
    }
}

$type.registerClass('Sys.Services._RoleService', Sys.Net.WebServiceProxy);

Sys._path = Sys.Services.RoleService._path;
Sys._roles = Sys.Services.RoleService._roles;

$type = Sys.Services.RoleService = new Sys.Services._RoleService();

if (Sys._path) {
    $type.set_path(Sys._path);
    delete Sys._path;
}
if (Sys._roles) {
    $type._roles = Sys._roles;
    delete Sys._roles;
}
}

if (window.Sys && Sys.loader) {
	Sys.loader.registerScript("ApplicationServices", null, execute);
}
else {
	execute();
}

})();
Hl// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Compat/Timer/Timer.js" />
/// <reference path="../Common/Common.js" />

(function() {
var scriptName = "ExtendedMaskedEdit";

function execute() {

Type.registerNamespace('Sys.Extended.UI');
Sys.Extended.UI.MaskedEditBehavior = function(element) 
{
    Sys.Extended.UI.MaskedEditBehavior.initializeBase(this, [element]);
    this._Mask = "";
    this._MaskType = Sys.Extended.UI.MaskedEditType.None;
    this._Filtered = "";
    this._PromptChar = "_";
    this._InputDirection = Sys.Extended.UI.MaskedEditInputDirections.LeftToRight;
    this._MessageValidatorTip = true;
    this._ShowMessageErrorFloat = false;
    this._CssMessageErrorFloat = "";
    this._AutoComplete = true;
    this._AutoCompleteValue =  "";
    this._ClearTextOnInvalid = false;
    this._ClearMaskOnLostfocus = true;
    this._AcceptAmPm = Sys.Extended.UI.MaskedEditShowSymbol.None;
    this._AcceptNegative = Sys.Extended.UI.MaskedEditShowSymbol.None;
    this._DisplayMoney = Sys.Extended.UI.MaskedEditShowSymbol.None;
    this._OnFocusCssClass = "MaskedEditFocus";
    this._OnInvalidCssClass = "MaskedEditError";
    this._OnFocusCssNegative = "MaskedEditFocusNegative";
    this._OnBlurCssNegative = "MaskedEditBlurNegative";
    this._CultureName = Sys.CultureInfo.CurrentCulture.name; // "en-US"
    this._UserDateFormat = Sys.Extended.UI.MaskedEditUserDateFormat.None;
    this._UserTimeFormat = Sys.Extended.UI.MaskedEditUserTimeFormat.None;
    this._CultureDatePlaceholder = Sys.CultureInfo.CurrentCulture.dateTimeFormat.DateSeparator; // "/"
    this._CultureTimePlaceholder = Sys.CultureInfo.CurrentCulture.dateTimeFormat.TimeSeparator; // ":"
    this._CultureDecimalPlaceholder = Sys.CultureInfo.CurrentCulture.numberFormat.NumberDecimalSeparator; // "."
    this._CultureThousandsPlaceholder = Sys.CultureInfo.CurrentCulture.numberFormat.NumberGroupSeparator; // ","
    
    this._CultureDateFormat = "MDY";
    var parts = Sys.CultureInfo.CurrentCulture.dateTimeFormat.ShortDatePattern.split(this._CultureDatePlaceholder);
    if (parts.length >= 3) {
        this._CultureDateFormat = parts[0].substr(0, 1).toUpperCase() + parts[1].substr(0, 1).toUpperCase() + parts[2].substr(0, 1).toUpperCase(); // "MDY"
    }
    this._CultureCurrencySymbolPlaceholder = Sys.CultureInfo.CurrentCulture.numberFormat.CurrencySymbol; // "$"
    this._CultureAMPMPlaceholder = Sys.CultureInfo.CurrentCulture.dateTimeFormat.PMDesignator + ";" + Sys.CultureInfo.CurrentCulture.dateTimeFormat.PMDesignator; // "AM;PM"
    this._AMPMPlaceholderSeparator = ";";
    this._Century = 1900;
    this._AllowCopyPaste = true;
    this._ClipboardText = (Sys.Extended.UI.Resources && Sys.Extended.UI.Resources.Shared_BrowserSecurityPreventsPaste) ||
        "Your browser security settings don't permit the automatic execution of paste operations. Please use the keyboard shortcut Ctrl+V instead.";
    this._CharsEditMask = "9L$CAN?";
    this._CharsSpecialMask = "/:.,";
    this._MaskConv = "";
    this._EmptyMask = ""; // save Empty Mask
    this._maskvalid = "" // save valid Mask
    this._DirectSelText = ""; // save the Direction selected Text (only for ie)
    this._initialvalue = ""; // save the initial value for verify changed
    this._LogicSymbol = ""; // save the symbol - or AM/PM
    this._LogicTextMask = ""; // save logic mask with text input
    this._LogicMask = ""; // save logic mask without text
    this._LogicMaskConv = ""; // save logic mask without text and without escape
    this._LogicPrompt = String.fromCharCode(1); // logic prompt char
    this._LogicEscape = String.fromCharCode(2); // logic escape char
    this._LogicFirstPos = -1; // first valid position
    this._LogicLastPos = -1; // Last valid position
    this._LogicLastInt = -1; // Last valid position RTL Integer with decimal
    this._LogicDateTimeSepPos = -1; // valid position seperating date & time
    this._QtdValidInput = 0; // Qtd Valid input Position 
    this._InLostfocus = false; // Flag to validate in lost focus not duplicate clearMask execute
    this._ExternalMessageError = ""; // Save local MessageError from Controls Validator
    this._CurrentMessageError = ""; // Save local Current MessageError
    this._FiringOnChange = false;  // true when OnChange is being fired
    this._ErroOnEnter = false; // Flag Erro validate with Enter
    this._charLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    this._charNumbers = "0123456789";    
    this._charEscape = "\\";
    this._DelimitStartDup = "{";
    this._DelimitEndDup = "}";   
    this._focusHandler = null;
    this._keypressdown = null;
    this._keypressHandler = null;
    this._blurHandler = null;
    this._mouseOutHandler = null;
    this._mouseOutHandler = null;
    this._mouseMoveHandler = null;
    this._mouseEnterHandler = null;
    this._changeHandler = null;
    this._timer = null; //Timer
    this._timerHandler = null; //Timer Handler
    this._SaveSymb = ""; // Symb Saved immediate perform Action
    this._SaveText = ""; // Text Saved immediate perform Action
    this._SavePosi = -1; // Cursor pos Saved immediate perform Action
    this._SaveMask = ""; // Mask with text Saved 
    this._SaveKeyDown = 0; // save scancode at keydown
}    
Sys.Extended.UI.MaskedEditBehavior.prototype = { 
    initialize : function() 
    {
        var e = this.get_element();

        this._InLostfocus = true;
        Sys.Extended.UI.MaskedEditBehavior.callBaseMethod(this, 'initialize');
        this._createMask();
        var hasInitialFocus = false;
        var clientState = this.get_ClientState();
        
        if (clientState != null && clientState != "") 
        {
            hasInitialFocus = (clientState == "Focused");
            this.set_ClientState(null);            
        }
        try {
            if (e === document.activeElement) {
                hasInitialFocus = true;
            }
        }
        catch (ex) { }
        
        if (this._ShowMessageErrorFloat)
        {
            this._mouseOutHandler = Function.createDelegate(this, this._onMouseOut);
            $addHandler(e, "mouseout", this._mouseOutHandler);
            
            this._mouseMoveHandler = Function.createDelegate(this, this._onMouseMove);
            $addHandler(e, "mousemove", this._mouseMoveHandler);

            this._mouseEnterHandler = Function.createDelegate(this, this._onMouseover);                
            $addHandler(e, "mouseover", this._mouseEnterHandler);
        }

        if (!e.readOnly)
        {
            this._keypressdown = Function.createDelegate(this, this._onKeyPressdown);
            $addHandler(e, "keydown", this._keypressdown); 

            this._keypressHandler = Function.createDelegate(this, this._onKeyPress);
            $addHandler(e, "keypress", this._keypressHandler); 
            
        }

        this._focusHandler = Function.createDelegate(this, this._onFocus);
        $addHandler(e, "focus", this._focusHandler);
        this._blurHandler = Function.createDelegate(this, this._onBlur);
        $addHandler(e, "blur", this._blurHandler);
        this._changeHandler = Function.createDelegate(this, this._onChange);
        $addHandler(e, "change", this._changeHandler);
        
        if (Sys.Browser.agent == Sys.Browser.Opera)
        {
            this._timerHandler = Function.createDelegate(this, this._OnTimerTicket);
            this._timer = new Sys.Timer();
            this._timer.set_enabled(false);
            this._timer.set_interval(100);
            this._timer.add_tick(this._timerHandler);
            this._SaveText = ""; 
            this._SavePosi = -1;
            this._timer.set_enabled(true);
        }

        var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(e);
        this._InitValue(wrapper.get_Value(), true);
        if (hasInitialFocus) 
        {
            this._onFocus();
        }
        else 
        {
            if (this._ClearMaskOnLostfocus)
            {
                wrapper.set_Value(this._getClearMask(wrapper.get_Value()));
            }
            var IsValid = this._CaptureServerValidators();
            if (!IsValid)
            {
                if (this._OnInvalidCssClass != "")
                {
                    this.AddCssClassMaskedEdit(this._OnInvalidCssClass);
                }
            }
        }
    }
    , dispose : function() 
    {
        var e = this.get_element();
        if (this._mouseOutHandler) 
        {
            $removeHandler(e, "mouseout", this._mouseOutHandler);
            this._mouseOutHandler = null;
        }
        if (this._mouseMoveHandler) 
        {
            $removeHandler(e, "mousemove", this._mouseMoveHandler);
            this._mouseMoveHandler = null;
        }
        if (this._mouseEnterHandler) 
        {
            $removeHandler(e, "mouseover", this._mouseEnterHandler);
            this._mouseEnterHandler = null;
        }
        if (this._focusHandler) 
        {
            $removeHandler(e, "focus", this._focusHandler);
            this._focusHandler = null;
        }
        if (this._focusHandler) 
        {
            $removeHandler(e, "focus", this._focusHandler);
            this._focusHandler = null;
        }
        if (this._blurHandler) 
        {
            $removeHandler(e, "blur", this._blurHandler);
            this._blurHandler = null;
        }
        if (this._changeHandler) 
        {
            $removeHandler(e, "change", this._changeHandler);
            this._changeHandler = null;
        }
        if (this._keypressdown) 
        {
            $removeHandler(e, "keydown", this._keypressdown);
            this._keypressdown = null;
        }
        if (this._keypressHandler) 
        {
            $removeHandler(e, "keypress", this._keypressHandler);
            this._keypressHandler = null;
        }
        if (this._timerHandler) {
            this._timer.set_enabled(false);
            this._timerHandler = null;
            this._timer.dispose();
            this._timer = null;
        }
        Sys.Extended.UI.MaskedEditBehavior.callBaseMethod(this, 'dispose');
    }
    , _OnTimerTicket : function() 
    {
        this._SaveSymb = "";
        if (this._InLostfocus)
        {
            return;
        }
        this._timer.set_enabled(false);
        var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element());
        if (this._SaveText != "")                
        {
            wrapper.set_Value(this._SaveText);
            this.setSelectionRange(this._SavePosi,this._SavePosi);
            this._SaveText = ""; 
            this._SavePosi = -1;
            this._SaveMask = wrapper.get_Value();
        }
        else
        {
            if (wrapper.get_Value().length != this._EmptyMask.length)
            {
                wrapper.set_Value(this._SaveMask);
            }
            if (this._timer.get_interval() != 100)
            {
                this._timer.set_interval(100);
            }
        }
        this._timer.set_enabled(true);
    }
    , _onChange : function() 
    {
        if (!this._FiringOnChange) {
            this._onFocus();
        }
    }
    , _onFocus : function() 
    {
    
        var e = this.get_element();
        if (e.readOnly || e.disabled) {
            return;
        }
        if (!this._keypressdown) {
            this._keypressdown = Function.createDelegate(this, this._onKeyPressdown);
            $addHandler(e, "keydown", this._keypressdown);
        }
        if (!this._keypressHandler) {
            this._keypressHandler = Function.createDelegate(this, this._onKeyPress);
            $addHandler(e, "keypress", this._keypressHandler); 
        }

        this._InLostfocus = false;
        this._RemoveDivToolTip();
        if (this._OnFocusCssClass != "")
        {
            this.AddCssClassMaskedEdit(this._OnFocusCssClass);
        }
        var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(e);
        this._initialvalue = wrapper.get_Value();
        this._InitValue(wrapper.get_Value(), false);
        var ClearText = this._getClearMask();
        var hastip = false;
        if (this._MessageValidatorTip && ClearText == "")
        {
            hastip = true;
        }
        if ( (this._MaskType == Sys.Extended.UI.MaskedEditType.Time || this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime) && this.get_CultureAMPMPlaceholder() != "" && ClearText == "")
        {
            if (this._AcceptAmPm)
            {
                this.InsertAMPM(this.get_CultureAMPMPlaceholder().substring(0,1));
            }
        }
        else if (this._MaskType == Sys.Extended.UI.MaskedEditType.Number && ClearText != "")
        {
            if (this._LogicSymbol == "-" && this._OnFocusCssNegative != "")
            {
                this.AddCssClassMaskedEdit(this._OnFocusCssNegative);
            }
        }
        if (this._InputDirection == Sys.Extended.UI.MaskedEditInputDirections.RightToLeft)
        {
            if (this._LogicLastInt != -1)
            {
                this.setSelectionRange(this._LogicLastInt,this._LogicLastInt);
            }
            else
            {
                this.setSelectionRange(this._LogicLastPos+1,this._LogicLastPos+1);
            }
        }
        else
        {
            if (this._MaskType == Sys.Extended.UI.MaskedEditType.Number && ClearText != "")
            {
                var pos = this._getLastEmptyPosition()+1;
                this.setSelectionRange(pos,pos);
            }
            else
            {
                this.setSelectionRange(this._LogicFirstPos,this._LogicFirstPos);
            }
        }
        this.ShowTooltipMessage(false);
        if (hastip)
        {
            this.ShowTooltipMessage(true);
        }
    }
    , _PeforformValidLostFocus : function(isblur) 
    {
        var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element());
        var ClearText = this._getClearMask(wrapper.get_Value());
        if (ClearText == "" && this._MaskType == Sys.Extended.UI.MaskedEditType.Number && this._LogicSymbol == "-")
        {
            this.InsertSignal("+");
        }
        if (ClearText != "" && this._AutoComplete && this._MaskType == Sys.Extended.UI.MaskedEditType.Date)
        {
            this.AutoFormatDate();
        }
        else if (ClearText != "" && this._AutoComplete && this._MaskType == Sys.Extended.UI.MaskedEditType.Time)
        {
            this.AutoFormatTime();
        }
        else if (ClearText != "" && this._AutoComplete && this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime)
        {
            this.AutoFormatDateTime();
        }
        else if (ClearText != "" && this._AutoComplete && this._MaskType == Sys.Extended.UI.MaskedEditType.Number)
        {
            this.AutoFormatNumber();
        }
        if ((this._ClearMaskOnLostfocus && ClearText != "") || (isblur && this._ClearMaskOnLostfocus) )
        {
            wrapper.set_Value(this._getClearMask(wrapper.get_Value()));
        }
        this.AddCssClassMaskedEdit("");
        if (this._MaskType == Sys.Extended.UI.MaskedEditType.Number && this._LogicSymbol == "-" && this._OnBlurCssNegative != "")
        {
            this.AddCssClassMaskedEdit(this._OnBlurCssNegative);
        }
        this.ShowTooltipMessage(false);
        this._RemoveDivToolTip();
        var IsValid = this._CaptureClientsValidators();
        if (!IsValid)
        {
            if (this._OnInvalidCssClass != "")
            {
                this.AddCssClassMaskedEdit(this._OnInvalidCssClass);
            }
            if (this._ClearTextOnInvalid)
            {
                this._createMask();
                wrapper.set_Value(this._EmptyMask);
            }
        }
        return IsValid;
    }
    , _onBlur : function(evt) 
    {
        this._InLostfocus = true;
        var IsValid = this._PeforformValidLostFocus(true);
        if (IsValid)
        {
            var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element());
            if (!this.get_element().readOnly && (this._initialvalue != wrapper.get_Value()) && evt) {
                this._fireChanged();
            }
        }
    }

    , _fireChanged : function() {
        /// <summary>
        /// Attempts to fire the change event on the attached textbox
        /// </summary>

        this._FiringOnChange = true;
        var elt = this.get_element();
        if (document.createEventObject) {
            elt.fireEvent("onchange");
        } else if (document.createEvent) {
            var e = document.createEvent("HTMLEvents");
            e.initEvent("change", true, true);
            elt.dispatchEvent(e);
        }
        this._FiringOnChange = false;
    }

    , _onKeyPress : function(evt) 
    {
        var scancode = this._KeyCode(evt);
        if (scancode == 9) //tab default action
        {
            return true;
        }
        if (scancode == 13)
        {
            var IsValid = this._PeforformValidLostFocus(false);
            this._ErroOnEnter = false;
            if (!IsValid)
            {
                this._ErroOnEnter = true;
            }
            if (Sys.Browser.agent == Sys.Browser.Opera)
            {
                var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element());
                this._SaveText = wrapper.get_Value(); 
                this._SavePosi = this._getCurrentPosition();
                this._timer.set_enabled(false);
                this._timer.set_interval(1);
                this._timer.set_enabled(true);
                
            }
            return IsValid;
        }   
        if (this._OnFocusCssClass != "" && this._ErroOnEnter)
        {
            this.AddCssClassMaskedEdit(this._OnFocusCssClass);
        }
        this._ErroOnEnter = false;
        if (!this._isNormalChar(evt,scancode)) 
        {
            this._ExecuteNav(evt,scancode);
            return false;
        }
        var curpos = this._deleteTextSelection();
        if (curpos == -1)
        {
            curpos = this._getCurrentPosition()
        }
        var c = String.fromCharCode(scancode);
        if (this._MaskType == Sys.Extended.UI.MaskedEditType.Date && c == this.get_CultureDatePlaceholder())
        {
            this._AdjustElementDate();
        }
        else if (this._MaskType == Sys.Extended.UI.MaskedEditType.Time && c == this.get_CultureTimePlaceholder())
        {
            this._AdjustElementTime();
        }
        else if (this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime && (c == this.get_CultureTimePlaceholder() || c == this.get_CultureDatePlaceholder()) )
        {
            this._AdjustElementDateTime(c);
        }
        else if (this._MaskType == Sys.Extended.UI.MaskedEditType.Number && this._InputDirection == Sys.Extended.UI.MaskedEditInputDirections.LeftToRight && c == this.get_CultureDecimalPlaceholder() && curpos == this._LogicLastInt)
        {
            this._AdjustElementDecimalLTR();
        }
        else if (this._MaskType == Sys.Extended.UI.MaskedEditType.Number && this._InputDirection == Sys.Extended.UI.MaskedEditInputDirections.RightToLeft && c == this.get_CultureDecimalPlaceholder() && curpos == this._LogicLastInt)
        {
            this._AdjustElementDecimalRTL();
        }
        else if (this._MaskType == Sys.Extended.UI.MaskedEditType.Number && c == this.get_CultureDecimalPlaceholder() && curpos != this._LogicLastInt)
        {
            this._MoveDecimalPos();
        }
        else if (this._MaskType == Sys.Extended.UI.MaskedEditType.Number && this._InputDirection == Sys.Extended.UI.MaskedEditInputDirections.LeftToRight && c == this.get_CultureThousandsPlaceholder() )
        {
            this._MoveThousandLTR();
        }
        else if (this._MaskType == Sys.Extended.UI.MaskedEditType.Number && this._InputDirection == Sys.Extended.UI.MaskedEditInputDirections.RightToLeft && c == this.get_CultureThousandsPlaceholder() )
        {
            this._MoveThousandRTL();
        }
        else if ( (this._MaskType == Sys.Extended.UI.MaskedEditType.Time || this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime) && this.get_CultureFirstLettersAMPM().toUpperCase().indexOf(c.toUpperCase()) != -1)
        {
            if (this._AcceptAmPm)
            {
                this.InsertAMPM(c);
                this.setSelectionRange(curpos,curpos);
            }
        }
        else if (this._MaskType == Sys.Extended.UI.MaskedEditType.Number && this._AcceptNegative != Sys.Extended.UI.MaskedEditShowSymbol.None && "+-".indexOf(c) != -1)
        {
            if (Sys.Browser.agent != Sys.Browser.Opera)
            {
                this.InsertSignal(c);
                this.setSelectionRange(curpos,curpos);
            }
            else
            {
                if (this._SaveSymb == "")
                {
                    this.InsertSignal(c);
                    this.setSelectionRange(curpos,curpos);
                    this._SaveSymb = c;
                    this._timer.set_enabled(false);
                    this._timer.set_interval(1);
                    this._timer.set_enabled(true);
                }
                else
                {
                    this._SaveSymb = "";
                }
            }
        }
        else
        {
            var OriPos = curpos;
            curpos = this._getNextPosition(curpos);
            var logiccur = curpos;
            if (this._LogicLastInt != -1 && this._InputDirection == Sys.Extended.UI.MaskedEditInputDirections.RightToLeft)
            {
                if (OriPos == this._LogicLastInt)
                {
                    logiccur = this._getLastEmptyPosition();
                }
            }
            else
            {
                if (curpos >= this._LogicLastPos+1 && this._InputDirection == Sys.Extended.UI.MaskedEditInputDirections.RightToLeft)
                {
                    logiccur = this._getLastEmptyPosition();
                }
            }
            if (this._processKey(logiccur,c)) 
            {
                if (this._MessageValidatorTip) 
                {
                    this.ShowTooltipMessage(false);
                }
                if (this._InputDirection == Sys.Extended.UI.MaskedEditInputDirections.LeftToRight)
                {
                    this._insertContent(c,logiccur);
                    curpos = this._getNextPosition(logiccur+1);
                } 
                else if (this._InputDirection == Sys.Extended.UI.MaskedEditInputDirections.RightToLeft)
                {
                    if (this._LogicLastInt == -1)
                    {
                        if (curpos < this._LogicLastPos+1)
                        {
                            this._insertContent(c,logiccur);
                            curpos = this._getNextPosition(logiccur+1);
                        }
                        else
                        {
                            this._insertContentRight(c);
                            curpos = this._LogicLastPos+1;
                        }
                    }
                    else
                    {
                        if (OriPos != this._LogicLastInt)
                        {
                            this._insertContent(c,logiccur);
                            curpos = this._getNextPosition(logiccur+1);
                        }
                        else
                        {
                            var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element());
                            var ClearText = this._getClearMask(wrapper.get_Value());
                            if (ClearText != "")
                            {
                                var pospt = ClearText.indexOf(this.get_CultureDecimalPlaceholder());
                                if (pospt != -1)                                
                                {
                                   var intnum = ClearText.substring(0,pospt);
                                   if (intnum == "0" || intnum == "-0")
                                   {
                                        this.setSelectionRange(this._LogicLastInt-1,this._LogicLastInt);
                                        this._deleteTextSelection();
                                        curpos = this._LogicLastInt;
                                        this.setSelectionRange(curpos,curpos);
                                   }
                                }
                            }
                            if (ClearText == "" && c == "0")
                            {
                                curpos = this._LogicLastInt;
                            }
                            else
                            {
                                this._insertContentRight(c);
                                curpos = this._LogicLastInt;
                            }
                        }
                    }
                }
                this.setSelectionRange(curpos,curpos);
            }
        }
        this._SetCancelEvent(evt);
        return false;
    }
    , _onKeyPressdown : function(evt) 
    {
        if (this._InLostfocus)
        {
            this._onFocus(evt);
        }
        var scancode = this._KeyCode(evt);
        if (scancode == 9) //tab default action
        {
            return true;
        }
        if (scancode == 13)  //enter 
        {
            return true;
        }
        if (!this._isNormalChar(evt,scancode)) 
        {
            this._ExecuteNav(evt,scancode);
        }
        else
        {
            if (Sys.Browser.agent == Sys.Browser.Opera)
            {
                if (evt.rawEvent.shiftKey && !evt.rawEvent.ctrlKey && !evt.rawEvent.altKey && evt.rawEvent.keyCode == 45) 
                {
                    var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element());
                    this._SaveText = wrapper.get_Value(); 
                    this._SavePosi = this._getCurrentPosition();
                    this._timer.set_enabled(false);
                    this._timer.set_interval(1);
                    this._timer.set_enabled(true);
                }
            }
        }
    }
    , _onMouseOut : function(evt) 
    {
        this._RemoveDivToolTip();
    }
    , _onMouseMove : function(evt) 
    {
        if ((this._InLostfocus || this._ErroOnEnter) && this._ExternalMessageError != "")
        {
            this._ShowDivToolTip(evt);
        }
    }
    ,_onMouseover : function(evt) 
    {
        if (!$get("DivMaskedEditTip_" + this.get_element().id))
        {
            this._CaptureServerValidators();
        }
        if ((this._InLostfocus || this._ErroOnEnter) && this._ExternalMessageError != "")
        {
            this._createDivToolTip(evt,this._ExternalMessageError);
        }
    }
    , _ShowDivToolTip : function(evt) {
        var et = $get("DivMaskedEditTip_" + this.get_element().id);
        if (!et)
        {
            this._createDivToolTip(evt,this._ExternalMessageError);
            et = $get("DivMaskedEditTip_" + this.get_element().id);
        }
        var mousepos = this._GetMousePos(evt);
        et.style.left = mousepos.x + 1/*offset To prevent flick in FF*/ + "px";
        et.style.top  = mousepos.y + 1/*offset To prevent flick in FF*/ + "px";
    }
    , _GetMousePos : function(evt) {
        var scrOfX = 0, scrOfY = 0;
        if( typeof( window.pageYOffset ) == 'number' ) {
            scrOfY = window.pageYOffset;
            scrOfX = window.pageXOffset;
        } 
        else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
            scrOfY = document.body.scrollTop;
            scrOfX = document.body.scrollLeft;
        } 
        else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
        
            scrOfY = document.documentElement.scrollTop;
            scrOfX = document.documentElement.scrollLeft;
        }
        var posX = 0, posY = 0;
        if( typeof( evt.pageX ) == 'number' ) 
        {
            posX = evt.pageX;
            posY = evt.pageY;
        } 
        else if( typeof( evt.clientX ) == 'number' ) 
        {
            posX = evt.clientX;
            posY = evt.clientY;
        }
        return {x:posX+scrOfX,y:posY+scrOfY}
    }
    , _RemoveDivToolTip : function() {
        var e = $get("DivMaskedEditTip_" + this.get_element().id);
        if (e)
        {
            document.body.removeChild(e);
        }
    }
    , _createDivToolTip : function(evt,Msg) {
        var e = $get("DivMaskedEditTip_" + this.get_element().id);
        if (!e)
        {
            var DivTp;
            var mousepos = this._GetMousePos(evt);
            DivTp = document.createElement("div");
            DivTp.id = "DivMaskedEditTip_" + this.get_element().id;
            DivTp.style.position = "absolute"; 
            DivTp.style.left = mousepos.x + 2/*offset*/ + "px";
            DivTp.style.top  = mousepos.y + 2/*offset*/ + "px";
            DivTp.style.zIndex = 99999;
            if (this._CssMessageErrorFloat == "")
            {
                DivTp.style.padding = "3px 3px 3px 3px";
                DivTp.style.border = "Solid 1px #000000";
                DivTp.style.backgroundColor = "#FFFFEA";
                DivTp.style.fontWeight = "normal";
                DivTp.style.fontSize = "12px";
                DivTp.style.fontFamily = "Arial";
            }
            else
            {
                DivTp.className = this._CssMessageErrorFloat;
            }
            DivTp.innerHTML = Msg;
            DivTp = document.body.insertBefore(DivTp, document.body.firstChild);
        }
    }
    , _ExecuteNav : function(evt,scanCode)
    {
        if (evt.type == "keydown")
        {
            if (Sys.Browser.agent == Sys.Browser.InternetExplorer) 
            {
                if ( (scanCode == 86 || scanCode == 118) && !evt.shiftKey && evt.ctrlKey && !evt.altKey) {
                    this._SetCancelEvent(evt);
                    this._PasteFromClipBoard();
                    return;
                }
                if (evt.shiftKey && !evt.ctrlKey && !evt.altKey && evt.keyCode == 45) {
                    this._SetCancelEvent(evt);
                    this._PasteFromClipBoard();
                    return;
                }
            }
        }
        if (Sys.Browser.agent != Sys.Browser.InternetExplorer || evt.type == "keypress") 
        {
            if (evt.rawEvent.shiftKey && !evt.rawEvent.ctrlKey && !evt.rawEvent.altKey && evt.rawEvent.keyCode == 45) {
                this._SetCancelEvent(evt);
                this._PasteFromClipBoard();
                return;
            }
            if (evt.type == "keypress" && (scanCode == 86 || scanCode == 118) && !evt.shiftKey && evt.ctrlKey && !evt.altKey) {
                this._SetCancelEvent(evt);
                this._PasteFromClipBoard();
                return;
            }
        }
        var curpos;
        if (Sys.Browser.agent == Sys.Browser.InternetExplorer || evt.type == "keypress") 
        {
            if (scanCode == 8) // BackSpace
            {
                this._SetCancelEvent(evt);
                curpos = this._deleteTextSelection();
                if (curpos != -1)
                {
                    this.setSelectionRange(curpos,curpos);
                }
                else
                {
                    curpos = this._getCurrentPosition();
                    this._backspace(curpos);
                    
                    curpos = this._getPreviousPosition(curpos-1);
                    this.setSelectionRange(curpos,curpos);
                }
                var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element());
                if (this._MessageValidatorTip && wrapper.get_Value() == this._EmptyMask)
                {
                    this.ShowTooltipMessage(true);
                }
                if (Sys.Browser.agent == Sys.Browser.Opera)
                {
                    this._SaveText = wrapper.get_Value(); 
                    this._SavePosi = curpos;
                    this._timer.set_enabled(false);
                    this._timer.set_interval(1);
                    this._timer.set_enabled(true);
                }
            }
            else if (scanCode == 46 || scanCode == 127) // delete
            {
                this._SetCancelEvent(evt);
                var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element());
                curpos = this._deleteTextSelection();
                if (curpos == -1)
                {
                    curpos = this._getCurrentPosition();
                    if (!this._isValidMaskedEditPosition(curpos))
                    {
                        if (curpos != this._LogicLastInt && this._InputDirection != Sys.Extended.UI.MaskedEditInputDirections.RightToLeft)
                        {
                            curpos = this._getNextPosition(curpos);
                        }
                    }
                    this._deleteAtPosition(curpos,false);
                }
                else
                {
                    if (this._InputDirection == Sys.Extended.UI.MaskedEditInputDirections.RightToLeft)
                    {
                        var ClearText = this._getClearMask(wrapper.get_Value());
                        if (ClearText != "")
                        {
                            ClearText = ClearText.replace(new RegExp("(\\" + this.get_CultureThousandsPlaceholder() + ")", "g"), "") + '';
                            if (ClearText.substring(ClearText.length-1,ClearText.length) == this.get_CultureDecimalPlaceholder())
                            {
                                ClearText = ClearText.substring(0,ClearText.length-1);
                                this.loadValue(ClearText,this._LogicLastInt);
                            }
                            else
                            {
                                this.loadValue(ClearText,this._LogicLastPos);
                            }
                        }
                    }
                }
                this.setSelectionRange(curpos,curpos);
                if (this._MessageValidatorTip && wrapper.get_Value() == this._EmptyMask)
                {
                    this.ShowTooltipMessage(true);
                }
                if (Sys.Browser.agent == Sys.Browser.Opera)
                {
                    this._SaveText = wrapper.get_Value(); 
                    this._SavePosi = curpos;
                    this._timer.set_enabled(false);
                    this._timer.set_interval(1);
                    this._timer.set_enabled(true);
                }
            }
            else if(evt.ctrlKey)
            {
                if (scanCode == 39 || scanCode == 35 || scanCode == 34) //Right or END or pgdown
                {
                    this._DirectSelText = "R";
                    if (Sys.Browser.agent == Sys.Browser.Opera)
                    {
                        return;
                    }
                    this._SetCancelEvent(evt);
                    curpos = this._getCurrentPosition();
                    this.setSelectionRange(curpos,this._LogicLastPos+1);
                }
                else if (scanCode == 37  || scanCode == 36 || scanCode == 33) //Left or Home or pgup
                {
                    this._DirectSelText = "L";
                    if (Sys.Browser.agent == Sys.Browser.Opera)
                    {
                        return;
                    }
                    this._SetCancelEvent(evt);
                    curpos = this._getCurrentPosition();
                    this.setSelectionRange(this._LogicFirstPos,curpos);
                }
            }
            else if (scanCode == 35 || scanCode == 34) //END or pgdown
            {
                this._DirectSelText = "R";
                if (Sys.Browser.agent == Sys.Browser.Opera)
                {
                    return;
                }
                this._SetCancelEvent(evt);
                if (evt.shiftKey)
                {
                    curpos = this._getCurrentPosition();
                    this.setSelectionRange(curpos,this._LogicLastPos+1);
                }
                else
                {
                    this.setSelectionRange(this._LogicLastPos+1,this._LogicLastPos+1);
                }
            }
            else if (scanCode == 36 || scanCode == 33) //Home or pgup
            {
                this._DirectSelText = "L";
                if (Sys.Browser.agent == Sys.Browser.Opera)
                {
                    return;
                }
                this._SetCancelEvent(evt);
                if (evt.shiftKey)
                {
                    curpos = this._getCurrentPosition();
                    this.setSelectionRange(this._LogicFirstPos,curpos);
                }
                else
                {
                    this.setSelectionRange(this._LogicFirstPos,this._LogicFirstPos);
                }
            }
            else if (scanCode == 37) //left
            {
                this._DirectSelText = "L";
                if (Sys.Browser.agent == Sys.Browser.Opera)
                {
                    return;
                }
                this._SetCancelEvent(evt);
                if (evt.shiftKey)
                {
                    var BoundSel = this._GetBoundSelection();
                    if (BoundSel)
                    {
                        if (BoundSel.left > this._LogicFirstPos)
                        {
                            BoundSel.left --;     
                        }
                        this.setSelectionRange(BoundSel.left,BoundSel.right);
                    }
                    else
                    {
                        var pos = this._getCurrentPosition();
                        if (pos  > this._LogicFirstPos)
                        {
                            this.setSelectionRange(pos -1,pos);
                        }
                    }
                }
                else
                {
                    curpos = this._getCurrentPosition()-1;
                    if (curpos < this._LogicFirstPos)
                    {
                        curpos = this._LogicFirstPos;
                    }
                    this.setSelectionRange(curpos,curpos);
                }
                if (Sys.Browser.agent == Sys.Browser.Opera)
                {
                    var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element());
                    this._SaveText = wrapper.get_Value(); 
                    this._SavePosi = curpos;
                    this._timer.set_enabled(false);
                    this._timer.set_interval(1);
                    this._timer.set_enabled(true);
                }
            }
            else if (scanCode == 39) // right
            {
                this._DirectSelText = "R";
                if (Sys.Browser.agent == Sys.Browser.Opera)
                {
                    return;
                }
                this._SetCancelEvent(evt);
                if (evt.shiftKey)
                {
                    var BoundSel = this._GetBoundSelection();
                    if (BoundSel)
                    {
                        if (BoundSel.right < this._LogicLastPos+1)
                        {
                            BoundSel.right ++;     
                        }
                        this.setSelectionRange(BoundSel.left,BoundSel.right);
                    }
                    else
                    {
                        pos = this._getCurrentPosition();
                        if (pos  < this._LogicLastPos+1)
                        {
                            this.setSelectionRange(pos,pos+1);
                        }
                    }
                }
                else
                {
                    curpos = this._getCurrentPosition()+1;
                    if (curpos > this._LogicLastPos+1)
                    {
                        curpos = this._LogicLastPos+1;
                    }
                    this.setSelectionRange(curpos,curpos);
                }
                if (Sys.Browser.agent == Sys.Browser.Opera)
                {
                    var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element());
                    this._SaveText = wrapper.get_Value(); 
                    this._SavePosi = curpos;
                    this._timer.set_enabled(false);
                    this._timer.set_interval(1);
                    this._timer.set_enabled(true);
                }
            }
            else if (scanCode == 27) // esc
            {
                this._SetCancelEvent(evt);
                var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element());
                if (this._EmptyMask == this._initialvalue)
                {
                    wrapper.set_Value("");
                }
                else
                {
                    wrapper.set_Value(this._initialvalue);
                }
                this._onFocus();
            }
        }
        this._SetCancelEvent(evt);
    }
    , _backspace : function(curpos) 
    {
        var exec = false;
        if (curpos > this._LogicFirstPos)
        {
            var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element());
            var masktext = wrapper.get_Value();
            curpos = this._getPreviousPosition(curpos-1);
            this._deleteAtPosition(curpos, true);
            exec = true;
        }
        return exec;
    }
    , _deleteAtPosition : function(curpos,isBS) 
    {
        var exec = false;
        var lastpos = this._LogicLastPos+1;
        if (this._LogicLastInt != -1 && this._InputDirection == Sys.Extended.UI.MaskedEditInputDirections.RightToLeft)
        {
            lastpos = this._LogicLastInt;
        }
        var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element());
        if (isBS == false && this._InputDirection == Sys.Extended.UI.MaskedEditInputDirections.RightToLeft && curpos == lastpos)
        {
            var ClearText = this._getClearMask(wrapper.get_Value());
            if (ClearText != "")
            {
                exec = true;
                ClearText = ClearText.replace(new RegExp("(\\" + this.get_CultureThousandsPlaceholder() + ")", "g"), "") + '';
                if (ClearText.substring(ClearText.length-1,ClearText.length) == this.get_CultureDecimalPlaceholder())
                {
                    ClearText = ClearText.substring(0,ClearText.length-1);
                }
                var arr_num = ClearText.split(this.get_CultureDecimalPlaceholder());
                if (this._LogicLastInt != -1 && arr_num[0] != "")
                {
                    arr_num[0] = arr_num[0].substring(0,arr_num[0].length-1);
                    ClearText =  arr_num[0];
                    if (arr_num.length = 2)
                    {
                        ClearText += this.get_CultureDecimalPlaceholder() + arr_num[1];
                    }
                }
                else
                {
                    ClearText = ClearText.substring(0,ClearText.length-1);
                }
                ClearText += this._LogicSymbol;
                this.loadValue(ClearText,lastpos);
            }
        }
        else
        {
            var masktext = wrapper.get_Value().substring(this._LogicFirstPos,this._LogicLastPos+1);
            var logiTxt = this._LogicTextMask.substring(this._LogicFirstPos,this._LogicLastPos+1);
            var qtdDt = 0;
            var curvld = curpos - this._LogicFirstPos;
            if (this._isValidMaskedEditPosition(curpos))
            {
                exec = true;
                if (this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime)
                {
                    var arr_mask = this._SplitDateTime(masktext);
                    var posmask = curpos - this._LogicFirstPos;
                    if (posmask > arr_mask[0].length)
                    {
                        masktext = arr_mask[1];        
                        qtdDt = arr_mask[0].length +1;
                        logiTxt = logiTxt.substring(qtdDt);
                        curvld -= qtdDt;
                    }
                    else
                    {
                        masktext = arr_mask[0];
                        logiTxt = logiTxt.substring(0,arr_mask[0].length);
                    }
                }
                var resttext = masktext.substring(curvld+1);
                var restlogi = logiTxt.substring(curvld+1);
                masktext = masktext.substring(0,curvld) + this._PromptChar;
                logiTxt = logiTxt.substring(0,curvld) + this._LogicPrompt;
                var i;
                for (i = 0 ; i < parseInt(resttext.length,10) ; i++) 
                {
                    if (this._isValidMaskedEditPosition(curpos+1+i))
                    {
                        masktext += this._PromptChar;
                        logiTxt += this._LogicPrompt;
                    }
                    else
                    {
                        masktext += resttext.substring(i,i+1);
                        logiTxt += restlogi.substring(i,i+1);
                    }
                }
                var posaux = this._getNextPosition(curpos);
                for (i = 0 ; i < parseInt(resttext.length,10) ; i++) 
                {
                    if (this._isValidMaskedEditPosition(curpos+1+i) && restlogi.substring(i,i+1) != this._LogicPrompt)
                    {
                        masktext = masktext.substring(0,posaux- this._LogicFirstPos-qtdDt) + resttext.substring(i,i+1) + masktext.substring(posaux+1- this._LogicFirstPos-qtdDt);
                        logiTxt = logiTxt.substring(0,posaux- this._LogicFirstPos-qtdDt) + restlogi.substring(i,i+1) + logiTxt.substring(posaux+1- this._LogicFirstPos-qtdDt);
                        posaux = this._getNextPosition(posaux+1);
                    }
                }            
                if (this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime)
                {
                    var oritext = wrapper.get_Value().substring(this._LogicFirstPos,this._LogicLastPos+1);
                    var orilogi = this._LogicTextMask.substring(this._LogicFirstPos,this._LogicLastPos+1)
                    var arr_mask = this._SplitDateTime(oritext);
                    var posmask = curpos - this._LogicFirstPos;
                    if (posmask > arr_mask[0].length)
                    {
                        masktext = arr_mask[0] + " " +  masktext;        
                        logiTxt = orilogi.substring(0, qtdDt) + logiTxt;
                    }
                    else
                    {
                        masktext = masktext + " " + arr_mask[1];
                        logiTxt = logiTxt + orilogi.substring(arr_mask[0].length);
                    }
                }
                var currValue = wrapper.get_Value();
                masktext = currValue.substring(0,this._LogicFirstPos) + masktext + currValue.substring(this._LogicLastPos+1);
                this._LogicTextMask = this._LogicTextMask.substring(0,this._LogicFirstPos) + logiTxt + this._LogicTextMask.substring(this._LogicLastPos+1);
                wrapper.set_Value(masktext);
            }
        }
        return exec;
    }
    , _SplitDateTime: function(inputText) {
            var arr = [];
            if (inputText.charAt(this._LogicDateTimeSepPos) == " ") {
                arr[0] = inputText.substring(this._LogicFirstPos, this._LogicDateTimeSepPos);
                arr[1] = inputText.substring(this._LogicDateTimeSepPos + 1);
            }
            else {
                arr[0] = inputText;
            }
            return arr;
     }
    ,_ShowModalClipBoardInput : function()
    {
        var clip = prompt(this._ClipboardText,"");
        return clip;
    }
    ,_PasteFromClipBoard  : function()
    {
        var value = null;
        var curpos;
        var iniSel = -1;
        var fimSel = -1;
        if (Sys.Browser.agent == Sys.Browser.InternetExplorer) 
        {
            value = window.clipboardData.getData("Text");
        }
        else
        {
            var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element());
            var oldvalue = wrapper.get_Value();
            var BoundSel = this._GetBoundSelection();
            var curpos = this._getCurrentPosition();
            var OldAuto = this._AutoComplete;
            var OldInv = this._ClearTextOnInvalid;
            var OldCls = this._ClearMaskOnLostfocus;
            var OldDir = this._DirectSelText;
            this._AutoComplete = false;
            this._ClearTextOnInvalid = false;
            this._ClearMaskOnLostfocus = false;
            value = this._ShowModalClipBoardInput();
            this._AutoComplete = OldAuto;
            this._ClearTextOnInvalid = OldInv;
            this._ClearMaskOnLostfocus = OldCls;
            wrapper.set_Value(oldvalue);
            if (BoundSel)
            {
                this.setSelectionRange(BoundSel.left,BoundSel.right);
            }
            else
            {
                this.setSelectionRange(curpos,curpos);
            }
        }
        if (value == null || value == "")
        {
            return;
        }
        if (value.length > this._maskvalid.length)
        {
             value = value.substring(0,this._maskvalid.length);
        }
        curpos = this._deleteTextSelection();
        if (curpos == -1)
        {
            curpos = this._getCurrentPosition();
            if (BoundSel)
            {
                curpos = BoundSel.left;
            }
        }
        this.setSelectionRange(curpos,curpos);
        var ReturnPosDec = false;
        if (this._InputDirection == Sys.Extended.UI.MaskedEditInputDirections.RightToLeft && this._LogicLastInt != -1)
        {
            ReturnPosDec = true;
        }
        var i = 0;
        for (i = 0; i < value.length;i++)
        {
            var c = value.substring(i,i+1);
            var logiccur = curpos;
            if (ReturnPosDec)
            {
                logiccur = this._getLastEmptyPosition();
            }
            if ( (this._MaskType == Sys.Extended.UI.MaskedEditType.Time || this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime) && this.get_CultureFirstLettersAMPM().toUpperCase().indexOf(c.toUpperCase()) != -1)
            {
                if (this._AcceptAmPm)
                {
                    this.InsertAMPM(c);
                    this.setSelectionRange(curpos,curpos);
                }
            }
            else if (this._MaskType == Sys.Extended.UI.MaskedEditType.Number && this._AcceptNegative != Sys.Extended.UI.MaskedEditShowSymbol.None && "+-".indexOf(c) != -1)
            {
                this.InsertSignal(c);
                this.setSelectionRange(curpos,curpos);
            }
            else
            {
                var OriPos = curpos;
                curpos = this._getNextPosition(curpos);
                var logiccur = curpos;
                if (this._LogicLastInt != -1 && this._InputDirection == Sys.Extended.UI.MaskedEditInputDirections.RightToLeft)
                {
                    if (OriPos == this._LogicLastInt)
                    {
                        logiccur = this._getLastEmptyPosition();
                    }
                }
                else
                {
                    if (curpos >= this._LogicLastPos+1 && this._InputDirection == Sys.Extended.UI.MaskedEditInputDirections.RightToLeft)
                    {
                        logiccur = this._getLastEmptyPosition();
                    }
                }
                if (this._processKey(logiccur,c)) 
                {
                    if (this._MessageValidatorTip) 
                    {
                        this.ShowTooltipMessage(false);
                    }
                    if (this._InputDirection == Sys.Extended.UI.MaskedEditInputDirections.LeftToRight)
                    {
                        this._insertContent(c,logiccur);
                        curpos = this._getNextPosition(logiccur+1);
                    } 
                    else if (this._InputDirection == Sys.Extended.UI.MaskedEditInputDirections.RightToLeft)
                    {
                        if (this._LogicLastInt == -1)
                        {
                            if (curpos < this._LogicLastPos+1)
                            {
                                this._insertContent(c,logiccur);
                                curpos = this._getNextPosition(logiccur+1);
                            }
                            else
                            {
                                this._insertContentRight(c);
                                curpos = this._LogicLastPos+1;
                            }
                        }
                        else
                        {
                            if (OriPos != this._LogicLastInt)
                            {
                                this._insertContent(c,logiccur);
                                curpos = this._getNextPosition(logiccur+1);
                            }
                            else
                            {
                                this._insertContentRight(c);
                                curpos = this._LogicLastInt;
                            }
                        }
                    }
                    this.setSelectionRange(curpos,curpos);
                }
            }
        }
        if (ReturnPosDec)
        {
            this.setSelectionRange(this._LogicLastInt,this._LogicLastInt);
        }
    }
    , _MoveDecimalPos : function()
    {
        var e = this.get_element();
        var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(e);
        var curpos = this._LogicFirstPos;
        var max = this._LogicLastPos;
        var posDc = -1;
        while (curpos < max)
        {
            if (wrapper.get_Value().substring(curpos,curpos+1) == this.get_CultureDecimalPlaceholder())
            {
                posDc = curpos;
                break;
            }
            curpos++;
        }
        if (posDc == -1)
        {
            return;
        }
        this.setSelectionRange(posDc,posDc);
    }
    , _MoveThousandLTR : function()
    {
        var e = this.get_element();
        var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(e);
        var curpos = this._getCurrentPosition();
        var max = this._LogicLastPos;
        var cur = curpos+1;
        var posTh = -1;
        while (cur < max)
        {
            if (wrapper.get_Value().substring(cur,cur+1) == this.get_CultureThousandsPlaceholder())
            {
                posTh = cur;
                break;
            }
            cur++;
        }
        if (posTh == -1)
        {
            var cur = 0;
            max = curpos;
            while (cur < max)
            {
                if (wrapper.get_Value().substring(cur,cur+1) == this.get_CultureThousandsPlaceholder())
                {
                    posTh = cur;
                    break;
                }
                cur++;
            }
            if (posTh == -1)
            {
                return;
            }
        }
        this.setSelectionRange(posTh,posTh);
    }
    , _MoveThousandRTL : function()
    {
        var e = this.get_element();
        var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(e);
        var curpos = this._getCurrentPosition();
        var min = this._LogicFirstPos;
        var cur = curpos-1;
        var posTh = -1;
        while (cur > min)
        {
            if (wrapper.get_Value().substring(cur,cur+1) == this.get_CultureThousandsPlaceholder())
            {
                posTh = cur;
                break;
            }
            cur--;
        }
        if (posTh == -1)
        {
            cur = this._LogicLastPos;
            min = curpos;
            while (cur > min)
            {
                if (wrapper.get_Value().substring(cur,cur+1) == this.get_CultureThousandsPlaceholder())
                {
                    posTh = cur;
                    break;
                }
                cur--;
            }
            if (posTh == -1)
            {
                return;
            }
        }
        this.setSelectionRange(posTh,posTh);
    }
    , _AdjustElementDecimalLTR : function()
    {
        var e = this.get_element();
        var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(e);
        var curpos = this._getCurrentPosition();
        if (wrapper.get_Value().substring(curpos).indexOf(this.get_CultureDecimalPlaceholder()) == -1)
        {
            return;
        }
        var value = wrapper.get_Value().substring(this._LogicFirstPos,this._LogicLastPos+1);
        var newcur = value.indexOf(this.get_CultureDecimalPlaceholder());
        if (newcur  == -1)
        {
            return;
        }
        var arr_num;
        var ClearText = this._getClearMask(wrapper.get_Value());
        if (ClearText != "")
        {
            ClearText = ClearText.replace(new RegExp("(\\" + this.get_CultureThousandsPlaceholder() + ")", "g"), "") + '';
            arr_num = ClearText.split(this.get_CultureDecimalPlaceholder());
        }
        else
        {
            arr_num =  this.get_CultureDecimalPlaceholder().split(this.get_CultureDecimalPlaceholder());
        }      
        if (arr_num[0] == "")
        {
            arr_num[0] = "0";
        }
        var QtdDec = value.length - newcur - 1;
        while (arr_num[1].length < QtdDec)
        {
            arr_num[1] += "0";
        }
        var OldDir = this._InputDirection;
        this._InputDirection = Sys.Extended.UI.MaskedEditInputDirections.RightToLeft;
        this.loadValue(arr_num[0] + this.get_CultureDecimalPlaceholder() + arr_num[1],this._LogicLastPos);
        this._InputDirection = OldDir;
        newcur += this._LogicFirstPos + 1;
        this.setSelectionRange(newcur,newcur);
    }
    , _AdjustElementDecimalRTL : function()
    {
        var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element());
        var value = wrapper.get_Value().substring(this._LogicFirstPos,this._LogicLastPos+1);
        var posdec = value.indexOf(this.get_CultureDecimalPlaceholder());
        if (posdec == -1)
        {
            return;
        }
        var curpos = this._getCurrentPosition();
        if (posdec + this._LogicFirstPos >= curpos)
        {
            this._AdjustElementDecimalLTR();
            return;
        }
        var arr_num;
        var ClearText = this._getClearMask(wrapper.get_Value());
        if (ClearText != "")
        {
            ClearText = ClearText.replace(new RegExp("(\\" + this.get_CultureThousandsPlaceholder() + ")", "g"), "") + '';
            arr_num = ClearText.split(this.get_CultureDecimalPlaceholder());
        }
        else
        {
            arr_num =  this.get_CultureDecimalPlaceholder().split(this.get_CultureDecimalPlaceholder());
        }      
        if (arr_num[0] == "")
        {
            arr_num[0] = "0";
        }
        var QtdDec = value.length - posdec - 1;
        while (arr_num[1].length < QtdDec)
        {
            arr_num[1] += "0";
        }
        var OldDir = this._InputDirection;
        this._InputDirection = Sys.Extended.UI.MaskedEditInputDirections.RightToLeft;
        this.loadValue(arr_num[0] + this.get_CultureDecimalPlaceholder() + arr_num[1],this._LogicLastPos);
        this._InputDirection = OldDir;
        posdec += this._LogicFirstPos + 1;
        this.setSelectionRange(posdec,posdec);
    }
    , _AdjustTime : function(value,ValueDefault)
    {
        var emp = true;    
        var i
        for (i = 0 ; i < parseInt(value.length,10) ; i++) 
        {
            if (value.substring(i,i+1) != this._PromptChar)
            {
                emp = false;
            }
        }
        if (emp)
        {
           return ValueDefault;
        }
        var max = value.length;
        value = value.replace(new RegExp("(\\" + this._PromptChar + ")", "g"), "") + '';
        while (value.length < max)
        {
            value = "0" + value;
        }
        return value;
    }
    , _AdjustElementTime : function()
    {
        var e = this.get_element();
        var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(e);
        var type = "";
        var curpos = this._getCurrentPosition() - this._LogicFirstPos;
        var m_mask = this._maskvalid;
        var newcur = curpos + this._LogicFirstPos;
        var QtdDt = 0;
        if (this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime)
        {
            QtdDt = m_mask.split(" ")[0].length+1;
            if (curpos < QtdDt)
            {
                newcur = QtdDt+this._LogicFirstPos;
                this.setSelectionRange(newcur,newcur);
                return;
            }
            m_mask = m_mask.split(" ")[1];
            curpos -= QtdDt;
        }
        m_mask = m_mask.split(":");
        if (curpos <= 1)
        {
            type = "H";
            newcur = 3 + this._LogicFirstPos + QtdDt;
            
        } 
        else if (curpos >= 2 && curpos <= 4 && m_mask.length == 2)
        {
            type = "M";
            newcur = QtdDt+this._LogicFirstPos;
        }
        else if (curpos >= 2 && curpos <= 4 && m_mask.length == 3)
        {
            type = "M";
            newcur = 6 + this._LogicFirstPos + QtdDt;
        }
        else if (m_mask.length == 3)
        {
            type = "S";
            newcur = QtdDt+this._LogicFirstPos;
        } 
        if (type == "")
        {
            return;
        }
        var valueTM = wrapper.get_Value().substring(this._LogicFirstPos,this._LogicLastPos+1);
        if (this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime)
        {
            valueTM = (this._SplitDateTime(valueTM))[1];
        }
        var m_arrTime = valueTM.split(this.get_CultureTimePlaceholder());
        var elem = this._GetTimeElementText(type);
        var value;
        if (type == "H")
        {
            value = elem + this.get_CultureTimePlaceholder() + m_arrTime[1];
            if (m_arrTime.length == 3)
            {
                value += this.get_CultureTimePlaceholder() + m_arrTime[2];
            }
        }
        else if (type == "M")
        {
            value = m_arrTime[0] + this.get_CultureTimePlaceholder() + elem;
            if (m_arrTime.length == 3)
            {
                value += this.get_CultureTimePlaceholder() + m_arrTime[2];
            }
        }
        else if (type == "S")
        {
            value = m_arrTime[0] + this.get_CultureTimePlaceholder() + m_arrTime[1];
            value += this.get_CultureTimePlaceholder() + elem;
        }
        if (this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime)
        {
            value = wrapper.get_Value().substring(this._LogicFirstPos,QtdDt) + value;
        }
        this.loadMaskValue(value,this._LogicFirstPos,this._LogicSymbol);
        this.setSelectionRange(newcur,newcur);
    }
    , _GetTimeElementText : function(Type)
    {
        var aux;
        var logiTxt = this._LogicTextMask.substring(this._LogicFirstPos,this._LogicLastPos+1);
        if (this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime)
        {
            logiTxt = logiTxt.substring(this._maskvalid.split(" ")[0].length+1);
        }
        var m_arrTime = logiTxt.split(this.get_CultureTimePlaceholder());
        m_arrTime[0] = m_arrTime[0].replace(new RegExp("(\\" + this._LogicPrompt + ")", "g"), this._PromptChar) + '';
        aux = m_arrTime[0].replace(new RegExp("(\\" + this._PromptChar + ")", "g"), "") + '';
        if (aux !="" && aux.length < 2)
        {
            aux = "0" + aux;
            m_arrTime[0] = aux;
        }
        
        m_arrTime[1] = m_arrTime[1].replace(new RegExp("(\\" + this._LogicPrompt + ")", "g"), this._PromptChar) + '';
        aux = m_arrTime[1].replace(new RegExp("(\\" + this._PromptChar + ")", "g"), "") + '';
        if (aux !="" && aux.length < 2)
        {
            aux = "0" + aux;
            m_arrTime[1] =  aux;
        }
        if (m_arrTime.length == 3)
        {
            m_arrTime[2] = m_arrTime[2].replace(new RegExp("(\\" + this._LogicPrompt + ")", "g"), this._PromptChar) + '';
            aux = m_arrTime[2].replace(new RegExp("(\\" + this._PromptChar + ")", "g"), "") + '';
            if (aux !="" && aux.length < 2)
            {
                aux = "0" + aux;
                m_arrTime[2] =  aux;
            }
        }
        if (Type == "H")
        {
            return m_arrTime[0];
        }
        else if (Type == "M")
        {
            return m_arrTime[1];
        }
        return m_arrTime[2];
    }
    , _AdjustElementDateTime : function(c)
    {
        if (c == this.get_CultureDatePlaceholder())
        {
            this._AdjustElementDate();
        }
        if (c == this.get_CultureTimePlaceholder())
        {
            this._AdjustElementTime();
        }
    }
    , _AdjustElementDate : function()
    {
        var e = this.get_element();
        var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(e);
        var input = wrapper.get_Value().substring(this._LogicFirstPos,this._LogicLastPos+1);
        if (this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime)
        {
            input = this._SplitDateTime(input)[0];
        }
        var m_arrDate = input.split(this.get_CultureDatePlaceholder());
        var type = "";
        var curpos = this._getCurrentPosition() - this._LogicFirstPos;
        var newcur = curpos + this._LogicFirstPos;
        var QtdY = (this._maskvalid.indexOf("9999") != -1)?2:0;
        if (this.get_CultureDateFormat() == "DMY")
        {
           if (curpos <= 1)
           {
                type = "D";
                newcur = 3 + this._LogicFirstPos;
                
           } 
           else if (curpos >= 2 && curpos <= 4)
           {
                type = "M";
                newcur = 6 + this._LogicFirstPos;
           }
           else
           {
                if (curpos > 8 + QtdY &&  this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime)
                {
                    this.setSelectionRange(this._LogicFirstPos,this._LogicFirstPos);
                    return;
                }
                type = "Y";
                newcur = this._LogicFirstPos;
           } 
        }
        else if (this.get_CultureDateFormat() == "MDY")
        {
           if (curpos <= 1)
           {
                type = "M";
                newcur = 3 + this._LogicFirstPos;
                
           } 
           else if (curpos >= 2 && curpos <= 4)
           {
                type = "D";
                newcur = 6 + this._LogicFirstPos;
           }
           else
           {
                if (curpos > 8 + QtdY &&  this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime)
                {
                    this.setSelectionRange(this._LogicFirstPos,this._LogicFirstPos);
                    return;
                }
                type = "Y";
                newcur = this._LogicFirstPos;
           } 
        }
        else if (this.get_CultureDateFormat() == "DYM")
        {
           if (curpos <= 1)
           {
                type = "D";
                newcur = 3 + this._LogicFirstPos;
                
           } 
           else if (curpos >= 2 && curpos <= 4+QtdY)
           {
                type = "Y";
                newcur = 6 + QtdY + this._LogicFirstPos;
           }
           else
           {
                type = "M";
                newcur = this._LogicFirstPos;
           } 
        }
        else if (this.get_CultureDateFormat() == "MYD")
        {
           if (curpos <= 1)
           {
                type = "M";
                newcur = 3 + this._LogicFirstPos;
                
           } 
           else if (curpos >= 2 && curpos <= 4+QtdY)
           {
                type = "Y";
                newcur = 6 + QtdY + this._LogicFirstPos;
           }
           else
           {
                type = "D";
                newcur = this._LogicFirstPos;
           } 
        }
        else if (this.get_CultureDateFormat() == "YMD")
        {
           if (curpos <= 1+QtdY)
           {
                type = "Y";
                newcur = 3 + QtdY + this._LogicFirstPos;
                
           } 
           else if (curpos >= 2+ QtdY && curpos <= 4+QtdY)
           {
                type = "M";
                newcur = 6 + QtdY + this._LogicFirstPos;
           }
           else
           {
                type = "D";
                newcur = this._LogicFirstPos;
           } 
        }
        else if (this.get_CultureDateFormat() == "YDM")
        {
           if (curpos <= 1+QtdY)
           {
                type = "Y";
                newcur = 3 + QtdY + this._LogicFirstPos;
                
           } 
           else if (curpos >= 2+ QtdY && curpos <= 4+QtdY)
           {
                type = "D";
                newcur = 6 + QtdY + this._LogicFirstPos;
           }
           else
           {
                type = "M";
                newcur = this._LogicFirstPos;
           } 
        }            
        var elem = this._GetDateElementText(type);
        m_arrDate[this.get_CultureDateFormat().indexOf(type)] = elem; 
        var value = m_arrDate[0] + this.get_CultureDatePlaceholder() + m_arrDate[1] + this._CultureDatePlaceholder + m_arrDate[2];
        if (this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime)
        {
            var aux = wrapper.get_Value().substring(this._LogicFirstPos,this._LogicLastPos+1);
            var arr = this._SplitDateTime(aux);
            var time_arr = arr[1].split(" ");
            if (time_arr.length == 2) 
            {
                value += " " + time_arr[0] + " " + time_arr[1];
            }
            else 
            {
                value += " " + arr[1];
            }
        }
        this.loadMaskValue(value,this._LogicFirstPos,this._LogicSymbol);
        this.setSelectionRange(newcur,newcur);
    }
    , _GetDateElementText : function(Type)
    {
        var aux;
        var m_arrDate;
        if (this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime)
        {
            var auxdate = this._SplitDateTime(this._LogicTextMask.substring(this._LogicFirstPos, this._LogicLastPos + 1))[0];
            m_arrDate = auxdate.split(this.get_CultureDatePlaceholder());
        }
        else
        {
            m_arrDate = this._LogicTextMask.substring(this._LogicFirstPos,this._LogicLastPos+1).split(this.get_CultureDatePlaceholder());
        }
        m_arrDate[this.get_CultureDateFormat().indexOf("D")] = m_arrDate[this.get_CultureDateFormat().indexOf("D")].replace(new RegExp("(\\" + this._LogicPrompt + ")", "g"), this._PromptChar) + '';
        aux = m_arrDate[this.get_CultureDateFormat().indexOf("D")].replace(new RegExp("(\\" + this._PromptChar + ")", "g"), "") + '';
        if (aux !="" && aux.length < 2)
        {
            aux = "0" + aux;
            m_arrDate[this.get_CultureDateFormat().indexOf("D")] = aux
        }
        
        m_arrDate[this.get_CultureDateFormat().indexOf("M")] = m_arrDate[this.get_CultureDateFormat().indexOf("M")].replace(new RegExp("(\\" + this._LogicPrompt + ")", "g"), this._PromptChar) + '';
        aux = m_arrDate[this.get_CultureDateFormat().indexOf("M")].replace(new RegExp("(\\" + this._PromptChar + ")", "g"), "") + '';
        if (aux !="" && aux.length < 2)
        {
            aux = "0" + aux;
            m_arrDate[this.get_CultureDateFormat().indexOf("M")] =  aux;
        }
        
        var Y4 = (this._maskvalid.indexOf("9999") != -1)?true:false;
        m_arrDate[this.get_CultureDateFormat().indexOf("Y")] = m_arrDate[this.get_CultureDateFormat().indexOf("Y")].replace(new RegExp("(\\" + this._LogicPrompt + ")", "g"), this._PromptChar) + '';
        aux = m_arrDate[this.get_CultureDateFormat().indexOf("Y")].replace(new RegExp("(\\" + this._PromptChar + ")", "g"), "") + '';
        if (Y4)
        {
            if (aux !="" && aux.length < 4)
            {
                while (aux.length < 4)
                {
                    aux = "0" + aux;
                }
                m_arrDate[this.get_CultureDateFormat().indexOf("Y")] = aux;
            }
        }
        else
        {
            if (aux !="" && aux.length < 2)
            {
                aux = "0" + aux;
                m_arrDate[this.get_CultureDateFormat().indexOf("Y")] = aux;
            }
        }
        return m_arrDate[this.get_CultureDateFormat().indexOf(Type)];
    }
    , _GetBoundSelection : function()
    {
        var ret = null;
        var input = this.get_element();
        if (input.setSelectionRange) 
        {
            if (input.selectionStart != input.selectionEnd)
            {
                ret = {left: parseInt(input.selectionStart,10),right: parseInt(input.selectionEnd,10)};
            }
        }    
        else if (document.selection) 
        {
            var sel = document.selection.createRange();
            if (sel.text != "")
            {
                var tam = parseInt(sel.text.length,10);
                sel.text = String.fromCharCode(3) + sel.text;
                var dummy = input.createTextRange();
                dummy.findText(String.fromCharCode(3));
                dummy.select();
                var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(input);
                var pos = parseInt(wrapper.get_Value().indexOf(String.fromCharCode(3)),10);
                document.selection.clear();
                ret = {left: pos,right: pos+tam};
            }
        }
        return ret;
    }
    , _deleteTextSelection : function()
    {
        var input = this.get_element();
        var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(input);
        var masktext = wrapper.get_Value();
        var lenaux = -1;
        var begin = -1;
        var isDel = false;
        if (input.setSelectionRange) 
        {
            if (input.selectionStart != input.selectionEnd)
            {
                var ini = parseInt(input.selectionStart,10);
                var fim = parseInt(input.selectionEnd,10);
                isDel = true;
                lenaux = fim - ini;
                begin=input.selectionStart;
                input.selectionEnd = input.selectionStart;
            }
        }
        else if (document.selection) 
        {
            var sel = document.selection.createRange();
            if (sel.text != "")
            {
                isDel = true;
                var aux = sel.text + String.fromCharCode(3);
                sel.text = aux;
                var dummy = input.createTextRange();
                dummy.findText(aux);
                dummy.select();
                begin = wrapper.get_Value().indexOf(aux);
                document.selection.clear();
                lenaux = parseInt(aux.length,10)-1;
            }
        }
        if (isDel)
        {
            for (var i = 0 ; i < lenaux ; i++) 
            {
                if (this._isValidMaskedEditPosition(begin+i))
                {
                    masktext = masktext.substring(0,begin+i) + this._PromptChar + masktext.substring(begin+i+1);
                    this._LogicTextMask = this._LogicTextMask.substring(0,begin+i) + this._LogicPrompt + this._LogicTextMask.substring(begin+i+1);
                }
            }
            wrapper.set_Value(masktext);
            if (this._InputDirection == Sys.Extended.UI.MaskedEditInputDirections.RightToLeft)
            {
                begin += lenaux;
            }
        }
        this._DirectSelText = "";
        return begin;
    }
    , _isNormalChar : function(evt,scanCode) {
        /// <summary>
        /// Returns true if the specified charCode is a key rather than a normal (displayable) character or Enter Key
        /// </summary>
        /// <param>
        ///  name="scanCode" type="integer" : keycode
        /// </param>
        /// <returns type="Boolean" />
        var ret = true;
        if (Sys.Browser.agent == Sys.Browser.Opera && evt.type == "keydown")
        {
            this._SaveKeyDown = scanCode;
        }
        if (scanCode < 32) { // < space
            ret = false;
        }
        else if (Sys.Browser.agent != Sys.Browser.InternetExplorer || evt.type == "keydown") 
        {
            switch (scanCode) 
            {
                case 33: //pg up or ! 
                    if (typeof(evt.rawEvent.which) != "undefined" && evt.rawEvent.which !=null)
                    {
                        if (evt.rawEvent.which == 0)
                        {
                            ret = false;
                        }
                    }
                    break;
                case 34: //pg down  or " 
                    if (typeof(evt.rawEvent.which) != "undefined" && evt.rawEvent.which !=null)
                    {
                        if (evt.rawEvent.which == 0)
                        {
                            ret = false;
                        }
                    }
                    break;
                case 35: //end   
                    if (Sys.Browser.agent == Sys.Browser.Opera && evt.type == "keypress")
                    {
                        if (this._SaveKeyDown == 35) 
                        {
                            ret = false;
                        }
                    }
                    else
                    {
                        ret = false;
                    }
                    break;
                case 36: //home
                    if (Sys.Browser.agent == Sys.Browser.Opera && evt.type == "keypress")
                    {
                        if (this._SaveKeyDown == 36)
                        {
                            ret = false;
                        }
                    }
                    else
                    {
                        ret = false;
                    }
                    break;
                case 37: //left  or % 
                    if (typeof(evt.rawEvent.which) != "undefined" && evt.rawEvent.which !=null)
                    {
                        if (evt.rawEvent.which == 0)
                        {
                            ret = false;
                        }
                    }
                    break;
                case 38: //up or &
                    if (typeof(evt.rawEvent.which) != "undefined" && evt.rawEvent.which !=null)
                    {
                        if (evt.rawEvent.which == 0)
                        {
                            ret = false;
                        }
                    }
                    break;
                case 39: //right or  '
                    if (typeof(evt.rawEvent.which) != "undefined" && evt.rawEvent.which !=null)
                    {
                        if (evt.rawEvent.which == 0)
                        {
                            ret = false;
                        }
                    }
                    break;
                case 40: //down or (
                    if (typeof(evt.rawEvent.which) != "undefined" && evt.rawEvent.which !=null)
                    {
                        if (evt.rawEvent.which == 0)
                        {
                            ret = false;
                        }
                    }
                    break;
                case 45: //ins - at opera Inconsistency with -
                    if (typeof(evt.rawEvent.which) != "undefined" && evt.rawEvent.which !=null && Sys.Browser.agent != Sys.Browser.Opera)
                    {
                        if (evt.rawEvent.which == 0)
                        {
                            ret = false;
                        }
                    }
                    else if (Sys.Browser.agent == Sys.Browser.Opera)   
                    {
                        ret = true;
                    }
                    else
                    {
                        ret = false;
                    }
                    break;
                case 86: // V   
                case 118: // v
                    if (!evt.rawEvent.shiftKey && evt.rawEvent.ctrlKey && !evt.rawEvent.altKey) 
                    {
                        ret = false;
                    }
                    break;
                case 46: //del FF ~ Mozilla - at opera Inconsistency with .
                    if (typeof(evt.rawEvent.which) != "undefined" && evt.rawEvent.which !=null && Sys.Browser.agent != Sys.Browser.Opera)
                    {
                        if (evt.rawEvent.which == 0)
                        {
                            ret = false;
                        }
                    }
                    else if (Sys.Browser.agent == Sys.Browser.Opera && evt.type == "keypress")
                    {
                        if (this._SaveKeyDown == 127)
                        {
                            ret = false;
                        }
                    }
                    else
                    {
                        ret = false;
                    }
                    break;
                case 127: //del IE - at opera Inconsistency with .
                    ret = false;
                    break;
            }
        }        
        return ret;
    }
    , _KeyCode : function(evt) {
        /// <summary>
        /// Get Keycode for any browser
        /// and convert keycode Safari to IE Code
        /// </summary>
        /// <param>
        /// Event info name="evt" type="Sys.UI.DomEvent" 
        /// </param>
        /// <Return>
        /// Keycode value 
        /// </Return>
        var scanCode = 0;
        if (evt.keyIdentifier) {
            if (evt.charCode == 63272) { //63272: 'KEY_DELETE', 46
                scanCode = 46;
            }
            else if (evt.charCode == 63302) { //63302: 'KEY_INSERT', 45
                scanCode = 45;
            }
            else if (evt.charCode == 63233) { //63233: 'KEY_ARROW_DOWN',40
                scanCode = 40;
            }
            else if (evt.charCode == 63235) { //63235: 'KEY_ARROW_RIGHT', 39
                scanCode = 39;
            }
            else if (evt.charCode == 63232) { //63232: 'KEY_ARROW_UP', 38
                scanCode = 38;
            }
            else if (evt.charCode == 63234) { //63234: 'KEY_ARROW_LEFT', 37
                scanCode = 37;
            }
            else if (evt.charCode == 63273) { //63273: 'KEY_HOME', 36
                scanCode = 36;
            }
            else if (evt.charCode == 63275) { //63275: 'KEY_END', 35
                scanCode = 35;
            }
            else if (evt.charCode == 63277) { //63277: 'KEY_PAGE_DOWN', 34
                scanCode = 34;
            }
            else if (evt.charCode == 63276) { //63276: 'KEY_PAGE_UP', 33
                scanCode = 33;
            }
            else if (evt.charCode == 3) { //3: 'KEY_ENTER', 13
                scanCode = 13;
            }
        }    
        if (scanCode == 0) {
            if (evt.charCode) {
                scanCode = evt.charCode;
            }
        }
        if (scanCode == 0) {
            scanCode = evt.keyCode;
        }
        return scanCode;
    }
    , _InitValue : function(value,loadFirst)
    {
        this._LogicSymbol = "";
        var e = this.get_element();
        var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(e);
        wrapper.set_Value(this._EmptyMask);
        if (value == this._EmptyMask || value == "")
        {
            this.loadValue("",this._LogicFirstPos);
        }
        else if (this._MaskType == Sys.Extended.UI.MaskedEditType.Date && value != "")
        {
            value = this.ConvFmtDate(value,loadFirst);
        }
        else if (this._MaskType == Sys.Extended.UI.MaskedEditType.Time && value != "")
        {
            value = this.ConvFmtTime(value,loadFirst);
        }
        else if (this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime && value != "")
        {
            value = this.ConvFmtDateTime(value,loadFirst);
        }
        else if (this._MaskType == Sys.Extended.UI.MaskedEditType.Number && value != "")
        {
            value = this.ConvFmtNumber(value,loadFirst);
        }
        if (this._InputDirection == Sys.Extended.UI.MaskedEditInputDirections.LeftToRight && value != "")
        {
            if (this._MaskType == Sys.Extended.UI.MaskedEditType.Number)
            {
                this._InputDirection = Sys.Extended.UI.MaskedEditInputDirections.RightToLeft;
                this.loadValue(value,this._LogicLastPos);
                this._InputDirection = Sys.Extended.UI.MaskedEditInputDirections.LeftToRight;
            }
            else
            {
                this.loadValue(value,this._LogicFirstPos);
            }
        } 
        else if (this._InputDirection == Sys.Extended.UI.MaskedEditInputDirections.RightToLeft && value != "")
        {
            this.loadValue(value,this._LogicLastPos);
        }
        if (this._MaskType == Sys.Extended.UI.MaskedEditType.Number)
        {
            if (this._InLostfocus && this._LogicSymbol == "-" && this._OnBlurCssNegative != "")
            {
                this.AddCssClassMaskedEdit(this._OnBlurCssNegative);
            }
        }
    }
    , loadMaskValue : function(value,logicPosition, Symb)
    {
        this._createMask();
        var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element());
        wrapper.set_Value(this._EmptyMask);
        if ( (this._MaskType == Sys.Extended.UI.MaskedEditType.Time || this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime) && this.get_CultureFirstLettersAMPM().toUpperCase().indexOf(Symb.toUpperCase().substring(0,1)) != -1)
        {
            if (this._AcceptAmPm)
            {
                this.InsertAMPM(Symb.toUpperCase().substring(0,1));
            }
        }
        else if (this._MaskType == Sys.Extended.UI.MaskedEditType.Number && this._AcceptNegative != Sys.Extended.UI.MaskedEditShowSymbol.None && "+-".indexOf(Symb) != -1)
        {
            this.InsertSignal(Symb);
        }
        var i = 0;
        for (i = 0 ; i < parseInt(value.length,10) ; i++) 
        {
            var c = value.substring(i+logicPosition,i+logicPosition+1);     
            if (this._processKey(logicPosition+i,c)) 
            {
                this._insertContent(c,logicPosition+i);
            }
        }
    }
    , loadValue : function(value,logicPosition)
    {
        var i;
        this._createMask();
        var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element());
        wrapper.set_Value(this._EmptyMask);
        if (this._InputDirection == Sys.Extended.UI.MaskedEditInputDirections.LeftToRight)
        {
            for (i = 0 ; i < parseInt(value.length,10) ; i++) 
            {
                var c = value.substring(i,i+1);     
                if ( (this._MaskType == Sys.Extended.UI.MaskedEditType.Time || this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime) && this.get_CultureFirstLettersAMPM().toUpperCase().indexOf(c.toUpperCase()) != -1)
                {
                    if (this._AcceptAmPm)
                    {
                        this.InsertAMPM(c);
                    }
                }
                else if (this._MaskType == Sys.Extended.UI.MaskedEditType.Number && this._AcceptNegative != Sys.Extended.UI.MaskedEditShowSymbol.None && "+-".indexOf(c) != -1)
                {
                    this.InsertSignal(c);
                }
                if (this._processKey(logicPosition,c)) 
                {
                    this._insertContent(c,logicPosition);
                    logicPosition  = this._getNextPosition(logicPosition+1);
                }
            }
        }
        else if (this._InputDirection == Sys.Extended.UI.MaskedEditInputDirections.RightToLeft)
        {
            if (logicPosition == this._LogicLastInt)
            {
                logicPosition = this._getPreviousPosition(logicPosition);
                var arr_num = value.split(this.get_CultureDecimalPlaceholder())
                for (i = parseInt(arr_num[0].length,10) ; i > 0  ; i--) 
                {
                    var c = arr_num[0].substring(i-1,i);  
                    if (this._MaskType == Sys.Extended.UI.MaskedEditType.Number && this._AcceptNegative != Sys.Extended.UI.MaskedEditShowSymbol.None && "+-".indexOf(c) != -1)
                    {
                        this.InsertSignal(c);
                    }
                    if (this._processKey(logicPosition,c)) 
                    {
                        this._insertContent(c,logicPosition);
                        logicPosition  = this._getPreviousPosition(logicPosition-1);
                    }
                } 
                if (arr_num.length > 1)
                {
                    logicPosition  = this._getNextPosition(this._LogicLastInt);
                    for (i = 0 ; i < parseInt(arr_num[1].length,10) ; i++) 
                    {
                        var c = arr_num[1].substring(i,i+1);     
                        if (this._MaskType == Sys.Extended.UI.MaskedEditType.Number && this._AcceptNegative != Sys.Extended.UI.MaskedEditShowSymbol.None && "+-".indexOf(c) != -1)
                        {
                            this.InsertSignal(c);
                        }
                        if (this._processKey(logicPosition,c)) 
                        {
                            this._insertContent(c,logicPosition);
                            logicPosition  = this._getNextPosition(logicPosition+1);
                        }
                    }
                }
            }
            else
            {
                for (i = parseInt(value.length,10) ; i > 0  ; i--) 
                {
                    var c = value.substring(i-1,i);  
                    if (this._MaskType == Sys.Extended.UI.MaskedEditType.Number && this._AcceptNegative != Sys.Extended.UI.MaskedEditShowSymbol.None && "+-".indexOf(c) != -1)
                    {
                        this.InsertSignal(c);
                    }
                    if (this._processKey(logicPosition,c)) 
                    {
                        this._insertContent(c,logicPosition);
                        logicPosition  = this._getPreviousPosition(logicPosition-1);
                    }
                }   
            }
        }
    }
    , AutoFormatNumber : function()
    {
        var i;
        var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element());
        ValueText = wrapper.get_Value();
        var AutoComp = this._AutoCompleteValue;
        var okdgt = false;
        for (i = this._LogicFirstPos ; i <= this._LogicLastPos ; i++) 
        {
            if (this._LogicTextMask.substring(i,i+1) == this._LogicPrompt)
            {
                var CharComp = "0";
                if (AutoComp != "")
                {
                    CharComp = AutoComp.substring(i-this._LogicFirstPos,i+1-this._LogicFirstPos);
                }
                if (okdgt)
                {
                    this._LogicTextMask = this._LogicTextMask.substring(0,i) + CharComp + this._LogicTextMask.substring(i+1);
                    ValueText = ValueText.substring(0,i) + CharComp + ValueText.substring(i+1);
                }
            }
            else if (this._LogicMask.substring(i,i+1) == this._LogicPrompt && "123456789".indexOf(this._LogicTextMask.substring(i,i+1)) != -1)
            {
                okdgt = true;
            }
        }
        wrapper.set_Value(ValueText);
        return ValueText;
    }
    , AutoFormatTime : function()
    {
        var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element());   
        ValueText = wrapper.get_Value();
        var autocomp = this._AutoCompleteValue;
        if (autocomp.indexOf(this.get_CultureTimePlaceholder()) == -1)
        {
            autocomp = "";
        }
        if (this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime)
        {
            var arr = this._SplitDateTime(ValueText);
            var time_arr = arr[1].split(" ");
            if (time_arr.length == 2) 
            {
                ValueText = time_arr[0] + " " + time_arr[1];
            }
            else 
            {
                ValueText = arr[0];
            }
            if (autocomp != "")
            {
                if (autocomp.indexOf(this.get_CultureDatePlaceholder()) == -1)
                {
                    autocomp = " " + autocomp;
                }
                var autocomp_arr = this._SplitDateTime(autocomp);
                var autocomptime_arr = autocomp_arr[1].split(" ");
                if (autocomptime_arr.length == 2) 
                {
                    autocomp = autocomptime_arr[0] + " " + autocomptime_arr[1];
                }
                else {
                    autocomp = autocomp_arr[0];
                }
            }
        }
        var CurDate = new Date();
        var Hcur = CurDate.getHours().toString();
        if (Hcur.length < 2)
        {
            Hcur = "0" + Hcur;
        }
        if (autocomp != "")
        {
            Hcur = autocomp.substring(0,2);
        }
        var SetAM = false;
        var SetPM = false;
        var LcAM = "";
        var LcPM = "";
        var Symb = "";
        if (this.get_CultureAMPMPlaceholder() != "")
        {
            var m_arrtm = this.get_CultureAMPMPlaceholder().split(this._AMPMPlaceholderSeparator);
            LcAM = m_arrtm[0];
            LcPM = m_arrtm[1];
            if (autocomp == "")
            {
                var Symb = LcAM;
                if (Hcur > 12)
                {
                    Hcur = (parseInt(Hcur,10) - 12).toString();
                    if (Hcur.length < 2)
                    {
                        Hcur = "0" + Hcur;
                    }
                    Symb = LcPM;
                }
            }
            else
            {
                Symb = LcAM; // default
                if (autocomp.indexOf(LcPM) != -1)
                {
                    Symb = LcPM;
                }
            }
            SetAM = true; // default
            if (ValueText.indexOf(LcPM) != -1 && LcPM != "")
            {
                SetPM = true;
            }
            if (!this._AcceptAmPm)
            {
                Symb = "";
                SetPM = false;
                SetAM = false;
            }
            else
            {
                var emp = true;
                if (ValueText.substring(0,1) != this._PromptChar || ValueText.substring(1,2) != this._PromptChar)
                {
                    emp = false;
                }
                if (emp && Symb != "") 
                {
                    SetAM = true; // default;
                    SetPM = false;
                    if (LcPM == Symb)
                    {
                        SetPM = true;
                    }
                }
            }
        }
        var Mcur = CurDate.getMinutes().toString();
        if (Mcur.length < 2)
        {
            Mcur = "0" + Mcur;
        }
        if (autocomp != "" )
        {
            Mcur = autocomp.substring(3,5);
        }
        var Scur = "00";
        var PH,PM;
        if (this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime)
        {
            PH = ValueText.substring(0,2);
            PH = this._AdjustTime(PH,Hcur);
            PM = ValueText.substring(3,5);
            PM = this._AdjustTime(PM,Mcur);
        }
        else
        {
            PH = ValueText.substring(this._LogicFirstPos,this._LogicFirstPos+2);
            PH = this._AdjustTime(PH,Hcur);
            PM = ValueText.substring(this._LogicFirstPos+3,this._LogicFirstPos+5);
            PM = this._AdjustTime(PM,Mcur);
        }
        var maskvld = this._maskvalid;
        if (this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime)
        {
            maskvld = maskvld.split(" ")[1];
        }
        if (maskvld == "99:99:99")
        {
            if (autocomp != "" )
            {
                Scur = autocomp.substring(6);
            }
            var PS;
            if (this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime)
            {
                PS = ValueText.substring(6,8);
                PS = this._AdjustTime(PS,Scur);
            }
            else
            {
                PS = ValueText.substring(this._LogicFirstPos+6,this._LogicFirstPos+8);
                PS = this._AdjustTime(PS,Scur);
            }
            ValueText = PH + this.get_CultureTimePlaceholder() + PM + this.get_CultureTimePlaceholder() + PS;
        }
        else
        {
            ValueText = PH + this.get_CultureTimePlaceholder() + PM;
        }
        if (SetPM)
        {
            ValueText += " " + LcPM;
        }
        else if (SetAM)
        {
            ValueText += " " + LcAM;
        }
        if (this._MaskType != Sys.Extended.UI.MaskedEditType.DateTime)
        {
            this.loadValue(ValueText,this._LogicFirstPos);
        }
        return ValueText;
    }
    , AutoFormatDateTime : function()
    {
        var PartDt = this.AutoFormatDate();            
        var PartTm = this.AutoFormatTime();            
        this.loadValue(PartDt + " " + PartTm,this._LogicFirstPos);
        return PartDt + " " + PartTm;
    }
    , AutoFormatDate : function()
    {
        var D = this._GetDateElementText("D").replace(new RegExp("(\\" + this._PromptChar + ")", "g"), "") + '';
        var M = this._GetDateElementText("M").replace(new RegExp("(\\" + this._PromptChar + ")", "g"), "") + '';
        var Y = this._GetDateElementText("Y").replace(new RegExp("(\\" + this._PromptChar + ")", "g"), "") + '';
        var Y4 = (this._maskvalid.indexOf("9999") != -1)?true:false;
        var autocomp = this._AutoCompleteValue;
        if (autocomp.indexOf(this.get_CultureDatePlaceholder()) == -1)
        {
            autocomp = "";
        }
        var Dcur,Mcur,Ycur;
        if (autocomp == "")
        {
            var CurDate = new Date();
            Dcur = (CurDate.getUTCDate()).toString();
            if (Dcur.length < 2)
            {
                Dcur = "0" + Dcur;
            }
            Mcur = (CurDate.getUTCMonth()+1).toString();
            if (Mcur.length < 2)
            {
                Mcur = "0" + Mcur;
            }
            if (Y4)
            {
                Ycur = CurDate.getUTCFullYear().toString();
            }
            else
            {
                Ycur = Ycur.substring(2);
            }
        }
        else
        {
            var m_arrDate;
            if (this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime)
            {
                if (autocomp.indexOf(this.get_CultureTimePlaceholder()) == -1)
                {
                    autocomp = autocomp + " ";
                }
                var partdt = this._SplitDateTime(autocomp)[0];
                m_arrDate = partdt.split(this.get_CultureDatePlaceholder());
            }
            else
            {
                m_arrDate = autocomp.split(this.get_CultureDatePlaceholder());
            }
            if (this.get_CultureDateFormat() == "DMY")
            {
                Dcur = m_arrDate[0];
                Mcur = m_arrDate[1];
                Ycur = m_arrDate[2];
            }
            else if (this.get_CultureDateFormat() == "MDY")
            {
                Dcur = m_arrDate[1];
                Mcur = m_arrDate[0];
                Ycur = m_arrDate[2];
            }
            else if (this.get_CultureDateFormat() == "DYM")
            {
                Dcur = m_arrDate[0];
                Mcur = m_arrDate[2];
                Ycur = m_arrDate[1];
            }
            else if (this.get_CultureDateFormat() == "MYD")
            {
                Dcur = m_arrDate[2];
                Mcur = m_arrDate[0];
                Ycur = m_arrDate[1];
            }
            else if (this.get_CultureDateFormat() == "YMD")
            {
                Dcur = m_arrDate[2];
                Mcur = m_arrDate[1];
                Ycur = m_arrDate[0];
            }
            else if (this.get_CultureDateFormat() == "YDM")
            {
                Dcur = m_arrDate[1];
                Mcur = m_arrDate[2];
                Ycur = m_arrDate[0];
            }            
            if (Dcur.length < 2)
            {
                Dcur = "0" + Dcur;
            }
            if (Mcur.length < 2)
            {
                Mcur = "0" + Mcur;
            }
            if (Y4)
            {
                while (Ycur.length < 4)
                {
                    Ycur = "0" + Ycur;
                }
            }
            else
            {
                while (Ycur.length < 2)
                {
                    Ycur = "0" + Ycur;
                }
            }
        }
        if (D == "")
        {
            D = Dcur;
        }
        if (M== "")
        {
            M = Mcur;
        }
        if (Y == "")
        {
            Y = Ycur;
        }
        var value;
        if (this.get_CultureDateFormat() == "DMY")
        {
          value = D + this.get_CultureDatePlaceholder() + M + this._CultureDatePlaceholder + Y;
        }
        else if (this.get_CultureDateFormat() == "MDY")
        {
          value = M + this.get_CultureDatePlaceholder() + D + this._CultureDatePlaceholder + Y;
        }
        else if (this.get_CultureDateFormat() == "DYM")
        {
          value = D + this.get_CultureDatePlaceholder() + Y + this._CultureDatePlaceholder + M;
        }
        else if (this.get_CultureDateFormat() == "MYD")
        {
          value = M + this.get_CultureDatePlaceholder() + Y + this._CultureDatePlaceholder + D;
        }
        else if (this.get_CultureDateFormat() == "YMD")
        {
          value = Y + this.get_CultureDatePlaceholder() + M + this._CultureDatePlaceholder + D;
        }
        else if (this.get_CultureDateFormat() == "YDM")
        {
          value = Y + this.get_CultureDatePlaceholder() + D + this._CultureDatePlaceholder + M;
        }
        if (this._MaskType != Sys.Extended.UI.MaskedEditType.DateTime)
        {
            this.loadValue(value,this._LogicFirstPos);
        }
        return value;
    }
    , ConvFmtNumber : function(input,loadFirst)
    {
        if (this._maskvalid.split(this.get_CultureDecimalPlaceholder()).length == 2)
        {
            if (input.substring(input.length-1,input.length) == this.get_CultureDecimalPlaceholder())
            {
                input = input.substring(0,input.length-1);
            }
        }
        return input;
    }
    , ConvFmtTime : function(input,loadFirst)
    {
        var AddH = 0;
        var SetAM = false;
        var SetPM = false;
        var LcAM = "";
        var LcPM = "";
        if (this.get_CultureAMPMPlaceholder() != "")
        {
            LcAM = this.get_CultureAMPMPlaceholder().split(this._AMPMPlaceholderSeparator)[0];
            LcPM = this.get_CultureAMPMPlaceholder().split(this._AMPMPlaceholderSeparator)[1];
        }
        if (loadFirst)
        {
            var LDLcAM = "";
            var LDLcPM = "";
            if (this._CultureAMPMPlaceholder != "")
            {
                LDLcAM = this._CultureAMPMPlaceholder.split(this._AMPMPlaceholderSeparator)[0];
                LDLcPM = this._CultureAMPMPlaceholder.split(this._AMPMPlaceholderSeparator)[1];
            }
            if (this.get_UserTimeFormat() == Sys.Extended.UI.MaskedEditUserTimeFormat.TwentyFourHour)
            {
                input = input.replace(new RegExp("(\\" + LDLcAM + ")", "g"),"");
                if (input.indexOf(LDLcPM) != -1)
                {
                    AddH = 12;
                }
                input = input.replace(new RegExp("(\\" + LDLcPM + ")", "g"),"");
            }
        }    
        if (input.indexOf(LcAM) != -1 && LcAM != "")
        {
            SetAM = true;
        }
        else if (input.indexOf(LcPM) != -1 && LcPM != "")
        {
            SetPM = true;
        }
        if (LcAM != "")
        {
            input = input.replace(new RegExp("(\\" + LcAM + ")", "g"), "");
        }
        if (LcPM != "")
        {
            input = input.replace(new RegExp("(\\" + LcPM + ")", "g"), "");
        }
        input = input.replace(new RegExp("(\\" + " " + ")", "g"), "");
        var m_arrTime = input.split(this.get_CultureTimePlaceholder());
        var m_mask = this._maskvalid;
        if (this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime)
        {
            m_mask = m_mask.split(" ")[1];
        }
        m_mask = m_mask.split(":");
        if (parseInt(m_arrTime.length,10) < 2 || parseInt(m_arrTime.length,10) > 3)
        {
            return "";
        }
        var H = parseInt(m_arrTime[0],10) + AddH;
        H = H.toString();
        if (H.length < m_mask[0].length)
        {
            while (H.length < m_mask[0].length)
            {
                H = "0" + H;
            }
        }
        m_arrTime[0] = H;
        var M = parseInt(m_arrTime[1],10) + '';
        if (M.length < m_mask[1].length)
        {
            while (M.length < m_mask[1].length)
            {
                M = "0" + M;
            }
        }
        m_arrTime[1] = M;
        var value = "";
        if (parseInt(m_arrTime.length,10) == 3)
        {
            var S = parseInt(m_arrTime[2],10) + '';
            if (S.length < m_mask[2].length)
            {
                while (S.length < m_mask[2].length)
                {
                    S = "0" + S;
                }
            }
            m_arrTime[2] = S;
            value = m_arrTime[0] + this.get_CultureTimePlaceholder() + m_arrTime[1] + this.get_CultureTimePlaceholder() + m_arrTime[2];
        }
        else
        {
            value = m_arrTime[0] + this.get_CultureTimePlaceholder() + m_arrTime[1]; 
        }
        if (SetAM)
        {
            value += " " + LcAM;
        }
        else if (SetPM)
        {
            value += " " + LcPM;
        }
        return value;
    }
    , ConvFmtDateTime : function(input,loadFirst)
    {
        var arr = this._SplitDateTime(input);
        var partdt = arr[0];
        var parttm = arr[1];
        if (parttm.split(" ").length == 2) 
        {
            parttm += " " + parttm.split(" ")[1];
        }
        partdt = this.ConvFmtDate(partdt,loadFirst);
        parttm = this.ConvFmtTime(parttm,loadFirst);
        return  partdt + " " + parttm;
    }
    , ConvFmtDate : function(input,loadFirst)
    {
        var m_arrDateLD; 
        var m_arrDate;
        if (loadFirst)
        {
            m_arrDateLD = input.split(this.get_CultureDatePlaceholder());
            m_arrDate = input.split(this.get_CultureDatePlaceholder());
            if (this.get_UserDateFormat() != Sys.Extended.UI.MaskedEditUserDateFormat.None)
            {
                  m_arrDate[this.get_CultureDateFormat().indexOf("D")] = m_arrDateLD[this._CultureDateFormat.indexOf("D")];   
                  m_arrDate[this.get_CultureDateFormat().indexOf("M")] = m_arrDateLD[this._CultureDateFormat.indexOf("M")];   
                  m_arrDate[this.get_CultureDateFormat().indexOf("Y")] = m_arrDateLD[this._CultureDateFormat.indexOf("Y")];   
            }
        }
        else
        {
            m_arrDate = input.split(this.get_CultureDatePlaceholder());
        }
        var m_mask = this._maskvalid;
        if (this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime)
        {
            m_mask = m_mask.split(" ")[0];
        }
        m_mask = m_mask.split("/");
        if (parseInt(m_arrDate.length,10) != 3)
        {
            return "";
        }
        var D = parseInt(m_arrDate[this.get_CultureDateFormat().indexOf("D")],10) + '';
        if (D.length < m_mask[this.get_CultureDateFormat().indexOf("D")].length)
        {
            while (D.length < m_mask[this.get_CultureDateFormat().indexOf("D")].length)
            {
                D = "0" + D;
            }
        }
        m_arrDate[this.get_CultureDateFormat().indexOf("D")] = D;
        var M = parseInt(m_arrDate[this.get_CultureDateFormat().indexOf("M")],10) + '' ;
        if (M.length < m_mask[this.get_CultureDateFormat().indexOf("M")].length)
        {
            while (M.length < m_mask[this.get_CultureDateFormat().indexOf("M")].length)
            {
                M = "0" + M;
            }
        }
        m_arrDate[this.get_CultureDateFormat().indexOf("M")] = M;
        var Y = parseInt(m_arrDate[this.get_CultureDateFormat().indexOf("Y")],10) + '';
        while (Y.length < m_mask[this.get_CultureDateFormat().indexOf("Y")].length)
        {
            Y = "0" + Y;
        }
        m_arrDate[this.get_CultureDateFormat().indexOf("Y")] = Y;
        return m_arrDate[0] + this.get_CultureDatePlaceholder() + m_arrDate[1] + this._CultureDatePlaceholder + m_arrDate[2];
    }
    , AddCssClassMaskedEdit : function(CssClass)
    {
        var e = this.get_element();
        Sys.UI.DomElement.removeCssClass(e,this._OnBlurCssNegative);
        Sys.UI.DomElement.removeCssClass(e,this._OnFocusCssClass);
        Sys.UI.DomElement.removeCssClass(e,this._OnFocusCssNegative);
        Sys.UI.DomElement.removeCssClass(e,this._OnInvalidCssClass);
        if (CssClass != "")
        {
            Sys.UI.DomElement.addCssClass(e,CssClass);
        }
    }
    , _SetCancelEvent : function(evt) {
        /// <summary>
        /// Cancel Event for any browser
        /// </summary>
        /// <param name="evt" type="Sys.UI.DomEvent">
        /// Event info
        /// </param>
        if (typeof(evt.returnValue) !== "undefined") {
            evt.returnValue = false;
        }
        if (typeof(evt.cancelBubble) !== "undefined") {
            evt.cancelBubble = true;
        }
        if (typeof(evt.preventDefault) !== "undefined") {
            evt.preventDefault();
        }
        if (typeof(evt.stopPropagation) !== "undefined") {
            evt.stopPropagation();
        }
    }
    ,_CaptureServerValidators : function()
    {
        var ret = true;
        var msg = this._ExternalMessageError;
        if  (typeof(Page_Validators) != "undefined")
        {
            var ctrval = null;
            var first = true;
            for (var i = 0; i < Page_Validators.length; i++) 
            {
                ctrval = Page_Validators[i];
                if (typeof(ctrval.enabled) == "undefined" || ctrval.enabled != false) 
                {
                    if (ctrval.TargetValidator == this.get_element().id)
                    {
                        if (!ctrval.isvalid)
                        {
                            if (first)
                            {
                                first = false;
                                msg = "";
                            }
                            if (typeof(ctrval.errormessage) == "string")
                            {
                                if (msg != "")
                                {
                                    msg += ", ";
                                }
                                msg += ctrval.errormessage;
                            }
                            ret = false;
                        }
                    }
                }
            }
        }
        this._ExternalMessageError = msg;
        return ret;
    }
    ,_CaptureClientsValidators : function()
    {
        var ret = true;
        var msg = "";
        this._ExternalMessageError = msg;
        if  (typeof(Page_Validators) != "undefined")
        {
            var ctrval = null;
            for (var i = 0; i < Page_Validators.length; i++) 
            {
                ctrval = Page_Validators[i];
                if (typeof(ctrval.enabled) == "undefined" || ctrval.enabled != false) 
                {
                    if (ctrval.TargetValidator == this.get_element().id)
                    {
                        if (typeof(ctrval.evaluationfunction) == "function") 
                        {
                            var crtret = ctrval.evaluationfunction(ctrval); 
                            if (!crtret)
                            {
                                ret = false;
                                if (typeof(ctrval.errormessage) == "string")
                                {
                                    if (msg != "")
                                    {
                                        msg += ", ";
                                    }
                                    msg += ctrval.errormessage;
                                }
                            }
                        }
                        else if(typeof(ctrval.evaluationfunction) == "string") 
                        {
                            var crtret; 
                            eval("crtret = " + ctrval.evaluationfunction + "(" + ctrval.id + ")"); 
                            if (!crtret)
                            {
                                ret = false;
                                if (typeof(ctrval.errormessage) == "string")
                                {
                                    if (msg != "")
                                    {
                                        msg += ", ";
                                    }
                                    msg += ctrval.errormessage;
                                }
                            }
                        }
                    }
                }
            }
        }
        this._ExternalMessageError = msg;
        return ret;
    }
    ,ShowTooltipMessage : function(Visible)
    {
        if  (typeof(Page_Validators) == "undefined")
        {
            return;
        }
        var msg = "";
        if (!Visible)
        {
            msg = this._CurrentMessageError;
            this._CurrentMessageError = "";
        }
        var i = 0
        var ctrval = null;
        for (i = 0; i < Page_Validators.length; i++) 
        {
            ctrval = Page_Validators[i];
            if (ctrval.TargetValidator == this.get_element().id && ctrval.IsMaskedEdit == "true")
            {
                if (!Visible)
                {
                    ctrval.innerHTML = msg;
                    if (typeof(ctrval.display) == "string") 
                    {    
                        if (ctrval.display == "None") {
                            return;
                        }
                        if (ctrval.display == "Dynamic") {
                            ctrval.style.display = ctrval.isvalid ? "none" : "inline";
                            return;
                        }
                    }
                    return;
                }
                this._CurrentMessageError = ctrval.innerHTML;
                ctrval.innerHTML = ctrval.TooltipMessage;
                if (typeof(ctrval.display) == "string") 
                {    
                    if (ctrval.display == "None") {
                        return;
                    }
                    if (ctrval.display == "Dynamic") {
                        ctrval.style.display = "inline";
                        return;
                    }
                }
                ctrval.style.visibility = "visible";
                return;
            }
        }    
    }
    , _insertContent : function(value,curpos) 
    {
        var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element());
        var masktext = wrapper.get_Value();
        masktext = masktext.substring(0,curpos) + value + masktext.substring(curpos+1);
        this._LogicTextMask = this._LogicTextMask.substring(0,curpos) + value + this._LogicTextMask.substring(curpos+1);
        wrapper.set_Value(masktext);
    }    
    , _insertContentRight : function(value) 
    {
        var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element());
        var masktext = wrapper.get_Value();
        var curpos = this._getLastEmptyPosition();
        if (curpos < 0)
        {
            return;
        }
        var i;
        var resttext = masktext.substring(curpos+1);
        var restlogi = this._LogicTextMask.substring(curpos+1);
        masktext = masktext.substring(0,curpos) + this._PromptChar;
        this._LogicTextMask = this._LogicTextMask.substring(0,curpos) + this._LogicPrompt;
        var posaux;
        if (this._LogicLastInt != -1 && this._InputDirection == Sys.Extended.UI.MaskedEditInputDirections.RightToLeft)
        {
            var arr_num = resttext.split(this.get_CultureDecimalPlaceholder());
            var arr_log = restlogi.split(this.get_CultureDecimalPlaceholder());
            for (i = 0 ; i < parseInt(arr_num[0].length,10) ; i++) 
            {
                if (this._isValidMaskedEditPosition(curpos+1+i))
                {
                    masktext += this._PromptChar;
                    this._LogicTextMask += this._LogicPrompt;
                }
                else
                {
                    masktext += arr_num[0].substring(i,i+1);
                    this._LogicTextMask += arr_log[0].substring(i,i+1);
                }
            }
            if (arr_num.length = 2) 
            {
                masktext += this.get_CultureDecimalPlaceholder() + arr_num[1];
                this._LogicTextMask += this.get_CultureDecimalPlaceholder() + arr_log[1];
            }
            posaux = this._getNextPosition(curpos);
            for (i = 0 ; i < parseInt(arr_num[0].length,10); i++) 
            {
                if (this._isValidMaskedEditPosition(curpos+1+i) && arr_log[0].substring(i,i+1) != this._LogicPrompt)
                {
                    masktext = masktext.substring(0,posaux) + arr_num[0].substring(i,i+1) + masktext.substring(posaux+1);
                    this._LogicTextMask = this._LogicTextMask.substring(0,posaux) + arr_log[0].substring(i,i+1) + this._LogicTextMask.substring(posaux+1);
                    posaux = this._getNextPosition(posaux+1);
                }
            }
        }
        else
        {
            for (i = 0 ; i < parseInt(resttext.length,10) ; i++) 
            {
                if (this._isValidMaskedEditPosition(curpos+1+i))
                {
                    masktext += this._PromptChar;
                    this._LogicTextMask += this._LogicPrompt;
                }
                else
                {
                    masktext += resttext.substring(i,i+1);
                    this._LogicTextMask += restlogi.substring(i,i+1);
                }
            }
            posaux = this._getNextPosition(curpos);
            for (i = 0 ; i < parseInt(resttext.length,10); i++) 
            {
                if (this._isValidMaskedEditPosition(curpos+1+i) && restlogi.substring(i,i+1) != this._LogicPrompt)
                {
                    masktext = masktext.substring(0,posaux) + resttext.substring(i,i+1) + masktext.substring(posaux+1);
                    this._LogicTextMask = this._LogicTextMask.substring(0,posaux) + restlogi.substring(i,i+1) + this._LogicTextMask.substring(posaux+1);
                    posaux = this._getNextPosition(posaux+1);
                }
            }            
        }
        var dif = 0;
        if (this._LogicLastInt != -1 && this._InputDirection == Sys.Extended.UI.MaskedEditInputDirections.RightToLeft)
        {
            dif = this._LogicLastPos - this._LogicLastInt+1;
        }
        masktext = masktext.substring(0,this._LogicLastPos-dif) + value + masktext.substring(this._LogicLastPos-dif+1);
        this._LogicTextMask = this._LogicTextMask.substring(0,this._LogicLastPos-dif) + value + this._LogicTextMask.substring(this._LogicLastPos-dif+1);
        wrapper.set_Value(masktext);
    }    
    , InsertAMPM : function(value)
    {
        var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element());
        var masktext = wrapper.get_Value();
        var ASymMask = this.get_CultureAMPMPlaceholder().split(this._AMPMPlaceholderSeparator);
        var symb =  "";
        if (ASymMask.length == 2)
        {
            if (value.toUpperCase() == this.get_CultureFirstLetterAM().toUpperCase())
            {
              symb = ASymMask[0];
            }
            else if (value.toUpperCase() == this.get_CultureFirstLetterPM().toUpperCase())
            {
              symb = ASymMask[1];
            }
            this._LogicSymbol = symb;
        }
        masktext = masktext.substring(0,this._LogicLastPos+2) + symb + masktext.substring(this._LogicLastPos+2+symb.length);
        wrapper.set_Value(masktext);
    }
    , InsertSignal : function(value)
    {
        var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(this.get_element());
        var masktext = wrapper.get_Value();
        if (value == "-" && this._LogicSymbol == "-")
        {
            value = "+";
        }
        if (value == "+")
        {
            value = " ";
            this._LogicSymbol = "";
            if (!this._InLostfocus && this._OnFocusCssClass != "")
            {
                this.AddCssClassMaskedEdit(this._OnFocusCssClass);
            }
            else if (!this._InLostfocus)
            {
                this.AddCssClassMaskedEdit("");
            }
        }
        else
        {
            this._LogicSymbol = "-";
            if (!this._InLostfocus && this._OnFocusCssNegative != "")
            {
                this.AddCssClassMaskedEdit(this._OnFocusCssNegative);
            }
        }
        if (this._AcceptNegative == Sys.Extended.UI.MaskedEditShowSymbol.Left)
        {
          masktext = masktext.substring(0,this._LogicFirstPos-1) + value + masktext.substring(this._LogicFirstPos);
        }
        else if (this._AcceptNegative == Sys.Extended.UI.MaskedEditShowSymbol.Right)
        {
          masktext = masktext.substring(0,this._LogicLastPos+1) + value + masktext.substring(this._LogicLastPos+2);
        }
        wrapper.set_Value(masktext);
    }
    , setSelectionRange : function(selectionStart, selectionEnd) 
    {
      var input = this.get_element();
      if (input.setSelectionRange) 
      {
        input.setSelectionRange(selectionStart, selectionEnd);
      }
      else if (input.createTextRange) 
      {
        var range = input.createTextRange();
        range.collapse(true);
        range.moveEnd('character', selectionEnd);
        range.moveStart('character', selectionStart);
        range.select();
      }
    }
    , _getLastEmptyPosition : function()
    {
        var pos = this._LogicLastPos;
        if (this._InputDirection == Sys.Extended.UI.MaskedEditInputDirections.RightToLeft && this._LogicLastInt != -1)
        {
            var curpos = this._getCurrentPosition();
            if (curpos <= this._LogicLastInt)
            {
                pos = this._LogicLastInt;
            }
        }
        while (pos >= 0 && this._LogicTextMask.substring(pos, pos+1) != this._LogicPrompt)
        {
            pos--;
        }
        return pos;
    }
    , _isValidMaskedEditPosition : function(pos) 
    {
        return (this._LogicMask.substring(pos,pos+1) == this._LogicPrompt);
    }
    , _getNextPosition : function(pos)
    {
        while (!this._isValidMaskedEditPosition(pos) && pos < this._LogicLastPos+1)
        {
            pos++;
        }
        if (pos > this._LogicLastPos+1)
        {
            pos = this._LogicLastPos+1;
        }
        return pos;
    }
    , _getPreviousPosition : function(pos)
    {
        while (!this._isValidMaskedEditPosition(pos) && pos > this._LogicFirstPos)
        {
            pos--;
        }
        if (pos < this._LogicFirstPos)
        {
            pos = this._LogicFirstPos;
        }
        return pos;
    }
    , _getCurrentPosition : function()
    {
        var begin = 0;
        var input = this.get_element();
        if (input.setSelectionRange) 
        {
            begin = parseInt(input.selectionStart,10);
        }
        else if (document.selection) 
        {
            var sel = document.selection.createRange();
            if (sel.text != "")
            {
                var aux = ""
                if (this._DirectSelText == "R")
                {
                    aux = sel.text + String.fromCharCode(3);
                }
                else if (this._DirectSelText == "L")
                {
                    aux = String.fromCharCode(3) + sel.text ;
                }
                sel.text = aux;
                this._DirectSelText == "";
            }
            else
            {
                sel.text = String.fromCharCode(3);
                this._DirectSelText == "";
            }
            var dummy = input.createTextRange();
            dummy.findText(String.fromCharCode(3));
            dummy.select();
            var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(input);
            begin = wrapper.get_Value().indexOf(String.fromCharCode(3));
            document.selection.clear();
        }
        if (begin > this._LogicLastPos+1)
        {
            begin = this._LogicLastPos+1;
        }
        if (begin < this._LogicFirstPos)
        {
            begin = this._LogicFirstPos;
        }
        return begin;
    }
    , _processKey : function(poscur,key) {
        var posmask = this._LogicMaskConv;
        var filter;
        if  (posmask.substring(poscur,poscur+1) == "9")
        {
            filter = this._charNumbers;
        }
        else if  (posmask.substring(poscur,poscur+1).toUpperCase() == "L")
        {
            filter = this._charLetters + this._charLetters.toLowerCase();
        }
        else if  (posmask.substring(poscur,poscur+1) == "$")
        {
            filter = this._charLetters + this._charLetters.toLowerCase() + " ";
        }
        else if  (posmask.substring(poscur,poscur+1).toUpperCase() == "C")
        {
            filter = this._Filtered;
        }
        else if  (posmask.substring(poscur,poscur+1).toUpperCase() == "A")
        {
            filter = this._charLetters + this._charLetters.toLowerCase() + this._Filtered;
        }
        else if  (posmask.substring(poscur,poscur+1).toUpperCase() == "N")
        {
            filter = this._charNumbers + this._Filtered;
        }
        else if  (posmask.substring(poscur,poscur+1) == "?")
        {
            filter = "";
        }
        else
        {
            return false;
        }
        if (filter == "")
        {
            return true;
        }
        return (!filter || filter.length == 0 || filter.indexOf(key) != -1);
    }    
    , _createMask : function()
    {
        if (this._MaskConv == "" && this._Mask != "")
        {
            this._convertMask();
        } 
        var text = this._MaskConv;
        var i = 0;
        var masktext = "";
        var maskvld = "";
        var flagescape = false;
        this._LogicTextMask = "";
        this._QtdValidInput = 0;
        while (i < parseInt(text.length,10)) 
        {
            if (text.substring(i, i+1) == this._charEscape && flagescape == false) 
            {
                flagescape = true;
            }
            else if (this._CharsEditMask.indexOf(text.substring(i, i+1)) == -1) 
            {
                if (flagescape == true)
                {
                    flagescape = false;
                    masktext += text.substring(i,i+1);
                    maskvld += text.substring(i,i+1);
                    this._LogicTextMask += this._LogicEscape;
                }
                else
                {
                    if (this._CharsSpecialMask.indexOf(text.substring(i, i+1)) != -1) 
                    {
                        this._QtdValidInput ++;
                        if (text.substring(i, i+1) == "/")
                        {
                            masktext += this.get_CultureDatePlaceholder();
                            maskvld += "/";
                            this._LogicTextMask += this.get_CultureDatePlaceholder();
                        }
                        else if (text.substring(i, i+1) == ":")
                        {
                            masktext += this.get_CultureTimePlaceholder();
                            maskvld += ":";
                            this._LogicTextMask += this.get_CultureTimePlaceholder();
                        }
                        else if (text.substring(i, i+1) == ",")
                        {
                            masktext += this.get_CultureThousandsPlaceholder();
                            maskvld += ".";
                            this._LogicTextMask += this.get_CultureThousandsPlaceholder();
                        }
                        else if (text.substring(i, i+1) == ".")
                        {
                            masktext += this.get_CultureDecimalPlaceholder();
                            maskvld += ",";
                            this._LogicTextMask += this.get_CultureDecimalPlaceholder();
                        }
                    }
                    else
                    {
                        masktext += text.substring(i,i+1);
                        maskvld += text.substring(i,i+1);
                        this._LogicTextMask += text.substring(i,i+1);
                    }
                }
            } 
            else 
            {
                if (flagescape == true)
                {
                    flagescape = false;
                    masktext += text.substring(i,i+1);
                    maskvld += text.substring(i,i+1);
                    this._LogicTextMask += this._LogicEscape;
                }
                else
                {
                    this._QtdValidInput ++;
                    masktext += this._PromptChar;
                    maskvld += text.substring(i,i+1);
                    this._LogicTextMask += this._LogicPrompt;
                }
            }
            i++;
        }
        this._LogicFirstPos = -1;
        this._LogicLastPos = -1;
        this._LogicLastInt = -1;
        this._LogicMask = this._LogicTextMask;
        for (i = 0 ; i < parseInt(this._LogicMask.length,10) ; i++) 
        {
            if (this._LogicFirstPos == -1 && this._LogicMask.substring(i,i+1) == this._LogicPrompt)
            {
                this._LogicFirstPos = i;
            }
            if (this._LogicMask.substring(i, i + this.get_CultureDatePlaceholder().length) == this.get_CultureDatePlaceholder()) 
            {
                continue;
            }
            else if (this._LogicMask.substring(i, i + 1) == " ") 
            {
                this._LogicDateTimeSepPos = i;
            }
            if (this._LogicMask.substring(i,i+1) == this._LogicPrompt)
            {
                this._LogicLastPos = i;
            }
            if (this._MaskType == Sys.Extended.UI.MaskedEditType.Number && this._InputDirection == Sys.Extended.UI.MaskedEditInputDirections.RightToLeft)
            {
                if (this._LogicMask.substring(i,i+1) == this.get_CultureDecimalPlaceholder())
                {
                    this._LogicLastInt = i;
                }
            }
        }
        this._maskvalid = maskvld.substring(this._LogicFirstPos,this._LogicLastPos+1);
        this._EmptyMask = masktext;
    }
    , _getClearMask : function(masktext)
    {
        var i = 0;
        var clearmask = "";
        var qtdok = 0;
        var includedec = false;
        while (i < parseInt(this._LogicTextMask.length,10)) 
        {
            if (qtdok < this._QtdValidInput)
            {
                if (this._isValidMaskedEditPosition(i) && this._LogicTextMask.substring(i, i+1) != this._LogicPrompt)
                {
                    if (clearmask == "" && includedec)
                    {
                        clearmask += "0" + this.get_CultureDecimalPlaceholder();
                        includedec = false;
                    }
                    clearmask += this._LogicTextMask.substring(i,i+1);
                    qtdok++;
                }
                else if (this._LogicTextMask.substring(i, i+1) != this._LogicPrompt && this._LogicTextMask.substring(i, i+1) != this._LogicEscape)
                {
                    if (this._LogicTextMask.substring(i, i + this.get_CultureDatePlaceholder().length) == this.get_CultureDatePlaceholder() && (this._MaskType == Sys.Extended.UI.MaskedEditType.Date || this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime)) 
                    {
                        clearmask += (clearmask == "") ? "" : this.get_CultureDatePlaceholder();
                        i += (this.get_CultureDatePlaceholder().length - 1);
                    }
                    else if (this._LogicTextMask.substring(i,i+1) == this.get_CultureTimePlaceholder() && (this._MaskType == Sys.Extended.UI.MaskedEditType.Time || this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime))
                    {
                        clearmask += (clearmask == "")?"":this.get_CultureTimePlaceholder();
                    }
                    else if (this._LogicTextMask.substring(i,i+1) == " " && this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime)
                    {
                        clearmask += (clearmask == "")?"":" ";
                    }
                    else if (this._LogicTextMask.substring(i,i+1) == this.get_CultureThousandsPlaceholder() && this._MaskType == Sys.Extended.UI.MaskedEditType.Number)
                    {
                        clearmask += (clearmask == "")?"":this.get_CultureThousandsPlaceholder();
                    }
                    else if (this._LogicTextMask.substring(i,i+1) == this.get_CultureDecimalPlaceholder() && this._MaskType == Sys.Extended.UI.MaskedEditType.Number)
                    {
                        clearmask += (clearmask == "")?"":this.get_CultureDecimalPlaceholder();
                        if (clearmask == "")
                        {
                            includedec = true;
                        }
                    }
                }
            }
            i++;
        }
        if (this._LogicSymbol != "" && clearmask != "")
        {
            if (this._MaskType == Sys.Extended.UI.MaskedEditType.Time || this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime)
            {
                clearmask += " " + this._LogicSymbol;
            }
            else if (this._MaskType == Sys.Extended.UI.MaskedEditType.Number)
            {
                clearmask = this._LogicSymbol + clearmask;
            }
        }
        return clearmask;    
    }
    , _convertMask : function() 
    {
        this._MaskConv = "";
        var qtdmask = "";
        var maskchar = "";
        var i;
        for (i = 0 ; i < parseInt(this._Mask.length,10) ; i++) 
        {
          if (this._CharsEditMask.indexOf(this._Mask.substring(i, i+1)) != -1)
          {
            if (qtdmask.length == 0)
            {
                this._MaskConv += this._Mask.substring(i, i+1);
                qtdmask = "";
                maskchar = this._Mask.substring(i, i+1);
            }
            else if (this._Mask.substring(i, i+1) == "9")
            {
                qtdmask += "9";
            }
            else if (this._Mask.substring(i, i+1) == "0")
            {
                qtdmask += "0";
            }
          }
          else if (this._CharsEditMask.indexOf(this._Mask.substring(i, i+1)) == -1 && this._Mask.substring(i, i+1) != this._DelimitStartDup && this._Mask.substring(i, i+1) != this._DelimitEndDup)
          {
            if (qtdmask.length == 0)
            {
                this._MaskConv += this._Mask.substring(i, i+1);
                qtdmask = "";
                maskchar = "";
            }
            else
            {
               if (this._charNumbers.indexOf(this._Mask.substring(i, i+1)) != -1)
               {
                qtdmask += this._Mask.substring(i, i+1);
               }
            }            
          }
          else if (this._Mask.substring(i, i+1) == this._DelimitStartDup && qtdmask == "")
          {
            qtdmask = "0";
          }
          else if (this._Mask.substring(i, i+1) == this._DelimitEndDup && qtdmask != "")
          {
            var qtddup = parseInt(qtdmask,10) -1;
            if (qtddup > 0)
            {
                for (var q = 0 ; q < qtddup ; q++) 
                {
                    this._MaskConv += maskchar;
                }
            }
            qtdmask = "";
            maskchar = "";
          }
        }
        var FirstPos = -1;
        var LastPos = -1;
        var flagescape = false;
        for (i = 0 ; i < parseInt(this._MaskConv.length,10) ; i++) 
        {
            if (this._MaskConv.substring(i, i+1) == this._charEscape && !flagescape) 
            {
                flagescape = true;
            }
            else if (this._CharsEditMask.indexOf(this._MaskConv.substring(i, i+1)) != -1 && !flagescape) 
            {
                if (FirstPos == -1)
                {
                    FirstPos = i;
                }
                LastPos = i;
            } 
            else if(flagescape) 
            {
                flagescape = false;
            } 
        }
        if ( (this._MaskType == Sys.Extended.UI.MaskedEditType.Time || this._MaskType == Sys.Extended.UI.MaskedEditType.DateTime) && this._AcceptAmPm)
        {
            var ASymMask = this.get_CultureAMPMPlaceholder().split(this._AMPMPlaceholderSeparator);
            var SymMask = "";
            if (ASymMask.length == 2)
            {
                SymMask = this._charEscape + " ";
                for (i = 0 ; i < parseInt(ASymMask[0].length,10) ; i++) 
                {
                    SymMask += this._charEscape + " ";
                }
            }
            this._MaskConv = this._MaskConv.substring(0,LastPos+1) + SymMask + this._MaskConv.substring(LastPos+1);
        }
        else if (this._MaskType == Sys.Extended.UI.MaskedEditType.Number &&  this._DisplayMoney == Sys.Extended.UI.MaskedEditShowSymbol.Left)
        {
            var SymMask = "";
            for (i = 0 ; i < parseInt(this.get_CultureCurrencySymbolPlaceholder().length,10) ; i++) 
            {
                if (this._CharsEditMask.indexOf(this.get_CultureCurrencySymbolPlaceholder().substring(i, i+1)) == -1)
                {
                    SymMask += this.get_CultureCurrencySymbolPlaceholder().substring(i, i+1);
                }
                else
                {
                    SymMask += this._charEscape + this.get_CultureCurrencySymbolPlaceholder().substring(i, i+1);
                }
            }
            SymMask += this._charEscape + " ";
            this._MaskConv = this._MaskConv.substring(0,FirstPos) + SymMask + this._MaskConv.substring(FirstPos);
            FirstPos += SymMask.length;
            LastPos += SymMask.length;
        }
        else if (this._MaskType == Sys.Extended.UI.MaskedEditType.Number && this._DisplayMoney == Sys.Extended.UI.MaskedEditShowSymbol.Right)
        {
            var SymMask = this._charEscape + " ";
            for (i = 0 ; i < parseInt(this.get_CultureCurrencySymbolPlaceholder().length,10) ; i++) 
            {
                if (this._CharsEditMask.indexOf(this.get_CultureCurrencySymbolPlaceholder().substring(i, i+1)) == -1)
                {
                    SymMask += this.get_CultureCurrencySymbolPlaceholder().substring(i, i+1);
                }
                else
                {
                    SymMask += this._charEscape + this.get_CultureCurrencySymbolPlaceholder().substring(i, i+1);
                }
            }
            this._MaskConv = this._MaskConv.substring(0,LastPos+1) + SymMask  + this._MaskConv.substring(LastPos+1);
        }
        if (this._MaskType == Sys.Extended.UI.MaskedEditType.Number && this._AcceptNegative == Sys.Extended.UI.MaskedEditShowSymbol.Right)
        {
            this._MaskConv = this._MaskConv.substring(0,LastPos+1) + this._charEscape + " " + this._MaskConv.substring(LastPos+1);
        }
        else if (this._MaskType == Sys.Extended.UI.MaskedEditType.Number && this._AcceptNegative == Sys.Extended.UI.MaskedEditShowSymbol.Left)
        {
            this._MaskConv = this._MaskConv.substring(0,FirstPos) + this._charEscape + " " + this._MaskConv.substring(FirstPos);
        }
        this._convertMaskNotEscape();
    }
    , _convertMaskNotEscape : function()
    {
        this._LogicMaskConv = "";
        var atumask = this._MaskConv.replace(/(\/)/g, this.get_CultureDatePlaceholder());
        var flagescape = false;
        var i;
        for (i = 0 ; i < parseInt(atumask.length,10); i++) 
        {
            if (atumask.substring(i, i+1) == this._charEscape)
            {
                flagescape = true;
            }
            else if (!flagescape)
            {
                this._LogicMaskConv += atumask.substring(i, i+1);    
            }
            else
            {
                this._LogicMaskConv += this._LogicEscape;
                flagescape = false;
            }
        }
    }
    , get_Mask : function() {
        if (this._MaskConv == "" && this._Mask != "")
        {
            this._convertMask();
        } 
        return this._MaskConv;
    }
    , set_Mask : function(value) 
    {
        this._Mask = value;
        this.raisePropertyChanged('Mask');
    }
    , get_Filtered : function() 
    {
        return this._Filtered;
    }
    , set_Filtered : function(value) 
    {
        this._Filtered = value;
        this.raisePropertyChanged('Filtered');
    }    
    , get_InputDirection : function() 
    {
        return this._InputDirection;
    }      
    , set_InputDirection : function(value) 
    {
        this._InputDirection = value;
        this.raisePropertyChanged('InputDirection');
    }
    , get_PromptCharacter : function() 
    {
        return this._PromptChar;
    }      
    , set_PromptCharacter : function(value) 
    {
        this._PromptChar = value;
        this.raisePropertyChanged('PromptChar');
    }
    , get_OnFocusCssClass : function() 
    {
        return this._OnFocusCssClass;
    }      
    , set_OnFocusCssClass : function(value) 
    {
        this._OnFocusCssClass = value;
        this.raisePropertyChanged('OnFocusCssClass');
    }
    , get_OnInvalidCssClass : function() 
    {
        return this._OnInvalidCssClass;
    }      
    , set_OnInvalidCssClass : function(value) 
    {
        this._OnInvalidCssClass = value;
        this.raisePropertyChanged('OnInvalidCssClass');
    }
    , get_CultureName : function() 
    {
        return this._CultureName;
    }      
    , set_CultureName : function(value) 
    {
        this._CultureName = value;
        this.raisePropertyChanged('Culture');
    }
    , get_CultureDatePlaceholder : function() 
    {
        return this._CultureDatePlaceholder;
    }      
    , set_CultureDatePlaceholder : function(value) 
    {
        this._CultureDatePlaceholder = value;
        this.raisePropertyChanged('CultureDatePlaceholder');
    }      
    , get_CultureTimePlaceholder : function() 
    {
        return this._CultureTimePlaceholder;
    }      
    , set_CultureTimePlaceholder : function(value) 
    {
        this._CultureTimePlaceholder = value;
        this.raisePropertyChanged('CultureTimePlaceholder');
    }      
    , get_CultureDecimalPlaceholder : function() 
    {
        return this._CultureDecimalPlaceholder;
    }      
    , set_CultureDecimalPlaceholder : function(value) 
    {
        this._CultureDecimalPlaceholder = value;
        this.raisePropertyChanged('CultureDecimalPlaceholder');
    }      
    , get_CultureThousandsPlaceholder : function() 
    {
        return this._CultureThousandsPlaceholder;
    }      
    , set_CultureThousandsPlaceholder : function(value) 
    {
        this._CultureThousandsPlaceholder = value;
        this.raisePropertyChanged('CultureThousandsPlaceholder');
    }      
    , get_CultureDateFormat : function() 
    {
        var ret = this._CultureDateFormat;
        switch (this.get_UserDateFormat()) 
        {
            case Sys.Extended.UI.MaskedEditUserDateFormat.DayMonthYear:
            {
              ret = "DMY";
              break;
            }
            case Sys.Extended.UI.MaskedEditUserDateFormat.DayYearMonth:
            {
              ret = "DYM";
              break;
            }
            case Sys.Extended.UI.MaskedEditUserDateFormat.MonthDayYear:
            {
              ret = "MDY";
              break;
            }
            case Sys.Extended.UI.MaskedEditUserDateFormat.MonthYearDay:
            {
              ret = "MYD";
              break;
            }
            case Sys.Extended.UI.MaskedEditUserDateFormat.YearDayMonth:
            {
              ret = "YDM";
              break;
            }
            case Sys.Extended.UI.MaskedEditUserDateFormat.YearMonthDay:
            {
              ret = "YMD";
              break;
            }
        }
        return ret;
    }      
    , set_CultureDateFormat : function(value) 
    {
        this._CultureDateFormat = value;
        this.raisePropertyChanged('CultureDateFormat');
    }      
    , get_CultureCurrencySymbolPlaceholder : function() 
    {
        return this._CultureCurrencySymbolPlaceholder;
    }      
    , set_CultureCurrencySymbolPlaceholder : function(value) 
    {
        this._CultureCurrencySymbolPlaceholder= value;
        this.raisePropertyChanged('CultureCurrencySymbolPlaceholder');
    }   
    , get_CultureAMPMPlaceholder : function() 
    {
        var value = this._CultureAMPMPlaceholder;
        if (value.split(this._AMPMPlaceholderSeparator).length != 2 || value == this._AMPMPlaceholderSeparator) 
        {
            value = "";
        }
        if (this.get_UserTimeFormat() == Sys.Extended.UI.MaskedEditUserTimeFormat.TwentyFourHour)
        {
            value = "";
        }
        return value;
    }      
    , set_CultureAMPMPlaceholder : function(value) 
    {
        this._CultureAMPMPlaceholder = value;
        this.raisePropertyChanged('CultureAMPMPlaceholder');
    } 
    , get_CultureFirstLettersAMPM : function()  
    {
        if (this.get_CultureAMPMPlaceholder() != "")
        {
            var ASymMask = this.get_CultureAMPMPlaceholder().split(this._AMPMPlaceholderSeparator);
            return (ASymMask[0].substring(0,1) + ASymMask[1].substring(0,1));
        }
        return "";
    }
    , get_CultureFirstLetterAM : function() 
    {
        if (this.get_CultureAMPMPlaceholder() != "")
        {
            var ASymMask = this.get_CultureAMPMPlaceholder().split(this._AMPMPlaceholderSeparator);
            return ASymMask[0].substring(0,1);
        }
        return "";
    }   
    , get_CultureFirstLetterPM : function() 
    {
        if (this.get_CultureAMPMPlaceholder() != "")
        {
            var ASymMask = this.get_CultureAMPMPlaceholder().split(this._AMPMPlaceholderSeparator);
            return ASymMask[1].substring(0,1);
        }
        return "";
    }   
    , get_ClearMaskOnLostFocus : function() 
    {
        return this._ClearMaskOnLostfocus;
    }      
    , set_ClearMaskOnLostFocus : function(value) 
    {
        this._ClearMaskOnLostfocus = value;
        this.raisePropertyChanged('ClearMaskOnLostfocus');
    }      
    , get_MessageValidatorTip : function() 
    {
        return this._MessageValidatorTip;
    }      
    , set_MessageValidatorTip : function(value) 
    {
        this._MessageValidatorTip = value;
        this.raisePropertyChanged('MessageValidatorTip');
    }      
    , get_AcceptAMPM : function() 
    {
        return this._AcceptAmPm;
    }      
    , set_AcceptAMPM : function(value) 
    {
        this._AcceptAmPm = value;
        this.raisePropertyChanged('AcceptAmPm');
    }   
    , get_AcceptNegative : function() 
    {
        return this._AcceptNegative;
    }      
    , set_AcceptNegative : function(value) 
    {
        this._AcceptNegative= value;
        this.raisePropertyChanged('AcceptNegative');
    }   
    , get_DisplayMoney : function() 
    {
        return this._DisplayMoney;
    }      
    , set_DisplayMoney : function(value) 
    {
        this._DisplayMoney = value;
        this.raisePropertyChanged('DisplayMoney');
    }   
    , get_OnFocusCssNegative : function() 
    {
        return this._OnFocusCssNegative;
    }      
    , set_OnFocusCssNegative : function(value) 
    {
        this._OnFocusCssNegative= value;
        this.raisePropertyChanged('OnFocusCssNegative');
    }   
    , get_OnBlurCssNegative : function() 
    {
        return this._OnBlurCssNegative;
    }      
    , set_OnBlurCssNegative : function(value) 
    {
        this._OnBlurCssNegative= value;
        this.raisePropertyChanged('OnBlurCssNegative');
    }   
    , get_Century : function() 
    {
        return this._Century;
    }      
    , set_Century : function(value) 
    {
        this._Century= value;
        this.raisePropertyChanged('Century');
    }   
    , get_AutoComplete : function() 
    {
        return this._AutoComplete;
    }      
    , set_AutoComplete : function(value) 
    {
        this._AutoComplete = value;
        this.raisePropertyChanged('AutoComplete');
    }   
    , get_AutoCompleteValue : function() 
    {
        return this._AutoCompleteValue;
    }      
    , set_AutoCompleteValue : function(value) 
    {
        this._AutoCompleteValue = value;
        this.raisePropertyChanged('AutoCompleteValue');
    }   
    , get_MaskType : function() 
    {
        return this._MaskType;
    }      
    , set_MaskType : function(value) 
    {
        this._MaskType = value;
        this.raisePropertyChanged('MaskType');
    }   
    
    , get_ClearTextOnInvalid : function()
    {
        return this._ClearTextOnInvalid;
    }
    , set_ClearTextOnInvalid : function(value)
    {
        if(this._ClearTextOnInvalid !== value)
        {
            this._ClearTextOnInvalid = value;
            this.raisePropertyChanged('ClearTextOnInvalid');
        }
    }
    , get_ClipboardText : function() 
    {
        return this._ClipboardText;
    }      
    , set_ClipboardText : function(value) 
    {
        this._ClipboardText = value;
        this.raisePropertyChanged('ClipboardText');  
    }   
    , get_ClipboardEnabled : function()
    {
        return this._AllowCopyPaste;
    }
    , set_ClipboardEnabled : function(value)
    {
        this._AllowCopyPaste = value;
        this.raisePropertyChanged('ClipboardEnabled');
    }
    , get_ErrorTooltipEnabled : function()
    {
        return this._ShowMessageErrorFloat;
    }
    , set_ErrorTooltipEnabled : function(value)
    {
        this._ShowMessageErrorFloat = value;
        this.raisePropertyChanged('ErrorTooltipEnabled');
    }
    , get_ErrorTooltipCssClass : function()
    {
        return this._CssMessageErrorFloat;
    }
    , set_ErrorTooltipCssClass : function(value)
    {
        this._CssMessageErrorFloat = value;
        this.raisePropertyChanged('ErrorTooltipCssClass');
    }
    , get_UserDateFormat : function() 
    {
        return this._UserDateFormat;
    }      
    , set_UserDateFormat : function(value) 
    {
        this._UserDateFormat = value;
        this.raisePropertyChanged('UserDateFormat');
    }
    , get_UserTimeFormat : function() 
    {
        return this._UserTimeFormat;
    }      
    , set_UserTimeFormat : function(value) 
    {
        this._UserTimeFormat = value;
        this.raisePropertyChanged('UserTimeFormat');
    }
}
Sys.Extended.UI.MaskedEditBehavior.registerClass('Sys.Extended.UI.MaskedEditBehavior', Sys.Extended.UI.DynamicPopulateBehaviorBase);
Sys.registerComponent(Sys.Extended.UI.MaskedEditBehavior, { name: "maskedEdit" });

Sys.Extended.UI.MaskedEditType = function() {
    throw Error.invalidOperation();
}

Sys.Extended.UI.MaskedEditInputDirections = function() {
    throw Error.invalidOperation();
}

Sys.Extended.UI.MaskedEditShowSymbol = function() {
    throw Error.invalidOperation();
}

Sys.Extended.UI.MaskedEditUserDateFormat = function() {
    throw Error.invalidOperation();
}

Sys.Extended.UI.MaskedEditUserTimeFormat = function() {
    throw Error.invalidOperation();
}

Sys.Extended.UI.MaskedEditType.prototype = {
    None: 0,
    Date: 1,
    Number: 2,
    Time: 3,
    DateTime: 4
}

Sys.Extended.UI.MaskedEditInputDirections.prototype = {
    LeftToRight: 0,
    RightToLeft: 1
}

Sys.Extended.UI.MaskedEditShowSymbol.prototype = {
    None: 0,
    Left: 1,
    Right: 2
}

Sys.Extended.UI.MaskedEditUserDateFormat.prototype = {
    None: 0,
    DayMonthYear: 1,
    DayYearMonth: 2,
    MonthDayYear: 3,
    MonthYearDay: 4,
    YearDayMonth: 5,
    YearMonthDay: 6
}

Sys.Extended.UI.MaskedEditUserTimeFormat.prototype = {
    None: 0,
    TwentyFourHour: 1
}

Sys.Extended.UI.MaskedEditType.registerEnum('Sys.Extended.UI.MaskedEditType');
Sys.Extended.UI.MaskedEditInputDirections.registerEnum('Sys.Extended.UI.MaskedEditInputDirections');
Sys.Extended.UI.MaskedEditShowSymbol.registerEnum('Sys.Extended.UI.MaskedEditShowSymbol');
Sys.Extended.UI.MaskedEditUserDateFormat.registerEnum('Sys.Extended.UI.MaskedEditUserDateFormat');
Sys.Extended.UI.MaskedEditUserTimeFormat.registerEnum('Sys.Extended.UI.MaskedEditUserTimeFormat');

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["Globalization", "ExtendedBase", "ExtendedTimer", "ExtendedCommon"], execute);
}
else {
    execute();
}

})();
�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.StrikeThrough = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.StrikeThrough.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.StrikeThrough.prototype = {
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.StrikeThrough.callBaseMethod(this, "callMethod")) return false;
        this._designPanel._execCommand("strikeThrough", false, null);
    },
    
    checkState : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.StrikeThrough.callBaseMethod(this, "checkState")) return false;
        return this._designPanel._queryCommandState("strikeThrough");
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.StrikeThrough.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.StrikeThrough", Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton);

�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyLeft = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyLeft.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyLeft.prototype = {
    checkState : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyLeft.callBaseMethod(this, "checkState")) return false;
        return this._designPanel._textAlignState("left");
    },
    
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyLeft.callBaseMethod(this, "callMethod")) return false;
        this._designPanel._execCommand("JustifyLeft");
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyLeft.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyLeft", Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton);

cType.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.HorizontalSeparator = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.HorizontalSeparator.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.HorizontalSeparator.prototype = {
    
    isImage : function() {
        return false;
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.HorizontalSeparator.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.HorizontalSeparator", Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeImageButton);

�	Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.FontName = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.FontName.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.FontName.prototype = {
    initialize : function() {
        Sys.Extended.UI.HTMLEditor.ToolbarButton.FontName.callBaseMethod(this, "initialize");
    },
    
    callMethod : function(select,event) {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.FontName.callBaseMethod(this, "callMethod")) return false;

        try {
            var editor = this._designPanel;
            editor._execCommand("fontname",false,select.options.item(select.selectedIndex).value);
        } catch(e) {}
    },
    
    checkState : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.FontName.callBaseMethod(this, "checkState")) return false;
    
        var editor = this._designPanel;
        var param =null;
        try{param = (Function.createDelegate(editor, Sys.Extended.UI.HTMLEditor._queryCommandValue))("fontname");} catch(e){}

        if(!editor._FontNotSet)
        if(!param || param.length==0) {
            param = Sys.Extended.UI.HTMLEditor.getStyle(editor._doc.body,"font-family");
        }

        var el   = this._select;
        var i=0;
        if(param && param.length > 0) {
            var seek = param.toLowerCase().split(",")[0].replace(/^(['"])/,"").replace(/(['"])$/,"");

            for(i=0; i< el.options.length; i++) {
                var cur = el.options.item(i).value.toLowerCase().split(",")[0];
                if(cur==seek) break
            }
            if(i==el.options.length) {
                try {
                    var newopt = document.createElement("OPTION");
                    newopt.value = param.replace(/^(['"])/,"").replace(/(['"])$/,"");
                    newopt.text  = param.split(",")[0].replace(/^(['"])/,"").replace(/(['"])$/,"");
                    el.add(newopt,(Sys.Extended.UI.HTMLEditor.isIE)?i:null);
                    $addHandler(newopt, "click", this._onclick_option$delegate);
                } catch(e) {
                    i = 0;
                }
            }
        }
        el.selectedIndex = i;
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.FontName.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.FontName", Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeSelectButton);

~Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.Bold = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.Bold.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.Bold.prototype = {
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.Bold.callBaseMethod(this, "callMethod")) return false;
        this._designPanel._execCommand("bold", false, null);
    },
    
    checkState : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.Bold.callBaseMethod(this, "checkState")) return false;
        return this._designPanel._queryCommandState("bold");
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.Bold.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.Bold", Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton);

{Type.registerNamespace("Sys.Extended.UI.HTMLEditor.Popups");Sys.Extended.UI.HTMLEditor.Popups.PopupCommonButton=function(b){var a=this;Sys.Extended.UI.HTMLEditor.Popups.PopupCommonButton.initializeBase(a,[b]);a._loaded=false;a._activated=null;a._app_onload$delegate=Function.createDelegate(a,a._app_onload);a._cssClass="";a._name="";a._onmouseover$delegate=Function.createDelegate(a,a._onmouseover);a._onmouseout$delegate=Function.createDelegate(a,a._onmouseout);a._onmousedown$delegate=Function.createDelegate(a,a._onmousedown);a._onmouseup$delegate=Function.createDelegate(a,a._onmouseup);a._onclick$delegate=Function.createDelegate(a,a._onclick)};Sys.Extended.UI.HTMLEditor.Popups.PopupCommonButton.prototype={isImage:function(){return true},set_toolTip:function(a){this.get_element().title=a},get_toolTip:function(){return this.get_element().title},set_name:function(a){this._name=a},get_name:function(){return this._name},initialize:function(){var a=this,b=a.get_element();Sys.Extended.UI.HTMLEditor.Popups.PopupCommonButton.callBaseMethod(a,"initialize");Sys.Application.add_load(a._app_onload$delegate);a._cssClass=b.className.split(" ")[0];a.isImage()&&$addHandlers(b,{mouseover:a._onmouseover$delegate,mouseout:a._onmouseout$delegate,mousedown:a._onmousedown$delegate,mouseup:a._onmouseup$delegate,click:a._onclick$delegate});if(Sys.Extended.UI.HTMLEditor.isIE){function c(a){if(a.nodeType==1&&a.tagName){var b=a.tagName.toUpperCase();if(b!="INPUT"&&b!="TEXTAREA"&&b!="IFRAME")a.unselectable="on";for(var d=0;d<a.childNodes.length;d++)c(a.childNodes.item(d))}}c(b)}else try{b.style.MozUserSelect="none";b.parentNode.style.MozUserSelect="none"}catch(d){}},activate:function(b){var a=this;a._activated=b;if(a.isImage()){Sys.Extended.UI.HTMLEditor._addEvent(a._activated,"mouseover",a._onmouseover$delegate);Sys.Extended.UI.HTMLEditor._addEvent(a._activated,"mouseout",a._onmouseout$delegate);Sys.Extended.UI.HTMLEditor._addEvent(a._activated,"mousedown",a._onmousedown$delegate);Sys.Extended.UI.HTMLEditor._addEvent(a._activated,"mouseup",a._onmouseup$delegate);Sys.Extended.UI.HTMLEditor._addEvent(a._activated,"click",a._onclick$delegate)}},dispose:function(){var a=this;if(a.isImage()&&a._activated!=null){Sys.Extended.UI.HTMLEditor._removeEvent(a._activated,"mouseover",a._onmouseover$delegate);Sys.Extended.UI.HTMLEditor._removeEvent(a._activated,"mouseout",a._onmouseout$delegate);Sys.Extended.UI.HTMLEditor._removeEvent(a._activated,"mousedown",a._onmousedown$delegate);Sys.Extended.UI.HTMLEditor._removeEvent(a._activated,"mouseup",a._onmouseup$delegate);Sys.Extended.UI.HTMLEditor._removeEvent(a._activated,"click",a._onclick$delegate)}a._activated=null;a._loaded=false;Sys.Application.remove_load(a._app_onload$delegate);Sys.Extended.UI.HTMLEditor.Popups.PopupCommonButton.callBaseMethod(a,"dispose")},_app_onload:function(){if(this._loaded)return;this.onButtonLoaded();this._loaded=true},onButtonLoaded:function(){},_onmouseover:function(){if(!this.isEnable())return false;Sys.UI.DomElement.addCssClass(this._activated,this._cssClass+"_hover");return true},_onmouseout:function(c){var b=this;if(!b.isEnable())return false;var a=c.toElement||c.relatedTarget;try{while(a&&typeof a!="undefined")if(a==b._activated)break;else a=a.parentNode}catch(c){a=null}if(a!=null)return true;Sys.UI.DomElement.removeCssClass(b._activated,b._cssClass+"_hover");Sys.UI.DomElement.removeCssClass(b._activated,b._cssClass+"_mousedown");return true},_onmousedown:function(){if(!this.isEnable())return null;Sys.UI.DomElement.addCssClass(this._activated,this._cssClass+"_mousedown");return false},_onmouseup:function(){if(!this.isEnable())return false;Sys.UI.DomElement.removeCssClass(this._activated,this._cssClass+"_mousedown");return true},_onclick:function(a){if(!this.isEnable())return false;this.callMethod(a);return true},callMethod:function(){var a=this,c=a._activated.ownerDocument||a._activated.document||target,b=c.defaultView||c.parentWindow,d=b.popupMediator.get_callMethodByName(a._name);Function.createDelegate(a,d)(b)},isEnable:function(){return!this._loaded?false:true}};Sys.Extended.UI.HTMLEditor.Popups.PopupCommonButton.registerClass("Sys.Extended.UI.HTMLEditor.Popups.PopupCommonButton",Sys.UI.Control);�5// (c) 2010 CodePlex Foundation


Sys.loader.defineScripts({
},
[
  
  { name: "ExtendedCommon",
    releaseUrl: "%/extended/common/common.js",
    debugUrl: "%/extended/common/common.debug.js",
    executionDependencies: ["ComponentModel"] },
  { name: "ExtendedDateTime",
    releaseUrl: "%/extended/common/datetime.js",
    debugUrl: "%/extended/common/datetime.debug.js",
    executionDependencies: ["ExtendedCommon"] },
  { name: "ExtendedThreading",
    releaseUrl: "%/extended/common/threading.js",
    debugUrl: "%/extended/common/threading.debug.js",
    executionDependencies: ["Core"] },
  
  { name: "ExtendedTimer",
    releaseUrl: "%/extended/compat/timer/timer.js",
    debugUrl: "%/extended/compat/timer/timer.debug.js",
    executionDependencies: ["ComponentModel"] },

  { name: "ExtendedDragDrop",
    releaseUrl: "%/extended/compat/dragdrop/dragdropscripts.js",
    debugUrl: "%/extended/compat/dragdrop/dragdropscripts.debug.js",
    executionDependencies: ["ExtendedTimer", "ExtendedCommon"] },
  
  { name: "ExtendedBase",
    releaseUrl: "%/extended/extenderBase/baseScripts.js",
    debugUrl: "%/extended/extenderBase/baseScripts.debug.js",
    executionDependencies: ["ComponentModel","Serialization"] },
  
  { name: "ExtendedAnimations",
    releaseUrl: "%/extended/animation/animations.js",
    debugUrl: "%/extended/animation/animations.debug.js",
    executionDependencies: ["ExtendedCommon", "ExtendedTimer"] },
  { name: "ExtendedAnimationBehavior",
    releaseUrl: "%/extended/animation/animationbehavior.js",
    debugUrl: "%/extended/animation/animationbehavior.debug.js",
    executionDependencies: ["ExtendedAnimations", "ExtendedBase"] },
  
  { name: "ExtendedAccordion",
    releaseUrl: "%/extended/accordion/accordionbehavior.js",
    debugUrl: "%/extended/accordion/accordionbehavior.debug.js",
    behaviors: [{name: "accordion", typeName: "Sys.Extended.UI.AccordionBehavior"}],
    executionDependencies: ["ExtendedAnimations", "ExtendedBase"] },
    
  { name: "ExtendedAlwaysVisible",
    releaseUrl: "%/extended/alwaysvisiblecontrol/alwaysvisiblecontrolbehavior.js",
    debugUrl: "%/extended/alwaysvisiblecontrol/alwaysvisiblecontrolbehavior.debug.js",
    behaviors: [{name: "alwaysVisible", typeName: "Sys.Extended.UI.AlwaysVisibleControlBehavior"}],
    executionDependencies: ["ExtendedAnimations", "ExtendedBase"] },

  { name: "ExtendedAutoComplete",
    releaseUrl: "%/extended/autocomplete/autocompletebehavior.js",
    debugUrl: "%/extended/autocomplete/autocompletebehavior.debug.js",
    behaviors: [{name: "autoComplete", typeName: "Sys.Extended.UI.AutoCompleteBehavior"}],
    executionDependencies: ["ExtendedTimer", "ExtendedAnimationBehavior", "ExtendedPopup"] },
    
  { name: "ExtendedCalendar",
    releaseUrl: "%/extended/calendar/calendarbehavior.js",
    debugUrl: "%/extended/calendar/calendarbehavior.debug.js",
    behaviors: [{name: "calendar", typeName: "Sys.Extended.UI.CalendarBehavior"}],
    executionDependencies: ["Globalization", "ExtendedBase", "ExtendedDateTime", "ExtendedThreading", "ExtendedAnimationBehavior", "ExtendedPopup"] },
    
  { name: "ExtendedCascadingDropDown",
    releaseUrl: "%/extended/cascadingdropdown/cascadingdropdownbehavior.js",
    debugUrl: "%/extended/cascadingdropdown/cascadingdropdownbehavior.debug.js",
    behaviors: [{name: "cascadingDropDown", typeName: "Sys.Extended.UI.CascadingDropDownBehavior"}],
    executionDependencies: ["ExtendedBase", "ExtendedCommon", "WebServices"] },
  
  { name: "ExtendedCollapsiblePanel",
    releaseUrl: "%/extended/collapsiblepanel/collapsiblepanelbehavior.js",
    debugUrl: "%/extended/collapsiblepanel/collapsiblepanelbehavior.debug.js",
    behaviors: [{name: "collapsiblePanel", typeName: "Sys.Extended.UI.CollapsiblePanelBehavior"}],
    executionDependencies: ["ExtendedBase", "ExtendedCommon", "ExtendedAnimations"] },
    
  { name: "ExtendedColorPicker",
    releaseUrl: "%/extended/colorpicker/colorpickerbehavior.js",
    debugUrl: "%/extended/colorpicker/colorpickerbehavior.debug.js",
    behaviors: [{name: "colorPicker", typeName: "Sys.Extended.UI.ColorPickerBehavior"}],
    executionDependencies: ["ExtendedBase", "ExtendedCommon", "ExtendedThreading", "ExtendedPopup"] },
    

  { name: "ExtendedConfirmButton",
    releaseUrl: "%/extended/confirmbutton/confirmbuttonbehavior.js",
    debugUrl: "%/extended/confirmbutton/confirmbuttonbehavior.debug.js",
    behaviors: [{name: "confirmButton", typeName: "Sys.Extended.UI.ConfirmButtonBehavior", parameters: [{name: "ConfirmText", type: "String"}]}],
    executionDependencies: ["ExtendedBase"] },
    
  { name: "ExtendedFloating",
    releaseUrl: "%/extended/dragpanel/floatingbehavior.js",
    debugUrl: "%/extended/dragpanel/floatingbehavior.debug.js",
    behaviors: [{name: "draggable", typeName: "Sys.Extended.UI.FloatingBehavior" }],
    executionDependencies: ["ExtendedBase", "ExtendedCommon", "ExtendedDragDrop"] },

  { name: "ExtendedDropDown",
    releaseUrl: "%/extended/dropdown/dropdownbehavior.js",
    debugUrl: "%/extended/dropdown/dropdownbehavior.debug.js",
    behaviors: [{name: "dropDown", typeName: "Sys.Extended.UI.DropDownBehavior" }],
    executionDependencies: ["ExtendedDynamicPopulate", "ExtendedAnimationBehavior", "ExtendedPopup", "ExtendedHover"] },

  { name: "ExtendedDropShadow",
    releaseUrl: "%/extended/dropshadow/dropshadowbehavior.js",
    debugUrl: "%/extended/dropshadow/dropshadowbehavior.debug.js",
    behaviors: [{name: "dropShadow", typeName: "Sys.Extended.UI.DropShadowBehavior" }],
    executionDependencies: ["ExtendedBase", "ExtendedCommon", "ExtendedTimer", "ExtendedRoundedCorners"] },

  { name: "ExtendedDynamicPopulate",
    releaseUrl: "%/extended/dynamicpopulate/dynamicpopulatebehavior.js",
    debugUrl: "%/extended/dynamicpopulate/dynamicpopulatebehavior.debug.js",
    behaviors: [{name: "dynamicPopulate", typeName: "Sys.Extended.UI.DynamicPopulateBehavior"}],
    executionDependencies: ["ExtendedBase", "ExtendedCommon", "Network"] },

  { name: "ExtendedFilteredTextBox",
    releaseUrl: "%/extended/filteredtextbox/filteredtextboxbehavior.js",
    debugUrl: "%/extended/filteredtextbox/filteredtextboxbehavior.debug.js",
    behaviors: [{name: "filteredTextBox", typeName: "Sys.Extended.UI.FilteredTextBoxBehavior"}],
    executionDependencies: ["ExtendedBase", "ExtendedCommon"] },
  
  { name: "ExtendedHover",
    releaseUrl: "%/extended/hoverextender/hoverbehavior.js",
    debugUrl: "%/extended/hoverextender/hoverbehavior.debug.js",
    behaviors: [{name: "hover", typeName: "Sys.Extended.UI.HoverBehavior" }],
    executionDependencies: ["ExtendedBase", "ExtendedCommon"] },

  { name: "ExtendedHoverMenu",
    releaseUrl: "%/extended/hovermenu/hovermenubehavior.js",
    debugUrl: "%/extended/hovermenu/hovermenubehavior.debug.js",
    behaviors: [{name: "hoverMenu", typeName: "Sys.Extended.UI.HoverMenuBehavior" }],
    executionDependencies: ["ExtendedDynamicPopulate", "ExtendedHover", "ExtendedAnimationBehavior", "ExtendedPopup"] },

  { name: "ExtendedListSearch",
    releaseUrl: "%/extended/listsearch/listsearchbehavior.js",
    debugUrl: "%/extended/listsearch/listsearchbehavior.debug.js",
    behaviors: [{name: "listSearch", typeName: "Sys.Extended.UI.ListSearchBehavior" }],
    executionDependencies: ["ExtendedPopupBehavior"] },
    
  { name: "ExtendedMaskedEdit",
    releaseUrl: "%/extended/maskededit/maskededitbehavior.js",
    debugUrl: "%/extended/maskededit/maskededitbehavior.debug.js",
    behaviors: [{name: "maskedEdit", typeName: "Sys.Extended.UI.MaskedEditBehavior" }],
    executionDependencies: ["ExtendedBase", "ExtendedTimer", "ExtendedCommon"] },
    
  { name: "ExtendedModalPopup",
    releaseUrl: "%/extended/modalpopup/modalpopupbehavior.js",
    debugUrl: "%/extended/modalpopup/modalpopupbehavior.debug.js",
    behaviors: [{name: "modalPopup", typeName: "Sys.Extended.UI.ModalPopupBehavior" }],
    executionDependencies: ["ExtendedDynamicPopulate", "ExtendedDropShadow", "ExtendedFloating"] },
    
  { name: "ExtendedMultiHandleSlider",
    releaseUrl: "%/extended/multihandleslider/multihandlesliderbehavior.js",
    debugUrl: "%/extended/multihandleslider/multihandlesliderbehavior.debug.js",
    behaviors: [{name: "multiHandleSlider", typeName: "Sys.Extended.UI.MultiHandleSliderBehavior" }],
    executionDependencies: ["ExtendedBase", "ExtendedDragDrop", "ExtendedAnimations"] },
  
  { name: "ExtendedMutuallyExclusiveCheckBox",
    releaseUrl: "%/extended/mutuallyexclusivecheckbox/mutuallyexclusivecheckboxbehavior.js",
    debugUrl: "%/extended/mutuallyexclusivecheckbox/mutuallyexclusivecheckboxbehavior.debug.js",
    behaviors: [{name: "mutuallyExclusiveCheckBox", typeName: "Sys.Extended.UI.MutuallyExclusiveCheckBoxBehavior", parameters: ["Key"] }],
    executionDependencies: ["ExtendedBase", "ExtendedCommon"] },

  { name: "ExtendedUpDown",
    releaseUrl: "%/extended/numericupdown/numericupdownbehavior.js",
    debugUrl: "%/extended/numericupdown/numericupdownbehavior.debug.js",
    behaviors: [{name: "upDown", typeName: "Sys.Extended.UI.NumericUpDownBehavior", parameters: ["Minimum", "Maximum", "Width"] }],
    executionDependencies: ["ExtendedBase", "ExtendedCommon", "WebServices"] },
    
  { name: "ExtendedPagedList",
    releaseUrl: "%/extended/pagingbulletedlist/pagingbulletedlistbehavior.js",
    debugUrl: "%/extended/pagingbulletedlist/pagingbulletedlistbehavior.debug.js",
    behaviors: [{name: "pagedList", typeName: "Sys.Extended.UI.PagingBulletedListBehavior" }],
    executionDependencies: ["ExtendedBase"] },
    
  { name: "ExtendedPasswordStrength",
    releaseUrl: "%/extended/passwordstrength/passwordstrengthextenderbehavior.js",
    debugUrl: "%/extended/passwordstrength/passwordstrengthextenderbehavior.debug.js",
    behaviors: [{name: "passwordStrength", typeName: "Sys.Extended.UI.PasswordStrengthExtenderBehavior" }],
    executionDependencies: ["ExtendedBase", "ExtendedCommon"] },
    
  { name: "ExtendedPopupBehavior",
    releaseUrl: "%/extended/popupcontrol/popupcontrolbehavior.js",
    debugUrl: "%/extended/popupcontrol/popupcontrolbehavior.js",
    behaviors: [{name: "popupBehavior", typeName: "Sys.Extended.UI.PopupControlBehavior"}],
    executionDependencies: ["ExtendedDynamicPopulate", "ExtendedPopup", "ExtendedAnimationBehavior"] },

  { name: "ExtendedPopup",
    releaseUrl: "%/extended/popupextender/popupbehavior.js",
    debugUrl: "%/extended/popupextender/popupbehavior.debug.js",
    behaviors: [{name: "popup", typeName: "Sys.Extended.UI.PopupBehavior"}],
    executionDependencies: ["ExtendedAnimations", "ExtendedBase"] },
    
  { name: "ExtendedRating",
    releaseUrl: "%/extended/rating/ratingbehavior.js",
    debugUrl: "%/extended/rating/ratingbehavior.debug.js",
    behaviors: [{name: "rating", typeName: "Sys.Extended.UI.RatingBehavior"}],
    executionDependencies: ["ExtendedBase"] } ,   

  { name: "ExtendedResizable",
    releaseUrl: "%/extended/resizablecontrol/resizablecontrolbehavior.js",
    debugUrl: "%/extended/resizablecontrol/resizablecontrolbehavior.debug.js",
    behaviors: [{name: "resizable", typeName: "Sys.Extended.UI.ResizableControlBehavior"}],
    executionDependencies: ["ExtendedBase", "ExtendedCommon"] },

  { name: "ExtendedRoundedCorners",
    releaseUrl: "%/extended/roundedcorners/roundedcornersbehavior.js",
    debugUrl: "%/extended/roundedcorners/roundedcornersbehavior.debug.js",
    behaviors: [{name: "rounded", typeName: "Sys.Extended.UI.RoundedCornersBehavior"}],
    executionDependencies: ["ExtendedBase", "ExtendedCommon"] },

  { name: "ExtendedSlider",
    releaseUrl: "%/extended/slider/sliderbehavior.js",
    debugUrl: "%/extended/slider/sliderbehavior.debug.js",
    behaviors: [{name: "slider", typeName: "Sys.Extended.UI.SliderBehavior"}],
    executionDependencies: ["ExtendedBase", "ExtendedDragDrop", "ExtendedAnimations"] },

  { name: "ExtendedSlideShow",
    releaseUrl: "%/extended/slideshow/slideshowbehavior.js",
    debugUrl: "%/extended/slideshow/slideshowbehavior.debug.js",
    behaviors: [{name: "slideShow", typeName: "Sys.Extended.UI.SlideShowBehavior"}],
    executionDependencies: ["ExtendedBase", "ExtendedCommon", "ExtendedTimer", "Network"] },

  { name: "ExtendedTabs",
    releaseUrl: "%/extended/tabs/tabs.js",
    debugUrl: "%/extended/tabs/tabs.debug.js",
    behaviors: [
        {name: "tabContainer", typeName: "Sys.Extended.UI.TabContainer", parameters: [{ name: "activeTabIndex", type: "Number" }] },
        {name: "tabPanel", typeName: "Sys.Extended.UI.TabPanel", parameters: [{ name: "owner", type: "Sys.Extended.UI.TabContainer" }, { name: "headerTab", type: "String" }] }],
    executionDependencies: ["ExtendedDynamicPopulate"] },

  { name: "ExtendedWatermark",
    releaseUrl: "%/extended/textboxwatermark/textboxwatermark.js",
    debugUrl: "%/extended/textboxwatermark/textboxwatermark.debug.js",
    behaviors: [{name: "watermark", typeName: "Sys.Extended.UI.TextBoxWatermarkBehavior", parameters: [{name:"WatermarkText",type:"String"}, {name:"WatermarkCssClass",type:"String"}]}],
    executionDependencies: ["ExtendedBase", "ExtendedCommon"] },

  { name: "ExtendedToggleButton",
    releaseUrl: "%/extended/togglebutton/togglebutton.js",
    debugUrl: "%/extended/togglebutton/togglebutton.debug.js",
    behaviors: [{name: "toggleButton", typeName: "Sys.Extended.UI.ToggleButtonBehavior"}],
    executionDependencies: ["ExtendedBase"] }
]
);
�// (c) 2010 CodePlex Foundation
(function(){var a=null,d="ExtendedDropShadow",b=a;function c(){var c="absolute";Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.DropShadowBehavior=function(c){var b=this;Sys.Extended.UI.DropShadowBehavior.initializeBase(b,[c]);b._opacity=1;b._width=5;b._shadowDiv=a;b._trackPosition=a;b._trackPositionDelay=50;b._timer=a;b._tickHandler=a;b._roundedBehavior=a;b._shadowRoundedBehavior=a;b._rounded=false;b._radius=5;b._lastX=a;b._lastY=a;b._lastW=a;b._lastH=a};Sys.Extended.UI.DropShadowBehavior.prototype={initialize:function(){var a=this;Sys.Extended.UI.DropShadowBehavior.callBaseMethod(a,"initialize");b=a.get_element();if($common.getCurrentStyle(b,"position",b.style.position)!=c)b.style.position="relative";a._rounded&&a.setupRounded();a._trackPosition&&a.startTimer();a.setShadow()},dispose:function(){this.stopTimer();this.disposeShadowDiv();Sys.Extended.UI.DropShadowBehavior.callBaseMethod(this,"dispose")},buildShadowDiv:function(){var d=this;b=d.get_element();if(!d.get_isInitialized()||!b||!d._width)return;if(b.style.boxShadow==undefined&&b.style.MozBoxShadow==undefined&&b.style.WebkitBoxShadow==undefined){var e=document.createElement("DIV");e.style.backgroundColor="black";e.style.position=c;if(b.id)e.id=b.id+"_DropShadow";d._shadowDiv=e;b.parentNode.appendChild(e);if(d._rounded){d._shadowDiv.style.height=Math.max(0,b.offsetHeight-2*d._radius)+"px";if(!d._shadowRoundedBehavior)d._shadowRoundedBehavior=$create(Sys.Extended.UI.RoundedCornersBehavior,{Radius:d._radius},a,a,d._shadowDiv);else d._shadowRoundedBehavior.set_Radius(d._radius)}else d._shadowRoundedBehavior&&d._shadowRoundedBehavior.set_Radius(0);d._opacity!=1&&d.setupOpacity();d.setShadow(false,true);d.updateZIndex()}},disposeShadowDiv:function(){var b=this;if(b._shadowDiv){b._shadowDiv.parentNode&&b._shadowDiv.parentNode.removeChild(b._shadowDiv);b._shadowDiv=a}if(b._shadowRoundedBehavior){b._shadowRoundedBehavior.dispose();b._shadowRoundedBehavior=a}},onTimerTick:function(){this.setShadow()},startTimer:function(){var a=this;if(!a._timer){if(!a._tickHandler)a._tickHandler=Function.createDelegate(a,a.onTimerTick);a._timer=new Sys.Timer;a._timer.set_interval(a._trackPositionDelay);a._timer.add_tick(a._tickHandler);a._timer.set_enabled(true)}},stopTimer:function(){var b=this;if(b._timer){b._timer.remove_tick(b._tickHandler);b._timer.set_enabled(false);b._timer.dispose();b._timer=a}},setShadow:function(h,j){var c="px ",a=this;b=a.get_element();if(!a.get_isInitialized()||!b||!a._width&&!h)return;if(b.style.boxShadow==undefined&&b.style.MozBoxShadow==undefined&&b.style.WebkitBoxShadow==undefined){var g=a._shadowDiv;!g&&a.buildShadowDiv();var e={x:b.offsetLeft,y:b.offsetTop};if(h||a._lastX!=e.x||a._lastY!=e.y||!g){a._lastX=e.x;a._lastY=e.y;var f=a.get_Width();e.x+=f;e.y+=f;$common.setLocation(a._shadowDiv,e)}var i=b.offsetHeight,f=b.offsetWidth;if(h||i!=a._lastH||f!=a._lastW||!g){a._lastW=f;a._lastH=i;if(!a._rounded||!g||j){a._shadowDiv.style.width=f+"px";a._shadowDiv.style.height=i+"px"}else{a.disposeShadowDiv();a.setShadow()}}if(a._shadowDiv)a._shadowDiv.style.visibility=$common.getCurrentStyle(b,"visibility")}else{var d;if(a._opacity==".25")d=a._width+c+a._width+c+a._width+c+"#D3D3D3";else if(a._opacity==".5")d=a._width+c+a._width+c+a._width+c+"#778899";else if(a._opacity==".75")d=a._width+c+a._width+c+a._width+c+"#808080";else d=a._width+c+a._width+c+a._width+c+"#000";if(b.style.boxShadow!=undefined)b.style.boxShadow=d;else if(b.style.MozBoxShadow!=undefined)b.style.MozBoxShadow=d;else if(b.style.WebkitBoxShadow!=undefined)b.style.WebkitBoxShadow=d}},setupOpacity:function(){var a=this;a.get_isInitialized()&&a._shadowDiv&&$common.setElementOpacity(a._shadowDiv,a._opacity)},setupRounded:function(){var b=this;if(!b._roundedBehavior&&b._rounded)b._roundedBehavior=$create(Sys.Extended.UI.RoundedCornersBehavior,a,a,a,b.get_element());b._roundedBehavior&&b._roundedBehavior.set_Radius(b._rounded?b._radius:0)},updateZIndex:function(){var c=this;if(!c._shadowDiv)return;var d=c.get_element(),a=d.style.zIndex,b=c._shadowDiv.style.zIndex;if(b&&a&&a>b)return;else{a=Math.max(2,a);b=a-1}d.style.zIndex=a;c._shadowDiv.style.zIndex=b},updateRoundedCorners:function(){var a=this;if(a.get_isInitialized()){a.setupRounded();a.disposeShadowDiv();a.setShadow()}},get_Opacity:function(){return this._opacity},set_Opacity:function(b){var a=this;if(a._opacity!=b){a._opacity=b;a.setShadow();a.setupOpacity();a.raisePropertyChanged("Opacity")}},get_Rounded:function(){return this._rounded},set_Rounded:function(b){var a=this;if(b!=a._rounded){a._rounded=b;a.updateRoundedCorners();a.raisePropertyChanged("Rounded")}},get_Radius:function(){return this._radius},set_Radius:function(b){var a=this;if(b!=a._radius){a._radius=b;a.updateRoundedCorners();a.raisePropertyChanged("Radius")}},get_Width:function(){return this._width},set_Width:function(b){var a=this;if(b!=a._width){a._width=b;a._shadowDiv&&$common.setVisible(a._shadowDiv,b>0);a.setShadow(true);a.raisePropertyChanged("Width")}},get_TrackPositionDelay:function(){return this._trackPositionDelay},set_TrackPositionDelay:function(c){var a=this;if(c!=a._trackPositionDelay){a._trackPositionDelay=c;if(!b)b=a.get_element();if(b.style.boxShadow==undefined&&b.style.MozBoxShadow==undefined&&b.style.WebkitBoxShadow==undefined){if(a._trackPosition){a.stopTimer();a.startTimer()}a.raisePropertyChanged("TrackPositionDelay")}}},get_TrackPosition:function(){return this._trackPosition},set_TrackPosition:function(c){var a=this;if(c!=a._trackPosition){a._trackPosition=c;if(!b)b=a.get_element();if(b.style.boxShadow==undefined&&b.style.MozBoxShadow==undefined&&b.style.WebkitBoxShadow==undefined){if(a.get_element())if(c)a.startTimer();else a.stopTimer();a.raisePropertyChanged("TrackPosition")}}}};Sys.Extended.UI.DropShadowBehavior.registerClass("Sys.Extended.UI.DropShadowBehavior",Sys.Extended.UI.BehaviorBase);Sys.registerComponent(Sys.Extended.UI.DropShadowBehavior,{name:"dropShadow"})}if(window.Sys&&Sys.loader)Sys.loader.registerScript(d,["ExtendedBase","ExtendedCommon","ExtendedTimer","ExtendedRoundedCorners"],c);else c()})();�// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedConfirmButton";function a(){var d="hidden",c="showing",g="ConfirmText",f="displayModalPopupID",e="function",b="onclick",a=null;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.ConfirmButtonHiddenEventArgs=function(a){Sys.Extended.UI.ConfirmButtonHiddenEventArgs.initializeBase(this);this._confirmed=a};Sys.Extended.UI.ConfirmButtonHiddenEventArgs.prototype={get_confirmed:function(){return this._confirmed}};Sys.Extended.UI.ConfirmButtonHiddenEventArgs.registerClass("Sys.Extended.UI.ConfirmButtonHiddenEventArgs",Sys.EventArgs);Sys.Extended.UI.ConfirmButtonBehavior=function(c){var b=this;Sys.Extended.UI.ConfirmButtonBehavior.initializeBase(b,[c]);b._ConfirmTextValue=a;b._OnClientCancelValue=a;b._ConfirmOnFormSubmit=false;b._displayModalPopupID=a;b._postBackScript=a;b._clickHandler=a;b._oldScript=a};Sys.Extended.UI.ConfirmButtonBehavior.prototype={initialize:function(){var c=this;Sys.Extended.UI.ConfirmButtonBehavior.callBaseMethod(c,"initialize");var d=c.get_element();c._clickHandler=Function.createDelegate(c,c._onClick);$addHandler(d,"click",c._clickHandler);c._oldScript=d.getAttribute(b);c._oldScript&&d.setAttribute(b,a);if(c._ConfirmOnFormSubmit&&typeof WebForm_OnSubmit==e&&!Sys.Extended.UI.ConfirmButtonBehavior._originalWebForm_OnSubmit)if(Sys.Extended.UI.TextBoxWatermarkBehavior&&Sys.Extended.UI.TextBoxWatermarkBehavior._originalWebForm_OnSubmit){Sys.Extended.UI.ConfirmButtonBehavior._originalWebForm_OnSubmit=Sys.Extended.UI.TextBoxWatermarkBehavior._originalWebForm_OnSubmit;Sys.Extended.UI.TextBoxWatermarkBehavior._originalWebForm_OnSubmit=Sys.Extended.UI.ConfirmButtonBehavior.WebForm_OnSubmit}else{Sys.Extended.UI.ConfirmButtonBehavior._originalWebForm_OnSubmit=WebForm_OnSubmit;WebForm_OnSubmit=Sys.Extended.UI.ConfirmButtonBehavior.WebForm_OnSubmit}},dispose:function(){var c=this;if(c._clickHandler){$removeHandler(c.get_element(),"click",c._clickHandler);c._clickHandler=a}if(c._oldScript){c.get_element().setAttribute(b,c._oldScript);c._oldScript=a}Sys.Extended.UI.ConfirmButtonBehavior.callBaseMethod(c,"dispose")},_onClick:function(b){var a=this;if(a.get_element()&&!a.get_element().disabled)if(a._ConfirmOnFormSubmit)Sys.Extended.UI.ConfirmButtonBehavior._clickedBehavior=a;else if(!a._displayConfirmDialog()){b.preventDefault();return false}else if(a._oldScript)if(String.isInstanceOfType(a._oldScript))eval(a._oldScript);else typeof a._oldScript==e&&a._oldScript()},_displayConfirmDialog:function(){var a=this,c=new Sys.CancelEventArgs;a.raiseShowing(c);if(c.get_cancel())return;if(a._displayModalPopupID){var b=$find(a._displayModalPopupID);if(!b)throw Error.argument(f,String.format(Sys.Extended.UI.Resources.CollapsiblePanel_NoControlID,a._displayModalPopupID));b.set_OnOkScript("$find('"+a.get_id()+"')._handleConfirmDialogCompletion(true);");b.set_OnCancelScript("$find('"+a.get_id()+"')._handleConfirmDialogCompletion(false);");b.show();return false}else{var d=window.confirm(a._ConfirmTextValue);a._handleConfirmDialogCompletion(d);return d}},_handleConfirmDialogCompletion:function(b){var a=this;a.raiseHidden(new Sys.Extended.UI.ConfirmButtonHiddenEventArgs(b));if(b){if(a._postBackScript)eval(a._postBackScript)}else a._OnClientCancelValue&&window[a._OnClientCancelValue]()},get_OnClientCancel:function(){return this._OnClientCancelValue},set_OnClientCancel:function(a){if(this._OnClientCancelValue!=a){this._OnClientCancelValue=a;this.raisePropertyChanged("OnClientCancel")}},get_ConfirmText:function(){return this._ConfirmTextValue},set_ConfirmText:function(a){if(this._ConfirmTextValue!=a){this._ConfirmTextValue=a;this.raisePropertyChanged(g)}},get_ConfirmOnFormSubmit:function(){return this._ConfirmOnFormSubmit},set_ConfirmOnFormSubmit:function(a){if(this._ConfirmOnFormSubmit!=a){this._ConfirmOnFormSubmit=a;this.raisePropertyChanged("ConfirmOnFormSubmit")}},get_displayModalPopupID:function(){return this._displayModalPopupID},set_displayModalPopupID:function(a){if(this._displayModalPopupID!=a){this._displayModalPopupID=a;this.raisePropertyChanged(f)}},get_postBackScript:function(){return this._postBackScript},set_postBackScript:function(a){if(this._postBackScript!=a){this._postBackScript=a;this.raisePropertyChanged("postBackScript")}},add_showing:function(a){this.get_events().addHandler(c,a)},remove_showing:function(a){this.get_events().removeHandler(c,a)},raiseShowing:function(b){var a=this.get_events().getHandler(c);a&&a(this,b)},add_hidden:function(a){this.get_events().addHandler(d,a)},remove_hidden:function(a){this.get_events().removeHandler(d,a)},raiseHidden:function(b){var a=this.get_events().getHandler(d);a&&a(this,b)}};Sys.Extended.UI.ConfirmButtonBehavior.registerClass("Sys.Extended.UI.ConfirmButtonBehavior",Sys.Extended.UI.BehaviorBase);Sys.registerComponent(Sys.Extended.UI.ConfirmButtonBehavior,{name:"confirmButton",parameters:[{name:g,type:"String"}]});Sys.Extended.UI.ConfirmButtonBehavior.WebForm_OnSubmit=function(){var b=Sys.Extended.UI.ConfirmButtonBehavior._originalWebForm_OnSubmit();if(b&&Sys.Extended.UI.ConfirmButtonBehavior._clickedBehavior)b=Sys.Extended.UI.ConfirmButtonBehavior._clickedBehavior._displayConfirmDialog();Sys.Extended.UI.ConfirmButtonBehavior._clickedBehavior=a;return b}}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedBase"],a);else a()})();W!// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference name="MicrosoftAjaxTimer.debug.js" />
/// <reference name="MicrosoftAjaxWebForms.debug.js" />

(function() {
var scriptName = "ExtendedThreading";

function execute() {

var version = Sys.version;
if (!version && !Sys._versionChecked) {
    Sys._versionChecked = true;
    throw new Error("AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts. Ensure the correct version of the scripts are referenced. If you are using an ASP.NET ScriptManager, switch to the ToolkitScriptManager in AjaxControlToolkit.dll.");
}

Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.DeferredOperation = function(delay, context, callback) {
    /// <summary>
    /// Used to define a cancellable async operation
    /// </summary>
    /// <param name="delay" type="Number" integer="true">the number of milliseconds to delay execution</param>
    /// <param name="context" type="Object" mayBeNull="true">an object used as the context for the callback method</param>
    /// <param name="callback" type="Function">The callback method to execute at the end of the delay</param>
    
    this._delay = delay;
    this._context = context;
    this._callback = callback;
    this._completeCallback = null;
    this._errorCallback = null;
    this._timer = null;
    this._callArgs = null;
    this._isComplete = false;
    this._completedSynchronously = false;
    this._asyncResult = null;
    this._exception = null;
    this._throwExceptions = true;
    this._oncomplete$delegate = Function.createDelegate(this, this._oncomplete);
    
    this.post = Function.createDelegate(this, this.post);
}
Sys.Extended.UI.DeferredOperation.prototype = {
    
    get_isPending : function() { 
        /// <summary>
        /// Gets whether there is an asynchronous operation pending
        /// </summary>
        /// <returns type="Boolean" />
        
        return (this._timer != null); 
    },
    
    get_isComplete : function() { 
        /// <summary>
        /// Gets whether the asynchronous operation has completed
        /// </summary>
        /// <returns type="Boolean" />
        
        return this._isComplete; 
    },
    
    get_completedSynchronously : function() {
        /// <summary>
        /// Gets whether the operation completed synchronously
        /// </summary>
        /// <returns type="Boolean" />
        
        return this._completedSynchronously;
    },
    
    get_exception : function() {
        /// <summary>
        /// Gets the current exception if there is one
        /// </summary>
        /// <returns type="Error" />
        
        return this._exception;
    },
    
    get_throwExceptions : function() {
        /// <summary>
        /// Gets whether to throw exceptions
        /// </summary>
        /// <returns type="Boolean" />
        
        return this._throwExceptions;
    },    
    set_throwExceptions : function(value) {
        /// <summary>
        /// Sets whether to throw exceptions
        /// </summary>
        /// <param name="value" type="Boolean">True if exceptions should be thrown, otherwise false</param>
        
        this._throwExceptions = value;
    },
    
    get_delay : function() { 
        /// <summary>
        /// Gets the current delay in milliseconds
        /// </summary>
        /// <returns type="Number" integer="true" />
        
        return this._delay; 
    },
    set_delay : function(value) { 
        /// <summary>
        /// Sets the current delay in milliseconds
        /// </summary>
        /// <param name="value" type="Number" integer="true">The delay in milliseconds</param>
        
        this._delay = value; 
    },
    
    post : function(args) {
        /// <summary>
        /// A method that can be directly attached to a delegate
        /// </summary>
        /// <param name="args" type="Object" parameterArray="true">The arguments to the method</param>
        
        var ar = [];
        for (var i = 0; i < arguments.length; i++) {
            ar[i] = arguments[i];
        }
        this.beginPost(ar, null, null);
    },
    
    beginPost : function(args, completeCallback, errorCallback) {
        /// <summary>
        /// Posts a call to an async operation on this port
        /// </summary>
        /// <param name="args" type="Array">An array of arguments to the method</param>
        /// <param name="completeCallback" type="Function" optional="true" mayBeNull="true">The callback to execute after the delayed function completes</param>
        /// <param name="errorCallback" type="Function" optional="true" mayBeNull="true">The callback to execute in the event of an exception in the delayed function</param>
        
        this.cancel();
        
        this._callArgs = Array.clone(args || []);
        this._completeCallback = completeCallback;
        this._errorCallback = errorCallback;
        
        if (this._delay == -1) {            
            try {
                this._oncomplete();
            } finally {
                this._completedSynchronously = true;
            }
        } else {            
            this._timer = setTimeout(this._oncomplete$delegate, this._delay);
        }
    }, 
    
    cancel : function() {
        /// <summary>
        /// Cancels a pending post
        /// </summary>
        
        if (this._timer) {
            clearTimeout(this._timer);
            this._timer = null;
        }
        this._callArgs = null;
        this._isComplete = false;
        this._asyncResult = null;
        this._completeCallback = null;
        this._errorCallback = null;
        this._exception = null;
        this._completedSynchronously = false;
    },
    
    call : function(args) {
        /// <summary>
        /// Executes the deferred operation synchronously
        /// </summary>
        /// <param name="args" type="Object" parameterArray="true">The arguments to the method</param>
        
        var ar = [];
        for (var i = 0; i < arguments.length; i++) {
            ar[i] = arguments[i];
        }
        
        this.cancel();
        
        this._callArgs = ar;
        this._completeCallback = null;
        this._errorCallback = null;
        
        try {
            this._oncomplete();
        } finally {
            this._completedSynchronously = true;
        }
        if (this._exception) {
            throw this._exception;
        }
        return this._asyncResult;
    },
    
    complete : function() {
        /// <summary>
        /// Completes a pending post synchronously
        /// </summary>        
        
        if (this._timer) {
            try {
                this._oncomplete();
            } finally {
                this._completedSynchronously = true;
            }
            return this._asyncResult;
        } else if (this._isComplete) {
            return this._asyncResult;
        }
    },    
    
    _oncomplete : function() {
        /// <summary>
        /// Completes a pending post asynchronously
        /// </summary>

        var args = this._callArgs;
        var completeCallback = this._completeCallback;
        var errorCallback = this._errorCallback;
        
        this.cancel();
        try {
            if (args) {
                this._asyncResult = this._callback.apply(this._context, args);
            } else {
                this._asyncResult = this._callback.call(this._context);
            }
            this._isComplete = true;
            this._completedSynchronously = false;
            if (completeCallback) {
                completeCallback(this);
            }
        } catch (e) {
            this._isComplete = true;
            this._completedSynchronously = false;
            this._exception = e;
            if (errorCallback) {
                if (errorCallback(this)) {
                    return;
                }
            } 
            if (this._throwExceptions) {
                throw e;
            }
        }
    }
}
Sys.Extended.UI.DeferredOperation.registerClass("Sys.Extended.UI.DeferredOperation");

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["Core"], execute);
}
else {
    execute();
}

})();
O// (c) 2010 CodePlex Foundation
/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />
/// <reference path="../Common/Threading.js" />
/// <reference path="../PopupExtender/PopupBehavior.js" />

(function() {
var scriptName = "ExtendedColorPicker";

function execute() {

Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.ColorPickerBehavior = function(element) {
    /// <summary>
    /// A behavior that attaches a color picker to a textbox
    /// </summmary>
    /// <param name="element" type="Sys.UI.DomElement">The element to attach to</param>
    Sys.Extended.UI.ColorPickerBehavior.initializeBase(this, [element]);

    this._textbox = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(element);
    this._button = null;
    this._sample = null;
    this._cssClass = "ajax__colorPicker";
    this._popupPosition = Sys.Extended.UI.PositioningMode.BottomLeft;
    this._selectedColor = null;

    this._enabled = true;
    this._selectedColorChanging = false;
    this._popupMouseDown = false;
    this._isOpen = false;
    this._blur = new Sys.Extended.UI.DeferredOperation(1, this, this._doBlur);

    this._popupBehavior = null;
    this._container = null;
    this._popupDiv = null;
    this._colorsTable = null;
    this._colorsBody = null;

    this._button$delegates = {
        click: Function.createDelegate(this, this._button_onclick),
        keypress: Function.createDelegate(this, this._button_onkeypress),
        blur: Function.createDelegate(this, this._button_onblur)
    };
    this._element$delegates = {
        change: Function.createDelegate(this, this._element_onchange),
        keypress: Function.createDelegate(this, this._element_onkeypress),
        click: Function.createDelegate(this, this._element_onclick),
        focus: Function.createDelegate(this, this._element_onfocus),
        blur: Function.createDelegate(this, this._element_onblur)
    };
    this._popup$delegates = {
        mousedown: Function.createDelegate(this, this._popup_onmousedown),
        mouseup: Function.createDelegate(this, this._popup_onmouseup),
        drag: Function.createDelegate(this, this._popup_onevent),
        dragstart: Function.createDelegate(this, this._popup_onevent),
        select: Function.createDelegate(this, this._popup_onevent)
    };
    this._cell$delegates = {
        mouseover: Function.createDelegate(this, this._cell_onmouseover),
        mouseout: Function.createDelegate(this, this._cell_onmouseout),
        click: Function.createDelegate(this, this._cell_onclick)
    };
}

Sys.Extended.UI.ColorPickerBehavior.prototype = {
    initialize: function() {
        Sys.Extended.UI.ColorPickerBehavior.callBaseMethod(this, 'initialize');

        if (!Sys.Extended.UI.ColorPickerBehavior._colorRegex) {
            Sys.Extended.UI.ColorPickerBehavior._colorRegex = new RegExp('^[A-Fa-f0-9]{6}$');
        }

        var elt = this.get_element();
        $addHandlers(elt, this._element$delegates);

        if (this._button) {
            $addHandlers(this._button, this._button$delegates);
        }

        var value = this.get_selectedColor();
        if (value) {
            this.set_selectedColor(value);
        }
        this._restoreSample();
    },

    dispose: function() {
        this._sample = null;
        if (this._button) {
            $clearHandlers(this._button);
            this._button = null;
        }

        if (this._popupBehavior) {
            this._popupBehavior.dispose();
            this._popupBehavior = null;
        }
        if (this._container) {
            if (this._container.parentNode) {
                this._container.parentNode.removeChild(this._container);
            }
            this._container = null;
        }
        if (this._popupDiv) {
            $clearHandlers(this._popupDiv);
            this._popupDiv = null;
        }
        if (this._colorsBody) {
            for (var i = 0; i < this._colorsBody.rows.length; i++) {
                var row = this._colorsBody.rows[i];
                for (var j = 0; j < row.cells.length; j++) {
                    $clearHandlers(row.cells[j].firstChild);
                }
            }
            this._colorsBody = null;
        }
        this._colorsTable = null;

        var elt = this.get_element();
        if (elt) {
            $clearHandlers(elt);
        }

        Sys.Extended.UI.ColorPickerBehavior.callBaseMethod(this, 'dispose');
    },

    get_button: function() {
        /// <value type="Sys.UI.DomElement">
        /// The button to use to show the color picker (optional)
        /// </value>
        return this._button;
    },
    set_button: function(value) {
        if (this._button !== value) {
            if (this._button && this.get_isInitialized()) {
                $common.removeHandlers(this._button, this._button$delegates);
            }
            this._button = value;
            if (this._button && this.get_isInitialized()) {
                $addHandlers(this._button, this._button$delegates);
            }
            this.raisePropertyChanged("button");
        }
    },

    get_sample: function() {
        /// <value type="Sys.UI.DomElement">
        /// The element is to sample the color currently being hovered or selected (optional)
        /// </value>
        return this._sample;
    },
    set_sample: function(value) {
        if (this._sample !== value) {
            this._sample = value;
            this.raisePropertyChanged("sample");
        }
    },

    get_selectedColor: function() {
        /// <value type="String">
        /// The color value represented by the text box
        /// </value>

        if (this._selectedColor === null) {
            var value = this._textbox.get_Value();
            if (this._validate(value)) {
                this._selectedColor = value;
            }
        }
        return this._selectedColor;
    },
    set_selectedColor: function(value) {
        if (this._selectedColor !== value && this._validate(value)) {
            this._selectedColor = value;
            this._selectedColorChanging = true;
            if (value !== this._textbox.get_Value()) {
                this._textbox.set_Value(value);
            }
            this._showSample(value);
            this._selectedColorChanging = false;
            this.raisePropertyChanged("selectedColor");
        }
    },

    get_enabled: function() {
        /// <value type="Boolean">
        /// Whether this behavior is available for the current element
        /// </value>

        return this._enabled;
    },
    set_enabled: function(value) {
        if (this._enabled !== value) {
            this._enabled = value;
            this.raisePropertyChanged("enabled");
        }
    },

    get_popupPosition: function() {
        /// <value type="Sys.Extended.UI.PositionMode">
        /// Where the popup should be positioned relative to the target control.
        /// Can be BottomLeft (Default), BottomRight, TopLeft, TopRight.
        /// </value>

        return this._popupPosition;
    },
    set_popupPosition: function(value) {
        if (this._popupPosition !== value) {
            this._popupPosition = value;
            this.raisePropertyChanged('popupPosition');
        }
    },

    add_colorSelectionChanged: function(handler) {
        /// <summary>
        /// Adds an event handler for the <code>colorSelectionChanged</code> event.
        /// </summary>
        /// <param name="handler" type="Function">
        /// The handler to add to the event.
        /// </param>
        /// <returns />

        this.get_events().addHandler("colorSelectionChanged", handler);
    },
    remove_colorSelectionChanged: function(handler) {
        this.get_events().removeHandler("colorSelectionChanged", handler);
    },
    raiseColorSelectionChanged: function() {
        /// <summary>
        /// Raise the <code>colorSelectionChanged</code> event
        /// </summary>
        /// <returns />

        var handlers = this.get_events().getHandler("colorSelectionChanged");
        if (handlers) {
            handlers(this, Sys.EventArgs.Empty);
        }
    },

    add_showing: function(handler) {
        /// <summary>
        /// Adds an event handler for the <code>showiwng</code> event.
        /// </summary>
        /// <param name="handler" type="Function">
        /// The handler to add to the event.
        /// </param>
        /// <returns />

        this.get_events().addHandler("showing", handler);
    },
    remove_showing: function(handler) {
        this.get_events().removeHandler("showing", handler);
    },
    raiseShowing: function(eventArgs) {
        /// <summary>
        /// Raise the showing event
        /// </summary>
        /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
        /// Event arguments for the showing event
        /// </param>
        /// <returns />

        var handler = this.get_events().getHandler('showing');
        if (handler) {
            handler(this, eventArgs);
        }
    },

    add_shown: function(handler) {
        /// <summary>
        /// Adds an event handler for the <code>shown</code> event.
        /// </summary>
        /// <param name="handler" type="Function">
        /// The handler to add to the event.
        /// </param>
        /// <returns />

        this.get_events().addHandler("shown", handler);
    },
    remove_shown: function(handler) {
        this.get_events().removeHandler("shown", handler);
    },
    raiseShown: function() {
        /// <summary>
        /// Raise the <code>shown</code> event
        /// </summary>
        /// <returns />

        var handlers = this.get_events().getHandler("shown");
        if (handlers) {
            handlers(this, Sys.EventArgs.Empty);
        }
    },

    add_hiding: function(handler) {
        /// <summary>
        /// Adds an event handler for the <code>hiding</code> event.
        /// </summary>
        /// <param name="handler" type="Function">
        /// The handler to add to the event.
        /// </param>
        /// <returns />

        this.get_events().addHandler("hiding", handler);
    },
    remove_hiding: function(handler) {
        this.get_events().removeHandler("hiding", handler);
    },
    raiseHiding: function(eventArgs) {
        /// <summary>
        /// Raise the hiding event
        /// </summary>
        /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
        /// Event arguments for the hiding event
        /// </param>
        /// <returns />

        var handler = this.get_events().getHandler('hiding');
        if (handler) {
            handler(this, eventArgs);
        }
    },
    add_hidden: function(handler) {
        /// <summary>
        /// Adds an event handler for the <code>hidden</code> event.
        /// </summary>
        /// <param name="handler" type="Function">
        /// The handler to add to the event.
        /// </param>
        /// <returns />

        this.get_events().addHandler("hidden", handler);
    },
    remove_hidden: function(handler) {
        this.get_events().removeHandler("hidden", handler);
    },
    raiseHidden: function() {
        /// <summary>
        /// Raise the <code>hidden</code> event
        /// </summary>
        /// <returns />

        var handlers = this.get_events().getHandler("hidden");
        if (handlers) {
            handlers(this, Sys.EventArgs.Empty);
        }
    },

    show: function() {
        /// <summary>
        /// Shows the color picker
        /// </summary>

        this._ensureColorPicker();

        if (!this._isOpen) {

            var eventArgs = new Sys.CancelEventArgs();
            this.raiseShowing(eventArgs);
            if (eventArgs.get_cancel()) {
                return;
            }

            this._isOpen = true;
            this._popupBehavior.show();
            this.raiseShown();
        }
    },
    hide: function() {
        /// <summary>
        /// Hides the color picker
        /// </summary>

        if (this._isOpen) {
            var eventArgs = new Sys.CancelEventArgs();
            this.raiseHiding(eventArgs);
            if (eventArgs.get_cancel()) {
                return;
            }

            if (this._container) {
                this._popupBehavior.hide();
            }
            this._isOpen = false;
            this.raiseHidden();

            this._popupMouseDown = false;
        }
    },
    _focus: function() {
        if (this._button) {
            this._button.focus();
        } else {
            this.get_element().focus();
        }
    },
    _doBlur: function(force) {
        if (!force && Sys.Browser.agent === Sys.Browser.Opera) {
            this._blur.post(true);
        } else {
            if (!this._popupMouseDown) {
                this.hide();
            }
            this._popupMouseDown = false;
        }
    },
    _buildColorPicker: function() {

        var elt = this.get_element();
        var id = this.get_id();

        this._container = $common.createElementFromTemplate({
            nodeName: "div",
            properties: { id: id + "_container" },
            cssClasses: [this._cssClass]
        }, elt.parentNode);

        this._popupDiv = $common.createElementFromTemplate({
            nodeName: "div",
            events: this._popup$delegates,
            properties: {
                id: id + "_popupDiv"
            },
            cssClasses: ["ajax__colorPicker_container"],
            visible: false
        }, this._container);
    },
    _buildColors: function() {

        var id = this.get_id();

        this._colorsTable = $common.createElementFromTemplate({
            nodeName: "table",
            properties: {
                id: id + "_colorsTable",
                cellPadding: 0,
                cellSpacing: 1,
                border: 0,
                style: { margin: "auto" }
            }
        }, this._popupDiv);

        this._colorsBody = $common.createElementFromTemplate({
            nodeName: "tbody",
            properties: { id: id + "_colorsBody" }
        }, this._colorsTable);

        var rgb = ['00', '99', '33', '66', 'FF', 'CC'], color, cssColor;
        var l = rgb.length;

        for (var r = 0; r < l; r++) {
            var colorsRow = $common.createElementFromTemplate({ nodeName: "tr" }, this._colorsBody);
            for (var g = 0; g < l; g++) {
                if (g === 3) {
                    colorsRow = $common.createElementFromTemplate({ nodeName: "tr" }, this._colorsBody);
                }
                for (var b = 0; b < l; b++) {
                    color = rgb[r] + rgb[g] + rgb[b];
                    cssColor = '#' + color;
                    var colorCell = $common.createElementFromTemplate({ nodeName: "td" }, colorsRow);
                    var colorDiv = $common.createElementFromTemplate({
                        nodeName: "div",
                        properties: {
                            id: id + "_color_" + color,
                            color: color,
                            title: cssColor,
                            style: { backgroundColor: cssColor },
                            innerHTML: "&nbsp;"
                        },
                        events: this._cell$delegates
                    }, colorCell);
                }
            }
        }
    },
    _ensureColorPicker: function() {

        if (!this._container) {

            var elt = this.get_element();

            this._buildColorPicker();
            this._buildColors();

            this._popupBehavior = new $create(Sys.Extended.UI.PopupBehavior, { parentElement: elt }, {}, {}, this._popupDiv);
            this._popupBehavior.set_positioningMode(this._popupPosition);
        }
    },
    _showSample: function(value) {
        if (this._sample) {
            var color = "";
            if (value) {
                color = "#" + value;
            }
            this._sample.style.backgroundColor = color;
        }
    },
    _restoreSample: function() {
        this._showSample(this._selectedColor);
    },
    _validate: function(value) {
        return value && Sys.Extended.UI.ColorPickerBehavior._colorRegex.test(value);
    },

    _element_onfocus: function(e) {
        if (!this._enabled) { return; }
        if (!this._button) {
            this.show();
            this._popupMouseDown = false;
        }
    },
    _element_onblur: function(e) {
        if (!this._enabled) { return; }
        if (!this._button) {
            this._doBlur();
        }
    },
    _element_onchange: function(e) {
        if (!this._selectedColorChanging) {
            var value = this._textbox.get_Value();
            if (this._validate(value) || value === "") {
                this._selectedColor = value;
                this._restoreSample();
            }
        }
    },
    _element_onkeypress: function(e) {
        if (!this._enabled) { return; }
        if (!this._button && e.charCode === Sys.UI.Key.esc) {
            e.stopPropagation();
            e.preventDefault();
            this.hide();
        }
    },
    _element_onclick: function(e) {
        if (!this._enabled) { return; }
        if (!this._button) {
            this.show();
            this._popupMouseDown = false;
        }
    },

    _popup_onevent: function(e) {
        e.stopPropagation();
        e.preventDefault();
    },
    _popup_onmousedown: function(e) {
        this._popupMouseDown = true;
    },
    _popup_onmouseup: function(e) {
        if (Sys.Browser.agent === Sys.Browser.Opera && this._blur.get_isPending()) {
            this._blur.cancel();
        }
        this._popupMouseDown = false;
        this._focus();
    },

    _cell_onmouseover: function(e) {
        e.stopPropagation();
        var target = e.target;
        this._showSample(target.color);
    },
    _cell_onmouseout: function(e) {
        e.stopPropagation();
        this._restoreSample();
    },
    _cell_onclick: function(e) {
        e.stopPropagation();
        e.preventDefault();

        if (!this._enabled) {
            return;
        }

        var target = e.target;

        this.set_selectedColor(target.color);
        this._blur.post(true);
        this.raiseColorSelectionChanged();
    },

    _button_onclick: function(e) {
        e.preventDefault();
        e.stopPropagation();

        if (!this._enabled) {
            return;
        }

        if (!this._isOpen) {
            this.show();
        } else {
            this.hide();
        }
        this._focus();
        this._popupMouseDown = false;
    },
    _button_onblur: function(e) {
        if (!this._enabled) {
            return;
        }
        if (!this._popupMouseDown) {
            this.hide();
        }
        this._popupMouseDown = false;
    },
    _button_onkeypress: function(e) {
        if (!this._enabled) {
            return;
        }
        if (e.charCode === Sys.UI.Key.esc) {
            e.stopPropagation();
            e.preventDefault();
            this.hide();
        }
        this._popupMouseDown = false;
    }
}
Sys.Extended.UI.ColorPickerBehavior.registerClass('Sys.Extended.UI.ColorPickerBehavior', Sys.Extended.UI.BehaviorBase);
Sys.registerComponent(Sys.Extended.UI.ColorPickerBehavior, { name: "colorPicker" });

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedBase", "ExtendedCommon", "ExtendedThreading", "ExtendedPopup"], execute);
}
else {
    execute();
}

})();
'�// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />
/// <reference path="../Animation/Animations.js" />

(function() {
var scriptName = "ExtendedCollapsiblePanel";

function execute() {

Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.CollapsiblePanelExpandDirection = function() {
    /// <summary>
    /// The CollapsiblePanelExpandDirection enumeration describes whether the panel is opened vertically or horizontally
    /// </summary>
    /// <field name="Horizontal" type="Number" integer="true" />
    /// <field name="Vertical" type="Number" integer="true" />
    throw Error.invalidOperation();
}
Sys.Extended.UI.CollapsiblePanelExpandDirection.prototype = {
    Horizontal : 0,
    Vertical: 1
}
Sys.Extended.UI.CollapsiblePanelExpandDirection.registerEnum("Sys.Extended.UI.CollapsiblePanelExpandDirection", false);


Sys.Extended.UI.CollapsiblePanelBehavior = function(element) {
    /// <summary>
    /// The CollapsiblePanelBehavior allows you to add collapsible sections to your page
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// Element to associate the behavior with
    /// </param>
    Sys.Extended.UI.CollapsiblePanelBehavior.initializeBase(this, [element]);
    
    this._collapsedSize = 0;
    this._expandedSize = 0;
    this._scrollContents = null;    
    this._collapsed = false;    
    this._expandControlID = null;
    this._collapseControlID = null;
    this._textLabelID = null;    
    this._collapsedText = null;
    this._expandedText = null;
    this._imageControlID = null;
    this._expandedImage = null;
    this._collapsedImage = null;
    this._suppressPostBack = null;
    this._autoExpand = null;
    this._autoCollapse = null;
    this._expandDirection = Sys.Extended.UI.CollapsiblePanelExpandDirection.Vertical;
    
    this._collapseClickHandler = null;
    this._expandClickHandler = null;    
    this._panelMouseEnterHandler = null;    
    this._panelMouseLeaveHandler = null;
    
    this._childDiv = null;
    
    this._animation = null;
}
Sys.Extended.UI.CollapsiblePanelBehavior.prototype = {    
    initialize : function() {
        /// <summary>
        /// Initialize the behavior
        /// </summary>
        Sys.Extended.UI.CollapsiblePanelBehavior.callBaseMethod(this, 'initialize');
        
        var element = this.get_element();
        this._animation = new Sys.Extended.UI.Animation.LengthAnimation(element, .25, 10, 'style', null, 0, 0, 'px');
        if (this._expandDirection == Sys.Extended.UI.CollapsiblePanelExpandDirection.Vertical) {
            this._animation.set_propertyKey('height');
        } else if (this._expandDirection == Sys.Extended.UI.CollapsiblePanelExpandDirection.Horizontal) {
           this._animation.set_propertyKey('width');
        }
        this._animation.add_ended(Function.createDelegate(this, this._onAnimateComplete));
        
        if (this._suppressPostBack == null) {
            if (element.tagName == "INPUT" && element.type == "checkbox") {
                this._suppressPostBack = false;
                this.raisePropertyChanged('SuppressPostBack');
            }                    
            else if (element.tagName == "A") {
                this._suppressPostBack = true;
                this.raisePropertyChanged('SuppressPostBack');
            }
        }
        
        
        var lastState = Sys.Extended.UI.CollapsiblePanelBehavior.callBaseMethod(this, 'get_ClientState');                
        if (lastState && lastState != "") {
            var wasCollapsed = Boolean.parse(lastState);  
            if (this._collapsed != wasCollapsed) {
                this._collapsed = wasCollapsed;
                this.raisePropertyChanged('Collapsed');       
            }
        }
        
        this._setupChildDiv();        
        
        if (this._collapsed) {
            this._setTargetSize(this._getCollapsedSize());            
        } else {            
            this._setTargetSize(this._getExpandedSize());
        } 
        
        this._setupState(this._collapsed);
        
        if (this._collapseControlID == this._expandControlID) {
            this._collapseClickHandler = Function.createDelegate(this, this.togglePanel);
            this._expandClickHandler = null; // we don't need both if we're toggling.
        } else {
            this._collapseClickHandler = Function.createDelegate(this, this.collapsePanel);
            this._expandClickHandler = Function.createDelegate(this, this.expandPanel);       
        }
        
        if (this._autoExpand) {
            this._panelMouseEnterHandler = Function.createDelegate(this, this._onMouseEnter);
            $addHandler(element, 'mouseover', this._panelMouseEnterHandler);
        }       
        if (this._autoCollapse) {
            this._panelMouseLeaveHandler = Function.createDelegate(this, this._onMouseLeave);
            $addHandler(element, 'mouseout', this._panelMouseLeaveHandler);
        }
        
        if (this._collapseControlID) {
            var collapseElement = $get(this._collapseControlID);
            if (!collapseElement) {
                throw Error.argument('CollapseControlID', String.format(Sys.Extended.UI.Resources.CollapsiblePanel_NoControlID, this._collapseControlID));
            } else {
                $addHandler(collapseElement, 'click', this._collapseClickHandler);
            }
        }
        
        if (this._expandControlID) {
            if (this._expandClickHandler) { // if it's a toggle don't set up again
                var expandElement = $get(this._expandControlID);
                if (!expandElement) {
                    throw Error.argument('ExpandControlID', String.format(Sys.Extended.UI.Resources.CollapsiblePanel_NoControlID, this._expandControlID));
                } else {
                    $addHandler(expandElement, 'click', this._expandClickHandler);
                }
               
            }
        }
    },
    
    dispose : function() {
        /// <summary>
        /// Dispose the behavior
        /// </summary>
        
        var element = this.get_element();
        
        if (this._collapseClickHandler) {
            var collapseElement = (this._collapseControlID ? $get(this._collapseControlID) : null);
            if (collapseElement) {
                $removeHandler(collapseElement, 'click', this._collapseClickHandler);
            }
            this._collapseClickHandler = null;
        }
        
        if (this._expandClickHandler) {
            var expandElement = (this._expandControlID ? $get(this._expandControlID) : null);
            if (expandElement) {
                $removeHandler(expandElement, 'click', this._expandClickHandler);
            }
            this._expandClickHandler = null;
        }
        
        if (this._panelMouseEnterHandler) {
            $removeHandler(element, 'mouseover', this._panelMouseEnterHandler);
        }
                
        if (this._panelMouseLeaveHandler) {
            $removeHandler(element, 'mouseout', this._panelMouseLeaveHandler);
        }
                
        if (this._animation) {
            this._animation.dispose();
            this._animation = null;
        }
        
        Sys.Extended.UI.CollapsiblePanelBehavior.callBaseMethod(this, 'dispose');
    },

    togglePanel : function(eventObj) {
        /// <summary>
        /// Event handler to epxand or collapse the panel (based on its current state)
        /// This is the public function that should be called instead of _toggle if
        /// you wish to programmatically open and close the collapsible panel.
        /// </summary>
        /// <param name="eventObj" type="Sys.UI.DomEvent" mayBeNull="true" optional="true">
        /// Event Info
        /// </param>

        this._toggle(eventObj);
    },    
    
    expandPanel : function(eventObj) {
        /// <summary>
        /// Open the panel. Public function that users should call if they
        /// wish to operate the collapsible panel programmatically.
        /// _doOpen should be treated as private since it has an underscore 
        /// to begin the function name.
        /// </summary>    
        /// <param name="eventObj" type="Sys.UI.DomEvent" mayBeNull="true" optional="true">
        /// Event Info
        /// </param>
        
        this._doOpen(eventObj);    
    },
    
    collapsePanel : function(eventObj) {
        /// <summary>
        /// Collapse the panel. Public function that users should call if they
        /// wish to operate the collapsible panel programmatically.
        /// _doClose should be treated as private since it has an underscore 
        /// to begin the function name.
        /// </summary>    
        /// <param name="eventObj" type="Sys.UI.DomEvent" mayBeNull="true" optional="true">
        /// Event Info
        /// </param>
        
        this._doClose(eventObj);
    },
    
    _checkCollapseHide : function() {
        /// <summary>
        /// Check if a control is collapsed and hidden
        /// (and set its display to none if it is supposed to be hidden)
        /// </summary>
        /// <returns type="Boolean">
        /// Whether the control is collapsed and hidden
        /// </returns>

        if (this._collapsed && this._getTargetSize() == 0) {
            var e = this.get_element();
            var display = $common.getCurrentStyle(e, 'display');
            if (!e.oldDisplay && display != "none") {
                e.oldDisplay = display;
                e.style.display = "none";
            }
            return true;
        }
        return false;
    },
    
    _doClose : function(eventObj) {
        /// <summary>
        /// Collapse the panel. Internal function, to close call "collapsePanel".
        /// </summary>
        /// <param name="eventObj" type="Sys.UI.DomEvent" mayBeNull="true" optional="true">
        /// Event Info
        /// </param>
        
        var eventArgs = new Sys.CancelEventArgs();
        this.raiseCollapsing(eventArgs);
        if (eventArgs.get_cancel()) {
            return;
        }
    
        if (this._animation) {
            this._animation.stop();        
            
            this._animation.set_startValue(this._getTargetSize());
            this._animation.set_endValue(this._getCollapsedSize());
            
            this._animation.play();
        }
        
        this._setupState(true);
                
        if (this._suppressPostBack) {
            if (eventObj && eventObj.preventDefault) {
                eventObj.preventDefault();
            } else {
                if (eventObj) {
                    eventObj.returnValue = false;
                }
                return false;
            }
        }
    },
    
    _doOpen : function(eventObj) {
        /// <summary>
        /// Expand the Panel. Internal function, to close call "expandPanel".
        /// </summary>
        /// <param name="eventObj" type="Sys.UI.DomEvent" mayBeNull="true" optional="true">
        /// Event Info
        /// </param>
    
        var eventArgs = new Sys.CancelEventArgs();
        this.raiseExpanding(eventArgs);
        if (eventArgs.get_cancel()) {
            return;
        }
        
        if (this._animation) {
            this._animation.stop();
            var e = this.get_element();
            
            if (this._checkCollapseHide() && $common.getCurrentStyle(e, 'display', e.style.display)) {
                if (e.oldDisplay) {
                    e.style.display = e.oldDisplay;
                } else {
                    if (e.style.removeAttribute) {
                        e.style.removeAttribute("display");
                    } else {
                       e.style.removeProperty("display");
                    }
                }
                e.oldDisplay = null;
            }
            
            this._animation.set_startValue(this._getTargetSize());
            this._animation.set_endValue(this._getExpandedSize());
            
            this._animation.play();
        }
        
        this._setupState(false);
        
        if (this._suppressPostBack) {
            if (eventObj && eventObj.preventDefault) {
                eventObj.preventDefault();
            } else {
                if (eventObj) {
                    eventObj.returnValue = false;
                }
                return false;
            }
        }
    },
    
    _onAnimateComplete : function() {
        /// <summary>
        /// Handler to listen for the end of the expand/collapse animation
        /// </summary>
    
        var e = this.get_element();
    
        if (!this._collapsed && !this._expandedSize)
        {
            if(this._expandDirection == Sys.Extended.UI.CollapsiblePanelExpandDirection.Vertical) {
                if(this._childDiv.offsetHeight <= e.offsetHeight) {
                   e.style.height = "auto";
                   this.raisePropertyChanged('TargetHeight');
                } 
                else {
                    this._checkCollapseHide();
                }
            }
            else // horizontal
            {
                if( this._childDiv.offsetWidth <= e.offsetWidth) {
                   e.style.width = "auto";
                   this.raisePropertyChanged('TargetWidth');
                }
                else {
                    this._checkCollapseHide();
                }
            }
        }
        else {
            this._checkCollapseHide();
        }
        
        if (this._collapsed) {
            this.raiseCollapseComplete();
            this.raiseCollapsed(Sys.EventArgs.Empty);
        } else {
            this.raiseExpandComplete()
            this.raiseExpanded(new Sys.EventArgs());
        }
    },
    
    _onMouseEnter : function(eventObj) {
        /// <summary>
        /// OnMouseOver Handler
        /// </summary>
        /// <param name="eventObj" type="Sys.UI.DomEvent" mayBeNull="true">
        /// Event Info
        /// </param>       
        if (this._autoExpand) {
            this.expandPanel(eventObj);
        }
    },
    
    _onMouseLeave : function(eventObj) {
        /// <summary>
        /// OnMouseOut Handler
        /// </summary>
        /// <param name="eventObj" type="Sys.UI.DomEvent" mayBeNull="true">
        /// Event Info
        /// </param>      
        if (this._autoCollapse) {
           this.collapsePanel(eventObj);
        }
    },
    
    _getExpandedSize : function() {
        /// <summary>
        /// Get the size of the panel when fully expanded
        /// </summary>
        /// <returns type="Number" integer="true">
        /// Size of the panel when fully expanded
        /// </returns>
    
        if (this._expandedSize) {
            return this._expandedSize;
        }                
        
        if (this._expandDirection == Sys.Extended.UI.CollapsiblePanelExpandDirection.Vertical) {
            return this._childDiv.offsetHeight;
        } else if (this._expandDirection == Sys.Extended.UI.CollapsiblePanelExpandDirection.Horizontal) {
            return this._childDiv.offsetWidth;
        }
    },
    
    _getCollapsedSize : function() {
        /// <summary>
        /// Get the size of the panel when fully collapsed
        /// </summary>
        /// <returns type="Number" integer="true">
        /// Size of the panel when fully collapsed
        /// </returns>

        if (this._collapsedSize) {
            return this._collapsedSize;
        }
        
        return 0;
    },
    
     _getTargetSize : function() {
         /// <summary>
         /// Get the target size of the Panel
         /// </summary>
         /// <returns type="Number" integer="true">
         /// Target size of the Panel
         /// </returns>

        var value;
        if (this._expandDirection == Sys.Extended.UI.CollapsiblePanelExpandDirection.Vertical) {
           value = this.get_TargetHeight();
        } else if (this._expandDirection == Sys.Extended.UI.CollapsiblePanelExpandDirection.Horizontal) {
           value = this.get_TargetWidth();
        }       
        
        if (value === undefined) {
            value = 0;
        }
        return value;
    },
    
    _setTargetSize : function(value) {
        /// <summary>
        /// Set the target size of the panel
        /// </summary>
        /// <param name="value" type="Number" integer="true">
        /// Target size of the panel
        /// </param>

        var useSize = this._collapsed || this._expandedSize;
        var e = this.get_element();
        if (this._expandDirection == Sys.Extended.UI.CollapsiblePanelExpandDirection.Vertical) {
            if (useSize || value < e.offsetHeight) {
                this.set_TargetHeight(value);
            } else {
                e.style.height = "auto";
                this.raisePropertyChanged('TargetHeight');
            }
        } else if (this._expandDirection == Sys.Extended.UI.CollapsiblePanelExpandDirection.Horizontal) {
            if (useSize || value < e.offsetWidth) {
                this.set_TargetWidth(value);
            }
            else {
                e.style.width = "auto";
                this.raisePropertyChanged('TargetWidth');
            }            
        }
        this._checkCollapseHide();
    },
    
    _setupChildDiv : function() {
        /// <summary>
        /// Set up a child div to host our panel contents
        /// and then push the panel's children into it.
        /// </summary>

        
        var startSize = this._getTargetSize();
        
        var e = this.get_element();
                
        this._childDiv = e.cloneNode(false);
        e.id = '';

        this._childDiv.style.visibility = 'visible';
        this._childDiv.style.display = '';
        
        while (e.hasChildNodes()) {            
            var child = e.childNodes[0];
            child = e.removeChild(child);
            this._childDiv.appendChild(child);                
        }

        e.setAttribute('style', '');
        e.className = '';
        e.style.border = '0px';
        e.style.margin = '0px';
        e.style.padding = '0px';

        if (this._scrollContents) {
            if (this._expandDirection == Sys.Extended.UI.CollapsiblePanelExpandDirection.Vertical) {
                e.style.overflowY = "scroll";
                this._childDiv.style.overflowY = ""; 
            } else {
                e.style.overflowX = "scroll";
                this._childDiv.style.overflowX = ""; 
            }
            if (Sys.Browser.agent == Sys.Browser.Safari || Sys.Browser.agent == Sys.Browser.Opera) {
                e.style.overflow = "scroll";
                this._childDiv.style.overflow = "";
            }
            
         }
         else {
            if (this._expandDirection == Sys.Extended.UI.CollapsiblePanelExpandDirection.Vertical) {
                e.style.overflowY = "hidden";
                this._childDiv.style.overflowY = ""; 
            } else {
                e.style.overflowX = "hidden";
                this._childDiv.style.overflowX = ""; 
            }
            if (Sys.Browser.Agent == Sys.Browser.Safari || Sys.Browser.Agent == Sys.Browser.Opera) {
                e.style.overflow = "hidden";
                this._childDiv.style.overflow = "";
            }            
         }

        this._childDiv.style.position = "";
        
        if (startSize == this._collapsedSize) {
            if (this._expandDirection == Sys.Extended.UI.CollapsiblePanelExpandDirection.Vertical) {
                this._childDiv.style.height = "auto"; 
            } else if (this._expandDirection == Sys.Extended.UI.CollapsiblePanelExpandDirection.Horizontal) {
                this._childDiv.style.width = "auto"; 
            }
        }

        e.appendChild(this._childDiv);

        e.style.visibility = 'visible';
        e.style.display = '';
        
        if (this._collapsed) {
            startSize = this._getCollapsedSize();
        }
        else {
            startSize = this._getExpandedSize();
        }
            
        if (this._expandDirection == Sys.Extended.UI.CollapsiblePanelExpandDirection.Vertical) {
            e.style.height = startSize + "px";
            
            if (!this._expandedSize) {
                e.style.height = "auto";
            }
            else {
               e.style.height = this._expandedSize + "px";
            }
            this._childDiv.style.height = "auto";

        } else if (this._expandDirection == Sys.Extended.UI.CollapsiblePanelExpandDirection.Horizontal) {
            e.style.width = startSize + "px";
            
            if (!this._expandedSize) {
                e.style.width = "auto";
            }
            else {
               e.style.width = this._expandedSize + "px";
            }
            this._childDiv.style.width = "auto";
        }    
    },
    
    _setupState : function(isCollapsed) {
        /// <summary>
        /// Get all the state set consistently when we change modes
        /// </summary>
        /// <param name="isCollapsed" type="Boolean">
        /// True to setup the state as if we're collapsed, false to setup the state as if we're expanded
        /// </param>

    
        if (isCollapsed) {           
        
            if (this._textLabelID && this._collapsedText) {
                var e = $get(this._textLabelID);
                
                if (e) {
                    e.innerHTML = this._collapsedText;
                }
            }
            
            if (this._imageControlID && this._collapsedImage) {
                var i = $get(this._imageControlID);
                if (i && i.src) {
                    i.src = this._collapsedImage;
                    if (this._expandedText || this._collapsedText) {
                        i.title = this._collapsedText;
                    }
                }
            }            
        }
        else {  
            if (this._textLabelID && this._expandedText) {
                var e = $get(this._textLabelID);
                
                if (e) {
                    e.innerHTML = this._expandedText;
                }
            }
            
            if (this._imageControlID && this._expandedImage) {
                var i = $get(this._imageControlID);
                if (i && i.src) {
                    i.src = this._expandedImage;
                    if (this._expandedText || this._collapsedText) {
                            i.title = this._expandedText;
                    }
                }
            }        
        } 
        
        if (this._collapsed != isCollapsed) {
            this._collapsed = isCollapsed;        
            this.raisePropertyChanged('Collapsed');
        }
        Sys.Extended.UI.CollapsiblePanelBehavior.callBaseMethod(this, 'set_ClientState', [this._collapsed.toString()]);                        
    },
    
    _toggle : function(eventObj) {
        /// <summary>
        /// Event handler to epxand or collapse the panel (based on its current state)
        /// Internal function. Please use "togglePanel(eventObj)" to get same functionality.
        /// </summary>
        /// <param name="eventObj" type="Sys.UI.DomEvent" mayBeNull="true" optional="true">
        /// Event Info
        /// </param>

        if (this.get_Collapsed()) {
            return this.expandPanel(eventObj);
        } else {
            return this.collapsePanel(eventObj);
        }
    },
    
    add_collapsing : function(handler) {
        /// <summary>
        /// Add an event handler for the collapsing event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('collapsing', handler);
    },
    remove_collapsing : function(handler) {
        /// <summary>
        /// Remove an event handler from the collapsing event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('collapsing', handler);
    },
    raiseCollapsing : function(eventArgs) {
        /// <summary>
        /// Raise the collapsing event
        /// </summary>
        /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
        /// Event arguments for the collapsing event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('collapsing');
        if (handler) {
            handler(this, eventArgs);
        }
    },
    
    add_collapsed : function(handler) {
        /// <summary>
        /// Add an event handler for the collapsed event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('collapsed', handler);
    },
    remove_collapsed : function(handler) {
        /// <summary>
        /// Remove an event handler from the collapsed event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('collapsed', handler);
    },
    raiseCollapsed : function(eventArgs) {
        /// <summary>
        /// Raise the collapsed event
        /// </summary>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="false">
        /// Event arguments for the collapsed event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('collapsed');
        if (handler) {
            handler(this, eventArgs);
        }
    },

    add_collapseComplete : function(handler) {
        /// <summary>
        /// Add a handler to the collapseComplete event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        /// <obsolete>Use the collapsed event instead</obsolete>
    	this.get_events().addHandler('collapseComplete', handler);
    },
    remove_collapseComplete : function(handler) {
        /// <summary>
        /// Remove a handler from the collapseComplete event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        /// <obsolete>Use the collapsed event instead</obsolete>
    	this.get_events().removeHandler('collapseComplete', handler);
    },
    raiseCollapseComplete : function() {
        /// <summary>
        /// Raise the collapseComplete event
        /// </summary>
        /// <obsolete>Use the collapsed event instead</obsolete>
    	var handlers = this.get_events().getHandler('collapseComplete');
    	if (handlers) {
    		handlers(this, Sys.EventArgs.Empty);
    	}
    },
    
    add_expanding : function(handler) {
        /// <summary>
        /// Add an event handler for the expanding event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('expanding', handler);
    },
    remove_expanding : function(handler) {
        /// <summary>
        /// Remove an event handler from the expanding event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('expanding', handler);
    },
    raiseExpanding : function(eventArgs) {
        /// <summary>
        /// Raise the expanding event
        /// </summary>
        /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
        /// Event arguments for the expanding event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('expanding');
        if (handler) {
            handler(this, eventArgs);
        }
    },
    
    add_expanded : function(handler) {
        /// <summary>
        /// Add an event handler for the expanded event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('expanded', handler);
    },
    remove_expanded : function(handler) {
        /// <summary>
        /// Remove an event handler from the expanded event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('expanded', handler);
    },
    raiseExpanded : function(eventArgs) {
        /// <summary>
        /// Raise the expanded event
        /// </summary>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="false">
        /// Event arguments for the expanded event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('expanded');
        if (handler) {
            handler(this, eventArgs);
        }
    },
    
    add_expandComplete : function(handler) {
        /// <summary>
        /// Add a handler to the expandComplete event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        /// <obsolete>Use the expanded event instead</obsolete>
    	this.get_events().addHandler('expandComplete', handler);
    },
    remove_expandComplete : function(handler) {
        /// <summary>
        /// Remove a handler from the expandComplete event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        /// <obsolete>Use the expanded event instead</obsolete>
    	this.get_events().removeHandler('expandComplete', handler);
    },
    raiseExpandComplete : function() {
        /// <summary>
        /// Raise the expandComplete event
        /// </summary>
        /// <obsolete>Use the expanded event instead</obsolete>
    	var handlers = this.get_events().getHandler('expandComplete');
    	if (handlers) {
    		handlers(this, Sys.EventArgs.Empty);
    	}
    },

    get_TargetHeight : function() {
        /// <value type="Number" integer="true">
        /// Wrap the height of the panel
        /// </value>
        return this.get_element().offsetHeight;        
    },
    set_TargetHeight : function(value) {        
        this.get_element().style.height = value + "px";        
        this.raisePropertyChanged('TargetHeight');
    },
    
    get_TargetWidth : function() {
        /// <value type="Number" integer="true">
        /// Wrap the width of the panel
        /// </value>
        return this.get_element().offsetWidth;        
    },
    set_TargetWidth : function(value) {
        this.get_element().style.width = value + "px"        
        this.raisePropertyChanged('TargetWidth');
    },
        
    get_Collapsed : function() {
        /// <value type="Boolean">
        /// Whether or not the panel is collapsed
        /// </value>
        return this._collapsed;        
    },    
    set_Collapsed : function(value) {
        if (this.get_isInitialized() && this.get_element() && value != this.get_Collapsed()) {
            this.togglePanel();
        }
        else {
            this._collapsed = value;
            this.raisePropertyChanged('Collapsed');
        }
    },
    
    get_CollapsedSize : function() {
        /// <value type="Number" integer="true">
        /// The size of the target, in pixels, when it is in the collapsed state
        /// </value>
        return this._collapsedSize;
    },
    set_CollapsedSize : function(value) {
        if (this._collapsedSize != value) {
            this._collapsedSize = value;
            this.raisePropertyChanged('CollapsedSize');
        }
    },
    
    get_ExpandedSize : function() {
        /// <value type="Number" integer="true">
        /// The size of the target, in pixels, when it is in the expanded state
        /// </value>
        return this._expandedSize;
    },
    set_ExpandedSize : function(value) {
        if (this._expandedSize != value) {
            this._expandedSize = value;
            this.raisePropertyChanged('ExpandedSize');
        }
    },
    
    get_CollapseControlID : function() {
        /// <value type="String">
        /// ID of the control used to collapse the target when clicked
        /// </value>
        return this._collapseControlID;
    },
    set_CollapseControlID : function(value) {
        if (this._collapseControlID != value) {
            this._collapseControlID = value;
            this.raisePropertyChanged('CollapseControlID');
        }
    },
    
    get_ExpandControlID : function() {
        /// <value type="String">
        /// ID of the control used to expand the target when clicked
        /// </value>
        return this._expandControlID;
    },    
    set_ExpandControlID : function(value) {
        if (this._expandControlID != value) {
            this._expandControlID = value;
            this.raisePropertyChanged('ExpandControlID');
        }
    },
    
    get_ScrollContents : function() {
        /// <value type="Boolean">
        /// Whether to add a scrollbar when the contents are larger than the target (the contents will be clipped if false)
        /// </value>
        return this._scrollContents;
    },
    set_ScrollContents : function(value) {
        if (this._scrollContents != value) {
            this._scrollContents = value;
            this.raisePropertyChanged('ScrollContents');
        }
    },
    
    get_SuppressPostBack : function() {
        /// <value type="Boolean">
        /// Whether or not to suppress postbacks generated when the CollapseControlID or ExpandControlID elements are clicked
        /// </value>
        return this._suppressPostBack;
    },
    set_SuppressPostBack : function(value) {
        if (this._suppressPostBack != value) {
            this._suppressPostBack = value;
            this.raisePropertyChanged('SuppressPostBack');
        }
    },
    
    get_TextLabelID : function() {
        /// <value type="String">
        /// ID of the element where the "status text" for the target will be placed
        /// </value>
        return this._textLabelID;
    },
    set_TextLabelID : function(value) {
        if (this._textLabelID != value) {
            this._textLabelID = value;
            this.raisePropertyChanged('TextLabelID');
        }
    },
    
    get_ExpandedText : function() {
        /// <value type="String">
        /// Text to show in the element specified by TextLabelID when the target is expanded.  This text is also used as the alternate text of the image if ImageControlID has been provided.
        /// </value>
        return this._expandedText;
    },
    set_ExpandedText : function(value) {
        if (this._expandedText != value) {
            this._expandedText = value;
            this.raisePropertyChanged('ExpandedText');
        }
    },
    
    get_CollapsedText : function() {
        /// <value type="String">
        /// Text to show in the element specified by TextLabelID when the target is collapsed.  This text is also used as the alternate text of the image if ImageControlID has been provided.
        /// </value>
        return this._collapsedText;
    },
    set_CollapsedText : function(value) {
        if (this._collapsedText != value) {
            this._collapsedText = value;
            this.raisePropertyChanged('CollapsedText');
        }
    },
    
    get_ImageControlID : function() {
        /// <value type="String">
        /// ID of the <img> element where an icon indicating the collapsed status of the target will be placed
        /// </value>
        return this._imageControlID;
    },
    set_ImageControlID : function(value) {
        if (this._imageControlID != value) {
            this._imageControlID = value;
            this.raisePropertyChanged('ImageControlID');
        }
    },
    
    get_ExpandedImage : function() {
        /// <value type="String">
        /// Path to an image to show in the element specified by ImageControlID when the target is expanded
        /// </value>
        return this._expandedImage;
    },
    set_ExpandedImage : function(value) {
        if (this._expandedImage != value) {
            this._expandedImage = value;
            this.raisePropertyChanged('ExpandedImage');
        }
    },
    
    get_CollapsedImage : function() {
        /// <value type="String">
        /// Path to an image to show in the element specified by ImageControlID when the target is collapsed
        /// </value>
        return this._collapsedImage;
    },
    set_CollapsedImage : function(value) {
        if (this._collapsedImage != value) {
            this._collapsedImage = value;
            this.raisePropertyChanged('CollapsedImage');
        }
    },
    
    get_AutoExpand : function() {
        /// <value type="Boolean">
        /// Whether to automatically expand the target when the mouse is moved over it
        /// </value>
        return this._autoExpand;
    },
    set_AutoExpand : function(value) {
        if (this._autoExpand != value) {
            this._autoExpand = value;
            this.raisePropertyChanged('AutoExpand');
        }
    },
    
    get_AutoCollapse : function() {
        /// <value type="Boolean">
        /// Whether to automatically collapse the target when the mouse is moved off of it
        /// </value>
        return this._autoCollapse;
    },
    set_AutoCollapse : function(value) {
        if (this._autoCollapse != value) {
            this._autoCollapse = value;
            this.raisePropertyChanged('AutoCollapse');
        }
    },    
    
    get_ExpandDirection : function() {
        /// <value type="Sys.Extended.UI.CollapsiblePanelExpandDirection">
        /// Direction the panel will expand and collapse (can be either "Vertical" or "Horizontal")
        /// </value>
        return this._expandDirection == Sys.Extended.UI.CollapsiblePanelExpandDirection.Vertical;
    },      
    set_ExpandDirection : function(value) {
        if (this._expandDirection != value) {
            this._expandDirection = value;
            this.raisePropertyChanged('ExpandDirection');
        }
    }
}
Sys.Extended.UI.CollapsiblePanelBehavior.registerClass('Sys.Extended.UI.CollapsiblePanelBehavior', Sys.Extended.UI.BehaviorBase);
Sys.registerComponent(Sys.Extended.UI.CollapsiblePanelBehavior, { name: "collapsiblePanel" });

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedBase", "ExtendedCommon", "ExtendedAnimations"], execute);
}
else {
    execute();
}

})();
E// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference name="MicrosoftAjaxTimer.debug.js" />
/// <reference name="MicrosoftAjaxWebForms.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />
/// <reference path="../Common/DateTime.js" />
/// <reference path="../Common/Threading.js" />
/// <reference path="../Animation/Animations.js" />
/// <reference path="../Animation/AnimationBehavior.js" />
/// <reference path="../PopupExtender/PopupBehavior.js" />

(function () {
    var scriptName = "ExtendedCalendar";

    function execute() {

        Type.registerNamespace("Sys.Extended.UI");

        Sys.Extended.UI.CalendarBehavior = function (element) {
            /// <summary>
            /// A behavior that attaches a calendar date selector to a textbox
            /// </summmary>
            /// <param name="element" type="Sys.UI.DomElement">The element to attach to</param>

            Sys.Extended.UI.CalendarBehavior.initializeBase(this, [element]);

            this._textbox = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(element);
            this._format = "d";
            this._todaysDateFormat = "MMMM d, yyyy";
            this._daysModeTitleFormat = "MMMM, yyyy";
            this._cssClass = "ajax__calendar";
            this._enabled = true;
            this._animated = true;
            this._buttonID = null;
            this._layoutRequested = 0;
            this._layoutSuspended = false;
            this._button = null;
            this._popupMouseDown = false;
            this._selectedDate = null;
            this._startDate = null;
            this._endDate = null;
            this._visibleDate = null;
            this._todaysDate = null;
            this._firstDayOfWeek = Sys.Extended.UI.FirstDayOfWeek.Default;
            this._firstPopUp = true;

            this._container = null;
            this._popupDiv = null;
            this._header = null;
            this._prevArrow = null;
            this._nextArrow = null;
            this._title = null;
            this._body = null;
            this._today = null;
            this._days = null;
            this._daysTable = null;
            this._daysTableHeader = null;
            this._daysTableHeaderRow = null;
            this._daysBody = null;
            this._months = null;
            this._monthsTable = null;
            this._monthsBody = null;
            this._years = null;
            this._yearsTable = null;
            this._yearsBody = null;
            this._popupPosition = Sys.Extended.UI.CalendarPosition.BottomLeft;
            this._defaultView = Sys.Extended.UI.CalendarDefaultView.Days;

            this._popupBehavior = null;
            this._modeChangeAnimation = null;
            this._modeChangeMoveTopOrLeftAnimation = null;
            this._modeChangeMoveBottomOrRightAnimation = null;
            this._mode = "days";
            this._selectedDateChanging = false;
            this._isOpen = false;
            this._isAnimating = false;
            this._clearTime = false;
            this._width = 170;
            this._height = 139;
            this._modes = { "days": null, "months": null, "years": null };
            this._modeOrder = { "days": 0, "months": 1, "years": 2 };
            this._blur = new Sys.Extended.UI.DeferredOperation(1, this, this.blur);

            this._button$delegates = {
                click: Function.createDelegate(this, this._button_onclick),
                keypress: Function.createDelegate(this, this._button_onkeypress),
                blur: Function.createDelegate(this, this._button_onblur)
            }
            this._element$delegates = {
                change: Function.createDelegate(this, this._element_onchange),
                keypress: Function.createDelegate(this, this._element_onkeypress),
                click: Function.createDelegate(this, this._element_onclick),
                focus: Function.createDelegate(this, this._element_onfocus),
                blur: Function.createDelegate(this, this._element_onblur)
            }
            this._popup$delegates = {
                mousedown: Function.createDelegate(this, this._popup_onmousedown),
                mouseup: Function.createDelegate(this, this._popup_onmouseup),
                drag: Function.createDelegate(this, this._popup_onevent),
                dragstart: Function.createDelegate(this, this._popup_onevent)
            }
            this._cell$delegates = {
                mouseover: Function.createDelegate(this, this._cell_onmouseover),
                mouseout: Function.createDelegate(this, this._cell_onmouseout),
                click: Function.createDelegate(this, this._cell_onclick)
            }
        }
        Sys.Extended.UI.CalendarBehavior.prototype = {

            get_clearTime: function () {
                /// <summary>
                /// Whether time should be cleared in edited date/time
                /// </summary>
                /// <value type="Boolean" />

                return this._clearTime;
            },
            set_clearTime: function (value) {
                if (this._clearTime != value) {
                    this._clearTime = value;
                    this.raisePropertyChanged("_clearTime");
                }
            },

            get_animated: function () {
                /// <summary>
                /// Whether changing modes is animated
                /// </summary>
                /// <value type="Boolean" />

                return this._animated;
            },
            set_animated: function (value) {
                if (this._animated != value) {
                    this._animated = value;
                    this.raisePropertyChanged("animated");
                }
            },

            get_enabled: function () {
                /// <value type="Boolean">
                /// Whether this behavior is available for the current element
                /// </value>

                return this._enabled;
            },
            set_enabled: function (value) {
                if (this._enabled != value) {
                    this._enabled = value;
                    this.raisePropertyChanged("enabled");
                }
            },

            get_button: function () {
                /// <value type="Sys.UI.DomElement">
                /// The button to use to show the calendar (optional)
                /// </value>

                return this._button;
            },
            set_button: function (value) {
                if (this._button != value) {
                    if (this._button && this.get_isInitialized()) {
                        $common.removeHandlers(this._button, this._button$delegates);
                    }
                    this._button = value;
                    if (this._button && this.get_isInitialized()) {
                        $addHandlers(this._button, this._button$delegates);
                    }
                    this.raisePropertyChanged("button");
                }
            },

            get_popupPosition: function () {
                /// <value type="Sys.Extended.UI.CalendarPosition">
                /// Where the popup should be positioned relative to the target control.
                /// Can be BottomLeft (Default), BottomRight, TopLeft, TopRight.
                /// </value>

                return this._popupPosition;
            },
            set_popupPosition: function (value) {
                if (this._popupPosition != value) {
                    this._popupPosition = value;
                    this.raisePropertyChanged('popupPosition');
                }
            },

            set_startDate: function (value) {
                /// <value type="Date">
                /// The property of the start date for range
                /// </value>
                if (this._startDate != value) {
                    this._startDate = new Date(value);
                    this.raisePropertyChanged('startDate');
                }
            },

            get_startDate: function () {
                /// <value type="Date">
                /// The property of the start date for range
                /// </value>
                return this._startDate;
            },

            set_endDate: function (value) {
                /// <value type="Date">
                /// The property of the end date for range
                /// </value>
                if (this._endDate != value) {
                    this._endDate = new Date(value);
                    this.raisePropertyChanged('_endDate');
                }
            },

            get_endDate: function () {
                /// <value type="Date">
                /// The property of the end date for range
                /// </value>
                return this._endDate;
            },

            get_format: function () {
                /// <value type="String">
                /// The format to use for the date value
                /// </value>

                return this._format;
            },
            set_format: function (value) {
                if (this._format != value) {
                    this._format = value;
                    this.raisePropertyChanged("format");
                }
            },

            get_todaysDateFormat: function () {
                /// <value type="String">
                /// The format to use for the todays date
                /// </value>

                return this._todaysDateFormat;
            },
            set_todaysDateFormat: function (value) {
                if (this._todaysDateFormat != value) {
                    this._todaysDateFormat = value;
                    this.raisePropertyChanged("todaysDateFormat");
                }
            },

            get_daysModeTitleFormat: function () {
                /// <value type="String">
                /// The format to use for the title when in days mode
                /// </value>

                return this._daysModeTitleFormat;
            },
            set_daysModeTitleFormat: function (value) {
                if (this._daysModeTitleFormat != value) {
                    this._daysModeTitleFormat = value;
                    this.raisePropertyChanged("daysModeTitleFormat");
                }
            },

            get_selectedDate: function () {
                /// <value type="Date">
                /// The date value represented by the text box
                /// </value>
                if (this._selectedDate == null) {
                    var value = this._textbox.get_Value();
                    if (value) {
                        value = this._parseTextValue(value);
                        if (value) {
                            this._selectedDate = value;
                        }
                    }
                }
                return this._selectedDate;
            },
            set_selectedDate: function (value) {
                if (value && (String.isInstanceOfType(value)) && (value.length != 0)) {
                    value = new Date(value);
                }

                if (this._selectedDate != value) {
                    this._selectedDate = value;
                    this._selectedDateChanging = true;
                    var text = "";
                    if (value) {
                        text = this._convertToLocal(value).localeFormat(this._format);

                        if (!this._clearTime) {
                            var tbvalue = this._textbox.get_Value();
                            if (tbvalue) {
                                tbvalue = this._parseTextValue(tbvalue);
                            }
                            if (tbvalue) {
                                if (value != tbvalue.getDateOnly()) {
                                    value.setUTCHours(tbvalue.getUTCHours());
                                    value.setUTCMinutes(tbvalue.getUTCMinutes());
                                    value.setUTCMilliseconds(tbvalue.getUTCMilliseconds());

                                    text = this._convertToLocal(value).localeFormat(this._format);
                                }
                            }
                        }

                    }
                    if (text != this._textbox.get_Value()) {
                        this._textbox.set_Value(text);
                        this._fireChanged();
                    }
                    this._selectedDateChanging = false;
                    this.invalidate();
                    this.raisePropertyChanged("selectedDate");
                }
            },

            get_defaultView: function () {
                /// <value type="Sys.Extended.UI.CalendarDefaultView">
                /// The default view of the calendar when it first pops up.
                /// </value>

                return this._defaultView;
            },
            set_defaultView: function (value) {
                if (this._defaultView != value) {
                    this._defaultView = value;
                    this.raisePropertyChanged("defaultView");
                }
            },

            get_visibleDate: function () {
                /// <summary>
                /// The date currently visible in the calendar
                /// </summary>
                /// <value type="Date" />

                return this._visibleDate;
            },
            set_visibleDate: function (value) {
                if (value && (String.isInstanceOfType(value)) && (value.length != 0)) {
                    value = new Date(value);
                }

                if (this._visibleDate != value) {
                    this._switchMonth(value, !this._isOpen);
                    this.raisePropertyChanged("visibleDate");
                }
            },

            get_isOpen: function () {
                /// <value type="Boolean">
                /// Whether the calendar is open
                /// </value>
                return this._isOpen;
            },

            get_todaysDate: function () {
                /// <value type="Date">
                /// The date to use for "Today"
                /// </value>
                if (this._todaysDate != null) {
                    return this._todaysDate;
                }
                return new Date();
            },
            set_todaysDate: function (value) {
                if (this._todaysDate != value) {
                    this._todaysDate = value;

                    this.invalidate();
                    this.raisePropertyChanged("todaysDate");
                }
            },

            get_firstDayOfWeek: function () {
                /// <value type="Sys.Extended.UI.FirstDayOfWeek">
                /// The day of the week to appear as the first day in the calendar
                /// </value>

                return this._firstDayOfWeek;
            },
            set_firstDayOfWeek: function (value) {
                if (this._firstDayOfWeek != value) {
                    this._firstDayOfWeek = value;
                    this.invalidate();
                    this.raisePropertyChanged("firstDayOfWeek");
                }
            },

            get_cssClass: function () {
                /// <value type="String">
                /// The CSS class selector to use to change the calendar's appearance
                /// </value>

                return this._cssClass;
            },
            set_cssClass: function (value) {
                if (this._cssClass != value) {
                    if (this._cssClass && this.get_isInitialized()) {
                        Sys.UI.DomElement.removeCssClass(this._container, this._cssClass);
                    }
                    this._cssClass = value;
                    if (this._cssClass && this.get_isInitialized()) {
                        Sys.UI.DomElement.addCssClass(this._container, this._cssClass);
                    }
                    this.raisePropertyChanged("cssClass");
                }
            },

            get_todayButton: function () {
                /// <value type="Sys.UI.DomElement">
                /// The button used to select todays date
                /// </value>

                return this._today;
            },

            get_dayCell: function (row, col) {
                /// <value type="Sys.UI.DomElement">
                /// Gets the day cell at the specified row or column
                /// </value>
                if (this._daysBody) {
                    return this._daysBody.rows[row].cells[col].firstChild;
                }
                return null;
            },

            add_showing: function (handler) {
                /// <summary>
                /// Adds an event handler for the <code>showiwng</code> event.
                /// </summary>
                /// <param name="handler" type="Function">
                /// The handler to add to the event.
                /// </param>
                /// <returns />

                this.get_events().addHandler("showing", handler);
            },
            remove_showing: function (handler) {
                /// <summary>
                /// Removes an event handler for the <code>showing</code> event.
                /// </summary>
                /// <param name="handler" type="Function">
                /// The handler to remove from the event.
                /// </param>
                /// <returns />

                this.get_events().removeHandler("showing", handler);
            },
            raiseShowing: function (eventArgs) {
                /// <summary>
                /// Raise the showing event
                /// </summary>
                /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
                /// Event arguments for the showing event
                /// </param>
                /// <returns />

                var handler = this.get_events().getHandler('showing');
                if (handler) {
                    handler(this, eventArgs);
                }
            },

            add_shown: function (handler) {
                /// <summary>
                /// Adds an event handler for the <code>shown</code> event.
                /// </summary>
                /// <param name="handler" type="Function">
                /// The handler to add to the event.
                /// </param>
                /// <returns />

                this.get_events().addHandler("shown", handler);
            },
            remove_shown: function (handler) {
                /// <summary>
                /// Removes an event handler for the <code>shown</code> event.
                /// </summary>
                /// <param name="handler" type="Function">
                /// The handler to remove from the event.
                /// </param>
                /// <returns />

                this.get_events().removeHandler("shown", handler);
            },
            raiseShown: function () {
                /// <summary>
                /// Raise the <code>shown</code> event
                /// </summary>
                /// <returns />

                var handlers = this.get_events().getHandler("shown");
                if (handlers) {
                    handlers(this, Sys.EventArgs.Empty);
                }
            },

            add_hiding: function (handler) {
                /// <summary>
                /// Adds an event handler for the <code>hiding</code> event.
                /// </summary>
                /// <param name="handler" type="Function">
                /// The handler to add to the event.
                /// </param>
                /// <returns />

                this.get_events().addHandler("hiding", handler);
            },
            remove_hiding: function (handler) {
                /// <summary>
                /// Removes an event handler for the <code>hiding</code> event.
                /// </summary>
                /// <param name="handler" type="Function">
                /// The handler to remove from the event.
                /// </param>
                /// <returns />

                this.get_events().removeHandler("hiding", handler);
            },
            raiseHiding: function (eventArgs) {
                /// <summary>
                /// Raise the hiding event
                /// </summary>
                /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
                /// Event arguments for the hiding event
                /// </param>
                /// <returns />

                var handler = this.get_events().getHandler('hiding');
                if (handler) {
                    handler(this, eventArgs);
                }
            },

            add_hidden: function (handler) {
                /// <summary>
                /// Adds an event handler for the <code>hidden</code> event.
                /// </summary>
                /// <param name="handler" type="Function">
                /// The handler to add to the event.
                /// </param>
                /// <returns />

                this.get_events().addHandler("hidden", handler);
            },
            remove_hidden: function (handler) {
                /// <summary>
                /// Removes an event handler for the <code>hidden</code> event.
                /// </summary>
                /// <param name="handler" type="Function">
                /// The handler to remove from the event.
                /// </param>
                /// <returns />

                this.get_events().removeHandler("hidden", handler);
            },
            raiseHidden: function () {
                /// <summary>
                /// Raise the <code>hidden</code> event
                /// </summary>
                /// <returns />

                var handlers = this.get_events().getHandler("hidden");
                if (handlers) {
                    handlers(this, Sys.EventArgs.Empty);
                }
            },

            add_dateSelectionChanged: function (handler) {
                /// <summary>
                /// Adds an event handler for the <code>dateSelectionChanged</code> event.
                /// </summary>
                /// <param name="handler" type="Function">
                /// The handler to add to the event.
                /// </param>
                /// <returns />

                this.get_events().addHandler("dateSelectionChanged", handler);
            },
            remove_dateSelectionChanged: function (handler) {
                /// <summary>
                /// Removes an event handler for the <code>dateSelectionChanged</code> event.
                /// </summary>
                /// <param name="handler" type="Function">
                /// The handler to remove from the event.
                /// </param>
                /// <returns />

                this.get_events().removeHandler("dateSelectionChanged", handler);
            },
            raiseDateSelectionChanged: function () {
                /// <summary>
                /// Raise the <code>dateSelectionChanged</code> event
                /// </summary>
                /// <returns />

                var handlers = this.get_events().getHandler("dateSelectionChanged");
                if (handlers) {
                    handlers(this, Sys.EventArgs.Empty);
                }
            },

            initialize: function () {
                /// <summary>
                /// Initializes the components and parameters for this behavior
                /// </summary>
                Sys.Extended.UI.CalendarBehavior.callBaseMethod(this, "initialize");

                var elt = this.get_element();
                $addHandlers(elt, this._element$delegates);

                if (this._button) {
                    $addHandlers(this._button, this._button$delegates);
                }

                this._modeChangeMoveTopOrLeftAnimation = new Sys.Extended.UI.Animation.LengthAnimation(null, null, null, "style", null, 0, 0, "px");
                this._modeChangeMoveBottomOrRightAnimation = new Sys.Extended.UI.Animation.LengthAnimation(null, null, null, "style", null, 0, 0, "px");
                this._modeChangeAnimation = new Sys.Extended.UI.Animation.ParallelAnimation(null, .25, null, [this._modeChangeMoveTopOrLeftAnimation, this._modeChangeMoveBottomOrRightAnimation]);

                var value = this.get_selectedDate();
                if (value) {
                    this.set_selectedDate(value);
                }
            },
            dispose: function () {
                /// <summary>
                /// Disposes this behavior's resources
                /// </summary>

                if (this._popupBehavior) {
                    this._popupBehavior.dispose();
                    this._popupBehavior = null;
                }
                this._modes = null;
                this._modeOrder = null;
                if (this._modeChangeMoveTopOrLeftAnimation) {
                    this._modeChangeMoveTopOrLeftAnimation.dispose();
                    this._modeChangeMoveTopOrLeftAnimation = null;
                }
                if (this._modeChangeMoveBottomOrRightAnimation) {
                    this._modeChangeMoveBottomOrRightAnimation.dispose();
                    this._modeChangeMoveBottomOrRightAnimation = null;
                }
                if (this._modeChangeAnimation) {
                    this._modeChangeAnimation.dispose();
                    this._modeChangeAnimation = null;
                }
                if (this._container) {
                    if (this._container.parentNode) { // added this check before calling removeChild WI: 8486
                        this._container.parentNode.removeChild(this._container);
                    }
                    this._container = null;
                }
                if (this._popupDiv) {
                    $common.removeHandlers(this._popupDiv, this._popup$delegates);
                    this._popupDiv = null;
                }
                if (this._prevArrow) {
                    $common.removeHandlers(this._prevArrow, this._cell$delegates);
                    this._prevArrow = null;
                }
                if (this._nextArrow) {
                    $common.removeHandlers(this._nextArrow, this._cell$delegates);
                    this._nextArrow = null;
                }
                if (this._title) {
                    $common.removeHandlers(this._title, this._cell$delegates);
                    this._title = null;
                }
                if (this._today) {
                    $common.removeHandlers(this._today, this._cell$delegates);
                    this._today = null;
                }
                if (this._button) {
                    $common.removeHandlers(this._button, this._button$delegates);
                    this._button = null;
                }
                if (this._daysBody) {
                    for (var i = 0; i < this._daysBody.rows.length; i++) {
                        var row = this._daysBody.rows[i];
                        for (var j = 0; j < row.cells.length; j++) {
                            $common.removeHandlers(row.cells[j].firstChild, this._cell$delegates);
                        }
                    }
                    this._daysBody = null;
                }
                if (this._monthsBody) {
                    for (var i = 0; i < this._monthsBody.rows.length; i++) {
                        var row = this._monthsBody.rows[i];
                        for (var j = 0; j < row.cells.length; j++) {
                            $common.removeHandlers(row.cells[j].firstChild, this._cell$delegates);
                        }
                    }
                    this._monthsBody = null;
                }
                if (this._yearsBody) {
                    for (var i = 0; i < this._yearsBody.rows.length; i++) {
                        var row = this._yearsBody.rows[i];
                        for (var j = 0; j < row.cells.length; j++) {
                            $common.removeHandlers(row.cells[j].firstChild, this._cell$delegates);
                        }
                    }
                    this._yearsBody = null;
                }
                var elt = this.get_element();
                $common.removeHandlers(elt, this._element$delegates);
                Sys.Extended.UI.CalendarBehavior.callBaseMethod(this, "dispose");
            },

            show: function () {
                /// <summary>
                /// Shows the calendar
                /// </summary>

                this._ensureCalendar();

                if (!this._isOpen) {

                    var eventArgs = new Sys.CancelEventArgs();
                    this.raiseShowing(eventArgs);
                    if (eventArgs.get_cancel()) {
                        return;
                    }

                    this._isOpen = true;

                    this._popupBehavior.show();

                    if (this._firstPopUp) {
                        this._switchMonth(null, true);
                        switch (this._defaultView) {
                            case Sys.Extended.UI.CalendarDefaultView.Months:
                                this._switchMode("months", true);
                                break;
                            case Sys.Extended.UI.CalendarDefaultView.Years:
                                this._switchMode("years", true);
                                break;
                        }
                        this._firstPopUp = false;
                    }

                    this.raiseShown();
                }
            },
            hide: function () {
                /// <summary>
                /// Hides the calendar
                /// </summary>

                if (this._isOpen) {
                    var eventArgs = new Sys.CancelEventArgs();
                    this.raiseHiding(eventArgs);
                    if (eventArgs.get_cancel()) {
                        return;
                    }

                    if (this._container) {
                        this._popupBehavior.hide();
                    }
                    this._isOpen = false;
                    this.raiseHidden();

                    this._popupMouseDown = false;
                }
            },
            focus: function () {
                if (this._button) {
                    this._button.focus();
                } else {
                    this.get_element().focus();
                }
            },
            blur: function (force) {
                if (!force && Sys.Browser.agent === Sys.Browser.Opera) {
                    this._blur.post(true);
                } else {
                    if (!this._popupMouseDown) {
                        this.hide();
                    }
                    this._popupMouseDown = false;
                }
            },

            suspendLayout: function () {
                /// <summary>
                /// Suspends layout of the behavior while setting properties
                /// </summary>

                this._layoutSuspended++;
            },
            resumeLayout: function () {
                /// <summary>
                /// Resumes layout of the behavior and performs any pending layout requests
                /// </summary>

                this._layoutSuspended--;
                if (this._layoutSuspended <= 0) {
                    this._layoutSuspended = 0;
                    if (this._layoutRequested) {
                        this._performLayout();
                    }
                }
            },
            invalidate: function () {
                /// <summary>
                /// Performs layout of the behavior unless layout is suspended
                /// </summary>

                if (this._layoutSuspended > 0) {
                    this._layoutRequested = true;
                } else {
                    this._performLayout();
                }
            },

            _buildCalendar: function () {
                /// <summary>
                /// Builds the calendar's layout
                /// </summary>

                var elt = this.get_element();
                var id = this.get_id();

                this._container = $common.createElementFromTemplate({
                    nodeName: "div",
                    properties: { id: id + "_container" },
                    cssClasses: [this._cssClass],
                    visible: false
                }, elt.parentNode);

                this._popupDiv = $common.createElementFromTemplate({
                    nodeName: "div",
                    events: this._popup$delegates,
                    properties: {
                        id: id + "_popupDiv"
                    },
                    cssClasses: ["ajax__calendar_container"]
                }, this._container);
            },
            _buildHeader: function () {
                /// <summary>
                /// Builds the header for the calendar
                /// </summary>

                var id = this.get_id();

                this._header = $common.createElementFromTemplate({
                    nodeName: "div",
                    properties: { id: id + "_header" },
                    cssClasses: ["ajax__calendar_header"]
                }, this._popupDiv);

                var prevArrowWrapper = $common.createElementFromTemplate({ nodeName: "div" }, this._header);
                this._prevArrow = $common.createElementFromTemplate({
                    nodeName: "div",
                    properties: {
                        id: id + "_prevArrow",
                        mode: "prev"
                    },
                    events: this._cell$delegates,
                    cssClasses: ["ajax__calendar_prev"]
                }, prevArrowWrapper);

                var nextArrowWrapper = $common.createElementFromTemplate({ nodeName: "div" }, this._header);
                this._nextArrow = $common.createElementFromTemplate({
                    nodeName: "div",
                    properties: {
                        id: id + "_nextArrow",
                        mode: "next"
                    },
                    events: this._cell$delegates,
                    cssClasses: ["ajax__calendar_next"]
                }, nextArrowWrapper);

                var titleWrapper = $common.createElementFromTemplate({ nodeName: "div" }, this._header);

                this._title = $common.createElementFromTemplate({
                    nodeName: "div",
                    properties: {
                        id: id + "_title",
                        mode: "title"
                    },
                    events: this._cell$delegates,
                    cssClasses: ["ajax__calendar_title"]
                }, titleWrapper);
            },
            _buildBody: function () {
                /// <summary>
                /// Builds the body region for the calendar
                /// </summary>

                this._body = $common.createElementFromTemplate({
                    nodeName: "div",
                    properties: { id: this.get_id() + "_body" },
                    cssClasses: ["ajax__calendar_body"]
                }, this._popupDiv);

                this._buildDays();
                this._buildMonths();
                this._buildYears();
            },
            _buildFooter: function () {
                /// <summary>
                /// Builds the footer for the calendar
                /// </summary>

                var todayWrapper = $common.createElementFromTemplate({ nodeName: "div" }, this._popupDiv);
                this._today = $common.createElementFromTemplate({
                    nodeName: "div",
                    properties: {
                        id: this.get_id() + "_today",
                        mode: "today"
                    },
                    events: this._cell$delegates,
                    cssClasses: ["ajax__calendar_footer", "ajax__calendar_today"]
                }, todayWrapper);
            },
            _buildDays: function () {
                /// <summary>
                /// Builds a "days of the month" view for the calendar
                /// </summary>

                var dtf = Sys.CultureInfo.CurrentCulture.dateTimeFormat;
                var id = this.get_id();

                this._days = $common.createElementFromTemplate({
                    nodeName: "div",
                    properties: { id: id + "_days" },
                    cssClasses: ["ajax__calendar_days"]
                }, this._body);
                this._modes["days"] = this._days;

                this._daysTable = $common.createElementFromTemplate({
                    nodeName: "table",
                    properties: {
                        id: id + "_daysTable",
                        cellPadding: 0,
                        cellSpacing: 0,
                        border: 0,
                        style: { margin: "auto" }
                    }
                }, this._days);

                this._daysTableHeader = $common.createElementFromTemplate({ nodeName: "thead", properties: { id: id + "_daysTableHeader"} }, this._daysTable);
                this._daysTableHeaderRow = $common.createElementFromTemplate({ nodeName: "tr", properties: { id: id + "_daysTableHeaderRow"} }, this._daysTableHeader);
                for (var i = 0; i < 7; i++) {
                    var dayCell = $common.createElementFromTemplate({ nodeName: "td" }, this._daysTableHeaderRow);
                    var dayDiv = $common.createElementFromTemplate({
                        nodeName: "div",
                        cssClasses: ["ajax__calendar_dayname"]
                    }, dayCell);
                }

                this._daysBody = $common.createElementFromTemplate({ nodeName: "tbody", properties: { id: id + "_daysBody"} }, this._daysTable);
                for (var i = 0; i < 6; i++) {
                    var daysRow = $common.createElementFromTemplate({ nodeName: "tr" }, this._daysBody);
                    for (var j = 0; j < 7; j++) {
                        var dayCell = $common.createElementFromTemplate({ nodeName: "td" }, daysRow);
                        var dayDiv = $common.createElementFromTemplate({
                            nodeName: "div",
                            properties: {
                                mode: "day",
                                id: id + "_day_" + i + "_" + j,
                                innerHTML: "&nbsp;"
                            },
                            events: this._cell$delegates,
                            cssClasses: ["ajax__calendar_day"]
                        }, dayCell);
                    }
                }
            },
            _buildMonths: function () {
                /// <summary>
                /// Builds a "months of the year" view for the calendar
                /// </summary>

                var dtf = Sys.CultureInfo.CurrentCulture.dateTimeFormat;
                var id = this.get_id();

                this._months = $common.createElementFromTemplate({
                    nodeName: "div",
                    properties: { id: id + "_months" },
                    cssClasses: ["ajax__calendar_months"],
                    visible: false
                }, this._body);
                this._modes["months"] = this._months;

                this._monthsTable = $common.createElementFromTemplate({
                    nodeName: "table",
                    properties: {
                        id: id + "_monthsTable",
                        cellPadding: 0,
                        cellSpacing: 0,
                        border: 0,
                        style: { margin: "auto" }
                    }
                }, this._months);

                this._monthsBody = $common.createElementFromTemplate({ nodeName: "tbody", properties: { id: id + "_monthsBody"} }, this._monthsTable);
                for (var i = 0; i < 3; i++) {
                    var monthsRow = $common.createElementFromTemplate({ nodeName: "tr" }, this._monthsBody);
                    for (var j = 0; j < 4; j++) {
                        var monthCell = $common.createElementFromTemplate({ nodeName: "td" }, monthsRow);
                        var monthDiv = $common.createElementFromTemplate({
                            nodeName: "div",
                            properties: {
                                id: id + "_month_" + i + "_" + j,
                                mode: "month",
                                month: (i * 4) + j,
                                innerHTML: "<br />" + dtf.AbbreviatedMonthNames[(i * 4) + j]
                            },
                            events: this._cell$delegates,
                            cssClasses: ["ajax__calendar_month"]
                        }, monthCell);
                    }
                }
            },
            _buildYears: function () {
                /// <summary>
                /// Builds a "years in this decade" view for the calendar
                /// </summary>

                var id = this.get_id();

                this._years = $common.createElementFromTemplate({
                    nodeName: "div",
                    properties: { id: id + "_years" },
                    cssClasses: ["ajax__calendar_years"],
                    visible: false
                }, this._body);
                this._modes["years"] = this._years;

                this._yearsTable = $common.createElementFromTemplate({
                    nodeName: "table",
                    properties: {
                        id: id + "_yearsTable",
                        cellPadding: 0,
                        cellSpacing: 0,
                        border: 0,
                        style: { margin: "auto" }
                    }
                }, this._years);

                this._yearsBody = $common.createElementFromTemplate({ nodeName: "tbody", properties: { id: id + "_yearsBody"} }, this._yearsTable);
                for (var i = 0; i < 3; i++) {
                    var yearsRow = $common.createElementFromTemplate({ nodeName: "tr" }, this._yearsBody);
                    for (var j = 0; j < 4; j++) {
                        var yearCell = $common.createElementFromTemplate({ nodeName: "td" }, yearsRow);
                        var yearDiv = $common.createElementFromTemplate({
                            nodeName: "div",
                            properties: {
                                id: id + "_year_" + i + "_" + j,
                                mode: "year",
                                year: ((i * 4) + j) - 1
                            },
                            events: this._cell$delegates,
                            cssClasses: ["ajax__calendar_year"]
                        }, yearCell);
                    }
                }
            },


            _isInDateRange: function (date, part) {
                switch (part) {
                    case "d":
                        if ((this._startDate) && (this._getDateOnly(date) < this._getDateOnly(this._startDate))) { return false; }
                        if ((this._endDate) && (this._getDateOnly(date) > this._getDateOnly(this._endDate))) { return false; }
                        break;
                    case "M":
                        if ((this._startDate) && (this._getMonthOnly(date) < this._getMonthOnly(this._startDate))) { return false; }
                        if ((this._endDate) && (this._getMonthOnly(date) > this._getMonthOnly(this._endDate))) { return false; }
                        break;
                    case "y":
                        if ((this._startDate) && (date.getUTCFullYear() < this._startDate.getUTCFullYear())) { return false; }
                        if ((this._endDate) && (date.getUTCFullYear() > this._endDate.getUTCFullYear())) { return false; }
                        break;
                }
                return true;
            },


            _getDateOnly: function (date) {
                return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()));
            },


            _getMonthOnly: function (date) {
                return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), 1));
            },



            _convertToUTC: function (value) {
                /// <summary>Converts a local date such as 1/1/2007 into 1/1/2007 GMT 
                /// without adjusting for time zone</summary>
                if (value) {
                    value = new Date(Date.UTC(value.getFullYear(), value.getMonth(), value.getDate(), value.getHours(), value.getMinutes(), value.getSeconds(), value.getMilliseconds()));
                }
                return value;
            },


            _convertToLocal: function (value) {
                /// <summary>Converts a UTC date such as 1/1/2007 GMT into 1/1/2007 without adjusting for time zone</summary>
                /// <param name="value" type="Date">The date to convert</param>

                var result = new Date(value.getUTCFullYear(), value.getUTCMonth(), value.getUTCDate(), value.getUTCHours(), value.getUTCMinutes(), value.getUTCSeconds(), value.getUTCMilliseconds());

                if (result.getDate() != value.getUTCDate()) {
                    result = new Date(value.getUTCFullYear(), value.getUTCMonth(), value.getUTCDate(), value.getUTCHours() + 1, value.getUTCMinutes(), value.getUTCSeconds(), value.getUTCMilliseconds());
                }
                return result;
            },




            _performLayout: function () {
                /// <summmary>
                /// Updates the various views of the calendar to match the current selected and visible dates
                /// </summary>

                var elt = this.get_element();
                if (!elt) return;
                if (!this.get_isInitialized()) return;
                if (!this._isOpen) return;

                var dtf = Sys.CultureInfo.CurrentCulture.dateTimeFormat;
                var selectedDate = this.get_selectedDate();
                var visibleDate = this._getEffectiveVisibleDate();
                var todaysDate = this.get_todaysDate();
                switch (this._mode) {
                    case "days":

                        var firstDayOfWeek = this._getFirstDayOfWeek();
                        var daysToBacktrack = visibleDate.getUTCDay() - firstDayOfWeek;
                        if (daysToBacktrack <= 0)
                            daysToBacktrack += 7;

                        var startDate = new Date(visibleDate);
                        startDate.setUTCDate(startDate.getUTCDate() - daysToBacktrack);
                        var currentDate = new Date(startDate);

                        for (var i = 0; i < 7; i++) {
                            var dayCell = this._daysTableHeaderRow.cells[i].firstChild;
                            if (dayCell.firstChild) {
                                dayCell.removeChild(dayCell.firstChild);
                            }
                            dayCell.appendChild(document.createTextNode(dtf.ShortestDayNames[(i + firstDayOfWeek) % 7]));
                        }
                        for (var week = 0; week < 6; week++) {
                            var weekRow = this._daysBody.rows[week];
                            for (var dayOfWeek = 0; dayOfWeek < 7; dayOfWeek++) {
                                var dayCell = weekRow.cells[dayOfWeek].firstChild;
                                if (dayCell.firstChild) {
                                    dayCell.removeChild(dayCell.firstChild);
                                }
                                dayCell.appendChild(document.createTextNode(currentDate.getUTCDate()));
                                dayCell.title = this._convertToLocal(currentDate).localeFormat("D");
                                dayCell.date = currentDate;
                                $common.removeCssClasses(dayCell.parentNode, ["ajax__calendar_other", "ajax__calendar_active", "ajax__calendar_today"]);

                                if (!this._isInDateRange(currentDate, "d")) {
                                    $common.removeCssClasses(dayCell.parentNode, ["ajax__calendar_other", "ajax__calendar_active"]);
                                    Sys.UI.DomElement.addCssClass(dayCell.parentNode, "ajax__calendar_invalid");
                                } else {
                                    $common.removeCssClasses(dayCell.parentNode, ["ajax__calendar_invalid", "ajax__calendar_other", "ajax__calendar_active", ""]);
                                    Sys.UI.DomElement.addCssClass(dayCell.parentNode, this._getCssClass(dayCell.date, 'd'));
                                }

                                currentDate = new Date(currentDate);
                                currentDate.setUTCDate(currentDate.getUTCDate() + 1);
                            }
                        }

                        this._prevArrow.date = new Date(Date.UTC(visibleDate.getUTCFullYear(), visibleDate.getUTCMonth() - 1, 1));
                        this._nextArrow.date = new Date(Date.UTC(visibleDate.getUTCFullYear(), visibleDate.getUTCMonth() + 1, 1));
                        if (this._title.firstChild) {
                            this._title.removeChild(this._title.firstChild);
                        }

                        this._title.appendChild(document.createTextNode(this._convertToLocal(visibleDate).localeFormat(this.get_daysModeTitleFormat())));
                        this._title.date = visibleDate;

                        break;
                    case "months":
                        for (var i = 0; i < this._monthsBody.rows.length; i++) {
                            var row = this._monthsBody.rows[i];
                            for (var j = 0; j < row.cells.length; j++) {
                                var cell = row.cells[j].firstChild;
                                cell.date = new Date(Date.UTC(visibleDate.getUTCFullYear(), cell.month, 1));
                                cell.title = this._convertToLocal(cell.date).localeFormat("Y");

                                if (!this._isInDateRange(cell.date, "M")) {
                                    $common.removeCssClasses(cell.parentNode, ["ajax__calendar_other", "ajax__calendar_active"]);
                                    Sys.UI.DomElement.addCssClass(cell.parentNode, "ajax__calendar_invalid");
                                }
                                else {

                                    $common.removeCssClasses(cell.parentNode, ["ajax__calendar_invalid", "ajax__calendar_other", "ajax__calendar_active"]);
                                    Sys.UI.DomElement.addCssClass(cell.parentNode, this._getCssClass(cell.date, 'M'));
                                }
                            }
                        }

                        if (this._title.firstChild) {
                            this._title.removeChild(this._title.firstChild);
                        }

                        this._title.appendChild(document.createTextNode(this._convertToLocal(visibleDate).localeFormat("yyyy")));
                        this._title.date = visibleDate;
                        this._prevArrow.date = new Date(Date.UTC(visibleDate.getUTCFullYear() - 1, 0, 1));
                        this._nextArrow.date = new Date(Date.UTC(visibleDate.getUTCFullYear() + 1, 0, 1));

                        break;
                    case "years":

                        var minYear = (Math.floor(visibleDate.getUTCFullYear() / 10) * 10);
                        for (var i = 0; i < this._yearsBody.rows.length; i++) {
                            var row = this._yearsBody.rows[i];
                            for (var j = 0; j < row.cells.length; j++) {
                                var cell = row.cells[j].firstChild;
                                cell.date = new Date(Date.UTC(minYear + cell.year, 0, 1));
                                if (cell.firstChild) {
                                    cell.removeChild(cell.lastChild);
                                } else {
                                    cell.appendChild(document.createElement("br"));
                                }
                                cell.appendChild(document.createTextNode(minYear + cell.year));

                                if (!this._isInDateRange(cell.date, "y")) {
                                    $common.removeCssClasses(cell.parentNode, ["ajax__calendar_other", "ajax__calendar_active"]);
                                    Sys.UI.DomElement.addCssClass(cell.parentNode, "ajax__calendar_invalid");
                                }
                                else {
                                    $common.removeCssClasses(cell.parentNode, ["ajax__calendar_invalid", "ajax__calendar_other", "ajax__calendar_active"]);
                                    Sys.UI.DomElement.addCssClass(cell.parentNode, this._getCssClass(cell.date, 'y'));
                                }
                            }
                        }

                        if (this._title.firstChild) {
                            this._title.removeChild(this._title.firstChild);
                        }

                        this._title.appendChild(document.createTextNode(minYear.toString() + "-" + (minYear + 9).toString()));
                        this._title.date = visibleDate;
                        this._prevArrow.date = new Date(Date.UTC(minYear - 10, 0, 1));
                        this._nextArrow.date = new Date(Date.UTC(minYear + 10, 0, 1));

                        break;
                }
                if (this._today.firstChild) {
                    this._today.removeChild(this._today.firstChild);
                }

                $common.removeCssClasses(this._today.parentNode, ["ajax__calendar_invalid"]);
                this._today.appendChild(document.createTextNode(String.format(Sys.Extended.UI.Resources.Calendar_Today, todaysDate.localeFormat(this.get_todaysDateFormat()))));
                if (!this._isInDateRange(todaysDate, "d")) {
                    Sys.UI.DomElement.addCssClass(this._today.parentNode, "ajax__calendar_invalid");
                }

                this._today.date = this._convertToUTC(todaysDate);
            },

            _ensureCalendar: function () {

                if (!this._container) {

                    var elt = this.get_element();

                    this._buildCalendar();
                    this._buildHeader();
                    this._buildBody();
                    this._buildFooter();

                    this._popupBehavior = new $create(Sys.Extended.UI.PopupBehavior, { parentElement: elt }, {}, {}, this._container);
                    if (this._popupPosition == Sys.Extended.UI.CalendarPosition.TopLeft) {
                        this._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.TopLeft);
                    } else if (this._popupPosition == Sys.Extended.UI.CalendarPosition.TopRight) {
                        this._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.TopRight);
                    } else if (this._popupPosition == Sys.Extended.UI.CalendarPosition.BottomRight) {
                        this._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.BottomRight);
                    } else if (this._popupPosition == Sys.Extended.UI.CalendarPosition.Right) {
                        this._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.Right);
                    } else if (this._popupPosition == Sys.Extended.UI.CalendarPosition.Left) {
                        this._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.Left);
                    } else {
                        this._popupBehavior.set_positioningMode(Sys.Extended.UI.PositioningMode.BottomLeft);
                    }
                }
            },

            _fireChanged: function () {
                /// <summary>
                /// Attempts to fire the change event on the attached textbox
                /// </summary>

                var elt = this.get_element();
                if (document.createEventObject) {
                    elt.fireEvent("onchange");
                } else if (document.createEvent) {
                    var e = document.createEvent("HTMLEvents");
                    e.initEvent("change", true, true);
                    elt.dispatchEvent(e);
                }
            },
            _switchMonth: function (date, dontAnimate) {
                /// <summary>
                /// Switches the visible month in the days view
                /// </summary>
                /// <param name="date" type="Date">The visible date to switch to</param>
                /// <param name="dontAnimate" type="Boolean">Prevents animation from occuring if the control is animated</param>

                if (this._isAnimating) {
                    return;
                }


                if (date && !this._canSwitchMonth(date)) {
                    return;
                }

                var visibleDate = this._getEffectiveVisibleDate();
                if ((date && date.getFullYear() == visibleDate.getFullYear() && date.getMonth() == visibleDate.getMonth())) {
                    dontAnimate = true;
                }

                if (this._animated && !dontAnimate) {
                    this._isAnimating = true;

                    var newElement = this._modes[this._mode];
                    var oldElement = newElement.cloneNode(true);
                    this._body.appendChild(oldElement);
                    if (visibleDate > date) {


                        $common.setLocation(newElement, { x: -162, y: 0 });
                        $common.setVisible(newElement, true);
                        this._modeChangeMoveTopOrLeftAnimation.set_propertyKey("left");
                        this._modeChangeMoveTopOrLeftAnimation.set_target(newElement);
                        this._modeChangeMoveTopOrLeftAnimation.set_startValue(-this._width);
                        this._modeChangeMoveTopOrLeftAnimation.set_endValue(0);

                        $common.setLocation(oldElement, { x: 0, y: 0 });
                        $common.setVisible(oldElement, true);
                        this._modeChangeMoveBottomOrRightAnimation.set_propertyKey("left");
                        this._modeChangeMoveBottomOrRightAnimation.set_target(oldElement);
                        this._modeChangeMoveBottomOrRightAnimation.set_startValue(0);
                        this._modeChangeMoveBottomOrRightAnimation.set_endValue(this._width);

                    } else {

                        $common.setLocation(oldElement, { x: 0, y: 0 });
                        $common.setVisible(oldElement, true);
                        this._modeChangeMoveTopOrLeftAnimation.set_propertyKey("left");
                        this._modeChangeMoveTopOrLeftAnimation.set_target(oldElement);
                        this._modeChangeMoveTopOrLeftAnimation.set_endValue(-this._width);
                        this._modeChangeMoveTopOrLeftAnimation.set_startValue(0);

                        $common.setLocation(newElement, { x: 162, y: 0 });
                        $common.setVisible(newElement, true);
                        this._modeChangeMoveBottomOrRightAnimation.set_propertyKey("left");
                        this._modeChangeMoveBottomOrRightAnimation.set_target(newElement);
                        this._modeChangeMoveBottomOrRightAnimation.set_endValue(0);
                        this._modeChangeMoveBottomOrRightAnimation.set_startValue(this._width);
                    }
                    this._visibleDate = date;
                    this.invalidate();

                    var endHandler = Function.createDelegate(this, function () {
                        this._body.removeChild(oldElement);
                        oldElement = null;
                        this._isAnimating = false;
                        this._modeChangeAnimation.remove_ended(endHandler);
                    });
                    this._modeChangeAnimation.add_ended(endHandler);
                    this._modeChangeAnimation.play();
                } else {
                    this._visibleDate = date;
                    this.invalidate();
                }
            },

            _canSwitchMonth: function (date) {
                switch (this._mode) {
                    case "days":
                        if (!this._isInDateRange(date, "M")) {
                            return false;
                        }
                        break;
                    case "months":
                        if (!this._isInDateRange(date, "y")) {
                            return false;
                        }
                        break;
                    case "years":
                        if (!this._isInDateRange(date, "y")) {
                            return false;
                        }
                        break;
                }
                return true;
            },

            _switchMode: function (mode, dontAnimate) {
                /// <summary>
                /// Switches the visible view from "days" to "months" to "years"
                /// </summary>
                /// <param name="mode" type="String">The view mode to switch to</param>
                /// <param name="dontAnimate" type="Boolean">Prevents animation from occuring if the control is animated</param>

                if (this._isAnimating || (this._mode == mode)) {
                    return;
                }

                var moveDown = this._modeOrder[this._mode] < this._modeOrder[mode];
                var oldElement = this._modes[this._mode];
                var newElement = this._modes[mode];
                this._mode = mode;

                if (this._animated && !dontAnimate) {
                    this._isAnimating = true;

                    this.invalidate();

                    if (moveDown) {

                        $common.setLocation(newElement, { x: 0, y: -this._height });
                        $common.setVisible(newElement, true);
                        this._modeChangeMoveTopOrLeftAnimation.set_propertyKey("top");
                        this._modeChangeMoveTopOrLeftAnimation.set_target(newElement);
                        this._modeChangeMoveTopOrLeftAnimation.set_startValue(-this._height);
                        this._modeChangeMoveTopOrLeftAnimation.set_endValue(0);

                        $common.setLocation(oldElement, { x: 0, y: 0 });
                        $common.setVisible(oldElement, true);

                        this._modeChangeMoveBottomOrRightAnimation.set_propertyKey("top");
                        this._modeChangeMoveBottomOrRightAnimation.set_target(oldElement);
                        this._modeChangeMoveBottomOrRightAnimation.set_startValue(0);
                        this._modeChangeMoveBottomOrRightAnimation.set_endValue(this._height);

                    } else {

                        $common.setLocation(oldElement, { x: 0, y: 0 });
                        $common.setVisible(oldElement, true);
                        this._modeChangeMoveTopOrLeftAnimation.set_propertyKey("top");
                        this._modeChangeMoveTopOrLeftAnimation.set_target(oldElement);
                        this._modeChangeMoveTopOrLeftAnimation.set_endValue(-this._height);
                        this._modeChangeMoveTopOrLeftAnimation.set_startValue(0);

                        $common.setLocation(newElement, { x: 0, y: 139 });
                        $common.setVisible(newElement, true);
                        this._modeChangeMoveBottomOrRightAnimation.set_propertyKey("top");
                        this._modeChangeMoveBottomOrRightAnimation.set_target(newElement);
                        this._modeChangeMoveBottomOrRightAnimation.set_endValue(0);
                        this._modeChangeMoveBottomOrRightAnimation.set_startValue(this._height);
                    }
                    var endHandler = Function.createDelegate(this, function () {
                        this._isAnimating = false;
                        this._modeChangeAnimation.remove_ended(endHandler);
                    });
                    this._modeChangeAnimation.add_ended(endHandler);
                    this._modeChangeAnimation.play();
                } else {
                    this._mode = mode;
                    $common.setVisible(oldElement, false);
                    this.invalidate();
                    $common.setVisible(newElement, true);
                    $common.setLocation(newElement, { x: 0, y: 0 });
                }
            },
            _isSelected: function (date, part) {
                /// <summary>
                /// Gets whether the supplied date is the currently selected date
                /// </summary>
                /// <param name="date" type="Date">The date to match</param>
                /// <param name="part" type="String">The most significant part of the date to test</param>
                /// <returns type="Boolean" />

                var value = this.get_selectedDate();
                if (!value) return false;
                switch (part) {
                    case 'd':
                        if (date.getUTCDate() != value.getUTCDate()) return false;
                    case 'M':
                        if (date.getUTCMonth() != value.getUTCMonth()) return false;
                    case 'y':
                        if (date.getUTCFullYear() != value.getUTCFullYear()) return false;
                        break;
                }
                return true;
            },




            _isOther: function (date, part) {
                /// <summary>
                /// Gets whether the supplied date is in a different view from the current visible month
                /// </summary>
                /// <param name="date" type="Date">The date to match</param>
                /// <param name="part" type="String">The most significant part of the date to test</param>
                /// <returns type="Boolean" />

                var value = this._getEffectiveVisibleDate();
                switch (part) {
                    case 'd':
                        return (date.getUTCFullYear() != value.getUTCFullYear() || date.getUTCMonth() != value.getUTCMonth());
                    case 'M':
                        return false;
                    case 'y':
                        var minYear = (Math.floor(value.getUTCFullYear() / 10) * 10);
                        return date.getUTCFullYear() < minYear || (minYear + 10) <= date.getUTCFullYear();
                }
                return false;
            },

            _isTodaysDate: function (date) {
                return this._getDateOnly(this._convertToUTC(this.get_todaysDate())).valueOf() === this._getDateOnly(date).valueOf();
            },

            _getCssClass: function (date, part) {
                /// <summary>
                /// Gets the cssClass to apply to a cell based on a supplied date
                /// </summary>
                /// <param name="date" type="Date">The date to match</param>
                /// <param name="part" type="String">The most significant part of the date to test</param>
                /// <returns type="String" />

                if (this._isSelected(date, part)) {
                    return "ajax__calendar_active";
                } else if (this._isOther(date, part)) {
                    return "ajax__calendar_other";
                } else if (this._isTodaysDate(date)) {
                    return "ajax__calendar_today";
                } else {
                    return "";
                }
            },
            _getEffectiveVisibleDate: function () {
                var value = this.get_visibleDate();
                if (value == null)
                    value = this.get_selectedDate();
                if (value == null)
                    value = this.get_todaysDate();

                value = new Date(value);
                value.setUTCDate(1);

                return this._getDateOnly(value);
            },


            _getFirstDayOfWeek: function () {
                /// <summary>
                /// Gets the first day of the week
                /// </summary>

                if (this.get_firstDayOfWeek() != Sys.Extended.UI.FirstDayOfWeek.Default) {
                    return this.get_firstDayOfWeek();
                }
                return Sys.CultureInfo.CurrentCulture.dateTimeFormat.FirstDayOfWeek;
            },
            _parseTextValue: function (text) {
                /// <summary>
                /// Converts a text value from the textbox into a date
                /// </summary>
                /// <param name="text" type="String" mayBeNull="true">The text value to parse</param>
                /// <returns type="Date" />

                var value = null;
                if (text) {
                    value = this._convertToUTC(Date.parseLocale(text, this.get_format()));
                }
                if (isNaN(value)) {
                    value = null;
                }
                return value;
            },

            _element_onfocus: function (e) {
                /// <summary> 
                /// Handles the focus event of the element
                /// </summary>
                /// <param name="e" type="Sys.UI.DomEvent">The arguments for the event</param>
                if (!this._enabled) return;
                if (!this._button) {
                    this.show();
                    this._popupMouseDown = false;
                }
            },
            _element_onblur: function (e) {
                /// <summary> 
                /// Handles the blur event of the element
                /// </summary>
                /// <param name="e" type="Sys.UI.DomEvent">The arguments for the event</param>        
                if (!this._enabled) return;
                if (!this._button) {
                    this.blur();
                }
            },
            _element_onchange: function (e) {
                /// <summary> 
                /// Handles the change event of the element
                /// </summary>
                /// <param name="e" type="Sys.UI.DomEvent">The arguments for the event</param>
                if (!this._selectedDateChanging) {
                    var value = this._parseTextValue(this._textbox.get_Value());
                    this._selectedDate = value;
                    if (this._isOpen) {
                        this._switchMonth(this._selectedDate, this._selectedDate == null);
                    }
                }
            },
            _element_onkeypress: function (e) {
                /// <summary>
                /// Handles the keypress event of the element
                /// </summary>
                /// <param name="e" type="Sys.UI.DomEvent">The arguments for the event</param>
                if (!this._enabled) return;
                if (!this._button && e.charCode == Sys.UI.Key.esc) {
                    e.stopPropagation();
                    e.preventDefault();
                    this.hide();
                }
            },
            _element_onclick: function (e) {
                /// <summary>
                /// Handles the click event of the element
                /// </summary>
                /// <param name="e" type="Sys.UI.DomEvent">The arguments for the event</param>
                if (!this._enabled) return;
                if (!this._button) {
                    this.show();
                    this._popupMouseDown = false;
                }
            },

            _popup_onevent: function (e) {
                /// <summary> 
                /// Handles the drag-start event of the popup calendar
                /// </summary>
                /// <param name="e" type="Sys.UI.DomEvent">The arguments for the event</param>
                e.stopPropagation();
                e.preventDefault();
            },
            _popup_onmousedown: function (e) {
                /// <summary> 
                /// Handles the mousedown event of the popup
                /// </summary>
                /// <param name="e" type="Sys.UI.DomEvent">The arguments for the event</param>

                this._popupMouseDown = true;
            },
            _popup_onmouseup: function (e) {
                /// <summary> 
                /// Handles the mouseup event of the popup
                /// </summary>
                /// <param name="e" type="Sys.UI.DomEvent">The arguments for the event</param>

                if (Sys.Browser.agent === Sys.Browser.Opera && this._blur.get_isPending()) {
                    this._blur.cancel();
                }
                this._popupMouseDown = false;
                this.focus();
            },

            _cell_onmouseover: function (e) {
                /// <summary> 
                /// Handles the mouseover event of a cell
                /// </summary>
                /// <param name="e" type="Sys.UI.DomEvent">The arguments for the event</param>

                e.stopPropagation();

                if (Sys.Browser.agent === Sys.Browser.Safari) {
                    for (var i = 0; i < this._daysBody.rows.length; i++) {
                        var row = this._daysBody.rows[i];
                        for (var j = 0; j < row.cells.length; j++) {
                            Sys.UI.DomElement.removeCssClass(row.cells[j].firstChild.parentNode, "ajax__calendar_hover");
                        }
                    }
                }

                var target = e.target;

                Sys.UI.DomElement.addCssClass(target.parentNode, "ajax__calendar_hover");
            },
            _cell_onmouseout: function (e) {
                /// <summary> 
                /// Handles the mouseout event of a cell
                /// </summary>
                /// <param name="e" type="Sys.UI.DomEvent">The arguments for the event</param>

                e.stopPropagation();

                var target = e.target;

                Sys.UI.DomElement.removeCssClass(target.parentNode, "ajax__calendar_hover");
            },
            _cell_onclick: function (e) {
                /// <summary> 
                /// Handles the click event of a cell
                /// </summary>
                /// <param name="e" type="Sys.UI.DomEvent">The arguments for the event</param>

                e.stopPropagation();
                e.preventDefault();

                if (!this._enabled) return;

                var target = e.target;
                if (target.parentNode.className.indexOf("ajax__calendar_invalid") != -1) {
                    return;
                }
                var visibleDate = this._getEffectiveVisibleDate();
                Sys.UI.DomElement.removeCssClass(target.parentNode, "ajax__calendar_hover");
                switch (target.mode) {
                    case "prev":
                    case "next":
                        this._switchMonth(target.date);
                        break;
                    case "title":
                        switch (this._mode) {
                            case "days": this._switchMode("months"); break;
                            case "months": this._switchMode("years"); break;
                        }
                        break;
                    case "month":
                        if (target.month == visibleDate.getMonth()) {
                            this._switchMode("days");
                        } else {
                            this._visibleDate = target.date;
                            this._switchMode("days");
                        }
                        break;
                    case "year":
                        if (target.date.getFullYear() == visibleDate.getFullYear()) {
                            this._switchMode("months");
                        } else {
                            this._visibleDate = target.date;
                            this._switchMode("months");
                        }
                        break;
                    case "day":
                        this.set_selectedDate(target.date);
                        this._switchMonth(target.date);
                        this._blur.post(true);
                        this.raiseDateSelectionChanged();
                        break;
                    case "today":
                        this.set_selectedDate(target.date);
                        this._switchMonth(target.date);
                        this._blur.post(true);
                        this.raiseDateSelectionChanged();
                        break;
                }
            },

            _button_onclick: function (e) {
                /// <summary> 
                /// Handles the click event of the asociated button
                /// </summary>
                /// <param name="e" type="Sys.UI.DomEvent">The arguments for the event</param>

                e.preventDefault();
                e.stopPropagation();

                if (!this._enabled) return;
                if (e.clientX == 0) return;

                if (!this._isOpen) {
                    this.show();
                } else {
                    this.hide();
                }
                this.focus();
                this._popupMouseDown = false;
                if (this._visibleDate != this._selectedDate) {
                    this._visibleDate = this._selectedDate
                    this.invalidate();
                }
            },
            _button_onblur: function (e) {
                /// <summary> 
                /// Handles the blur event of the button
                /// </summary>
                /// <param name="e" type="Sys.UI.DomEvent">The arguments for the event</param>
                if (!this._enabled) return;
                if (!this._popupMouseDown) {
                    this.hide();
                }
                this._popupMouseDown = false;
            },
            _button_onkeypress: function (e) {
                /// <summary>
                /// Handles the keypress event of the element
                /// </summary>
                /// <param name="e" type="Sys.UI.DomEvent">The arguments for the event</param>
                if (!this._enabled) return;
                if (e.charCode == Sys.UI.Key.esc) {
                    e.stopPropagation();
                    e.preventDefault();
                    this.hide();
                }
                this._popupMouseDown = false;
            }
        }
        Sys.Extended.UI.CalendarBehavior.registerClass("Sys.Extended.UI.CalendarBehavior", Sys.Extended.UI.BehaviorBase);
        Sys.registerComponent(Sys.Extended.UI.CalendarBehavior, { name: "calendar" });

        Sys.Extended.UI.CalendarPosition = function () {
            /// <summary>
            /// Position of the popup relative to the target control
            /// </summary>
            /// <field name="BottomLeft" type="Number" integer="true" />
            /// <field name="BottomRight" type="Number" integer="true" />
            /// <field name="TopLeft" type="Number" integer="true" />
            /// <field name="TopRight" type="Number" integer="true" />
            /// <field name="Right" type="Number" integer="true" />
            /// <field name="Left" type="Number" integer="true" />
            throw Error.invalidOperation();
        }
        Sys.Extended.UI.CalendarPosition.prototype = {
            BottomLeft: 0,
            BottomRight: 1,
            TopLeft: 2,
            TopRight: 3,
            Right: 4,
            Left: 5
        }
        Sys.Extended.UI.CalendarPosition.registerEnum('Sys.Extended.UI.CalendarPosition');

        Sys.Extended.UI.CalendarDefaultView = function () {
            /// <summary>
            /// Choices for default view of the calendar when it first pops up.
            /// </summary>
            /// <field name="Days" type="Number" integer="true" />
            /// <field name="Months" type="Number" integer="true" />
            /// <field name="Years" type="Number" integer="true" />
            throw Error.invalidOperation();
        }
        Sys.Extended.UI.CalendarDefaultView.prototype = {
            Days: 0,
            Months: 1,
            Years: 2
        }
        Sys.Extended.UI.CalendarDefaultView.registerEnum('Sys.Extended.UI.CalendarDefaultView');

    } // execute

    if (window.Sys && Sys.loader) {
        Sys.loader.registerScript(scriptName, ["Globalization", "ExtendedBase", "ExtendedDateTime", "ExtendedThreading", "ExtendedAnimationBehavior", "ExtendedPopup"], execute);
    }
    else {
        execute();
    }

})();
DType.registerNamespace("Sys.Extended.UI");

Sys.Extended.UI.AsyncFileUpload = function (element) {
    Sys.Extended.UI.AsyncFileUpload.initializeBase(this, [element]);

    this._hiddenField = null;
    this._inputFile = null;
    this._innerTB = null;
    this._postBackUrl = "";
    this._formName = "";
    this._iframe = null;
    this._waitTimer = null;
    this._completeBackColor = "";
    this._uploadingBackColor = "";
    this._errorBackColor = "";
    this._throbber = null;

    this._onchange$delegate = null;
    this._onload$delegate = null;
    this._app_onload$delegate = Function.createDelegate(this, this._app_onload);
    this._onmouseup$delegate = null;
}

Sys.Extended.UI.AsyncFileUpload.prototype = {

    get_throbber: function () {
        return this._throbber;
    },
    set_throbber: function (value) {
        this._throbber = value;
    },

    get_completeBackColor: function () {
        return this._completeBackColor;
    },
    set_completeBackColor: function (value) {
        this._completeBackColor = value;
    },

    get_errorBackColor: function () {
        return this._errorBackColor;
    },
    set_errorBackColor: function (value) {
        this._errorBackColor = value;
    },

    get_uploadingBackColor: function () {
        return this._uploadingBackColor;
    },
    set_uploadingBackColor: function (value) {
        this._uploadingBackColor = value;
    },

    get_inputFile: function () {
        return this._inputFile;
    },
    set_inputFile: function (value) {
        this._inputFile = value;
    },

    get_hiddenField: function () {
        return this._hiddenField;
    },
    set_hiddenField: function (value) {
        this._hiddenField = value;
    },

    get_innerTB: function () {
        return this._innerTB;
    },
    set_innerTB: function (value) {
        this._innerTB = value;
    },

    get_postBackUrl: function () {
        return this._postBackUrl;
    },
    set_postBackUrl: function (value) {
        this._postBackUrl = value;
    },

    get_formName: function () {
        return this._formName;
    },
    set_formName: function (value) {
        this._formName = value;
    },

    add_uploadStarted: function (handler) {
        this.get_events().addHandler("uploadStarted", handler);
    },
    remove_uploadStarted: function (handler) {
        this.get_events().removeHandler("uploadStarted", handler);
    },
    raiseUploadStarted: function (e) {
        var eh = this.get_events().getHandler("uploadStarted");
        if (eh) {
            return eh(this, e);
        }
        return true;
    },

    add_uploadComplete: function (handler) {
        this.get_events().addHandler("uploadComplete", handler);
    },
    remove_uploadComplete: function (handler) {
        this.get_events().removeHandler("uploadComplete", handler);
    },
    raiseUploadComplete: function (e) {
        var eh = this.get_events().getHandler("uploadComplete");
        if (eh) {
            eh(this, e);
        }
    },

    add_uploadError: function (handler) {
        this.get_events().addHandler("uploadError", handler);
    },
    remove_uploadError: function (handler) {
        this.get_events().removeHandler("uploadError", handler);
    },
    raiseUploadError: function (e) {
        var eh = this.get_events().getHandler("uploadError");
        if (eh) {
            eh(this, e);
            return true;
        }
        return false;
    },

    setThrobber: function (value) {
        if (this.get_throbber() != null) {
            this.get_throbber().style.display = value ? "" : "none";
        }
    },

    _onStart: function (fileName) {
        var valid = this.raiseUploadStarted(new Sys.Extended.UI.AsyncFileUploadEventArgs(fileName, null, null, null));
        if (typeof valid == 'undefined') {
            valid = true;
        }

        return valid;
    },

    initialize: function () {
        Sys.Extended.UI.AsyncFileUpload.callBaseMethod(this, "initialize");
        Sys.Application.add_load(this._app_onload$delegate);
        this._iframeName = this.get_element() + "_iframe";
        this.setThrobber(false);
    },

    dispose: function () {
        Sys.Application.remove_load(this._app_onload$delegate);
        if (this._onchange$delegate != null) {
            $common.removeHandlers(this._inputFile, {
                change: this._onchange$delegate
            });
            this._onchange$delegate = null;
        }
        if (this._onmouseup$delegate != null) {
            $common.removeHandlers(this._inputFile, {
                mouseup: this._onmouseup$delegate
            });
            this._onmouseup$delegate = null;
        }
        this._removeIframe();
        Sys.Extended.UI.AsyncFileUpload.callBaseMethod(this, "dispose");
    },

    _onmouseup: function () {
        var inputFile = this._inputFile;
        setTimeout(function () { inputFile.blur(); }, 0);
        return true;
    },

    _app_onload: function (sender, e) {
        this.setThrobber(false);
        if (this._inputFile != null) {
            if (this._onchange$delegate == null) {
                this._onchange$delegate = Function.createDelegate(this, this._onchange);
                $addHandlers(this._inputFile, {
                    change: this._onchange$delegate
                });
            }
            if (Sys.Browser.agent == Sys.Browser.Firefox) {
                this._inputFile.size = 20;
                var width = this._inputFile.offsetWidth;
                this._inputFile.style.width = "";
                while (this._inputFile.offsetWidth < width) {
                    this._inputFile.size++;
                }
            }
            if (this._innerTB != null) {
                this._inputFile.blur();
                var inputFile = this._inputFile;
                setTimeout(function () { inputFile.blur(); }, 0);
                this._innerTB.style.width = (this._inputFile.offsetWidth - 107) + "px";
                this._inputFile.parentNode.style.width = this._inputFile.offsetWidth + "px";
                if (Sys.Browser.agent == Sys.Browser.InternetExplorer) {
                    this._onmouseup$delegate = Function.createDelegate(this, this._onmouseup);
                    $addHandlers(this._inputFile, {
                        mouseup: this._onmouseup$delegate
                    });
                }
            }
        }
    },

    _removeIframe: function () {
        this._removeTimer();
        if (this._iframe != null) {
            if (this._onload$delegate != null) {
                $common.removeHandlers(this._iframe, {
                    load: this._onload$delegate
                });
                this._onload$delegate = null;
            }
            document.body.removeChild(this._iframe);
            this._iframe = null;
        }
    },

    _removeTimer: function () {
        if (this._waitTimer != null) {
            window.clearTimeout(this._waitTimer);
            this._waitTimer = null;
        }
    },

    _onError: function (error) {
        var unhandledException = Sys.Extended.UI.Resources.AsyncFileUpload_UnhandledException;
        this.setThrobber(false);

        if (this.get_errorBackColor() != "") {
            if (this._innerTB != null) {
                this._innerTB.style.backgroundColor = this.get_errorBackColor();
            } else {
                this._inputFile.style.backgroundColor = this.get_errorBackColor();
            }
        }
        if (!this.raiseUploadError(new Sys.Extended.UI.AsyncFileUploadEventArgs(this._inputFile.value, null, null, error))) {
            alert(unhandledException + ": " + error);
        }
    },

    _onchange: function (e) {
        var value = this._inputFile.value;
        if (value == "") {
            return;
        }
        if (this._innerTB != null) {
            this._innerTB.value = value;
        }
        if (this._hiddenField != null) {
            this._hiddenField.value = value;
        }

        try {
            if (this._iframe == null) {
                this._onload$delegate = Function.createDelegate(this, this._onload);
                var iframe = document.createElement("IFRAME");
                iframe.width = "0";
                iframe.height = "0";
                iframe.style.display = "none";
                iframe.src = "about:blank";
                iframe.id = this._iframeName;
                iframe.name = this._iframeName;
                $addHandlers(iframe, {
                    load: this._onload$delegate
                });
                this._iframe = iframe;
                document.body.appendChild(this._iframe);
                iframe.contentWindow.name = this._iframeName;
            } else {
                this._removeIframe();
                var internalErrorMessage = Sys.Extended.UI.Resources.AsyncFileUpload_InternalErrorMessage;
                this._onError(internalErrorMessage);
            }
        } catch (ex) {
            this._onError(ex.message);
        }
    },

    _stopLoad: function (result) {
        var mainForm = document.getElementById(this._formName);
        this._removeTimer();
        this.setThrobber(false);
        mainForm.target = "_top";
        mainForm.action = this._postBackUrl;
        var length;
        var contentType = "";
        var temp = result.split("------");
        if (temp.length > 0) {
            if (temp[0] == "error") {
                this._onError(temp[1]);
                return;
            }
            length = parseInt(temp[0]);
        }
        if (temp.length > 1) {
            contentType = temp[1];
        }
        if (this.get_completeBackColor() != "") {
            if (this._innerTB != null) {
                this._innerTB.style.backgroundColor = this.get_completeBackColor();
            } else {
                this._inputFile.style.backgroundColor = this.get_completeBackColor();
            }
        }
        this.raiseUploadComplete(new Sys.Extended.UI.AsyncFileUploadEventArgs(this._inputFile.value, length, contentType, null));
    },

    _onload: function (e) {
        var cleanup = true;
        var uploader = this;
        var mainForm = document.getElementById(this._formName);
        try {
            var frameDocument = this._iframe.contentWindow.document;
            if (frameDocument == null || frameDocument.location == null) {
                var e = { "message": Sys.Extended.UI.Resources.AsyncFileUpload_UploadingProblem };
                throw (e);
            } else if (frameDocument.location.href == 'about:blank') {
                this._removeTimer();
                if (this.get_uploadingBackColor() != "") {
                    if (this._innerTB != null) {
                        this._innerTB.style.backgroundColor = this.get_uploadingBackColor();
                    } else {
                        this._inputFile.style.backgroundColor = this.get_uploadingBackColor();
                    }
                }

                var valid = this._onStart(this._inputFile.value);
                if (valid) {
                    var url = this._postBackUrl;
                    url += url.indexOf("?") === -1 ? "?" : "&";
                    mainForm.action = url + 'AsyncFileUploadID=' + this.get_element().id + '&rnd=' + Math.random().toString().replace(/\./g, "");
                    mainForm.target = this._iframeName;
                    cleanup = false;
                    this.setThrobber(true);
                    setTimeout(function () {
                        mainForm.submit();
                        uploader._waitTimer = setTimeout(function () { uploader._wait() }, 100);
                    }, 0);
                    return true;
                }
            } else {
                if (frameDocument.body.innerHTML == "") {
                    return true;
                }
                var result = frameDocument.getElementById(this.get_element().id);
                var length;
                var contentType = "";
                if (result != null) {
                    var temp = result.innerHTML.split("------");
                    if (temp.length > 0) {
                        if (temp[0] == "error") {
                            var e = { "message": temp[1] };
                            throw (e);
                        }
                        length = parseInt(temp[0]);
                    }
                    if (temp.length > 1) {
                        contentType = temp[1];
                    }
                } else {
                    var serverError = Sys.Extended.UI.Resources.AsyncFileUpload_UnknownServerError;
                    function replace_func(p0, p1) {
                        serverError = p1;
                        return "";
                    }
                    frameDocument.body.innerHTML.replace(/Exception\]:([^\n\r]+)[\n\r]/, replace_func);
                    var exMessage = Sys.Extended.UI.Resources.AsyncFileUpload_ServerResponseError + ": '" + serverError + "'";
                    var ret = confirm(exMessage + "\n\n" + Sys.Extended.UI.Resources.AsyncFileUpload_ConfirmToSeeErrorPage);
                    if (ret) {
                        var handle = window.open("", "NotFoundInAnswer", "toolbar=0,status=1,scrollbars=1,resizable=1,width=600,height=400");
                        function onOpen() {
                            try {
                                if (!handle.document)
                                    setTimeout(onOpen, 100);
                            }
                            catch (e) { return; }
                            var _doc = handle.document;
                            _doc.open();
                            _doc.write("<body>" + frameDocument.body.innerHTML + "</body>");
                            _doc.close();
                        }
                        setTimeout(onOpen, 0);
                    }
                    var e = { "message": exMessage };
                    throw (e);
                }

                this._removeTimer();
                mainForm.target = "_top";
                mainForm.action = this._postBackUrl;
                if (this.get_completeBackColor() != "") {
                    if (this._innerTB != null) {
                        this._innerTB.style.backgroundColor = this.get_completeBackColor();
                    } else {
                        this._inputFile.style.backgroundColor = this.get_completeBackColor();
                    }
                }
                this.setThrobber(false);
                this.raiseUploadComplete(new Sys.Extended.UI.AsyncFileUploadEventArgs(this._inputFile.value, length, contentType, null));
            }
        }
        catch (ex) {
            this._removeTimer();
            mainForm.target = "_top";
            mainForm.action = this._postBackUrl;
            this._onError(ex.message);
        }
        finally {
            if (cleanup) {
                setTimeout(function () { uploader._removeIframe(); }, 100);
            }
        }
    },

    _wait: function () {
        if (this._waitTimer == null) {
            return;
        }
        var uploader = this;
        try {
            var frameDocument = this._iframe.contentWindow.document;
            var location = frameDocument.location;
            var href = location.href;
            this._waitTimer = setTimeout(function () { uploader._wait() }, 100);
        } catch (ex) {
            setTimeout(function () { uploader._removeIframe(); }, 100);
            setTimeout(function () { uploader._onError(Sys.Extended.UI.Resources.AsyncFileUpload_UploadingProblem); }, 0);
            this._waitTimer = null;
        }
    }
}

Sys.Extended.UI.AsyncFileUpload.registerClass("Sys.Extended.UI.AsyncFileUpload", Sys.Extended.UI.ControlBase);

Sys.Extended.UI.AsyncFileUploadEventArgs = function (fileName, length, contentType, errorMessage) {
    if (arguments.length != 4) throw Error.parameterCount();

    Sys.Extended.UI.AsyncFileUploadEventArgs.initializeBase(this);
    this._fileName = fileName;
    this._length = length;
    this._contentType = contentType;
    this._errorMessage = errorMessage;
}

Sys.Extended.UI.AsyncFileUploadEventArgs.prototype =
{
    get_fileName: function () {
        var slashPos = this._fileName.lastIndexOf("/");
        var backSlashPos = this._fileName.lastIndexOf("\\");

        var fileName = this._fileName.substr(((slashPos > backSlashPos) ? slashPos : backSlashPos) + 1);
        return fileName;
    },
    get_path: function () {
        return this._fileName;
    },
    get_length: function () {
        return this._length;
    },
    get_contentType: function () {
        return this._contentType;
    },
    get_errorMessage: function () {
        return this._errorMessage;
    }
}

Sys.Extended.UI.AsyncFileUploadEventArgs.registerClass('Sys.Extended.UI.AsyncFileUploadEventArgs', Sys.EventArgs);
�// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedAnimationBehavior";function a(){var c="mouseout",b="mouseover",a=null;Type.registerNamespace("Sys.Extended.UI.Animation");Sys.Extended.UI.Animation.AnimationBehavior=function(c){var b=this;Sys.Extended.UI.Animation.AnimationBehavior.initializeBase(b,[c]);b._onLoad=a;b._onClick=a;b._onMouseOver=a;b._onMouseOut=a;b._onHoverOver=a;b._onHoverOut=a;b._onClickHandler=a;b._onMouseOverHandler=a;b._onMouseOutHandler=a};Sys.Extended.UI.Animation.AnimationBehavior.prototype={initialize:function(){var a=this;Sys.Extended.UI.Animation.AnimationBehavior.callBaseMethod(a,"initialize");var d=a.get_element();if(d){a._onClickHandler=Function.createDelegate(a,a.OnClick);$addHandler(d,"click",a._onClickHandler);a._onMouseOverHandler=Function.createDelegate(a,a.OnMouseOver);$addHandler(d,b,a._onMouseOverHandler);a._onMouseOutHandler=Function.createDelegate(a,a.OnMouseOut);$addHandler(d,c,a._onMouseOutHandler)}},dispose:function(){var d=this,e=d.get_element();if(e){if(d._onClickHandler){$removeHandler(e,"click",d._onClickHandler);d._onClickHandler=a}if(d._onMouseOverHandler){$removeHandler(e,b,d._onMouseOverHandler);d._onMouseOverHandler=a}if(d._onMouseOutHandler){$removeHandler(e,c,d._onMouseOutHandler);d._onMouseOutHandler=a}}d._onLoad=a;d._onClick=a;d._onMouseOver=a;d._onMouseOut=a;d._onHoverOver=a;d._onHoverOut=a;Sys.Extended.UI.Animation.AnimationBehavior.callBaseMethod(d,"dispose")},get_OnLoad:function(){return this._onLoad?this._onLoad.get_json():a},set_OnLoad:function(b){var a=this;if(!a._onLoad){a._onLoad=new Sys.Extended.UI.Animation.GenericAnimationBehavior(a.get_element());a._onLoad.initialize()}a._onLoad.set_json(b);a.raisePropertyChanged("OnLoad");a._onLoad.play()},get_OnLoadBehavior:function(){return this._onLoad},get_OnClick:function(){return this._onClick?this._onClick.get_json():a},set_OnClick:function(b){var a=this;if(!a._onClick){a._onClick=new Sys.Extended.UI.Animation.GenericAnimationBehavior(a.get_element());a._onClick.initialize()}a._onClick.set_json(b);a.raisePropertyChanged("OnClick")},get_OnClickBehavior:function(){return this._onClick},OnClick:function(){this._onClick&&this._onClick.play()},get_OnMouseOver:function(){return this._onMouseOver?this._onMouseOver.get_json():a},set_OnMouseOver:function(b){var a=this;if(!a._onMouseOver){a._onMouseOver=new Sys.Extended.UI.Animation.GenericAnimationBehavior(a.get_element());a._onMouseOver.initialize()}a._onMouseOver.set_json(b);a.raisePropertyChanged("OnMouseOver")},get_OnMouseOverBehavior:function(){return this._onMouseOver},OnMouseOver:function(){var a=this;if(a._mouseHasEntered)return;a._onMouseOver&&a._onMouseOver.play();if(a._onHoverOver){a._onHoverOut&&a._onHoverOut.quit();a._onHoverOver.play()}a._mouseHasEntered=true},get_OnMouseOut:function(){return this._onMouseOut?this._onMouseOut.get_json():a},set_OnMouseOut:function(b){var a=this;if(!a._onMouseOut){a._onMouseOut=new Sys.Extended.UI.Animation.GenericAnimationBehavior(a.get_element());a._onMouseOut.initialize()}a._onMouseOut.set_json(b);a.raisePropertyChanged("OnMouseOut")},get_OnMouseOutBehavior:function(){return this._onMouseOut},OnMouseOut:function(e){var a=this,d=e.rawEvent,b=a.get_element(),f=e.target;if(f.nodeName!==b.nodeName)return;var c=d.relatedTarget||d.toElement;if(b!=c&&!a._isChild(b,c)){a._mouseHasEntered=false;a._onMouseOut&&a._onMouseOut.play();if(a._onHoverOut){a._onHoverOver&&a._onHoverOver.quit();a._onHoverOut.play()}}},_isChild:function(b,a){var c=document.body;while(a&&b!=a&&c!=a)try{a=a.parentNode}catch(d){return false}return b==a},get_OnHoverOver:function(){return this._onHoverOver?this._onHoverOver.get_json():a},set_OnHoverOver:function(b){var a=this;if(!a._onHoverOver){a._onHoverOver=new Sys.Extended.UI.Animation.GenericAnimationBehavior(a.get_element());a._onHoverOver.initialize()}a._onHoverOver.set_json(b);a.raisePropertyChanged("OnHoverOver")},get_OnHoverOverBehavior:function(){return this._onHoverOver},get_OnHoverOut:function(){return this._onHoverOut?this._onHoverOut.get_json():a},set_OnHoverOut:function(b){var a=this;if(!a._onHoverOut){a._onHoverOut=new Sys.Extended.UI.Animation.GenericAnimationBehavior(a.get_element());a._onHoverOut.initialize()}a._onHoverOut.set_json(b);a.raisePropertyChanged("OnHoverOut")},get_OnHoverOutBehavior:function(){return this._onHoverOut}};Sys.Extended.UI.Animation.AnimationBehavior.registerClass("Sys.Extended.UI.Animation.AnimationBehavior",Sys.Extended.UI.BehaviorBase);Sys.Extended.UI.Animation.GenericAnimationBehavior=function(b){Sys.Extended.UI.Animation.GenericAnimationBehavior.initializeBase(this,[b]);this._json=a;this._animation=a};Sys.Extended.UI.Animation.GenericAnimationBehavior.prototype={dispose:function(){this.disposeAnimation();Sys.Extended.UI.Animation.GenericAnimationBehavior.callBaseMethod(this,"dispose")},disposeAnimation:function(){this._animation&&this._animation.dispose();this._animation=a},play:function(){var a=this;if(a._animation&&!a._animation.get_isPlaying()){a.stop();a._animation.play()}},stop:function(){if(this._animation)this._animation.get_isPlaying()&&this._animation.stop(true)},quit:function(){if(this._animation)this._animation.get_isPlaying()&&this._animation.stop(false)},get_json:function(){return this._json},set_json:function(c){var a=this;if(a._json!=c){a._json=c;a.raisePropertyChanged("json");a.disposeAnimation();var b=a.get_element();if(b){a._animation=Sys.Extended.UI.Animation.buildAnimation(a._json,b);a._animation&&a._animation.initialize();a.raisePropertyChanged("animation")}}},get_animation:function(){return this._animation}};Sys.Extended.UI.Animation.GenericAnimationBehavior.registerClass("Sys.Extended.UI.Animation.GenericAnimationBehavior",Sys.Extended.UI.BehaviorBase)}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedAnimations","ExtendedBase"],a);else a()})();�9// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference name="MicrosoftAjaxTimer.debug.js" />
/// <reference name="MicrosoftAjaxWebForms.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Compat/Timer/Timer.js" />
/// <reference path="../Common/Common.js" />
/// <reference path="../Animation/Animations.js" />

(function() {
var scriptName = "ExtendedAnimationBehavior";

function execute() {

Type.registerNamespace('Sys.Extended.UI.Animation');

Sys.Extended.UI.Animation.AnimationBehavior = function(element) {
    /// <summary>
    /// The AnimationBehavior allows us to associate animations (described by JSON) with events and
    /// have them play when the events are fired.  It relies heavily on the AJAX Control Toolkit
    /// animation framework provided in Animation.js, and the GenericAnimationBehavior defined below.
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// The DOM element the behavior is associated with
    /// </param>
    Sys.Extended.UI.Animation.AnimationBehavior.initializeBase(this, [element]);
    
    this._onLoad = null;
    this._onClick = null;
    this._onMouseOver = null;
    this._onMouseOut = null;
    this._onHoverOver = null;
    this._onHoverOut = null;
    
    this._onClickHandler = null;
    this._onMouseOverHandler = null;
    this._onMouseOutHandler = null;
}
Sys.Extended.UI.Animation.AnimationBehavior.prototype = {
    initialize : function() {
        /// <summary>
        /// Setup the animations/handlers
        /// </summary>
        /// <returns />
        Sys.Extended.UI.Animation.AnimationBehavior.callBaseMethod(this, 'initialize');
        
        var element = this.get_element();
        if (element) {
            this._onClickHandler = Function.createDelegate(this, this.OnClick);
            $addHandler(element, 'click', this._onClickHandler);
            this._onMouseOverHandler = Function.createDelegate(this, this.OnMouseOver);
            $addHandler(element, 'mouseover', this._onMouseOverHandler);
            this._onMouseOutHandler = Function.createDelegate(this, this.OnMouseOut);
            $addHandler(element, 'mouseout', this._onMouseOutHandler);
        }
    },
    
    dispose : function() {
        /// <summary>
        /// Dispose of the animations/handlers
        /// </summary>
        /// <returns />
        
        var element = this.get_element();
        if (element) {
            if (this._onClickHandler) {
                $removeHandler(element, 'click', this._onClickHandler);
                this._onClickHandler = null;
            }
            if (this._onMouseOverHandler) {
                $removeHandler(element, 'mouseover', this._onMouseOverHandler);
                this._onMouseOverHandler = null;
            }
            if (this._onMouseOutHandler) {
                $removeHandler(element, 'mouseout', this._onMouseOutHandler);
                this._onMouseOutHandler = null;
            }
        }
        
        this._onLoad = null;
        this._onClick = null;
        this._onMouseOver = null;
        this._onMouseOut = null;
        this._onHoverOver = null;
        this._onHoverOut = null;
        
        Sys.Extended.UI.Animation.AnimationBehavior.callBaseMethod(this, 'dispose');
    },
    
    
    
    get_OnLoad : function() {
        /// <value type="String" mayBeNull="true">
        /// Generic OnLoad Animation's JSON definition
        /// </value>
        /// <remarks>
        /// Setting the OnLoad property will cause it to be played immediately
        /// </remarks>
        return this._onLoad ? this._onLoad.get_json() : null;
    },
    set_OnLoad : function(value) {
        if (!this._onLoad) {
            this._onLoad = new Sys.Extended.UI.Animation.GenericAnimationBehavior(this.get_element());
            this._onLoad.initialize();
        }
        this._onLoad.set_json(value);
        this.raisePropertyChanged('OnLoad');
        this._onLoad.play();
    },
    
    get_OnLoadBehavior : function() {
        /// <value type="Sys.Extended.UI.Animation.GenericAnimationBehavior">
        /// Generic OnLoad Animation's behavior
        /// </value>
        return this._onLoad;
    },
    
    
    
    get_OnClick : function() {
        /// <value type="String" mayBeNull="true">
        /// Generic OnClick Animation's JSON definition
        /// </value>
        return this._onClick ? this._onClick.get_json() : null;
    },
    set_OnClick : function(value) {
        if (!this._onClick) {
            this._onClick = new Sys.Extended.UI.Animation.GenericAnimationBehavior(this.get_element());
            this._onClick.initialize();
        }
        this._onClick.set_json(value);
        this.raisePropertyChanged('OnClick');
    },
    
    get_OnClickBehavior : function() {
        /// <value type="Sys.Extended.UI.Animation.GenericAnimationBehavior">
        /// Generic OnClick Animation's behavior
        /// </value>
        return this._onClick;
    },
    
    OnClick : function() {
        /// <summary>
        /// Play the OnClick animation
        /// </summary>
        /// <returns />
        if (this._onClick) {
            this._onClick.play();
        }
    },
    
    
    
    get_OnMouseOver : function() {
        /// <value type="String" mayBeNull="true">
        /// Generic OnMouseOver Animation's JSON definition
        /// </value>
        return this._onMouseOver ? this._onMouseOver.get_json() : null;
    },
    set_OnMouseOver : function(value) {
        if (!this._onMouseOver) {
            this._onMouseOver = new Sys.Extended.UI.Animation.GenericAnimationBehavior(this.get_element());
            this._onMouseOver.initialize();
        }
        this._onMouseOver.set_json(value);
        this.raisePropertyChanged('OnMouseOver');
    },
    
    get_OnMouseOverBehavior : function() {
        /// <value type="Sys.Extended.UI.Animation.GenericAnimationBehavior">
        /// Generic OnMouseOver Animation's behavior
        /// </value>
        return this._onMouseOver;
    },
    
    OnMouseOver : function() {
        /// <summary>
        /// Play the OnMouseOver/OnHoverOver animations
        /// </summary>
        /// <returns />
        if (this._mouseHasEntered) {
            return;
        }
        if (this._onMouseOver) {
            this._onMouseOver.play();
        }
        if (this._onHoverOver) {
            if (this._onHoverOut) {
                this._onHoverOut.quit();
            }
            this._onHoverOver.play();
        }
        this._mouseHasEntered = true;
    },
    
    get_OnMouseOut : function() {
        /// <value type="String" mayBeNull="true">
        /// Generic OnMouseOut Animation's JSON definition
        /// </value>
        return this._onMouseOut ? this._onMouseOut.get_json() : null;
    },
    set_OnMouseOut : function(value) {
        if (!this._onMouseOut) {
            this._onMouseOut = new Sys.Extended.UI.Animation.GenericAnimationBehavior(this.get_element());
            this._onMouseOut.initialize();
        }
        this._onMouseOut.set_json(value);
        this.raisePropertyChanged('OnMouseOut');
    },
    
    get_OnMouseOutBehavior : function() {
        /// <value type="Sys.Extended.UI.Animation.GenericAnimationBehavior">
        /// Generic OnMouseOut Animation's behavior
        /// </value>
        return this._onMouseOut;
    },

    OnMouseOut: function(e) {
        /// <summary>
        /// Play the OnMouseOver/OnHoverOver animations
        /// </summary>
        /// <returns />
        var ev = e.rawEvent;
        var pt = this.get_element();
        var tg = e.target;
        if (tg.nodeName !== pt.nodeName) return;

        var rel = ev.relatedTarget || ev.toElement;
        if (pt != rel && !this._isChild(pt, rel)) {
            this._mouseHasEntered = false;
            if (this._onMouseOut) {
                this._onMouseOut.play();
            }
            if (this._onHoverOut) {
                if (this._onHoverOver) {
                    this._onHoverOver.quit();
                }
                this._onHoverOut.play();
            }
        }
    },
    _isChild: function(elmtA, elmtB) {
        var body = document.body;
        while (elmtB && elmtA != elmtB && body != elmtB) {
            try {
                elmtB = elmtB.parentNode;
            } catch (e) {
                return false;
            }
        }
        return elmtA == elmtB;
    },
        
    get_OnHoverOver : function() {
        /// <value type="String" mayBeNull="true">
        /// Generic OnHoverOver Animation's JSON definition
        /// </value>
        return this._onHoverOver ? this._onHoverOver.get_json() : null;
    },
    set_OnHoverOver : function(value) {
        if (!this._onHoverOver) {
            this._onHoverOver = new Sys.Extended.UI.Animation.GenericAnimationBehavior(this.get_element());
            this._onHoverOver.initialize();
        }
        this._onHoverOver.set_json(value);
        this.raisePropertyChanged('OnHoverOver');
    },
    
    get_OnHoverOverBehavior : function() {
        /// <value type="Sys.Extended.UI.Animation.GenericAnimationBehavior">
        /// Generic OnHoverOver Animation's behavior
        /// </value>
        return this._onHoverOver;
    },
    
    
    
    get_OnHoverOut : function() {
        /// <value type="String" mayBeNull="true">
        /// Generic OnHoverOut Animation's JSON definition
        /// </value>
        return this._onHoverOut ? this._onHoverOut.get_json() : null;
    },
    set_OnHoverOut : function(value) {
        if (!this._onHoverOut) {
            this._onHoverOut = new Sys.Extended.UI.Animation.GenericAnimationBehavior(this.get_element());
            this._onHoverOut.initialize();
        }
        this._onHoverOut.set_json(value);
        this.raisePropertyChanged('OnHoverOut');
    },
    
    get_OnHoverOutBehavior : function() {
        /// <value type="Sys.Extended.UI.Animation.GenericAnimationBehavior">
        /// Generic OnHoverOut Animation's behavior
        /// </value>
        return this._onHoverOut;
    }
}
Sys.Extended.UI.Animation.AnimationBehavior.registerClass('Sys.Extended.UI.Animation.AnimationBehavior', Sys.Extended.UI.BehaviorBase);


Sys.Extended.UI.Animation.GenericAnimationBehavior = function(element) {
    /// <summary>
    /// The GenericAnimationBehavior handles the creation, playing, and disposing of animations
    /// created from a JSON description.  As we intend to expose a lot of generic animations
    /// across the Toolkit, this behavior serves to simplify the amount of work required.
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// The DOM element the behavior is associated with
    /// </param>
    Sys.Extended.UI.Animation.GenericAnimationBehavior.initializeBase(this, [element]);
    
    this._json = null;
    
    this._animation = null;
}
Sys.Extended.UI.Animation.GenericAnimationBehavior.prototype = {
    dispose : function() {
        /// <summary>
        /// Dispose the behavior and its animation
        /// </summary>
        /// <returns />
        this.disposeAnimation();
        Sys.Extended.UI.Animation.GenericAnimationBehavior.callBaseMethod(this, 'dispose');
    },
    
    disposeAnimation : function() {
        /// <summary>
        /// Dispose the animation
        /// </summary>
        /// <returns />
        if (this._animation) {
            this._animation.dispose();
        }
        this._animation = null;
    },
    
    play : function() {
        /// <summary>
        /// Play the animation if it isn't already playing.  If it's already playing, this does nothing.
        /// </summary>
        /// <returns />
        if (this._animation && !this._animation.get_isPlaying()) {
            this.stop();
            this._animation.play();
        }
    },
    
    stop : function() {
        /// <summary>
        /// Stop the animation if it's already playing
        /// </summary>
        /// <returns />
        if (this._animation) {
            if (this._animation.get_isPlaying()) {
                this._animation.stop(true);
            }
        }
    },
    
    quit : function() {
        /// <summary>
        /// Quit playing the animation without updating the final state (i.e. if
        /// the animation was moving, this would leave it in the middle of its path).
        /// </summary>
        /// <returns />
        /// <remarks>
        /// This differs from the stop function which will update the final state.  The
        /// quit function is most useful for scenarios where you're toggling back and forth
        /// between two animations (like those used in OnHoverOver/OnHoverOut) and you don't
        /// want to completely finish one animation if its counterpart is triggered.
        /// </remarks>
        if (this._animation) {
            if (this._animation.get_isPlaying()) {
                this._animation.stop(false);
            }
        }
    },
    
    get_json : function() {
        /// <value type="String" mayBeNull="true">
        /// JSON animation description
        /// </value>
        return this._json;
    },
    set_json : function(value) {
        if (this._json != value) {
            this._json = value;
            this.raisePropertyChanged('json');
            
            this.disposeAnimation();
            var element = this.get_element();
            if (element) {
                this._animation = Sys.Extended.UI.Animation.buildAnimation(this._json, element);
                if (this._animation) {
                    this._animation.initialize();
                }
                this.raisePropertyChanged('animation');
            }
        }
    },
    
    get_animation : function() {
        /// <value type="Sys.Extended.UI.Animation.Animation">
        /// Animation created from the JSON description
        /// </value>
        return this._animation;
    }
}
Sys.Extended.UI.Animation.GenericAnimationBehavior.registerClass('Sys.Extended.UI.Animation.GenericAnimationBehavior', Sys.Extended.UI.BehaviorBase);

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedAnimations", "ExtendedBase"], execute);
}
else {
    execute();
}

})();
6   �& h�( @ '1<(1<Y(2=f_diV'1<'1<'1<�,5A�9CU�NT_�aiw~'1<'1<�4:G�GT|�3i��Go��9CU�'1<(1<�;@M�LZ��9x�G��W��9DVy'1<(2=�ADS�O]��9y�G��Y��Jk��??M0'1<)2=�JJZ�Q`��:y�G��Y��Jk��??M*+3>
6:D�VSd�Ub��;z�G��Z���Jj��??M*CCL�VSd�Ue��;z�G��Z���Jm��??M*�n�{jc�wf��sb܈o]��kY܀gU�|cPcCBI�VSd�jp��;{�G��Z���Ns��;;H*�����������������������������������|���u�����ұ���خ�����׭�̬������sd�qn}�;{�G��Z���i~����v�����������������������������������������������ڹ�������������������˝���k\�Sr��Z���h���Ү��������������������������������������������³��ڻ����������ڦ��ա��դ��������˝���se�w���Ү���ǰ��������������������������������������������������������������ޭ����������l�Ġ���ǰ��ǰ���������������������������������������̾���¡����������������������ߵ�������̫���zg��ǰ��ǰ��������������������������������������������ݳ�������������������������߭��ک�����ڮ�o[J�ġ���ǰ��������������������������������������������������������������������������ݬ�����m[���ǰ���������������������������������������ò���������������������������ݪ��ڦ����|i��ǰ��ǰ����������������q_��n\��kX��gT�}cQ�y`M�����Ҷ����������������������߬��������}��ǰ��ǰ������������������������������������������;�����������������������������������̨���ǰ��ǰ��������������������������������������������°��������������������������������ğ���������������������������q_��n\��kX��gT�}cQ�y`M�v\I��o]�����������������������������Ǣ�����۵���ǰ��ǰ��ǰ�����������������������������������������������������̾���������������ٲ�Ʈ������ݶ���ǰ��ǰ��ǰ��ǰ�����������������������������������������������������������ż�°����������Ũ��ֳ���¬��ǰ��ǰ��ǰ��ǰ��ǰ����������������q_��n\��kX��gT�}cQ�y`M�v\I�sXE��������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ������������������������������������������������������������������������ǰ���ǰ��ǰ��ǰ��ǰ��ǰ���ǰ������������������������������������������������������������������������ǰ�ġ����ǰ��ǰ��ǰ��ġ���ǰ������������������������������������������������������������������������ǰ��ǰ�ġ����ǰ��ġ���ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ��ǰ�ġ���ġ���ǰ��ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ�ġ���ǰ��ǰ��ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��������������������������������������������������������������������������������������������������������������������(  %.7/3;�4:G�9y��,3=14>�4:G�9y�W����t�}q\�zo���t���t���w�h^_�4:G�9y�W��{����s��s���u������Ú�«��~lښ�t�~���W��{���}����x\�����֦������������ݖ|n�����|��
��������������~�˶�����������������t���y��������������������������������������ʰ���|n����������������������������������������|n����������ylc���������������������ç���|n����������������������������������Ѧ��|n���|�����������`WO���}�����������ʰ�����ʹ��������������������������������Ǽ���������æ��ֲ���ǰ���������������������������ǰ���ǰ���ǰ������������������������������������ǰ�ġ���ġ���ǰ������������������������������������ǰ��ǰ�ġ���ǰ��ǰ�����������������������������������������������������njcf�b�6   �& h�( @ �����lZ��jX��hV��gT�~dR�|cP�zbO�y`M�w^J�v]I�t[G�sYE�qXD�pVB�oT@�nS?�mR=�kQ=�jO;�iN9�hM8�gL8�fK6�eJ5�dI4�cI3�cH3������������Ǿ��Ļ��¹�ѿ��м��λ��̸��ʶ��ɴ��Dz��ư��ĭ��ì����������������������������������������������cH4����������������������������������������������������������������������ξ�����eI5���������������������������������������������������������������������������fK6��������������������������������������������������������������������������gM8������������������������������������������������������������������������hN:����������������������������������i?.���������������������������������������jO;�����������������������������������ɉo�i?.�����������������������������������kR=������������������������������������������������������������������������������mT?���������������������������������������������������������������������ë��oUA��������������������������������������i?.��������������������������������������Į��qWC����i?.�������������������������������������������ɉo�i?.����������������������������������DZ��sYE����ɉo�i?.�����������������������������������������������������������������������������ɳ��u[H�����������������������������������������i?.��������������������������������������������˶��w^J����i?.����������������������������ɉo�i?.���������������������������������������ͺ��y`M����ɉo�i?.��������i?.������������������������������������������������������ϼ��{bO�����������������ɉo�i?.���������������������������������������������������������~dR��������������������������������������������������������������������������ú��gT���������������������������������������������������������������������������������Ǿ��iW�����������������������������������������������������������������������������������lZ�ёr�ёr�ёr�Ќk�Іa��~U��uI��m=��d1��]'��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y �ёr���������������������������������������������������}���z���w���t���q���o��m��j��h��f��e��e��e��e��Y �ёr���������������������������������������������������~���z���w���t���q���n��m��j��h��f��e��e��e��e��Y �ёr���������������������������������������������������}���z���w���u���q���o��l��j��h��g��e��e��e��e��Y �ёr�ёr�ёr�Ќk�Іa��~U��uI��m=��d1��]'��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ��Y ���������������������������������������������������(  ����cI5�cI5�cI5�cI5�cI5�cI5�cI5�cI5�cI5�cI5�cI5�cI5����������������������Ȼ��ó�ۿ��ۻ��ۻ��ϴ��cI5��������������������������������ϴ��cI5������HE�����������������������HE�����������ϴ��cI5�æ��������������������������æ���������������й��cI5��������������HE�����������������������cI5������HE�����æ������������������������������cI5�æ��������������������������������������������cI5��������������������������������������������cI5�ꪋ�ꪋ�ꪋ�饄��z��n��b��V��}J��v@��r9��r9��b/�ꪋ��¢���������������������������}���w���j��e��e1�ꪋ�ꪋ�ꪋ�ꪋ�ꦆ����v��l��b��X��{F��v>��r9���������� � �����������������dGIF89a� �����������ض�����������������������������������������������!� ,AA(P,����F0aB�@��h� @� p�@(B���;�GIF89a
�			





   !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������,
����L�cĄ���kW.\�hɊj��^�nɋ'ocǎ�8~�7�SZ�^Ńo%˖,]��D��,U����ɳ�E���Juʧѝ��yu��Q���qe��S�y��a�i�q侂V,Yrlؼi�(Ѳ�o�*+8wnA0_�uIU*T�J�
�'O�6i�d�ΝG;�GIF89a
�			





   !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������,
����5K�+W�Z�u땪T�LmR$jX�U�N�ڔ��2y�މ|Gn�*e��|7nY*d�T�$��1�+K�"�re�R�b�\FʗЙ�D�)r��P�p�l	jWϙ�<�*��'\R�.�d�hSe�h�e�L���l/��JR��P�,-*�'0u}��h��;l�ܑ��N�9q�i�( ;1GIF89a�x�䇿��!��,8@�
;GIF89a��������������������������������������������������333���!�,��$�di����lۊ�+��,��<Ԫ�烟�5�#�2\��h�h�H�M�Ӛ��+.3@.�0�Z"hKθ�D��A ���m��!0y{p?g0��|}g�0�>q^o�0
��
�}�0���f�0
���?�0	�����"���'��!;�GIF89a�����������������������������������������������������������������������������������������������������������������������������������������)^��������!�E,��E������������#&'������$),.������(-2������256A����6��.9CCD���DB�27
;�;<��ӂ:=>�@@��B==�
?��A?�0

B�����,`���	=�P�BD�ȗ�BA(<,�+C�*h�t��I!:�ℊO0hp<Q�� '��1c@����d�E�n�ȡ#G7l�(0`���VĨ�T�	����
���#�p�ңV졻x;GIF89a%%������������������!��,%%���P�Ik9$h��QT�!��l�vnCyRG��z{�7ê��=���b�(���9�LàJ��$Ҫ��,�cf��r܂��O3��~P�p
ghp��n��NvG�pou����G�n�=��L�:��\���y�U}t�nxm\�1rY�D�O`��XZ�S_Yz�\WJ{SkA�E�I�8�d@�)��35�%o!#�җ�	;�.ajax__slider_h_rail {position:relative;background:url(<%=WebResource("Slider.Images.slider_h_rail.gif")%>) repeat-x;height:22px;width:150px;}
.ajax__slider_h_handle {position:absolute;height:22px;width:10px;}
.ajax__slider_v_rail {position:relative;background:url(<%=WebResource("Slider.Images.slider_v_rail.gif")%>) repeat-y;width:22px;height:150px;}
.ajax__slider_v_handle {position:absolute;height:10px;width:22px;}
�.ajax__htmleditor_htmlpanel_default
{
	margin: 0px;
	padding: 0px;
	border-width: 0px;
	overflow: auto;
	background-color: #FFFFFF;
	font-family: verdana,sans-serif; font-size: 10pt;
	color: #000000;
}
s@charset "utf-8";
/* CSS Document */

.ajax__balloon_popup .rect {
	background-image:url("sprite.png") !important;
	background-image:url("sprite.gif");
}

/* SMALL SIZE */
.ajax__balloon_popup .rect .small {
	width:200px;
	height:150px;
}

.ajax__balloon_popup .rect .small .bottom_right {
	background-position: 0 0;
}
.ajax__balloon_popup .rect .small .bottom_right .ajax__content {
	padding: 25px 25px 25px 15px;
}
*html .ajax__balloon_popup .rect .small .bottom_right_shadow 
{
    background: none;
}
.ajax__balloon_popup .rect .small .bottom_right_shadow {
	background-position: -950px 0;
}

.ajax__balloon_popup .rect .small .bottom_left {
	background-position: 0 -150px;
}
.ajax__balloon_popup .rect .small .bottom_left .ajax__content {
	padding: 25px 15px 25px 25px;
}
*html .ajax__balloon_popup .rect .small .bottom_left_shadow {
    background: none;
}
.ajax__balloon_popup .rect .small .bottom_left_shadow {
	background-position: -950px -150px;
}


.ajax__balloon_popup .rect .small .top_right {
	background-position: 0 -300px;
}
.ajax__balloon_popup .rect .small .top_right .ajax__content {
	padding: 25px 25px 25px 15px;
}
*html .ajax__balloon_popup .rect .small .top_right_shadow {
    background: none;
}
.ajax__balloon_popup .rect .small .top_right_shadow {
	background-position: -950px -300px;
}

.ajax__balloon_popup .rect .small .top_left {
	background-position: 0 -450px;
}
.ajax__balloon_popup .rect .small .top_left .ajax__content {
	padding: 25px 15px 25px 25px;
}
*html .ajax__balloon_popup .rect .small .top_left_shadow {
    background: none;
}
.ajax__balloon_popup .rect .small .top_left_shadow {
	background-position: -950px -450px;
}
/* END OF - SMALL SIZE */

/* MEDIUM SIZE */
.ajax__balloon_popup .rect .medium {
	width:250px;
	height:200px;
}

.ajax__balloon_popup .rect .medium .bottom_right {
	background-position: -200px 0;
}
.ajax__balloon_popup .rect .medium .bottom_right .ajax__content {
	padding: 30px 25px 25px 15px;
}
*html .ajax__balloon_popup .rect .medium .bottom_right_shadow {
    background: none;
}
.ajax__balloon_popup .rect .medium .bottom_right_shadow {
	background-position: -1150px 0;
}

.ajax__balloon_popup .rect .medium .bottom_left {
	background-position: -200px -200px;
}
.ajax__balloon_popup .rect .medium .bottom_left .ajax__content {
	padding: 30px 15px 35px 35px;
}
*html .ajax__balloon_popup .rect .medium .bottom_left_shadow {
    background: none;
}
.ajax__balloon_popup .rect .medium .bottom_left_shadow {
	background-position: -1150px -200px;
}

.ajax__balloon_popup .rect .medium .top_right {
	background-position: -200px -400px;
}
.ajax__balloon_popup .rect .medium .top_right .ajax__content {
	padding: 30px 30px 35px 15px;
}
*html .ajax__balloon_popup .rect .medium .top_right_shadow {
    background: none;
}
.ajax__balloon_popup .rect .medium .top_right_shadow {
	background-position: -1150px -400px;
}

.ajax__balloon_popup .rect .medium .top_left {
	background-position: -200px -600px;
}
.ajax__balloon_popup .rect .medium .top_left .ajax__content {
	padding: 35px 15px 35px 35px;
}
*html .ajax__balloon_popup .rect .medium .top_left_shadow {
    background: none;
}
.ajax__balloon_popup .rect .medium .top_left_shadow {
	background-position: -1150px -600px;
}
/* END OF - MEDIUM SIZE */

/* LARGE SIZE */
.ajax__balloon_popup .rect .large {
	width:500px;
	height:300px;
}

.ajax__balloon_popup .rect .large .bottom_right {
	background-position: -450px 0;
}
.ajax__balloon_popup .rect .large .bottom_right .ajax__content {
	padding: 40px 30px 30px 15px;
}
*html .ajax__balloon_popup .rect .large .bottom_right_shadow {
    background: none;
}
.ajax__balloon_popup .rect .large .bottom_right_shadow {
	background-position: -1400px 0;
}

.ajax__balloon_popup .rect .large .bottom_left {
	background-position: -450px -300px;
}
.ajax__balloon_popup .rect .large .bottom_left .ajax__content {
	padding: 40px 15px 30px 30px;
}
*html .ajax__balloon_popup .rect .large .bottom_left_shadow {
    background: none;
}
.ajax__balloon_popup .rect .large .bottom_left_shadow {
	background-position: -1400px -300px;
}

.ajax__balloon_popup .rect .large .top_right {
	background-position: -450px -600px;
}
.ajax__balloon_popup .rect .large .top_right .ajax__content {
	padding: 30px 30px 45px 15px;
}
*html .ajax__balloon_popup .rect .large .top_right_shadow {
    background: none;
}
.ajax__balloon_popup .rect .large .top_right_shadow {
	background-position: -1400px -600px;
}

.ajax__balloon_popup .rect .large .top_left {
	background-position: -450px -900px;
}
.ajax__balloon_popup .rect .large .top_left .ajax__content {
	padding: 25px 15px 45px 30px;
}
*html .ajax__balloon_popup .rect .large .top_left_shadow {
    background: none;
}
.ajax__balloon_popup .rect .large .top_left_shadow {
	background-position: -1400px -900px;
}6�PNG


IHDR2�
�YtEXtSoftwareAdobe ImageReadyq�e<�IDATx�ԗ�GaƧ"b���˲IJ���i�StZ�S�t)�J�QJD��a�t�N�e�iE��N];�i��7��ӻ����;�̗��y���}��3C�V�+�����5�BҠ�!����q��h�3�`4B"��$����NT�$(�h[�&?��k�Y"�C7~+����?ᡖ�>χVG&y�D|��}1LB��g�S���}1�5�6�Ux�TeL:2v9TD|�r����{��Я.@3,B�9
.��3���BP�%f�gB��
o+ˤ#9pR��87,S�L�Kp;���<eB�2gBi��t� [+NAևo��SA8"f�h�$B��t;�@q���)]B����Θ4O��Zb&l�'M"��򔟎��BR�]��I��W�F��*��BF�
x��Ym�
O��ZY΄L@y�o�r�H�	���<�Ƒv�V����T��x��d)�~��͙`B��<�T�+nS_�|IEND�B`�G�// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />
/// <reference path="../DynamicPopulate/DynamicPopulateBehavior.js" />

(function () {
    var scriptName = "ExtendedTabs";

    function execute() {


        Type.registerNamespace("Sys.Extended.UI");

        Sys.Extended.UI.TabStripPlacement = function () { }
        Sys.Extended.UI.TabStripPlacement.prototype = {
            Top: 0,
            Bottom: 1,
            TopRight: 2,
            BottomRight: 3
        }
        Sys.Extended.UI.TabStripPlacement.registerEnum("Sys.Extended.UI.TabStripPlacement", true);

        Sys.Extended.UI.UseVerticalStripPlacement = function () { }
        Sys.Extended.UI.OnDemand = function () { }

        Sys.Extended.UI.OnDemandMode = function () { }
        Sys.Extended.UI.OnDemandMode.prototype = {
            None: 0,
            Always: 1,
            Once: 2
        }
        Sys.Extended.UI.OnDemandMode.registerEnum("Sys.Extended.UI.OnDemandMode", true);

        Sys.Extended.UI.TabContainer = function (element) {
            Sys.Extended.UI.TabContainer.initializeBase(this, [element]);
            this._cachedActiveTabIndex = -1;
            this._activeTabIndex = -1;
            this._scrollBars = Sys.Extended.UI.ScrollBars.None;
            this._tabs = null;
            this._header = null;
            this._body = null;
            this._loaded = false;
            this._autoPostBackId = null;
            this._useVerticalStripPlacement = false;
            this._onDemand = false;
            this._pageRequestManager = null;
            this._tabStripPlacement = Sys.Extended.UI.TabStripPlacement.Top;
            this._app_onload$delegate = Function.createDelegate(this, this._app_onload);
        }
        Sys.Extended.UI.TabContainer.prototype = {

            add_activeTabChanged: function (handler) {
                this.get_events().addHandler("activeTabChanged", handler);
            },
            remove_activeTabChanged: function (handler) {
                this.get_events().removeHandler("activeTabChanged", handler);
            },
            raiseActiveTabChanged: function () {
                var eh = this.get_events().getHandler("activeTabChanged");
                if (eh) {
                    eh(this, Sys.EventArgs.Empty);
                }
                if (this._autoPostBackId) {
                    __doPostBack(this._autoPostBackId, "activeTabChanged:" + this.get_activeTabIndex());
                }
            },

            get_activeTabIndex: function () {
                if (this._cachedActiveTabIndex > -1) {
                    return this._cachedActiveTabIndex;
                }
                return this._activeTabIndex;
            },
            set_activeTabIndex: function (valuePassed) {
                var value = valuePassed;
                if (!this.get_isInitialized()) {
                    this._cachedActiveTabIndex = value;
                } else {
                    if (value < -1) {
                        throw Error.argumentOutOfRange("value");
                    }
                    if (value >= this.get_tabs().length) {
                        value = this.get_tabs().length - 1;
                    }
                    if (value != this._activeTabIndex) {
                        if (this._activeTabIndex != -1) {
                            var oldTab = this.get_tabs()[this._activeTabIndex];
                            /*this._body.style.height = this._body.offsetHeight + "px";*/
                            oldTab._set_active(false);
                        }

                        var changed = (this._activeTabIndex != value);

                        this._activeTabIndex = value;

                        if (this._activeTabIndex != -1) {
                            this.get_tabs()[this._activeTabIndex]._set_active(true);
                        }
                        /*this._body.style.height = "auto";*/
                        if (this._loaded && changed) {
                            if (this._onDemand) {
                                var activeTab = this.get_tabs()[this._activeTabIndex];
                                if (activeTab._onDemandMode != Sys.Extended.UI.OnDemandMode.None) {
                                    if ((activeTab._onDemandMode == Sys.Extended.UI.OnDemandMode.Once && activeTab._wasLoaded == false)
                                        || activeTab._onDemandMode == Sys.Extended.UI.OnDemandMode.Always) {
                                        this._pageRequestManager.beginAsyncPostBack([activeTab._updatePanelID], null, null, false, null);
                                        activeTab._wasLoaded = true;
                                    }
                                }
                            }
                            this.raiseActiveTabChanged();
                        }
                        this.raisePropertyChanged("activeTabIndex");
                    }
                }
            },

            get_tabs: function () {
                if (this._tabs == null) {
                    this._tabs = [];
                }
                return this._tabs;
            },

            get_activeTab: function () {
                if (this._activeTabIndex > -1) {
                    return this.get_tabs()[this._activeTabIndex];
                }
                return null;
            },
            set_activeTab: function (value) {
                var i = Array.indexOf(this.get_tabs(), value);
                if (i == -1) {
                    throw Error.argument("value", Sys.Extended.UI.Resources.Tabs_ActiveTabArgumentOutOfRange);
                }
                this.set_activeTabIndex(i);
            },

            get_autoPostBackId: function () {
                return this._autoPostBackId;
            },
            set_autoPostBackId: function (value) {
                this._autoPostBackId = value;
            },
            get_scrollBars: function () {
                return this._scrollBars;
            },
            set_scrollBars: function (value) {
                if (this._scrollBars != value) {
                    this._scrollBars = value;
                    this._invalidate();
                    this.raisePropertyChanged("scrollBars");
                }
            },

            get_tabStripPlacement: function () {
                return this._tabStripPlacement;
            },
            set_tabStripPlacement: function (value) {
                if (this._tabStripPlacement != value) {
                    this._tabStripPlacement = value;
                    this._invalidate();
                    this.raisePropertyChanged("tabStripPlacement");
                }
            },

            get_useVerticalStripPlacement: function () {
                return this._useVerticalStripPlacement;
            },
            set_useVerticalStripPlacement: function (value) {
                if (this._useVerticalStripPlacement != value) {
                    this._useVerticalStripPlacement = value;
                    this._invalidate();
                    this.raisePropertyChanged("useVerticalStripPlacement");
                }
            },

            get_onDemand: function () {
                return this._onDemand;
            },
            set_onDemand: function (value) {
                if (this._onDemand != value) {
                    this._onDemand = value;
                    this._invalidate();
                    this.raisePropertyChanged("onDemand");
                }
            },

            initialize: function () {
                Sys.Extended.UI.TabContainer.callBaseMethod(this, "initialize");

                var elt = this.get_element();
                this._header = $get(this.get_id() + "_header");
                this._body = $get(this.get_id() + "_body");

                $common.addCssClasses(elt, [
                    "ajax__tab_container",
                    "ajax__tab_default"
                ]);

                this._invalidate();
                if (this._onDemand) this._pageRequestManager = Sys.WebForms.PageRequestManager.getInstance();
                Sys.Application.add_load(this._app_onload$delegate);
            },
            dispose: function () {
                $clearHandlers(this.get_element());
                Sys.Application.remove_load(this._app_onload$delegate);
                Sys.Extended.UI.TabContainer.callBaseMethod(this, "dispose");
            },
            getFirstTab: function (includeDisabled) {
                var tabs = this.get_tabs();
                for (var i = 0; i < tabs.length; i++) {
                    if (includeDisabled || tabs[i].get_enabled()) {
                        return tabs[i];
                    }
                }
                return null;
            },
            getLastTab: function (includeDisabled) {
                var tabs = this.get_tabs();
                for (var i = tabs.length - 1; i >= 0; i--) {
                    if (includeDisabled || tabs[i].get_enabled()) {
                        return tabs[i];
                    }
                }
                return null;
            },
            getNextTab: function (includeDisabled) {
                var tabs = this.get_tabs();
                var active = this.get_activeTabIndex();
                for (var i = 1; i < tabs.length; i++) {
                    var tabIndex = (active + i) % tabs.length;
                    var tab = tabs[tabIndex];
                    if (includeDisabled || tab.get_enabled())
                        return tab;
                }
                return null;
            },
            getPreviousTab: function (includeDisabled) {
                var tabs = this.get_tabs();
                var active = this.get_activeTabIndex();
                for (var i = 1; i < tabs.length; i++) {
                    var tabIndex = (tabs.length + (active - i)) % tabs.length;
                    var tab = tabs[tabIndex];
                    if (includeDisabled || tab.get_enabled())
                        return tab;
                }
                return null;
            },
            getNearestTab: function (includeDisabled) {
                var prev = this.getPreviousTab(includeDisabled);
                var next = this.getNextTab(includeDisabled);
                if (prev && prev.get_tabIndex() < this._activeTabIndex) {
                    return prev;
                } else if (next && next.get_tabIndex() > this._activeTabIndex) {
                    return next;
                }
                return null;
            },
            saveClientState: function () {
                var tabs = this.get_tabs();
                var tabState = [];
                for (var i = 0; i < tabs.length; i++) {
                    Array.add(tabState, tabs[i].get_enabled());
                }
                var state = {
                    ActiveTabIndex: this._activeTabIndex,
                    TabState: tabState
                };
                return Sys.Serialization.JavaScriptSerializer.serialize(state);
            },
            _invalidate: function () {
                if (this.get_isInitialized()) {
                    $common.removeCssClasses(this._body, [
                        "ajax__scroll_horiz",
                        "ajax__scroll_vert",
                        "ajax__scroll_both",
                        "ajax__scroll_auto",
                        "ajax__scroll_none"
                    ]);
                    switch (this._scrollBars) {
                        case Sys.Extended.UI.ScrollBars.Horizontal:
                            Sys.UI.DomElement.addCssClass(this._body, "ajax__scroll_horiz");
                            break;
                        case Sys.Extended.UI.ScrollBars.Vertical:
                            Sys.UI.DomElement.addCssClass(this._body, "ajax__scroll_vert");
                            break;
                        case Sys.Extended.UI.ScrollBars.Both:
                            Sys.UI.DomElement.addCssClass(this._body, "ajax__scroll_both");
                            break;
                        case Sys.Extended.UI.ScrollBars.Auto:
                            Sys.UI.DomElement.addCssClass(this._body, "ajax__scroll_auto");
                            break;
                        case Sys.Extended.UI.ScrollBars.None:
                            Sys.UI.DomElement.addCssClass(this._body, "ajax__scroll_none");
                            break;
                    }
                    if (this._useVerticalStripPlacement) {
                        var headBounds = $common.getBounds(this._header);
                        var bodyBounds = $common.getBounds(this._body);
                        var spannerHeight = (bodyBounds.height - headBounds.height - 1) + "px";
                        $get(this.get_id() + "_headerSpannerHeight").style.height = spannerHeight;

                        if (Sys.Browser.agent == Sys.Browser.InternetExplorer && Sys.Browser.version < 7) {
                            if (this._tabStripPlacement == Sys.Extended.UI.TabStripPlacement.Top ||
                                this._tabStripPlacement == Sys.Extended.UI.TabStripPlacement.Bottom) {
                                var newBounds = {
                                    x: headBounds.x + headBounds.width,
                                    y: headBounds.y,
                                    width: bodyBounds.width,
                                    height: bodyBounds.height
                                };
                                $common.setBounds(this._body, newBounds);
                            } else {
                                var newBounds = {
                                    x: bodyBounds.x + bodyBounds.width,
                                    y: headBounds.y,
                                    width: headBounds.width,
                                    height: headBounds.height
                                };
                                $common.setBounds(this._header, newBounds);
                                $common.setBounds(this._body, bodyBounds);
                            }
                        }
                    }
                }
            },
            _app_onload: function (sender, e) {
                if (this._cachedActiveTabIndex != -1) {
                    this.set_activeTabIndex(this._cachedActiveTabIndex);
                    this._cachedActiveTabIndex = -1;

                    var activeTab = this.get_tabs()[this._activeTabIndex];
                    if (activeTab) {
                        activeTab._wasLoaded = true;
                        activeTab._setFocus(activeTab);
                    }
                }
                this._loaded = true;
            }
        }
        Sys.Extended.UI.TabContainer.registerClass("Sys.Extended.UI.TabContainer", Sys.Extended.UI.ControlBase);
        Sys.registerComponent(Sys.Extended.UI.TabContainer, { name: "tabContainer", parameters: [{ name: "activeTabIndex", type: "Number"}] });

        Sys.Extended.UI.TabPanel = function (element) {
            Sys.Extended.UI.TabPanel.initializeBase(this, [element]);
            this._active = false;
            this._tab = null;
            this._headerOuter = null;
            this._headerInner = null;
            this._header = null;
            this._owner = null;
            this._ownerID = null;
            this._enabled = true;
            this._tabIndex = -1;
            this._dynamicContextKey = null;
            this._dynamicServicePath = null;
            this._dynamicServiceMethod = null;
            this._dynamicPopulateBehavior = null;
            this._scrollBars = Sys.Extended.UI.ScrollBars.None;
            this._onDemandMode = Sys.Extended.UI.OnDemandMode.Always;
            this._wasLoaded = false;
            this._updatePanelID = "";
            this._header_onclick$delegate = Function.createDelegate(this, this._header_onclick);
            this._header_onmouseover$delegate = Function.createDelegate(this, this._header_onmouseover);
            this._header_onmouseout$delegate = Function.createDelegate(this, this._header_onmouseout);
            this._header_onmousedown$delegate = Function.createDelegate(this, this._header_onmousedown);
            this._dynamicPopulate_onpopulated$delegate = Function.createDelegate(this, this._dynamicPopulate_onpopulated);
            this._oncancel$delegate = Function.createDelegate(this, this._oncancel);
            this._onkeydown$delegate = Function.createDelegate(this, this._onkeydown);
            this._disabled_onclick$delegate = Function.createDelegate(this, this._disabled_onclick);
        }
        Sys.Extended.UI.TabPanel.prototype = {

            add_click: function (handler) {
                this.get_events().addHandler("click", handler);
            },
            remove_click: function (handler) {
                this.get_events().removeHandler("click", handler);
            },
            raiseClick: function () {
                var eh = this.get_events().getHandler("click");
                if (eh) {
                    eh(this, Sys.EventArgs.Empty);
                }
            },

            add_populating: function (handler) {
                this.get_events().addHandler("populating", handler);
            },
            remove_populating: function (handler) {
                this.get_events().removeHandler("populating", handler);
            },
            raisePopulating: function () {
                var eh = this.get_events().getHandler("populating");
                if (eh) {
                    eh(this, Sys.EventArgs.Empty);
                }
            },

            add_populated: function (handler) {
                this.get_events().addHandler("populated", handler);
            },
            remove_populated: function (handler) {
                this.get_events().removeHandler("populated", handler);
            },
            raisePopulated: function () {
                var eh = this.get_events().getHandler("populated");
                if (eh) {
                    eh(this, Sys.EventArgs.Empty);
                }
            },

            get_headerText: function () {
                if (this.get_isInitialized()) {
                    return this._header.innerHTML;
                }
                return "";
            },
            set_headerText: function (value) {
                if (!this.get_isInitialized()) {
                    throw Error.invalidOperation(String.format(Sys.Extended.UI.Resources.Tabs_PropertySetBeforeInitialization, 'headerText'));
                }
                if (this.get_headerText() != value) {
                    this._header.innerHTML = value;
                    this.raisePropertyChanged("headerText");
                }
            },

            get_headerTab: function () {
                return this._header;
            },
            set_headerTab: function (value) {
                if (typeof (value) === "string") {
                    value = Sys.get(value);
                    if (!value) {
                        throw new Error.argumentNull("value");
                    }
                }
                if (this._header != value) {
                    if (this.get_isInitialized()) {
                        throw Error.invalidOperation(String.format(Sys.Extended.UI.Resources.Tabs_PropertySetAfterInitialization, 'headerTab'));
                    }
                    this._header = value;
                    this.raisePropertyChanged("value");
                }
            },

            get_enabled: function () {
                return this._enabled;
            },
            set_enabled: function (value) {
                if (value != this._enabled) {
                    this._enabled = value;
                    if (this.get_isInitialized()) {
                        this._makeEnabled(this._enabled);
                    }
                    this.raisePropertyChanged("enabled");
                }
            },

            get_owner: function () {
                return this._owner;
            },
            set_owner: function (value) {
                if (value instanceof Sys.ComponentSet) value = value.get(0);
                if (this._owner != value) {
                    if (this.get_isInitialized()) {
                        throw Error.invalidOperation(String.format(Sys.Extended.UI.Resources.Tabs_PropertySetAfterInitialization, 'owner'));
                    }
                    this._owner = value;
                    this.raisePropertyChanged("owner");
                }
            },

            get_ownerID: function () {
                return this._ownerID;
            },
            set_ownerID: function (value) {
                this._ownerID = value;
            },

            get_scrollBars: function () {
                return this._scrollBars;
            },
            set_scrollBars: function (value) {
                if (this._scrollBars != value) {
                    this._scrollBars = value;
                    this.raisePropertyChanged("scrollBars");
                }
            },

            get_onDemandMode: function () {
                return this._onDemandMode;
            },
            set_onDemandMode: function (value) {
                if (this._onDemandMode != value) {
                    this._onDemandMode = value;
                    this.raisePropertyChanged("onDemandMode");
                }
            },

            get_tabIndex: function () {
                return this._tabIndex;
            },

            get_dynamicContextKey: function () {
                return this._dynamicContextKey;
            },
            set_dynamicContextKey: function (value) {
                if (this._dynamicContextKey != value) {
                    this._dynamicContextKey = value;
                    this.raisePropertyChanged('dynamicContextKey');
                }
            },

            get_dynamicServicePath: function () {
                return this._dynamicServicePath;
            },
            set_dynamicServicePath: function (value) {
                if (this._dynamicServicePath != value) {
                    this._dynamicServicePath = value;
                    this.raisePropertyChanged('dynamicServicePath');
                }
            },

            get_dynamicServiceMethod: function () {
                return this._dynamicServiceMethod;
            },
            set_dynamicServiceMethod: function (value) {
                if (this._dynamicServiceMethod != value) {
                    this._dynamicServiceMethod = value;
                    this.raisePropertyChanged('dynamicServiceMethod');
                }
            },

            _get_active: function () {
                return this._active;
            },
            _set_active: function (value) {
                this._active = value;
                if (value)
                    this._activate();
                else
                    this._deactivate();
            },

            get_updatePanelID: function () {
                return this._updatePanelID;
            },
            set_updatePanelID: function (value) {
                if (this._updatePanelID != value) {
                    this._updatePanelID = value;
                    this.raisePropertyChanged("updatePanelID");
                }
            },

            initialize: function () {
                var owner = this.get_owner();
                if (!owner) {
                    owner = $find(this.get_ownerID());
                    if (owner) {
                        owner.initialize();
                        this.set_owner(owner);
                    }
                }

                Sys.Extended.UI.TabPanel.callBaseMethod(this, "initialize");

                if (!owner) {
                    throw Error.invalidOperation(Sys.Extended.UI.Resources.Tabs_OwnerExpected);
                }

                this._tabIndex = owner.get_tabs().length;

                Array.add(owner.get_tabs(), this);
                var tabId = this.get_id() + "_tab";
                this._tab = document.getElementById(tabId);
                var serverRendered = (this._tab != null);

                if (!serverRendered) {
                    this._headerOuterWrapper = document.createElement('span');
                    this._headerInnerWrapper = document.createElement('span');
                    this._tab = document.createElement('span');
                    this._tab.id = tabId;
                    this._header.parentNode.replaceChild(this._tab, this._header);
                    this._tab.appendChild(this._headerOuterWrapper);
                    this._headerOuterWrapper.appendChild(this._headerInnerWrapper);
                    this._headerInnerWrapper.appendChild(this._header);
                }

                $addHandlers(this._header, {
                    mousedown: this._header_onmousedown$delegate,
                    dragstart: this._oncancel$delegate,
                    selectstart: this._oncancel$delegate,
                    select: this._oncancel$delegate
                });
                if (this._enabled) {
                    this._addHandlersOnEnabled();
                } else {
                    Sys.UI.DomElement.addCssClass(this._tab, "ajax__tab_disabled");
                }

                if (!serverRendered) {
                    Sys.UI.DomElement.addCssClass(this._headerOuterWrapper, "ajax__tab_outer");
                    Sys.UI.DomElement.addCssClass(this._headerInnerWrapper, "ajax__tab_inner");
                    Sys.UI.DomElement.addCssClass(this._header, "ajax__tab_tab");
                    Sys.UI.DomElement.addCssClass(this.get_element(), "ajax__tab_panel");
                }
            },

            dispose: function () {
                if (this._dynamicPopulateBehavior) {
                    this._dynamicPopulateBehavior.dispose();
                    this._dynamicPopulateBehavior = null;
                }
                $common.removeHandlers(this._header, {
                    mousedown: this._header_onmousedown$delegate,
                    dragstart: this._oncancel$delegate,
                    selectstart: this._oncancel$delegate,
                    select: this._oncancel$delegate
                });
                if (this._enabled) {
                    this._removeHandlersOnEnabled();
                } else {
                    $common.removeHandlers(this._header, {
                        click: this._disabled_onclick
                    });
                }
                Sys.Extended.UI.TabPanel.callBaseMethod(this, "dispose");
            },

            _addHandlersOnEnabled: function () {
                $addHandlers(this._header, {
                    click: this._header_onclick$delegate,
                    mouseover: this._header_onmouseover$delegate,
                    mouseout: this._header_onmouseout$delegate,
                    keydown: this._onkeydown$delegate
                });
            },

            _removeHandlersOnEnabled: function () {
                $common.removeHandlers(this._header, {
                    click: this._header_onclick$delegate,
                    mouseover: this._header_onmouseover$delegate,
                    mouseout: this._header_onmouseout$delegate,
                    keydown: this._onkeydown$delegate
                });
            },

            populate: function (contextKeyOverride) {
                if (this._dynamicPopulateBehavior && (this._dynamicPopulateBehavior.get_element() != this.get_element())) {
                    this._dynamicPopulateBehavior.dispose();
                    this._dynamicPopulateBehavior = null;
                }
                if (!this._dynamicPopulateBehavior && this._dynamicServiceMethod) {
                    this._dynamicPopulateBehavior = $create(Sys.Extended.UI.DynamicPopulateBehavior, { "ContextKey": this._dynamicContextKey, "ServicePath": this._dynamicServicePath, "ServiceMethod": this._dynamicServiceMethod }, { "populated": this._dynamicPopulate_onpopulated$delegate }, null, this.get_element());
                }
                if (this._dynamicPopulateBehavior) {
                    this.raisePopulating();
                    this._dynamicPopulateBehavior.populate(contextKeyOverride ? contextKeyOverride : this._dynamicContextKey);
                }
            },

            _activate: function () {
                if (this._enabled) {
                    var elt = this.get_element();
                    $common.setVisible(elt, true);
                    Sys.UI.DomElement.addCssClass(this._tab, "ajax__tab_active");

                    this.populate();
                } else if (this._get_active()) {
                    var next = this._owner.getNearestTab(false);
                    if (!!next) {
                        this._owner.set_activeTab(next);
                    }
                }
                this._owner.get_element().style.visibility = 'visible';
            },
            _deactivate: function () {
                var elt = this.get_element();
                $common.setVisible(elt, false);
                Sys.UI.DomElement.removeCssClass(this._tab, "ajax__tab_active");
            },
            _show: function () {
                this._tab.style.display = '';
            },
            _hide: function () {
                this._tab.style.display = 'none';
                if (this._get_active()) {
                    var next = this._owner.getNearestTab(false);
                    if (!!next) {
                        this._owner.set_activeTab(next);
                    }
                }
                this._deactivate();
            },

            _makeEnabled: function (enable) {
                var hyperlinkId = "__tab_" + this.get_element().id;
                if (enable) {
                    $common.removeHandlers(this._header, {
                        click: this._disabled_onclick
                    });
                    this._addHandlersOnEnabled();
                    Sys.UI.DomElement.removeCssClass($get(hyperlinkId), "ajax__tab_disabled");
                } else {
                    this._removeHandlersOnEnabled();
                    $addHandlers(this._header, {
                        click: this._disabled_onclick
                    });
                    if (this._get_active()) {
                        var next = this._owner.getNearestTab(false);
                        if (!!next) {
                            this._owner.set_activeTab(next);
                        }
                    }
                    this._deactivate();
                    Sys.UI.DomElement.addCssClass($get(hyperlinkId), "ajax__tab_disabled");
                }
            },
            _setFocus: function (obj) {
                $get("__tab_" + obj.get_element().id).focus();
            },
            _header_onclick: function (e) {
                e.preventDefault();
                this.raiseClick();
                this.get_owner().set_activeTab(this);
                this._setFocus(this);
            },
            _header_onmouseover: function (e) {
                Sys.UI.DomElement.addCssClass(this._tab, "ajax__tab_hover");
            },
            _header_onmouseout: function (e) {
                Sys.UI.DomElement.removeCssClass(this._tab, "ajax__tab_hover");
            },
            _header_onmousedown: function (e) {
                e.preventDefault();
            },
            _oncancel: function (e) {
                e.stopPropagation();
                e.preventDefault();
            },
            _onkeydown: function (e) {
                var keyCode = ('which' in e) ? e.which : e.keyCode;
                if ((keyCode == "39" && !this._owner._useVerticalStripPlacement) || (keyCode == "40" && this._owner._useVerticalStripPlacement))//right or down
                {
                    e.preventDefault();
                    var next = this._owner.getNextTab(false);
                    if (next) {
                        this._owner.set_activeTab(next);
                        this._setFocus(next);
                    }
                }
                else if ((keyCode == "37" && !this._owner._useVerticalStripPlacement) || (keyCode == "38" && this._owner._useVerticalStripPlacement))//left or up
                {
                    e.preventDefault();
                    var next = this._owner.getPreviousTab(false);
                    if (next) {
                        this._owner.set_activeTab(next);
                        this._setFocus(next);
                    }
                }
                else if (keyCode == "35")//end
                {
                    e.preventDefault();
                    var next = this._owner.getLastTab(false);
                    if (next) {
                        this._owner.set_activeTab(next);
                        this._setFocus(next);
                    }
                }
                else if (keyCode == "36")//home
                {
                    e.preventDefault();
                    var next = this._owner.getFirstTab(false);
                    if (next) {
                        this._owner.set_activeTab(next);
                        this._setFocus(next);
                    }
                }
            },
            _dynamicPopulate_onpopulated: function (sender, e) {
                this.raisePopulated();
            },
            _disabled_onclick: function (e) {
                e.preventDefault();
            }
        }
        Sys.Extended.UI.TabPanel.registerClass("Sys.Extended.UI.TabPanel", Sys.UI.Control);
        Sys.registerComponent(Sys.Extended.UI.TabPanel, { name: "tabPanel", parameters: [{ name: "owner", type: "Sys.Extended.UI.TabContainer" }, { name: "headerTab", type: "String"}] });
    } // execute

    if (window.Sys && Sys.loader) {
        Sys.loader.registerScript(scriptName, ["ExtendedDynamicPopulate"], execute);
    }
    else {
        execute();
    }

})();
o.// (c) 2010 CodePlex Foundation
Type.registerNamespace('Sys.Extended.UI.Seadragon');
Type.registerNamespace('Seadragon'); (function() {

	if (Seadragon.MouseTracker) {
		return;
	}


	var isIE = Seadragon.Utils.getBrowser() == Seadragon.Browser.IE;


	var buttonDownAny = false;

	var ieCapturingAny = false;
	var ieTrackersActive = {};      // dictionary from hash to MouseTracker
	var ieTrackersCapturing = [];   // list of trackers interested in capture


	function getMouseAbsolute(event) {
		return Seadragon.Utils.getMousePosition(event);
	}

	function getMouseRelative(event, elmt) {
		var mouse = Seadragon.Utils.getMousePosition(event);
		var offset = Seadragon.Utils.getElementPosition(elmt);

		return mouse.minus(offset);
	}

	/**
	* Returns true if elmtB is a child node of elmtA, or if they're equal.
	*/
	function isChild(elmtA, elmtB) {
		var body = document.body;
		while (elmtB && elmtA != elmtB && body != elmtB) {
			try {
				elmtB = elmtB.parentNode;
			} catch (e) {
				return false;
			}
		}
		return elmtA == elmtB;
	}

	function onGlobalMouseDown() {
		buttonDownAny = true;
	}

	function onGlobalMouseUp() {
		buttonDownAny = false;
	}


	(function() {
		if (isIE) {
			Seadragon.Utils.addEvent(document, "mousedown", onGlobalMouseDown, false);
			Seadragon.Utils.addEvent(document, "mouseup", onGlobalMouseUp, false);
		} else {
			Seadragon.Utils.addEvent(window, "mousedown", onGlobalMouseDown, true);
			Seadragon.Utils.addEvent(window, "mouseup", onGlobalMouseUp, true);
		}
	})();


	Seadragon.MouseTracker = function(elmt, clickTimeThreshold, clickDistThreshold) {


		var self = this;
		var ieSelf = null;

		var hash = Math.random();     // a unique hash for this tracker
		var elmt = Seadragon.Utils.getElement(elmt);

		var tracking = false;
		var capturing = false;
		var buttonDownElmt = false;
		var insideElmt = false;

		var lastPoint = null;           // position of last mouse down/move
		var lastMouseDownTime = null;   // time of last mouse down
		var lastMouseDownPoint = null;  // position of last mouse down
		var clickTimeThreshold = clickTimeThreshold;
		var clickDistThreshold = clickDistThreshold;


		this.target = elmt;
		this.enterHandler = null;       // function(tracker, position, buttonDownElmt, buttonDownAny)
		this.exitHandler = null;        // function(tracker, position, buttonDownElmt, buttonDownAny)
		this.pressHandler = null;       // function(tracker, position)
		this.releaseHandler = null;     // function(tracker, position, insideElmtPress, insideElmtRelease)
		this.clickHandler = null;       // function(tracker, position, quick, shift)
		this.dragHandler = null;        // function(tracker, position, delta, shift)
		


		function startTracking() {
			if (!tracking) {
				Seadragon.Utils.addEvent(elmt, "mouseover", onMouseOver, false);
				Seadragon.Utils.addEvent(elmt, "mouseout", onMouseOut, false);
				Seadragon.Utils.addEvent(elmt, "mousedown", onMouseDown, false);
				Seadragon.Utils.addEvent(elmt, "mouseup", onMouseUp, false);
				Seadragon.Utils.addEvent(elmt, "click", onMouseClick, false);

				tracking = true;
				ieTrackersActive[hash] = ieSelf;
			}
		}

		function stopTracking() {
			if (tracking) {
				Seadragon.Utils.removeEvent(elmt, "mouseover", onMouseOver, false);
				Seadragon.Utils.removeEvent(elmt, "mouseout", onMouseOut, false);
				Seadragon.Utils.removeEvent(elmt, "mousedown", onMouseDown, false);
				Seadragon.Utils.removeEvent(elmt, "mouseup", onMouseUp, false);
				Seadragon.Utils.removeEvent(elmt, "click", onMouseClick, false);

				releaseMouse();
				tracking = false;
				delete ieTrackersActive[hash];
			}
		}

		function captureMouse() {
			if (!capturing) {
				if (isIE) {
					Seadragon.Utils.removeEvent(elmt, "mouseup", onMouseUp, false);
					Seadragon.Utils.addEvent(elmt, "mouseup", onMouseUpIE, true);
					Seadragon.Utils.addEvent(elmt, "mousemove", onMouseMoveIE, true);
				} else {
					Seadragon.Utils.addEvent(window, "mouseup", onMouseUpWindow, true);
					Seadragon.Utils.addEvent(window, "mousemove", onMouseMove, true);
				}

				capturing = true;
			}
		}

		function releaseMouse() {
			if (capturing) {
				if (isIE) {
					Seadragon.Utils.removeEvent(elmt, "mousemove", onMouseMoveIE, true);
					Seadragon.Utils.removeEvent(elmt, "mouseup", onMouseUpIE, true);
					Seadragon.Utils.addEvent(elmt, "mouseup", onMouseUp, false);
				} else {
					Seadragon.Utils.removeEvent(window, "mousemove", onMouseMove, true);
					Seadragon.Utils.removeEvent(window, "mouseup", onMouseUpWindow, true);
				}

				capturing = false;
			}
		}


		function triggerOthers(eventName, event) {
			var trackers = ieTrackersActive;
			for (var otherHash in trackers) {
				if (trackers.hasOwnProperty(otherHash) && hash != otherHash) {
					trackers[otherHash][eventName](event);
				}
			}
		}

		function hasMouse() {
			return insideElmt;
		}


		function onMouseOver(event) {
			var event = Seadragon.Utils.getEvent(event);

			if (isIE && capturing && !isChild(event.srcElement, elmt)) {
				triggerOthers("onMouseOver", event);
			}

			var to = event.target ? event.target : event.srcElement;
			var from = event.relatedTarget ? event.relatedTarget : event.fromElement;
			if (!isChild(elmt, to) || isChild(elmt, from)) {
				return;
			}

			insideElmt = true;

			if (typeof (self.enterHandler) == "function") {
				try {
					self.enterHandler(self, getMouseRelative(event, elmt),
                            buttonDownElmt, buttonDownAny);
				} catch (e) {
					Seadragon.Debug.error(e.name +
                            " while executing enter handler: " + e.message, e);
				}
			}
		}

		function onMouseOut(event) {
			var event = Seadragon.Utils.getEvent(event);

			if (isIE && capturing && !isChild(event.srcElement, elmt)) {
				triggerOthers("onMouseOut", event);
			}

			var from = event.target ? event.target : event.srcElement;
			var to = event.relatedTarget ? event.relatedTarget : event.toElement;
			if (!isChild(elmt, from) || isChild(elmt, to)) {
				return;
			}

			insideElmt = false;

			if (typeof (self.exitHandler) == "function") {
				try {
					self.exitHandler(self, getMouseRelative(event, elmt),
                            buttonDownElmt, buttonDownAny);
				} catch (e) {
					Seadragon.Debug.error(e.name +
                            " while executing exit handler: " + e.message, e);
				}
			}
		}

		function onMouseDown(event) {
			var event = Seadragon.Utils.getEvent(event);

			if (event.button == 2) {
				return;
			}

			buttonDownElmt = true;

			lastPoint = getMouseAbsolute(event);
			lastMouseDownPoint = lastPoint;
			lastMouseDownTime = new Date().getTime();

			if (typeof (self.pressHandler) == "function") {
				try {
					self.pressHandler(self, getMouseRelative(event, elmt));
				} catch (e) {
					Seadragon.Debug.error(e.name +
                            " while executing press handler: " + e.message, e);
				}
			}

			if (self.pressHandler || self.dragHandler) {
				Seadragon.Utils.cancelEvent(event);
			}

			if (!isIE || !ieCapturingAny) {
				captureMouse();
				ieCapturingAny = true;
				ieTrackersCapturing = [ieSelf];     // reset to empty & add us
			} else if (isIE) {
				ieTrackersCapturing.push(ieSelf);   // add us to the list
			}
		}

		function onMouseUp(event) {
			var event = Seadragon.Utils.getEvent(event);
			var insideElmtPress = buttonDownElmt;
			var insideElmtRelease = insideElmt;

			if (event.button == 2) {
				return;
			}

			buttonDownElmt = false;

			if (typeof (self.releaseHandler) == "function") {
				try {
					self.releaseHandler(self, getMouseRelative(event, elmt),
                            insideElmtPress, insideElmtRelease);
				} catch (e) {
					Seadragon.Debug.error(e.name +
                            " while executing release handler: " + e.message, e);
				}
			}

			if (insideElmtPress && insideElmtRelease) {
				handleMouseClick(event);
			}
		}

		/**
		* Only triggered once by the deepest element that initially received
		* the mouse down event. We want to make sure THIS event doesn't bubble.
		* Instead, we want to trigger the elements that initially received the
		* mouse down event (including this one) only if the mouse is no longer
		* inside them. Then, we want to release capture, and emulate a regular
		* mouseup on the event that this event was meant for.
		*/
		function onMouseUpIE(event) {
			var event = Seadragon.Utils.getEvent(event);

			if (event.button == 2) {
				return;
			}

			for (var i = 0; i < ieTrackersCapturing.length; i++) {
				var tracker = ieTrackersCapturing[i];
				if (!tracker.hasMouse()) {
					tracker.onMouseUp(event);
				}
			}

			releaseMouse();
			ieCapturingAny = false;
			event.srcElement.fireEvent("on" + event.type,
                    document.createEventObject(event));

			Seadragon.Utils.stopEvent(event);
		}

		/**
		* Only triggered in W3C browsers by elements within which the mouse was
		* initially pressed, since they are now listening to the window for
		* mouseup during the capture phase. We shouldn't handle the mouseup
		* here if the mouse is still inside this element, since the regular
		* mouseup handler will still fire.
		*/
		function onMouseUpWindow(event) {
			if (!insideElmt) {
				onMouseUp(event);
			}

			releaseMouse();
		}

		function onMouseClick(event) {

			if (self.clickHandler) {
				Seadragon.Utils.cancelEvent(event);
			}
		}

		function handleMouseClick(event) {
			var event = Seadragon.Utils.getEvent(event);

			if (event.button == 2) {
				return;
			}

			var time = new Date().getTime() - lastMouseDownTime;
			var point = getMouseAbsolute(event);
			var distance = lastMouseDownPoint.distanceTo(point);
			var quick = time <= clickTimeThreshold &&
                    distance <= clickDistThreshold;

			if (typeof (self.clickHandler) == "function") {
				try {
					self.clickHandler(self, getMouseRelative(event, elmt),
                            quick, event.shiftKey);
				} catch (e) {
					Seadragon.Debug.error(e.name +
                            " while executing click handler: " + e.message, e);
				}
			}
		}

		function onMouseMove(event) {
			var event = Seadragon.Utils.getEvent(event);
			var point = getMouseAbsolute(event);
			var delta = point.minus(lastPoint);

			lastPoint = point;

			if (typeof (self.dragHandler) == "function") {
				try {
					self.dragHandler(self, getMouseRelative(event, elmt),
                            delta, event.shiftKey);
				} catch (e) {
					Seadragon.Debug.error(e.name +
                            " while executing drag handler: " + e.message, e);
				}

				Seadragon.Utils.cancelEvent(event);
			}
		}

		/**
		* Only triggered once by the deepest element that initially received
		* the mouse down event. Since no other element has captured the mouse,
		* we want to trigger the elements that initially received the mouse
		* down event (including this one).
		*/
		function onMouseMoveIE(event) {
			for (var i = 0; i < ieTrackersCapturing.length; i++) {
				ieTrackersCapturing[i].onMouseMove(event);
			}

			Seadragon.Utils.stopEvent(event);
		}


		(function() {
			ieSelf = {
				hasMouse: hasMouse,
				onMouseOver: onMouseOver,
				onMouseOut: onMouseOut,
				onMouseUp: onMouseUp,
				onMouseMove: onMouseMove
			};
		})();


		this.isTracking = function() {
			return tracking;
		};

		this.setTracking = function(track) {
			if (track) {
				startTracking();
			} else {
				stopTracking();
			}
		};

	};

})();
� // (c) 2010 CodePlex Foundation
(function(){var b="ExtendedRating";function a(){var f="EndClientCallback",e="MouseOut",d="MouseOver",c="Rated",h="mouseout",g="mouseover",b=false,a=null;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.RatingBehavior=function(d){var c=this;Sys.Extended.UI.RatingBehavior.initializeBase(c,[d]);c._starCssClass="rating_star";c._filledStarCssClass="rating_filled";c._emptyStarCssClass="rating_empty";c._waitingStarCssClass=a;c._isServerControl=b;c._readOnly=b;c._ratingValue=0;c._currentRating=0;c._maxRatingValue=5;c._tag="";c._ratingDirection=0;c._stars=a;c._callbackID=a;c._mouseOutHandler=Function.createDelegate(c,c._onMouseOut);c._starClickHandler=Function.createDelegate(c,c._onStarClick);c._starMouseOverHandler=Function.createDelegate(c,c._onStarMouseOver);c._keyDownHandler=Function.createDelegate(c,c._onKeyDownBack);c._autoPostBack=b};Sys.Extended.UI.RatingBehavior.prototype={initialize:function(){var a=this;Sys.Extended.UI.RatingBehavior.callBaseMethod(a,"initialize");var c=a.get_element();a._stars=[];for(var b=1;b<=a._maxRatingValue;b++){starElement=$get(c.id+"_Star_"+b);starElement.value=b;Array.add(a._stars,starElement);$addHandler(starElement,"click",a._starClickHandler);$addHandler(starElement,g,a._starMouseOverHandler)}$addHandler(c,h,a._mouseOutHandler);$addHandler(c,"keydown",a._keyDownHandler);a._update()},dispose:function(){var b=this,e=b.get_element();if(b._stars){for(var c=0;c<b._stars.length;c++){var d=b._stars[c];$removeHandler(d,"click",b._starClickHandler);$removeHandler(d,g,b._starMouseOverHandler)}b._stars=a}$removeHandler(e,h,b._mouseOutHandler);$removeHandler(e,"keydown",b._keyDownHandler);Sys.Extended.UI.RatingBehavior.callBaseMethod(b,"dispose")},_onError:function(a){alert(String.format(Sys.Extended.UI.Resources.Rating_CallbackError,a))},_receiveServerData:function(c,a){a._waitingMode(b);a.raiseEndClientCallback(c)},_onMouseOut:function(){var a=this;if(a._readOnly)return;a._currentRating=a._ratingValue;a._update();a.raiseMouseOut(a._currentRating)},_onStarClick:function(){var a=this;if(a._readOnly)return;a._ratingValue!=a._currentRating&&a.set_Rating(a._currentRating)},_onStarMouseOver:function(b){var a=this;if(a._readOnly)return;if(a._ratingDirection==0)a._currentRating=b.target.value;else a._currentRating=a._maxRatingValue+1-b.target.value;a._update();a.raiseMouseOver(a._currentRating)},_onKeyDownBack:function(b){var a=this;if(a._readOnly)return;var c=b.keyCode?b.keyCode:b.rawEvent.keyCode;if(c==Sys.UI.Key.right||c==Sys.UI.Key.up){a._currentRating=Math.min(a._currentRating+1,a._maxRatingValue);a.set_Rating(a._currentRating);b.preventDefault();b.stopPropagation()}else if(c==Sys.UI.Key.left||c==Sys.UI.Key.down){a._currentRating=Math.max(a._currentRating-1,1);a.set_Rating(a._currentRating);b.preventDefault();b.stopPropagation()}},_waitingMode:function(d){var a=this;for(var c=0;c<a._maxRatingValue;c++){var b;if(a._ratingDirection==0)b=a._stars[c];else b=a._stars[a._maxRatingValue-c-1];if(a._currentRating>c){if(a._waitingStarCssClass)if(d){Sys.UI.DomElement.removeCssClass(b,a._filledStarCssClass);Sys.UI.DomElement.addCssClass(b,a._waitingStarCssClass)}else{Sys.UI.DomElement.removeCssClass(b,a._waitingStarCssClass);Sys.UI.DomElement.addCssClass(b,a._filledStarCssClass)}}else{a._waitingStarCssClass&&Sys.UI.DomElement.removeCssClass(b,a._waitingStarCssClass);Sys.UI.DomElement.removeCssClass(b,a._filledStarCssClass);Sys.UI.DomElement.addCssClass(b,a._emptyStarCssClass)}}},_update:function(){var a=this,d=a.get_element();$get(d.id+"_A").title=a._currentRating;for(var c=0;c<a._maxRatingValue;c++){var b;if(a._ratingDirection==0)b=a._stars[c];else b=a._stars[a._maxRatingValue-c-1];if(a._currentRating>c){Sys.UI.DomElement.removeCssClass(b,a._emptyStarCssClass);Sys.UI.DomElement.addCssClass(b,a._filledStarCssClass)}else{Sys.UI.DomElement.removeCssClass(b,a._filledStarCssClass);Sys.UI.DomElement.addCssClass(b,a._emptyStarCssClass)}}},add_Rated:function(a){this.get_events().addHandler(c,a)},remove_Rated:function(a){this.get_events().removeHandler(c,a)},raiseRated:function(b){var a=this.get_events().getHandler(c);a&&a(this,new Sys.Extended.UI.RatingEventArgs(b))},add_MouseOver:function(a){this.get_events().addHandler(d,a)},remove_MouseOver:function(a){this.get_events().removeHandler(d,a)},raiseMouseOver:function(b){var a=this.get_events().getHandler(d);a&&a(this,new Sys.Extended.UI.RatingEventArgs(b))},add_MouseOut:function(a){this.get_events().addHandler(e,a)},remove_MouseOut:function(a){this.get_events().removeHandler(e,a)},raiseMouseOut:function(b){var a=this.get_events().getHandler(e);a&&a(this,new Sys.Extended.UI.RatingEventArgs(b))},add_EndClientCallback:function(a){this.get_events().addHandler(f,a)},remove_EndClientCallback:function(a){this.get_events().removeHandler(f,a)},raiseEndClientCallback:function(b){var a=this.get_events().getHandler(f);a&&a(this,new Sys.Extended.UI.RatingCallbackResultEventArgs(b))},get_AutoPostBack:function(){return this._autoPostBack},set_AutoPostBack:function(a){this._autoPostBack=a},get_Stars:function(){return this._stars},get_Tag:function(){return this._tag},set_Tag:function(a){if(this._tag!=a){this._tag=a;this.raisePropertyChanged("Tag")}},get_CallbackID:function(){return this._callbackID},set_CallbackID:function(a){this._callbackID=a},get_RatingDirection:function(){return this._ratingDirection},set_RatingDirection:function(b){var a=this;if(a._ratingDirection!=b){a._ratingDirection=b;a.get_isInitialized()&&a._update();a.raisePropertyChanged("RatingDirection")}},get_EmptyStarCssClass:function(){return this._emptyStarCssClass},set_EmptyStarCssClass:function(a){if(this._emptyStarCssClass!=a){this._emptyStarCssClass=a;this.raisePropertyChanged("EmptyStarCssClass")}},get_FilledStarCssClass:function(){return this._filledStarCssClass},set_FilledStarCssClass:function(a){if(this._filledStarCssClass!=a){this._filledStarCssClass=a;this.raisePropertyChanged("FilledStarCssClass")}},get_WaitingStarCssClass:function(){return this._waitingStarCssClass},set_WaitingStarCssClass:function(a){if(this._waitingStarCssClass!=a){this._waitingStarCssClass=a;this.raisePropertyChanged("WaitingStarCssClass")}},get_Rating:function(){var b=this,c=Sys.Extended.UI.RatingBehavior.callBaseMethod(b,"get_ClientState");if(c!==a&&c.length)b._ratingValue=c;if(b._ratingValue=="")b._ratingValue=a;return b._ratingValue},set_Rating:function(b){var a=this;if(a._ratingValue!=b){a._ratingValue=b;a._currentRating=b;if(a.get_isInitialized()){if(b<0||b>a._maxRatingValue)return;a._update();Sys.Extended.UI.RatingBehavior.callBaseMethod(a,"set_ClientState",[a._ratingValue]);a.raisePropertyChanged("Rating");a.raiseRated(a._currentRating);if(a._isServerControl){a._waitingMode(true);var c=a._currentRating+";"+a._tag,d=a._callbackID;if(a._autoPostBack)__doPostBack(d,c);else WebForm_DoCallback(d,c,a._receiveServerData,a,a._onError,true)}}}},get_MaxRating:function(){return this._maxRatingValue},set_MaxRating:function(a){if(this._maxRatingValue!=a){this._maxRatingValue=a;this.raisePropertyChanged("MaxRating")}},get_ReadOnly:function(){return this._readOnly},set_ReadOnly:function(a){if(this._readOnly!=a){this._readOnly=a;this.raisePropertyChanged("ReadOnly")}},get_StarCssClass:function(){return this._starCssClass},set_StarCssClass:function(a){if(this._starCssClass!=a){this._starCssClass=a;this.raisePropertyChanged("StarCssClass")}}};Sys.Extended.UI.RatingBehavior.registerClass("Sys.Extended.UI.RatingBehavior",Sys.Extended.UI.BehaviorBase);Sys.registerComponent(Sys.Extended.UI.RatingBehavior,{name:"rating"});Sys.Extended.UI.RatingEventArgs=function(a){Sys.Extended.UI.RatingEventArgs.initializeBase(this);this._rating=a};Sys.Extended.UI.RatingEventArgs.prototype={get_Rating:function(){return this._rating}};Sys.Extended.UI.RatingEventArgs.registerClass("Sys.Extended.UI.RatingEventArgs",Sys.EventArgs);Sys.Extended.UI.RatingCallbackResultEventArgs=function(a){Sys.Extended.UI.RatingCallbackResultEventArgs.initializeBase(this);this._result=a};Sys.Extended.UI.RatingCallbackResultEventArgs.prototype={get_CallbackResult:function(){return this._result}};Sys.Extended.UI.RatingCallbackResultEventArgs.registerClass("Sys.Extended.UI.RatingCallbackResultEventArgs",Sys.EventArgs)}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedBase"],a);else a()})();T3// (c) 2010 CodePlex Foundation
(function(window, Sys) {

var merge = function _merge(target) {
    target = target || {};
    foreach(arguments, function(o) {
        if (o) {
            forIn(o, function(v, n) {
                target[n] = v;
            });
        }
    }, 1);
    return target;
}
var forIn = function _forIn(obj, callback) {
    for (var x in obj) {
        callback(obj[x], x);
    }
}
var foreach = function _foreach(arr, callback, start) {
    var cancelled;
    if (arr) {
        arr = arr !== window && typeof(arr.nodeType) === "undefined" &&
            (arr instanceof Array || 
            (typeof(arr.length) === 'number' && (typeof(arr.callee) === "function" || (arr.item && typeof(arr.nodeType) === "undefined") && !arr.addEventListener && !arr.attachEvent)))
            ? arr : [arr];
        for (var i = start||0, l = arr.length; i < l; i++) {
            if (callback(arr[i], i)) {
                cancelled = true;
                break;
            }
        }
    }
    return !cancelled;
}
var callIf = function _callIf(obj, name, args) {
    var fn = obj[name],
        exists = typeof(fn) === "function";
    if (exists) fn.call(obj, args);
    return exists;
}
if (!Sys || !Sys.loader) {
    function append(target) {
        target = target || {};
        foreach(arguments, function(o) {
            if (o) {
                forIn(o, function(v, n) {
                    if (typeof(target[n]) === "undefined") target[n] = v;
                });
            }
        }, 1);
        return target;
    }

    var attachEvent = !!document.attachEvent;
  
    function getAndDelete(obj, field) {
        var r = obj[field];
        delete obj[field];
        return r;
    }
    function foreachCall(obj, field, args) {
        foreach(getAndDelete(obj, field), function(callback) {
            callback.apply(null, args||[]);
        });
    }
    function lazyget(obj, name, value) {
        return obj ? (obj[name] = obj[name] || value) : value;
    }
    function lazypush(obj, name, value) {
        lazyget(obj, name, []).push(value);
    }
    function lazyset(obj, name, key, value) {
        lazyget(obj, name, {})[key] = value;
    }
    function all(tag, element) {
        return (element||document).getElementsByTagName(tag);
    }
    function createElement(tag) {
        return document.createElement(tag);
    }
    function listenOnce(target, name, ieName, callback, isReadyState, isScript) {
        function onEvent() {
            if (!attachEvent || !isReadyState || /loaded|complete/.test(target.readyState)) {
                if (attachEvent) {
                    target.detachEvent(ieName || ("on" + name), onEvent);
                }
                else {
                    target.removeEventListener(name, onEvent, false);
                    if (isScript) {
                        target.removeEventListener("error", onEvent, false);
                    }
                }
                callback.apply(target);
                target = null;
            }
        }
        if (attachEvent) {
            target.attachEvent(ieName || ("on" + name), onEvent);
        }
        else {
            if (target.addEventListener) {
            target.addEventListener(name, onEvent, false);
            }
            if (isScript) {
                target.addEventListener("error", onEvent, false);
            }
        }
    }
    function raiseDomReady() {
        if (Sys._domReady) {
            Sys._2Pass(getAndDelete(Sys, "_domReadyQueue"));
        }
    }
    function raiseOnReady() {
        var ready = Sys._ready;
        if (!ready && Sys._domReady && !(Sys.loader && Sys.loader._loading)) {
            Sys._ready = ready = true;
        }
        if (ready) {
            Sys._2Pass(getAndDelete(Sys, "_readyQueue"));
        }
    }
    window.Sys = Sys = append(Sys, {
        version: [3, 0, 31106, 0],
        __namespace: true,
        debug: true,
        scripts: {},
        activateDom: true,
        composites: {},
        components: {},
        plugins: {},
        create: {},
        converters: {},
        _domLoaded: function _domLoaded() {
            if (Sys._domChecked) return;
            Sys._domChecked = true;
            function domReady() {
                if (!Sys._domReady) {
                    Sys._domReady = true;
                    var autoRequire = Sys._autoRequire;
                    if (autoRequire) {
                        Sys.require(autoRequire, function() {
                            Sys._autoRequire = null;
                            foreachCall(Sys, "_autoQueue");
                        }, autoToken);
                    }
                    raiseDomReady();
                    raiseOnReady();
                }
            }
            listenOnce(window, "load", null, domReady);

            var check;
            if (attachEvent) {
                if ((window == window.top) && document.documentElement.doScroll) {
                    var timeout, er, el = createElement("div");
                    check = function() {
                        try {
                            el.doScroll("left");
                        }
                        catch (er) {
                            timeout = window.setTimeout(check, 0);
                            return;
                        }
                        el = null;
                        domReady();
                    }
                    check();
                }
                else {
                    listenOnce(document, null, "onreadystatechange", domReady, true);
                }
            }
            else if (document.addEventListener) {
                listenOnce(document, "DOMContentLoaded", null, domReady);
            }
        },
        _getById: function _getById(found, id, single, includeSelf, element, filter) {
            if (element) {
                if (includeSelf && (element.id === id)) {
                    found.push(element);
                }
                else if (!filter) {
                    foreach(all("*", element), function(element) {
                        if (element.id === id) {
                            found.push(element);
                            return true;
                        }
                    });
                }
            }
            else {
                var e = document.getElementById(id);
                if (e) found.push(e);
            }
            return found.length;
        },
        _getByClass: function _getByClass(found, targetClass, single, includeSelf, element, filter) {
            function pushIfMatch(element) {
                var ret, className = element.className;
                if (className && ((className === targetClass) || (className.indexOf(' ' + targetClass) >= 0) || (className.indexOf(targetClass + ' ') >= 0))) {
                    found.push(element);
                    ret = true;
                }
                return ret;
            }
            var i, l, nodes;
            if (includeSelf && pushIfMatch(element) && single) {
                return true;
            }
            if (!filter) {
                element = element || document;
                var finder = element.querySelectorAll || element.getElementsByClassName;
                if (finder) {
                    if (element.querySelectorAll) targetClass = "." + targetClass;
                    nodes = finder.call(element, targetClass);
                    for (i = 0, l = nodes.length; i < l; i++) {
                        found.push(nodes[i]);
                        if (single) return true;
                    }
                }
                else {
                    nodes = all("*", element);
                    for (i = 0, l = nodes.length; i < l; i++) {
                        if (pushIfMatch(nodes[i]) && single) {
                            return true;
                        }
                    }
                }
            }
        },
        query: function query(selector, context) {
            /// <summary>Queries the DOM for a set of DOM elements.</summary>
            /// <validationOptions enabled="false" />
            /// <param name="selector">Selector for a set of DOM elements based on id (#&lt;id>), class (.&lt;name>), or tag name (&lt;tagname>). Also supports an array of DOM elements or selectors. More complex selectors may be used if jQuery is loaded.</param>
            /// <param name="context" optional="true" mayBeNull="true">A DOM element (exclusive), array of DOM elements (inclusive), or other Sys.ElementSet or Sys.UI.TemplateContext (exclusive) to restrict the search within.</param>
            /// <returns type="Sys.ElementSet">An object representing the set of matching elements.</returns>
            return new Sys.ElementSet(selector, context);
        },
        get: function get(selector, context) {
            /// <summary>Queries the DOM for a single DOM element.</summary>
            /// <validationOptions enabled="false" />
            /// <param name="selector">
            /// Selector for a DOM element based on id (#&lt;id>), class (.&lt;name>), or tag name (&lt;tagname>). More complex selectors may be used if jQuery is loaded.
            /// If multiple elements match the selector, the first one is returned.
            /// </param>
            /// <param name="context" optional="true" mayBeNull="true">An element, array of elements, or Sys.UI.TemplateContext to restrict the query within.</param>
            /// <returns>The matching element, or null if none match.</returns>
            return (context && typeof(context.get) === "function") ?
                context.get(selector) :
                this._find(selector, context, true);
        },
        _find: function _find(selector, context, single, filter) {
            var found = [],
                selectors;
            if (typeof(selector) === "string") {
                selectors = [selector];
            }
            else {
                selectors = selector;
            }
            var includeSelf = context instanceof Array,
                simpleNonTag = /^([\$#\.])((\w|[$:\.\-])+)$/,
                tag = /^((\w+)|\*)$/;
            if ((typeof(context) === "string") || (context instanceof Array)) {
                context = Sys._find(context);
            }
            if (context instanceof Sys.ElementSet) {
                context = context.get();
            }
            foreach(selectors, function(selector) {
                if (typeof(selector) !== "string") {
                    if (filter) {
                        if (contains(context, selector)) {
                            found.push(selector);
                        }
                    }
                    else {
                        found.push(selector);
                    }
                }
                else {
                    var match = simpleNonTag.exec(selector);
                    if (match && match.length === 4) {
                        selector = match[2];
                        var type = match[1];
                        if (type === "$") {
                            Sys._getComponent(found, selector, context);
                        }
                        else {
                            var finder = type === "#" ? Sys._getById : Sys._getByClass;
                            if (context) {
                                foreach(context, function(node) {
                                    if (node.nodeType === 1) {
                                        return finder(found, selector, single, includeSelf, node, filter);
                                    }
                                });
                            }
                            else {
                                finder(found, selector, single);
                            }
                        }
                    }
                    else if (tag.test(selector)) {
                        if (context instanceof Array) {
                            foreach(context, function(node) {
                                if (node.nodeType === 1) {
                                    if (includeSelf && (selector === "*" || (node.tagName.toLowerCase() === selector))) {
                                        found.push(node);
                                        if (single) return true;
                                    }
                                    if (!filter) {
                                        if(!foreach(all(selector, node), function(node) {
                                            found.push(node);
                                            if (single) return true;
                                        })) {
                                            return true;
                                        }
                                    }
                                }
                            });
                        }
                        else {
                            var nodes = all(selector, context);
                            if (single) {
                                if (nodes[0]) {
                                    found.push(nodes[0]);
                                }
                                return true;
                            }
                            foreach(nodes, function(node) {
                                found.push(node);
                            });
                        }
                    }
                    else if (window.jQuery) {
                        if (!filter) {
                            found.push.apply(found, jQuery(selector, context).get());
                        }
                        if (includeSelf) {
                            found.push.apply(found, jQuery(context).filter(selector).get());
                        }
                    }
                }
            });
            return found.length ? (single ? (found[0] || null) : found) : null;
        },
        onDomReady: function onDomReady(callback) {
            /// <summary>Registers a function to be called when the DOM is ready.</summary>
            /// <validationOptions enabled="false" />
            /// <param name="callback" type="Function"></param>
            lazypush(this, "_domReadyQueue", callback);
            raiseDomReady();
        },
        onReady: function onReady(callback) {
            /// <summary>Registers a function to be called when the DOM is ready and when all required resources have been loaded.</summary>
            /// <validationOptions enabled="false" />
            /// <param name="callback" type="Function"></param>
            lazypush(this, "_readyQueue", callback);
            raiseOnReady();
        },
        _set: function(instance, properties) {
            forIn(properties, function(value, field) {
                callIf(instance, "add_" + field, value) ||
                callIf(instance, "set_" + field, value) ||
                (instance[field] = value);
            });
        }
    });

    Sys._getComponent = Sys._getComponent || function() { }
    
    Sys._2Pass = Sys._2Pass || function _2Pass(callback) {
       foreach(callback, function(c) { c(); });
    }

    var obj;
    if (!Sys.ElementSet) {
obj = Sys.ElementSet = function(selector, context) {
    /// <summary>Represents a set of DOM elements.</summary>
    /// <param name="selector">The DOM selector, array of DOM selectors, or array of DOM elements to query the document for.</param>
    /// <param name="context">A DOM selector (exclusive), A DOM element (exclusive), array of DOM elements (inclusive), or other Sys.ElementSet (exclusive) to restrict the search within.</param>
    this._elements = ((typeof(context) === "object") && typeof(context.query) === "function") ?
        context.query(selector).get() :
        Sys._find(selector, context) || [];
}
obj.prototype = {
    __class: true,
    components: function(type, index) {
        /// <summary>Gets the set of controls and behaviors associated with the current DOM elements.</summary>
        /// <param name="type" type="Function" mayBeNull="true" optional="true">Type to limit the search to.</param>
        /// <param name="index" type="Number" mayBeNull="true" optional="true">Index of the component to limit to.</param>
        /// <returns type="Sys.ComponentSet" />
        var elementSet = new Sys.ElementSet(this.get());
        return new Sys.ComponentSet(elementSet, type, index);
    },
    component: function(type, index) {
        /// <summary>Get the first control or behavior associated with the current set of DOM elements.</summary>
        /// <param name="type" type="Function" mayBeNull="true" optional="true">Type to limit the search to.</param>
        /// <param name="index" type="Number" mayBeNull="true" optional="true">Index of the component to return.</param>
        /// <returns type="Object" mayBeNull="true" />
        return this.components(type, index).get(0);
    },
    each: function(callback) {
        /// <summary>Enumerates all the matched elements, calling the given callback for each with the current element as the context.
        /// The callback may return false to cancel enumeration.</summary>
        /// <returns type="Sys.ElementSet"/>
        var elements = this._elements;
        for (var i = 0, l = elements.length; i < l; i++) {
            if (callback.call(elements[i], i) === false) break;
        }
        return this;
    },
    get: function(index) {
        /// <summary>Retrieves the element at the specified index.</summary>
        /// <param name="index" type="Number">The index of the element to retrieve. Omit to return all elements as an array.</param>
        /// <returns isDomElement="true">The element at the given index, or an array of all the matched elements.</returns>
        var elements = this._elements;
        return (typeof(index) === "undefined") ? (Array.apply(null, elements)) : (elements[index] || null);
    },
    find: function(selector) {
        /// <summary>Searches the current set of DOM elements with the given selector, including descendents.</summary>
        /// <param name="selector">DOM selector or array of DOM selectors to search with.</param>
        /// <returns type="Sys.ElementSet">A new element set with the matched elements.</returns>
        return new Sys.ElementSet(selector, this);
    },
    filter: function(selector) {
        /// <summary>Filters the current set of DOM elements by the given selector, excluding descendents.</summary>
        /// <param name="selector">DOM selector or array of elements to filter by.</param>
        /// <returns type="Sys.ElementSet">A new element set with the matched elements.</returns>
        return new Sys.ElementSet(Sys._find(selector, this._elements, false, true));
    }
}
    }
    if (!Sys.ComponentSet) {
obj = Sys.ComponentSet = function ComponentSet(elementSet, query, index) {
    /// <summary></summary>
    /// <param name="elementSet" type="Sys.ElementSet" mayBeNull="true" optional="true"></param>
    /// <param name="query" mayBeNull="true" optional="true">The type of component to filter by, or an array of components to include.</param>
    /// <param name="index" type="Number" mayBeNull="true" optional="true">The index of the component to retrieve from the filtered list.</param>
    this._elementSet = elementSet || (elementSet = new Sys.ElementSet());
    this._components = this._execute(elementSet, query, index);
}
obj.prototype = {
    __class: true,
    setProperties: function ComponentSet$setProperties(properties) {
        /// <summary>Sets properties on the matched components.</summary>
        /// <param name="properties" type="Object" mayBeNull="false">Object with the names and values of the properties to set.</param>
        /// <returns type="Sys.ComponentSet" />
        return this.each(function() {
            Sys._set(this, properties);
        });
    },
    get: function ComponentSet$get(index) {
        /// <summary>Returns the component at the specified index, or an array of all matches if not specified.</summary>
        /// <param name="index" type="Number" mayBeNull="true" optional="true"></param>
        /// <returns type="Object" mayBeNull="true"/>
        var components = this._components;
        return (typeof(index) === "undefined") ? (Array.apply(null, components)) : (components[index || 0] || null);
    },
    each: function ComponentSet$each(callback) {
        /// <summary>Enumerate all the found components. The index of the component are passed as parameters to a callback. You may return 'false' to cancel the enumeration.</summary>
        /// <param name="callback" type="Function" mayBeNull="false">Function called for each component.</param>
        /// <returns type="Sys.ComponentSet" />
        foreach(this._components, function(c, i) {
            if (callback.call(c, i) === false) {
                return true;
            }
        });
        return this;
    },
    elements: function ComponentSet$elements() {
        /// <summary>Returns the underlying set of elements this component collection came from.</summary>
        /// <returns type="Sys.ElementSet" />
        return this._elementSet;
    },
    _execute: function ComponentSet$_execute(elementSet, query, index) {
        var components = [];
        function match(c) {
            var ctor;
            return (c instanceof query) ||
                ((ctor = c.constructor) && (
                    (ctor === query) ||
                    (ctor.inheritsFrom && ctor.inheritsFrom(query)) ||
                    (ctor.implementsInterface && ctor.implementsInterface(query))));
        }
        if (query instanceof Array) {
            components.push.apply(components, query);
        }
        else {
            elementSet.each(function() {
                var c = this.control;
                if (c && (!query || match(c))) {
                    components.push(c);
                }
                foreach(this._behaviors, function(b) {
                    if (!query || match(b)) {
                        components.push(b);
                    }
                });
            });
        }
        if ((typeof(index) !== "undefined")) {
            if (components[index]) {
                components = [components[index]];
            }
            else {
                components = [];
            }
        }
        return components;
    }
}
    }
    
    obj = null;
}
    var getCreate = function _getCreate(options, isPlugin) {
        var body = [],
            arglist = [],
            type = options.type,
            typeName = options.typeName || (type ? type.getName() : ""),
            isBehavior = options._isBehavior,
            description = (options && options.description) || 
                          (type && ("Creates an instance of the type '" + typeName  + "' and sets the given properties.")) ||
                          "";
        body.push("/// <summary>", description, "</summary>\n");
        foreach(options && options.parameters, function(parameter) {
            var name = parameter, type = '', desc = '';
            if (typeof(parameter) !== "string") {
                name = parameter.name;
                type = parameter.type||'';
                desc = parameter.description||'';
            }
            arglist.push(name);
            body.push('/// <param name="', name, '"');
            if (type) {
                body.push(' type="', type, '"');
            }
            body.push('>', desc, '</param>\n');
        });
        var returnType;
        if (!isPlugin) {
            arglist.push("properties");
            body.push('/// <param name="properties" type="Object" mayBeNull="true" optional="true">Additional properties to set on the component.</param>\n');
            returnType = isBehavior ? 'Sys.ComponentSet' : typeName;
        }
        else {
            returnType = options.returnType;
        }
        if (returnType) {
            body.push('/// <returns type="', returnType, '" />\n');
        }
        if (isPlugin) {
            body.push('return Sys.plugins["', options.name, '"].plugin.apply(this, arguments);');
        }
        else {
            body.push('return Sys._createComp.call(this, arguments.callee._component, arguments.callee._component.defaults, arguments);');
        }
        arglist.push(body.join(''));
    
        var fn = Function.apply(null, arglist);
        if (!isPlugin) {
            fn._component = options;
        }
        return fn;
        
    }
    Sys._getCreate = getCreate;

function execute() {

var $type, $prototype;
Sys._foreach = foreach;
Sys._forIn = forIn;
Sys._merge = merge;
Sys._callIf = callIf;

$type = Function;
$type.__typeName = 'Function';
$type.__class = true;

$type.createCallback = function Function$createCallback(method, context) {
    /// <summary locid="M:J#Function.createCallback">Creates a callback function that retains the parameter initially used during its creation.   The callback is used without parameter but this will call the actual method with the parameter.   This is especially useful when setting up a handler for a DOM event that must retain a parameter   despite the DOM event handler needing to be a function with the event object as the only parameter.   In this case, the function will be called with the event as the first parameter and the context   as the second.   If the callback is called with an arbitrary list of parameters, the context is appended.</summary>
    /// <param name="method" type="Function">The function for which the callback is created.</param>
    /// <param name="context" mayBeNull="true">The parameter for the function.</param>
    /// <returns type="Function">The callback function.</returns>
    var e = Function._validateParams(arguments, [
        {name: "method", type: Function},
        {name: "context", mayBeNull: true}
    ]);
    if (e) throw e;


    return function() {
        var l = arguments.length;
        if (l > 0) {
            var args = [];
            for (var i = 0; i < l; i++) {
                args[i] = arguments[i];
            }
            args[l] = context;
            return method.apply(this, args);
        }
        return method.call(this, context);
    }
}

$type.createDelegate = function Function$createDelegate(instance, method) {
    /// <summary locid="M:J#Function.createDelegate">Creates a delegate function that retains the context from its creation   (i.e. what 'this' means from within its scope).   This is especially useful when setting up an event handler to point to an object method   that needs to use the 'this' pointer from within its scope.</summary>
    /// <param name="instance" mayBeNull="true">The object instance that will be the context for the function (i.e. what 'this' means from within its scope).</param>
    /// <param name="method" type="Function">The function from which the delegate is created.</param>
    /// <returns type="Function">The delegate function.</returns>
    var e = Function._validateParams(arguments, [
        {name: "instance", mayBeNull: true},
        {name: "method", type: Function}
    ]);
    if (e) throw e;


    return function() {
        return method.apply(instance, arguments);
    }
}

$type.emptyFunction = $type.emptyMethod = function Function$emptyMethod() {
    /// <summary locid="M:J#Function.emptyMethod">A function that does nothing.</summary>
}

$type.validateParameters = function Function$validateParameters(parameters, expectedParameters, validateParameterCount) {
    /// <summary locid="M:J#Function.validateParameters">Validates the parameters to a method are as expected.</summary>
    /// <param name="parameters"></param>
    /// <param name="expectedParameters"></param>
    /// <param name="validateParameterCount" type="Boolean" optional="true" mayBeNull="true">True if extra parameters are prohibited, false if they should be ignored. The default is true.</param>
    /// <returns type="Error" mayBeNull="true"></returns>
    var e = Function._validateParams(arguments, [
        {name: "parameters"},
        {name: "expectedParameters"},
        {name: "validateParameterCount", type: Boolean, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    return Function._validateParams(parameters, expectedParameters, validateParameterCount);
}

$type._validateParams = function Function$_validateParams(params, expectedParams, validateParameterCount) {
    var e, expectedLength = expectedParams.length;
    validateParameterCount = validateParameterCount !== false;
    e = Function._validateParameterCount(params, expectedParams, validateParameterCount);
    if (e) {
        e.popStackFrame();
        return e;
    }
    for (var i = 0, l = params.length; i < l; i++) {
        var expectedParam = expectedParams[Math.min(i, expectedLength - 1)],
            paramName = expectedParam.name;
        if (expectedParam.parameterArray) {
            paramName += "[" + (i - expectedLength + 1) + "]";
        }
        else if (!validateParameterCount && (i >= expectedLength)) {
            break;
        }
        e = Function._validateParameter(params[i], expectedParam, paramName);
        if (e) {
            e.popStackFrame();
            return e;
        }
    }
    return null;
}

$type._validateParameterCount = function Function$_validateParameterCount(params, expectedParams, validateParameterCount) {
    var i, error,
        expectedLen = expectedParams.length,
        actualLen = params.length;
    if (actualLen < expectedLen) {
        var minParams = expectedLen;
        for (i = 0; i < expectedLen; i++) {
            var param = expectedParams[i];
            if (param.optional || param.parameterArray) {
                minParams--;
            }
        }        
        if (actualLen < minParams) {
            error = true;
        }
    }
    else if (validateParameterCount && (actualLen > expectedLen)) {
        error = true;      
        for (i = 0; i < expectedLen; i++) {
            if (expectedParams[i].parameterArray) {
                error = false;
                break;
            }
        }  
    }

    if (error) {
        var e = Error.parameterCount();
        e.popStackFrame();
        return e;
    }

    return null;
}

$type._validateParameter = function Function$_validateParameter(param, expectedParam, paramName) {
    var e,
        expectedType = expectedParam.type,
        expectedInteger = !!expectedParam.integer,
        expectedDomElement = !!expectedParam.domElement,
        mayBeNull = !!expectedParam.mayBeNull;

    e = Function._validateParameterType(param, expectedType, expectedInteger, expectedDomElement, mayBeNull, paramName);
    if (e) {
        e.popStackFrame();
        return e;
    }

    var expectedElementType = expectedParam.elementType,
        elementMayBeNull = !!expectedParam.elementMayBeNull;
    if (expectedType === Array && typeof(param) !== "undefined" && param !== null &&
        (expectedElementType || !elementMayBeNull)) {
        var expectedElementInteger = !!expectedParam.elementInteger,
            expectedElementDomElement = !!expectedParam.elementDomElement;
        for (var i=0; i < param.length; i++) {
            var elem = param[i];
            e = Function._validateParameterType(elem, expectedElementType,
                expectedElementInteger, expectedElementDomElement, elementMayBeNull,
                paramName + "[" + i + "]");
            if (e) {
                e.popStackFrame();
                return e;
            }
        }
    }

    return null;
}

$type._validateParameterType = function Function$_validateParameterType(param, expectedType, expectedInteger, expectedDomElement, mayBeNull, paramName) {
    var e, i;

    if (typeof(param) === "undefined" || param === null) {
        if (mayBeNull) {
            return null;
        }
        e = param === null ? Error.argumentNull(paramName) : Error.argumentUndefined(paramName);
        e.popStackFrame();
        return e;
    }

    if (expectedType && expectedType.__enum) {
        if (typeof(param) !== 'number') {
            e = Error.argumentType(paramName, Object.getType(param), expectedType);
            e.popStackFrame();
            return e;
        }
        if ((param % 1) === 0) {
            var values = expectedType.prototype;
            if (!expectedType.__flags || (param === 0)) {
                for (i in values) {
                    if (values[i] === param) return null;
                }
            }
            else {
                var v = param;
                for (i in values) {
                    var vali = values[i];
                    if (vali === 0) continue;
                    if ((vali & param) === vali) {
                        v -= vali;
                    }
                    if (v === 0) return null;
                }
            }
        }
        e = Error.argumentOutOfRange(paramName, param, String.format(Sys.Res.enumInvalidValue, param, expectedType.getName()));
        e.popStackFrame();
        return e;
    }

    if (expectedDomElement && (!Sys._isDomElement(param) || (param.nodeType === 3))) {
        e = Error.argument(paramName, Sys.Res.argumentDomElement);
        e.popStackFrame();
        return e;
    }

    if (expectedType && !Sys._isInstanceOfType(expectedType, param)) {
        e = Error.argumentType(paramName, Object.getType(param), expectedType);
        e.popStackFrame();
        return e;
    }

    if (expectedType === Number && expectedInteger) {
        if ((param % 1) !== 0) {
            e = Error.argumentOutOfRange(paramName, param, Sys.Res.argumentInteger);
            e.popStackFrame();
            return e;
        }
    }

    return null;
}
$type = Error;
$type.__typeName = 'Error';
$type.__class = true;

Sys._errorArgument = function(kind, paramName, message) {
    var name = "Sys.Argument" + kind + "Exception";
    var displayMessage = name + ": " + (message || Sys.Res["argument"+kind]);
    if (paramName) {
        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
    }

    var err = Error.create(displayMessage, { name: name, paramName: paramName });
    err.popStackFrame();
    err.popStackFrame();
    return err;
}

Sys._error = function(kind, message, defaultMessage) {
    var name = "Sys." + kind + "Exception";
    var displayMessage = name + ": " + (message || Sys.Res[defaultMessage]);
    var err = Error.create(displayMessage, {name: name});
    err.popStackFrame();
    err.popStackFrame();
    return err;
}

$type.create = function Error$create(message, errorInfo) {
    /// <summary locid="M:J#Error.create">Use this method to create a new error.</summary>
    /// <param name="message" type="String" optional="true" mayBeNull="true">The error message.</param>
    /// <param name="errorInfo" optional="true" mayBeNull="true">A plain JavaScript object that contains extended information about the error.   The object should have a 'name' field that contains a string that identifies the error   and any additional fields that are necessary to fully describe the error.</param>
    /// <returns type="Error">An Error object.</returns>
    var e = Function._validateParams(arguments, [
        {name: "message", type: String, mayBeNull: true, optional: true},
        {name: "errorInfo", mayBeNull: true, optional: true}
    ]);
    if (e) throw e;

    var err = new Error(message);
    err.message = message;

    if (errorInfo) {
        for (var v in errorInfo) {
            err[v] = errorInfo[v];
        }
    }

    err.popStackFrame();
    return err;
}

$type.argument = function Error$argument(paramName, message) {
    /// <summary locid="M:J#Error.argument">Creates an ArgumentException with a specified error message   and the name of the parameter that caused this exception.</summary>
    /// <param name="paramName" type="String" optional="true" mayBeNull="true">The name of the parameter that caused the exception.</param>
    /// <param name="message" type="String" optional="true" mayBeNull="true">A message that describes the error.</param>
    /// <returns>An Error instance that represents an ArgumentException.</returns>
    var e = Function._validateParams(arguments, [
        {name: "paramName", type: String, mayBeNull: true, optional: true},
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    return Sys._errorArgument("", paramName, message);
}

$type.argumentNull = function Error$argumentNull(paramName, message) {
    /// <summary locid="M:J#Error.argumentNull">Creates an ArgumentNullException with a specified error message   and the name of the parameter that caused this exception.</summary>
    /// <param name="paramName" type="String" optional="true" mayBeNull="true">The name of the parameter that caused the exception.</param>
    /// <param name="message" type="String" optional="true" mayBeNull="true">A message that describes the error.</param>
    /// <returns>An Error instance that represents an ArgumentNullException.</returns>
    var e = Function._validateParams(arguments, [
        {name: "paramName", type: String, mayBeNull: true, optional: true},
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    return Sys._errorArgument("Null", paramName, message);
}

$type.argumentOutOfRange = function Error$argumentOutOfRange(paramName, actualValue, message) {
    /// <summary locid="M:J#Error.argumentOutOfRange">Creates an ArgumentOutOfRangeException with a specified error message   and the name and actual value of the parameter that caused this exception.</summary>
    /// <param name="paramName" type="String" optional="true" mayBeNull="true">The name of the parameter that caused the exception.</param>
    /// <param name="actualValue" optional="true" mayBeNull="true">The actual value of the parameter.</param>
    /// <param name="message" type="String" optional="true" mayBeNull="true">A message that describes the error.</param>
    /// <returns>An Error instance that represents an ArgumentOutOfRangeException.</returns>
    var e = Function._validateParams(arguments, [
        {name: "paramName", type: String, mayBeNull: true, optional: true},
        {name: "actualValue", mayBeNull: true, optional: true},
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;

    var displayMessage = "Sys.ArgumentOutOfRangeException: " + (message || Sys.Res.argumentOutOfRange);
    if (paramName) {
        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
    }

    if (typeof(actualValue) !== "undefined" && actualValue !== null) {
        displayMessage += "\n" + String.format(Sys.Res.actualValue, actualValue);
    }

    var err = Error.create(displayMessage, {
        name: "Sys.ArgumentOutOfRangeException",
        paramName: paramName,
        actualValue: actualValue
    });
    err.popStackFrame();
    return err;
}

$type.argumentType = function Error$argumentType(paramName, actualType, expectedType, message) {
    /// <summary locid="M:J#Error.argumentType">Creates an ArgumentTypeException with a specified error message   and the name, actual type, and expected type of the parameter that   caused this exception.</summary>
    /// <param name="paramName" type="String" optional="true" mayBeNull="true">The name of the parameter that caused the exception.</param>
    /// <param name="actualType" type="Type" optional="true" mayBeNull="true">The actual type of the parameter value.</param>
    /// <param name="expectedType" type="Type" optional="true" mayBeNull="true">The expected type of the parameter value.</param>
    /// <param name="message" type="String" optional="true" mayBeNull="true">A message that describes the error.</param>
    /// <returns>An Error instance that represents an ArgumentTypeException.</returns>
    var e = Function._validateParams(arguments, [
        {name: "paramName", type: String, mayBeNull: true, optional: true},
        {name: "actualType", type: Type, mayBeNull: true, optional: true},
        {name: "expectedType", type: Type, mayBeNull: true, optional: true},
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;

    var displayMessage = "Sys.ArgumentTypeException: ";
    if (message) {
        displayMessage += message;
    }
    else if (actualType && expectedType) {
        displayMessage +=
            String.format(Sys.Res.argumentTypeWithTypes, actualType.getName(), expectedType.getName());
    }
    else {
        displayMessage += Sys.Res.argumentType;
    }

    if (paramName) {
        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
    }

    var err = Error.create(displayMessage, {
        name: "Sys.ArgumentTypeException",
        paramName: paramName,
        actualType: actualType,
        expectedType: expectedType
    });
    err.popStackFrame();
    return err;
}

$type.argumentUndefined = function Error$argumentUndefined(paramName, message) {
    /// <summary locid="M:J#Error.argumentUndefined">Creates an ArgumentUndefinedException with a specified error message   and the name of the parameter that caused this exception.</summary>
    /// <param name="paramName" type="String" optional="true" mayBeNull="true">The name of the parameter that caused the exception.</param>
    /// <param name="message" type="String" optional="true" mayBeNull="true">A message that describes the error.</param>
    /// <returns>An Error instance that represents an ArgumentUndefinedException.</returns>
    var e = Function._validateParams(arguments, [
        {name: "paramName", type: String, mayBeNull: true, optional: true},
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    return Sys._errorArgument("Undefined", paramName, message);
}

$type.format = function Error$format(message) {
    /// <summary locid="M:J#Error.format">Creates a format error.</summary>
    /// <param name="message" type="String" optional="true" mayBeNull="true">The error message.</param>
    /// <returns>An Error object that represents a FormatException.</returns>
    var e = Function._validateParams(arguments, [
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    return Sys._error("Format", message, "format");
}

$type.invalidOperation = function Error$invalidOperation(message) {
    /// <summary locid="M:J#Error.invalidOperation">Creates an invalid operation error.</summary>
    /// <param name="message" type="String" optional="true" mayBeNull="true">The error message.</param>
    /// <returns>An Error instance that represents an InvalidOperationException.</returns>
    var e = Function._validateParams(arguments, [
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    return Sys._error("InvalidOperation", message, "invalidOperation");
}

$type.notImplemented = function Error$notImplemented(message) {
    /// <summary locid="M:J#Error.notImplemented">Creates a not implemented error.</summary>
    /// <param name="message" type="String" optional="true" mayBeNull="true">The error message.</param>
    /// <returns>An Error instance that represents a NotImplementedException.</returns>
    var e = Function._validateParams(arguments, [
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    return Sys._error("NotImplemented", message, "notImplemented");
}

$type.parameterCount = function Error$parameterCount(message) {
    /// <summary locid="M:J#Error.parameterCount">Creates a ParameterCountException with a specified error message.</summary>
    /// <param name="message" type="String" optional="true" mayBeNull="true">A message that describes the error.</param>
    /// <returns>An Error instance that represents a ParameterCountException.</returns>
    var e = Function._validateParams(arguments, [
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    return Sys._error("ParameterCount", message, "parameterCount");
}

$type.prototype.popStackFrame = function Error$popStackFrame() {
    /// <summary locid="M:J#checkParam">Updates the fileName and lineNumber fields based on the next frame in the   stack trace. Call this method whenever an instance of Error is returned   from a function. This makes the fileName and lineNumber reported in the   FireFox console point to the location where the exception was thrown, not   the location where the instance of Error was created.</summary>
    if (arguments.length !== 0) throw Error.parameterCount();


    if (typeof(this.stack) === "undefined" || this.stack === null ||
        typeof(this.fileName) === "undefined" || this.fileName === null ||
        typeof(this.lineNumber) === "undefined" || this.lineNumber === null) {
        return;
    }

    var stackFrames = this.stack.split("\n");

    var currentFrame = stackFrames[0];
    var pattern = this.fileName + ":" + this.lineNumber;
    while(typeof(currentFrame) !== "undefined" &&
          currentFrame !== null &&
          currentFrame.indexOf(pattern) < 0) {
        stackFrames.shift();
        currentFrame = stackFrames[0];
    }

    var nextFrame = stackFrames[1];

    if (typeof(nextFrame) === "undefined" || nextFrame === null) {
        return;
    }

    var nextFrameParts = nextFrame.match(/@(.*):(\d+)$/);
    if (typeof(nextFrameParts) === "undefined" || nextFrameParts === null) {
        return;
    }

    this.fileName = nextFrameParts[1];

    this.lineNumber = parseInt(nextFrameParts[2]);

    stackFrames.shift();
    this.stack = stackFrames.join("\n");
}
$type = Object;
$type.__typeName = 'Object';
$type.__class = true;

$type.getType = function Object$getType(instance) {
    /// <summary locid="M:J#Object.getType"></summary>
    /// <param name="instance">The object for which the type must be returned.</param>
    /// <returns type="Type">The type of the object.</returns>
    var e = Function._validateParams(arguments, [
        {name: "instance"}
    ]);
    if (e) throw e;
    var ctor = instance.constructor;
    if (!ctor || (typeof(ctor) !== "function") || !ctor.__typeName || (ctor.__typeName === 'Object')) {
        return Object;
    }
    return ctor;
}

$type.getTypeName = function Object$getTypeName(instance) {
    /// <summary locid="M:J#Object.getTypeName"></summary>
    /// <param name="instance">The object for which the type name must be returned.</param>
    /// <returns type="String">The name of the type of the object.</returns>
    var e = Function._validateParams(arguments, [
        {name: "instance"}
    ]);
    if (e) throw e;
    return Object.getType(instance).getName();
}
$type = String;
$type.__typeName = 'String';
$type.__class = true;

$prototype = $type.prototype;
$prototype.endsWith = function String$endsWith(suffix) {
    /// <summary locid="M:J#String.endsWith">Determines whether the end of this instance matches the specified string.</summary>
    /// <param name="suffix" type="String">A string to compare to.</param>
    /// <returns type="Boolean">true if suffix matches the end of this instance; otherwise, false.</returns>
    var e = Function._validateParams(arguments, [
        {name: "suffix", type: String}
    ]);
    if (e) throw e;
    return (this.substr(this.length - suffix.length) === suffix);
}

$prototype.startsWith = function String$startsWith(prefix) {
    /// <summary locid="M:J#String.startsWith">Determines whether the beginning of this instance matches the specified string.</summary>
    /// <param name="prefix" type="String">The String to compare.</param>
    /// <returns type="Boolean">true if prefix matches the beginning of this string; otherwise, false.</returns>
    var e = Function._validateParams(arguments, [
        {name: "prefix", type: String}
    ]);
    if (e) throw e;
    return (this.substr(0, prefix.length) === prefix);
}

$prototype.trim = function String$trim() {
    /// <summary locid="M:J#String.trim">Removes all leading and trailing white-space characters from the current String object.</summary>
    /// <returns type="String">The string that remains after all white-space characters are removed from the start and end of the current String object.</returns>
    if (arguments.length !== 0) throw Error.parameterCount();
    return this.replace(/^\s+|\s+$/g, '');
}

$prototype.trimEnd = function String$trimEnd() {
    /// <summary locid="M:J#String.trimEnd">Removes all trailing white spaces from the current String object.</summary>
    /// <returns type="String">The string that remains after all white-space characters are removed from the end of the current String object.</returns>
    if (arguments.length !== 0) throw Error.parameterCount();
    return this.replace(/\s+$/, '');
}

$prototype.trimStart = function String$trimStart() {
    /// <summary locid="M:J#String.trimStart">Removes all leading white spaces from the current String object.</summary>
    /// <returns type="String">The string that remains after all white-space characters are removed from the start of the current String object.</returns>
    if (arguments.length !== 0) throw Error.parameterCount();
    return this.replace(/^\s+/, '');
}

$type.format = function String$format(format, args) {
    /// <summary locid="M:J#String.format">Replaces the format items in a specified String with the text equivalents of the values of   corresponding object instances. The invariant culture will be used to format dates and numbers.</summary>
    /// <param name="format" type="String">A format string.</param>
    /// <param name="args" parameterArray="true" mayBeNull="true">The objects to format.</param>
    /// <returns type="String">A copy of format in which the format items have been replaced by the   string equivalent of the corresponding instances of object arguments.</returns>
    var e = Function._validateParams(arguments, [
        {name: "format", type: String},
        {name: "args", mayBeNull: true, parameterArray: true}
    ]);
    if (e) throw e;
    return String._toFormattedString(false, arguments);
}

$type._toFormattedString = function String$_toFormattedString(useLocale, args) {
    var result = '';
    var format = args[0];

    for (var i=0;;) {
        var open = format.indexOf('{', i);
        var close = format.indexOf('}', i);
        if ((open < 0) && (close < 0)) {
            result += format.slice(i);
            break;
        }
        if ((close > 0) && ((close < open) || (open < 0))) {
            if (format.charAt(close + 1) !== '}') {
                throw Error.argument('format', Sys.Res.stringFormatBraceMismatch);
            }
            result += format.slice(i, close + 1);
            i = close + 2;
            continue;
        }

        result += format.slice(i, open);
        i = open + 1;

        if (format.charAt(i) === '{') {
            result += '{';
            i++;
            continue;
        }

        if (close < 0) throw Error.argument('format', Sys.Res.stringFormatBraceMismatch);


        var brace = format.substring(i, close);
        var colonIndex = brace.indexOf(':');
        var argNumber = parseInt((colonIndex < 0)? brace : brace.substring(0, colonIndex), 10) + 1;
        if (isNaN(argNumber)) throw Error.argument('format', Sys.Res.stringFormatInvalid);
        var argFormat = (colonIndex < 0)? '' : brace.substring(colonIndex + 1);

        var arg = args[argNumber];
        if (typeof(arg) === "undefined" || arg === null) {
            arg = '';
        }

        if (arg.toFormattedString) {
            result += arg.toFormattedString(argFormat);
        }
        else if (useLocale && arg.localeFormat) {
            result += arg.localeFormat(argFormat);
        }
        else if (arg.format) {
            result += arg.format(argFormat);
        }
        else
            result += arg.toString();

        i = close + 1;
    }

    return result;
}
$type = Boolean;
$type.__typeName = 'Boolean';
$type.__class = true;

$type.parse = function Boolean$parse(value) {
    /// <summary locid="M:J#Boolean.parse">Creates a bool from its string representation.</summary>
    /// <param name="value" type="String">"true" or "false".</param>
    /// <returns type="Boolean"></returns>
    var e = Function._validateParams(arguments, [
        {name: "value", type: String}
    ], false);
    if (e) throw e;
    var v = value.trim().toLowerCase(),
        r;
    if (v === 'false') {
        r = false;
    }
    else if (v === 'true') {
        r = true;
    }
    else {
        throw Error.argumentOutOfRange('value', value, Sys.Res.boolTrueOrFalse);
    }
    return r;
}
$type = Date;
$type.__typeName = 'Date';
$type.__class = true;
$type = Number;
$type.__typeName = 'Number';
$type.__class = true;
$type = RegExp;
$type.__typeName = 'RegExp';
$type.__class = true;
if (!window) this.window = this;

window.Type = $type = Function;

$type.__fullyQualifiedIdentifierRegExp = new RegExp("^[^.0-9 \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]([^ \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]*[^. \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\])?$", "i");
$type.__identifierRegExp = new RegExp("^[^.0-9 \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\][^. \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]*$", "i");

$prototype = $type.prototype;
$prototype.callBaseMethod = function Type$callBaseMethod(instance, name, baseArguments) {
    /// <summary locid="M:J#Type.callBaseMethod"></summary>
    /// <param name="instance">The instance for the base method. Usually 'this'.</param>
    /// <param name="name" type="String">The name of the base method.</param>
    /// <param name="baseArguments" type="Array" optional="true" mayBeNull="true" elementMayBeNull="true">The arguments to pass to the base method.</param>
    /// <returns>The return value of the base method.</returns>
    var e = Function._validateParams(arguments, [
        {name: "instance"},
        {name: "name", type: String},
        {name: "baseArguments", type: Array, mayBeNull: true, optional: true, elementMayBeNull: true}
    ]);
    if (e) throw e;
    var baseMethod = Sys._getBaseMethod(this, instance, name);
    if (!baseMethod) throw Error.invalidOperation(String.format(Sys.Res.methodNotFound, name));
    return baseArguments ? baseMethod.apply(instance, baseArguments) : baseMethod.apply(instance);
}

$prototype.getBaseMethod = function Type$getBaseMethod(instance, name) {
    /// <summary locid="M:J#Type.getBaseMethod">Use this method to get the base implementation of a method from the base class.</summary>
    /// <param name="instance">The instance for which the base method is needed. Usually 'this'.</param>
    /// <param name="name" type="String">The name of the method to get.</param>
    /// <returns type="Function" mayBeNull="true">The base method.</returns>
    var e = Function._validateParams(arguments, [
        {name: "instance"},
        {name: "name", type: String}
    ]);
    if (e) throw e;
    return Sys._getBaseMethod(this, instance, name);
}

$prototype.getBaseType = function Type$getBaseType() {
    /// <summary locid="M:J#Type.getBaseType"></summary>
    /// <returns type="Type" mayBeNull="true">The base type.</returns>
    if (arguments.length !== 0) throw Error.parameterCount();
    return (typeof(this.__baseType) === "undefined") ? null : this.__baseType;
}

$prototype.getInterfaces = function Type$getInterfaces() {
    /// <summary locid="M:J#Type.getInterfaces"></summary>
    /// <returns type="Array" elementType="Type" mayBeNull="false" elementMayBeNull="false">A copy of the list of interfaces that the type implements.</returns>
    if (arguments.length !== 0) throw Error.parameterCount();
    var result = [];
    var type = this;
    while(type) {
        var interfaces = type.__interfaces;
        if (interfaces) {
            for (var i = 0, l = interfaces.length; i < l; i++) {
                var interfaceType = interfaces[i];
                if (!Array.contains(result, interfaceType)) {
                    result.push(interfaceType);
                }
            }
        }
        type = type.__baseType;
    }
    return result;
}

$prototype.getName = function Type$getName() {
    /// <summary locid="M:J#Type.getName"></summary>
    /// <returns type="String">The name of the type.</returns>
    if (arguments.length !== 0) throw Error.parameterCount();
    return (typeof(this.__typeName) === "undefined") ? "" : this.__typeName;
}

$prototype.implementsInterface = function Type$implementsInterface(interfaceType) {
    /// <summary locid="M:J#Type.implementsInterface"></summary>
    /// <param name="interfaceType" type="Type">The interface to test.</param>
    /// <returns type="Boolean">True if the type implements the interface.</returns>
    var e = Function._validateParams(arguments, [
        {name: "interfaceType", type: Type}
    ]);
    if (e) throw e;
    this.resolveInheritance();

    var interfaceName = interfaceType.getName();
    var cache = this.__interfaceCache;
    if (cache) {
        var cacheEntry = cache[interfaceName];
        if (typeof(cacheEntry) !== 'undefined') return cacheEntry;
    }
    else {
        cache = this.__interfaceCache = {};
    }

    var baseType = this;
    while (baseType) {
        var interfaces = baseType.__interfaces;
        if (interfaces && Array.indexOf(interfaces, interfaceType) !== -1) {
            return cache[interfaceName] = true;
        }

        baseType = baseType.__baseType;
    }

    return cache[interfaceName] = false;
}

$prototype.inheritsFrom = function Type$inheritsFrom(parentType) {
    /// <summary locid="M:J#Type.inheritsFrom"></summary>
    /// <param name="parentType" type="Type">The type to test.</param>
    /// <returns type="Boolean">True if the type inherits from parentType.</returns>
    var e = Function._validateParams(arguments, [
        {name: "parentType", type: Type}
    ]);
    if (e) throw e;
    this.resolveInheritance();
    return Sys._inheritsFrom(this, parentType);
}

Sys._inheritsFrom = function _inheritsFrom(type, parentType) {
    var ret;
    if (parentType) {
        var baseType = type.__baseType;
        while (baseType) {
            if (baseType === parentType) {
                ret = true;
                break;
            }
            baseType = baseType.__baseType;
        }
    }
    return !!ret;
}

$prototype.initializeBase = function Type$initializeBase(instance, baseArguments) {
    /// <summary locid="M:J#Type.initializeBase">This method initializes the base type in the context   of a given instance object (to keep track of the base type, and to   effectively inherit the object model of the base class, and   initializing members of the base class).   This should be called from the derived class constructor.</summary>
    /// <param name="instance">The object to initialize base types for. Usually 'this'.</param>
    /// <param name="baseArguments" type="Array" optional="true" mayBeNull="true" elementMayBeNull="true">The arguments for the base constructor.</param>
    /// <returns>The instance.</returns>
    var e = Function._validateParams(arguments, [
        {name: "instance"},
        {name: "baseArguments", type: Array, mayBeNull: true, optional: true, elementMayBeNull: true}
    ]);
    if (e) throw e;
    if (!Sys._isInstanceOfType(this, instance)) throw Error.argumentType('instance', Object.getType(instance), this);

    this.resolveInheritance();
    var baseType = this.__baseType;
    if (baseType) {
        baseArguments ? baseType.apply(instance, baseArguments) : baseType.apply(instance);
    }

    return instance;
}

$prototype.isImplementedBy = function Type$isImplementedBy(instance) {
    /// <summary locid="M:J#Type.isImplementedBy"></summary>
    /// <param name="instance" mayBeNull="true">The object on which the interface must be tested.</param>
    /// <returns type="Boolean">True if the instance implements the interface.</returns>
    var e = Function._validateParams(arguments, [
        {name: "instance", mayBeNull: true}
    ]);
    if (e) throw e;
    if (typeof(instance) === "undefined" || instance === null) return false;

    var instanceType = Object.getType(instance);
    return !!(instanceType.implementsInterface && instanceType.implementsInterface(this));
}

$prototype.isInstanceOfType = function Type$isInstanceOfType(instance) {
    /// <summary locid="M:J#Type.isInstanceOfType"></summary>
    /// <param name="instance" mayBeNull="true">The object on which the type must be tested.</param>
    /// <returns type="Boolean">True if the object is an instance of the type or one of its derived types.</returns>
    var e = Function._validateParams(arguments, [
        {name: "instance", mayBeNull: true}
    ]);
    if (e) throw e;
    return Sys._isInstanceOfType(this, instance);
}

$prototype.registerClass = function Type$registerClass(typeName, baseType, interfaceTypes) {
    /// <summary locid="M:J#Type.registerClass">Registers a class (represented by its ctor function), and   optional base type, followed by any number of interfaces.</summary>
    /// <param name="typeName" type="String">The fully-qualified name of the type.</param>
    /// <param name="baseType" type="Type" optional="true" mayBeNull="true">The base type.</param>
    /// <param name="interfaceTypes" parameterArray="true" type="Type">One or several interfaces that the type implements.</param>
    /// <returns type="Type">The registered type.</returns>
    var e = Function._validateParams(arguments, [
        {name: "typeName", type: String},
        {name: "baseType", type: Type, mayBeNull: true, optional: true},
        {name: "interfaceTypes", type: Type, parameterArray: true}
    ]);
    if (e) throw e;
    if (!Type.__fullyQualifiedIdentifierRegExp.test(typeName)) throw Error.argument('typeName', Sys.Res.notATypeName);
    var parsedName;
    try {
        parsedName = eval(typeName);
    }
    catch(e) {
        throw Error.argument('typeName', Sys.Res.argumentTypeName);
    }
    if (parsedName !== this) throw Error.argument('typeName', Sys.Res.badTypeName);
    if (Sys.__registeredTypes[typeName]) throw Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, typeName));

    if ((arguments.length > 1) && (typeof(baseType) === 'undefined')) throw Error.argumentUndefined('baseType');
    var prototype = this.prototype;
    prototype.constructor = this;
    this.__typeName = typeName;
    this.__class = true;
    if (baseType) {
        this.__baseType = baseType;
        this.__basePrototypePending = true;
    }
    Sys.__upperCaseTypes[typeName.toUpperCase()] = this;

    if (interfaceTypes) {
        var interfaces = this.__interfaces = [];
        this.resolveInheritance();
        for (var i = 2, l = arguments.length; i < l; i++) {
            var interfaceType = arguments[i];
            if (!interfaceType.__interface) throw Error.argument('interfaceTypes[' + (i - 2) + ']', Sys.Res.notAnInterface);
            for (var methodName in interfaceType.prototype) {
                var method = interfaceType.prototype[methodName];
                if (!prototype[methodName]) {
                    prototype[methodName] = method;
                }
            }
            interfaces.push(interfaceType);
        }
    }
    Sys.__registeredTypes[typeName] = true;
    return this;
}

Sys.registerComponent = function registerComponent(type, options) {
    /// <summary locid="M:J#Sys.registerComponent">Generates a create() function for the given type using the optional description and parameters for intellisense.</summary>
    /// <param name="type" type="Function">The type to be created.</param>
    /// <param name="options" type="Object" optional="true" mayBeNull="true"></param>
    var e = Function._validateParams(arguments, [
        {name: "type", type: Function},
        {name: "options", type: Object, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    var typeName = type.getName();
    var isControlOrBehavior = Sys.UI && (Sys._inheritsFrom(type, Sys.UI.Control) || Sys._inheritsFrom(type, Sys.UI.Behavior));
    var name = (options && options.name);
    if (!name) {
        name = typeName;
        var i = name.lastIndexOf('.');
        if (i >= 0) {
            name = name.substr(i+1);
            if (name && name.charAt(0) === "_") return;
        }
        name = name.substr(0, 1).toLowerCase() + name.substr(1);
    }
    if (!options) {
        options = {};
    }
    options.name = name;
    options.type = type;
    options.typeName = typeName;
    options._isBehavior = isControlOrBehavior;
    
    options = Sys.components[name] = merge(Sys.components[name], options);

    var fn = Sys._getCreate(options),
        target = isControlOrBehavior ? Sys.ElementSet.prototype : Sys.create;
    target[name] = fn;
}

Sys.registerPlugin = function registerPlugin(pluginInfo) {
    /// <summary locid="M:J#Sys.registerPlugin"></summary>
    /// <param name="pluginInfo" type="Object">An object describing the plugin (name, plugin, dom, global, components)</param>
    var e = Function._validateParams(arguments, [
        {name: "pluginInfo", type: Object}
    ]);
    if (e) throw e;
    var name = pluginInfo.name,
        fnName = pluginInfo.functionName || name;
    Sys.plugins[name] = merge(Sys.plugins[name], pluginInfo);
    var plugin = pluginInfo.plugin,
        sysTarget;
    if (pluginInfo.global) {
        sysTarget = Sys;
    }
    else if (pluginInfo.dom) {
        sysTarget = Sys.ElementSet.prototype;
    }
    else if (pluginInfo.components) {
        sysTarget = Sys.ComponentSet.prototype;
    }
    if (sysTarget) {
        sysTarget[fnName] = Sys._getCreate(pluginInfo, true);
    }
}

Sys._createComp = function _createComp(component, defaults, args) {
    var type = component.type,
        parameters = component.parameters || [],
        isBehavior = component._isBehavior,
        target = isBehavior ? args[0] : null;
    var props = args[parameters.length] || {};
    props = merge({}, defaults, props);
    foreach(parameters, function(parameter, i) {
        var name = typeof(parameter) === "string" ? parameter : parameter.name,
            value = args[i];
        if (typeof(value) !== "undefined" && typeof(props[name]) === "undefined") {
            props[name] = value;
        }
    });
    if (this instanceof Sys.ElementSet) {
        var components = [];
        this.each(function() {
            components.push(Sys._create(type, props, this));
        });
        return new Sys.ComponentSet(this, components);
    }
    else {
        return Sys._create(type, props);
    }
}

Sys._create = function _create(type, properties, target) {
    var targetType = typeof(target);
    if (targetType === "string") {
        target = Sys.get(target);
    }
    var instance;
    Sys._2Pass(function() {
        instance = targetType === "undefined" ? new type() : new type(target);
        callIf(instance, "beginUpdate");
        Sys._set(instance, properties);
        var componentType = Sys.Component;
        if (!componentType || !componentType._register(instance)) {
            callIf(instance, "endUpdate") || callIf(instance, "initialize");
        }
    });    
    return instance;
}

$prototype.registerInterface = function Type$registerInterface(typeName) {
    /// <summary locid="M:J#Type.registerInterface">Registers an interface (represented by its ctor function).</summary>
    /// <param name="typeName" type="String">The fully-qualified name of the interface.</param>
    /// <returns type="Type">The registered interface.</returns>
    var e = Function._validateParams(arguments, [
        {name: "typeName", type: String}
    ]);
    if (e) throw e;
    if (!Type.__fullyQualifiedIdentifierRegExp.test(typeName)) throw Error.argument('typeName', Sys.Res.notATypeName);
    var parsedName;
    try {
        parsedName = eval(typeName);
    }
    catch(e) {
        throw Error.argument('typeName', Sys.Res.argumentTypeName);
    }
    if (parsedName !== this) throw Error.argument('typeName', Sys.Res.badTypeName);
    if (Sys.__registeredTypes[typeName]) throw Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, typeName));
    Sys.__upperCaseTypes[typeName.toUpperCase()] = this;

    this.prototype.constructor = this;
    this.__typeName = typeName;
    this.__interface = true;
    Sys.__registeredTypes[typeName] = true;

    return this;
}

$prototype.resolveInheritance = function Type$resolveInheritance() {
    /// <summary locid="M:J#Type.resolveInheritance">This method is called on the ctor function instance. It does three things: 1. It stores __baseType as a property of the constructor function 2. It copies members from the baseType's prototype into the  prototype associated with the type represented by this ctor,  if this type itself doesn't have the same member in its prototype,  i.e., it doesn't override the method. 3. It recurses up the inheritance chain to do the same for the base type.  Note that this logic runs only once per type, because it  is based on true value for __basePrototypePending property  off the ctor function.</summary>
    if (arguments.length !== 0) throw Error.parameterCount();

    if (this.__basePrototypePending) {
        var baseType = this.__baseType;

        baseType.resolveInheritance();
        var basePrototype = baseType.prototype,
            thisPrototype = this.prototype;
        for (var memberName in basePrototype) {
            thisPrototype[memberName] = thisPrototype[memberName] || basePrototype[memberName];
        }
        delete this.__basePrototypePending;
    }
}

$type.getRootNamespaces = function Type$getRootNamespaces() {
    /// <summary locid="M:J#Type.getRootNamespaces"></summary>
    /// <returns type="Array">Returns an array containing references to all the root namespaces</returns>
    if (arguments.length !== 0) throw Error.parameterCount();
    return Array.clone(Sys.__rootNamespaces);
}

$type.isClass = function Type$isClass(type) {
    /// <summary locid="M:J#Type.isClass"></summary>
    /// <param name="type" mayBeNull="true">The type to test.</param>
    /// <returns type="Boolean">True if the type is a class.</returns>
    var e = Function._validateParams(arguments, [
        {name: "type", mayBeNull: true}
    ]);
    if (e) throw e;
    return !!(type && type.__class);
}

$type.isInterface = function Type$isInterface(type) {
    /// <summary locid="M:J#Type.isInterface"></summary>
    /// <param name="type" mayBeNull="true">The type to test.</param>
    /// <returns type="Boolean">True if the type is an interface.</returns>
    var e = Function._validateParams(arguments, [
        {name: "type", mayBeNull: true}
    ]);
    if (e) throw e;
    return !!(type && type.__interface);
}

$type.isNamespace = function Type$isNamespace(object) {
    /// <summary locid="M:J#Type.isNamespace"></summary>
    /// <param name="object" mayBeNull="true">The type to test.</param>
    /// <returns type="Boolean">True if the object is a namespace.</returns>
    var e = Function._validateParams(arguments, [
        {name: "object", mayBeNull: true}
    ]);
    if (e) throw e;
    return !!(object && object.__namespace);
}

$type.parse = function Type$parse(typeName, ns) {
    /// <summary locid="M:J#Type.parse">If a namespace is specified, the type name is searched for on this namespace in a  case-insensitive way.  If no namespace is specified, the fully-qualified, case-sensitive type name must be specified.</summary>
    /// <param name="typeName" type="String" mayBeNull="true">The name of the type.</param>
    /// <param name="ns" optional="true" mayBeNull="true">The namespace where to look for the type.</param>
    /// <returns type="Type" mayBeNull="true">The type or null.</returns>
    var e = Function._validateParams(arguments, [
        {name: "typeName", type: String, mayBeNull: true},
        {name: "ns", mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    var fn;
    if (ns) {
        fn = Sys.__upperCaseTypes[ns.getName().toUpperCase() + '.' + typeName.toUpperCase()];
        return fn || null;
    }
    if (!typeName) return null;
    var htClasses = Type.__htClasses;
    if (!htClasses) {
        Type.__htClasses = htClasses = {};
    }
    fn = htClasses[typeName];
    if (!fn) {
        fn = window.eval(typeName);
        if (typeof(fn) !== 'function') throw Error.argument('typeName', Sys.Res.notATypeName);
        htClasses[typeName] = fn;
    }
    return fn;
}

$type.registerNamespace = function Type$registerNamespace(namespacePath) {
    /// <summary locid="M:J#Type.registerNamespace">Creates a namespace.</summary>
    /// <param name="namespacePath" type="String">The full path of the namespace.</param>
    var e = Function._validateParams(arguments, [
        {name: "namespacePath", type: String}
    ]);
    if (e) throw e;
    Type._registerNamespace(namespacePath);
}
$type._registerNamespace = function Type$_registerNamespace(namespacePath) {
    if (!Type.__fullyQualifiedIdentifierRegExp.test(namespacePath)) throw Error.argument('namespacePath', Sys.Res.invalidNameSpace);
    var rootObject = window;
    var namespaceParts = namespacePath.split('.');

    for (var i = 0, l = namespaceParts.length; i < l; i++) {
        var currentPart = namespaceParts[i];
        var ns = rootObject[currentPart];
        var nsType = typeof(ns);
        if ((nsType !== "undefined") && (ns !== null)) {
            if (nsType === "function") {
                throw Error.invalidOperation(String.format(Sys.Res.namespaceContainsClass, namespaceParts.splice(0, i + 1).join('.')));
            }
            if ((typeof(ns) !== "object") || (ns instanceof Array)) {
                throw Error.invalidOperation(String.format(Sys.Res.namespaceContainsNonObject, namespaceParts.splice(0, i + 1).join('.')));
            }
        }
        if (!ns) {
            ns = rootObject[currentPart] = {};
        }
        if (!ns.__namespace) {
            if (!i && (namespacePath !== "Sys")) {
                Sys.__rootNamespaces.push(ns);
            }
            ns.__namespace = true;
            ns.__typeName = namespaceParts.slice(0, i + 1).join('.');
            var parsedName;
            try {
                parsedName = eval(ns.__typeName);
            }
            catch(e) {
                parsedName = null;
            }
            if (parsedName !== ns) {
                delete rootObject[currentPart];
                throw Error.argument('namespacePath', Sys.Res.invalidNameSpace);
            }
            ns.getName = function ns$getName() {return this.__typeName;}
        }
        rootObject = ns;
    }
}

$type._checkDependency = function Type$_checkDependency(dependency, featureName) {
    var scripts = Type._registerScript._scripts, isDependent = (scripts ? (!!scripts[dependency]) : false);
    if ((typeof(featureName) !== 'undefined') && !isDependent) {
        throw Error.invalidOperation(String.format(Sys.Res.requiredScriptReferenceNotIncluded, 
        featureName, dependency));
    }
    return isDependent;
}

$type._registerScript = function Type$_registerScript(scriptName, dependencies) {
    var scripts = Type._registerScript._scripts;
    if (!scripts) {
        Type._registerScript._scripts = scripts = {};
    }
    if (scripts[scriptName]) {
        throw Error.invalidOperation(String.format(Sys.Res.scriptAlreadyLoaded, scriptName));
    }
    scripts[scriptName] = true;
    if (dependencies) {
        for (var i = 0, l = dependencies.length; i < l; i++) {
            var dependency = dependencies[i];
            if (!Type._checkDependency(dependency)) {
                throw Error.invalidOperation(String.format(Sys.Res.scriptDependencyNotFound, scriptName, dependency));
            }
        }
    }
}

$type._registerNamespace("Sys");
Sys.__upperCaseTypes = {};
Sys.__rootNamespaces = [Sys];
Sys.__registeredTypes = {};

Sys._isInstanceOfType = function _isInstanceOfType(type, instance) {
    if (typeof(instance) === "undefined" || instance === null) return false;
    if (instance instanceof type) return true;
    var instanceType = Object.getType(instance);
    return !!(instanceType === type) ||
           (instanceType.inheritsFrom && instanceType.inheritsFrom(type)) ||
           (instanceType.implementsInterface && instanceType.implementsInterface(type));
}

Sys._getBaseMethod = function _getBaseMethod(type, instance, name) {
    if (!Sys._isInstanceOfType(type, instance)) throw Error.argumentType('instance', Object.getType(instance), type);
    var baseType = type.getBaseType();
    if (baseType) {
        var baseMethod = baseType.prototype[name];
        return (baseMethod instanceof Function) ? baseMethod : null;
    }
    return null;
}

Sys._isDomElement = function _isDomElement(obj) {
    var val = false;
    if (typeof (obj.nodeType) !== 'number') {
        var doc = obj.ownerDocument || obj.document || obj;
        if (doc != obj) {
            var w = doc.defaultView || doc.parentWindow;
            val = (w != obj);
        }
        else {
            val = !doc.body || !Sys._isDomElement(doc.body);
        }
    }
    return !val;
}

var isBrowser = Sys._isBrowser = function _isBrowser(name) {
    return Sys.Browser.agent === Sys.Browser[name];
}


foreach(Sys._ns, $type._registerNamespace);
delete Sys._ns;
$type = Array;
$type.__typeName = 'Array';
$type.__class = true;

var indexOf = Sys._indexOf = function _indexOf(array, item, start) {
    if (typeof(item) === "undefined") return -1;
    var length = array.length;
    if (length !== 0) {
        start = start - 0;
        if (isNaN(start)) {
            start = 0;
        }
        else {
            if (isFinite(start)) {
                start = start - (start % 1);
            }
            if (start < 0) {
                start = Math.max(0, length + start);
            }
        }

        for (var i = start; i < length; i++) {
            if (array[i] === item) {
                return i;
            }
        }
    }
    return -1;
}

$type.add = $type.enqueue = function Array$enqueue(array, item) {
    /// <summary locid="M:J#Array.enqueue">Adds an element at the end of the array.</summary>
    /// <param name="array" type="Array" elementMayBeNull="true">The array to add to.</param>
    /// <param name="item" mayBeNull="true">The object to add.</param>
    var e = Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true},
        {name: "item", mayBeNull: true}
    ]);
    if (e) throw e;
    array[array.length] = item;
}

$type.addRange = function Array$addRange(array, items) {
    /// <summary locid="M:J#Array.addRange">Adds a range of items at the end of the array.</summary>
    /// <param name="array" type="Array" elementMayBeNull="true">The array to add to.</param>
    /// <param name="items" type="Array" elementMayBeNull="true">The array of items to append.</param>
    var e = Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true},
        {name: "items", type: Array, elementMayBeNull: true}
    ]);
    if (e) throw e;

    array.push.apply(array, items);
}

$type.clear = function Array$clear(array) {
    /// <summary locid="M:J#Array.clear">Clears the array of its elements.</summary>
    /// <param name="array" type="Array" elementMayBeNull="true">The array to clear.</param>
    var e = Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true}
    ]);
    if (e) throw e;
    array.length = 0;
}

$type.clone = function Array$clone(array) {
    /// <summary locid="M:J#Array.clone">Makes a clone of the array.</summary>
    /// <param name="array" type="Array" elementMayBeNull="true">The array to clone.</param>
    /// <returns type="Array" elementMayBeNull="true">A clone of the array.</returns>
    var e = Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true}
    ]);
    if (e) throw e;
    return array.length === 1 ? [array[0]] : Array.apply(null, array);
}

$type.contains = function Array$contains(array, item) {
    /// <summary locid="M:J#Array.contains">Use this method to determine if an array contains the specified element.</summary>
    /// <param name="array" type="Array" elementMayBeNull="true">The array to look into.</param>
    /// <param name="item" mayBeNull="true">The object to find in the array.</param>
    /// <returns type="Boolean">True if the object was found.</returns>
    var e = Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true},
        {name: "item", mayBeNull: true}
    ]);
    if (e) throw e;
    return (indexOf(array, item) >= 0);
}

$type.dequeue = function Array$dequeue(array) {
    /// <summary locid="M:J#Array.dequeue"></summary>
    /// <param name="array" type="Array" elementMayBeNull="true">Removes and returns the object at the beginning of the array.</param>
    /// <returns mayBeNull="true">The object that is removed from the beginning of the array.</returns>
    var e = Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true}
    ]);
    if (e) throw e;
    return array.shift();
}

$type.forEach = function Array$forEach(array, method, instance) {
    /// <summary locid="M:J#Array.forEach">Calls the specified function on each element of the array.</summary>
    /// <param name="array" type="Array" elementMayBeNull="true">The array to enumerate.</param>
    /// <param name="method" type="Function">The method to call.   The method should take the array element, the index of the element and   the array itself as its parameters.</param>
    /// <param name="instance" optional="true" mayBeNull="true">The context under which the function must run (i.e. what 'this' means inside the function).</param>
    var e = Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true},
        {name: "method", type: Function},
        {name: "instance", mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    for (var i = 0, l = array.length; i < l; i++) {
        var elt = array[i];
        if (typeof(elt) !== 'undefined') method.call(instance, elt, i, array);
    }
}

$type.indexOf = function Array$indexOf(array, item, start) {
    /// <summary locid="M:J#Array.indexOf">Finds the index in the array of the provided item.</summary>
    /// <param name="array" type="Array" elementMayBeNull="true">The array to look into.</param>
    /// <param name="item" optional="true" mayBeNull="true">The object to find.</param>
    /// <param name="start" optional="true" mayBeNull="true">The index where the search begins.</param>
    /// <returns type="Number">The index of the item or -1 if it wasn't found.</returns>
    var e = Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true},
        {name: "item", mayBeNull: true, optional: true},
        {name: "start", mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    return indexOf(array, item, start);
}

$type.insert = function Array$insert(array, index, item) {
    /// <summary locid="M:J#Array.insert">Inserts an item at the specified index.</summary>
    /// <param name="array" type="Array" elementMayBeNull="true">The array to insert into.</param>
    /// <param name="index" mayBeNull="true">The index where the item will be inserted.</param>
    /// <param name="item" mayBeNull="true">The item to insert.</param>
    var e = Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true},
        {name: "index", mayBeNull: true},
        {name: "item", mayBeNull: true}
    ]);
    if (e) throw e;
    array.splice(index, 0, item);
}

$type.parse = function Array$parse(value) {
    /// <summary locid="M:J#Array.parse">Creates an array from a string representation of the form "[elt1, elt2, elt3]".</summary>
    /// <param name="value" type="String" mayBeNull="true">The string representation of the array.</param>
    /// <returns type="Array" elementMayBeNull="true">An array built from the string representation.</returns>
    var e = Function._validateParams(arguments, [
        {name: "value", type: String, mayBeNull: true}
    ]);
    if (e) throw e;
    var v = value ? window.eval("(" + value + ")") : [];
    if (!Array.isInstanceOfType(v)) throw Error.argument('value', Sys.Res.arrayParseBadFormat);
    return v;
}

$type.remove = function Array$remove(array, item) {
    /// <summary locid="M:J#Array.remove">Removes the first occurence of an item from the array.</summary>
    /// <param name="array" type="Array" elementMayBeNull="true">The array to remove from.</param>
    /// <param name="item" mayBeNull="true">The item to remove.</param>
    /// <returns type="Boolean">True if the item was found.</returns>
    var e = Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true},
        {name: "item", mayBeNull: true}
    ]);
    if (e) throw e;
    var index = indexOf(array, item);
    if (index >= 0) {
        array.splice(index, 1);
    }
    return (index >= 0);
}

$type.removeAt = function Array$removeAt(array, index) {
    /// <summary locid="M:J#Array.removeAt">Removes the item at the specified index from the array.</summary>
    /// <param name="array" type="Array" elementMayBeNull="true">The array to remove from.</param>
    /// <param name="index" mayBeNull="true">The index of the item to remove.</param>
    var e = Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true},
        {name: "index", mayBeNull: true}
    ]);
    if (e) throw e;
    array.splice(index, 1);
}



Type._registerScript("MicrosoftAjaxCore.js");

$type = Sys.IDisposable = function IDisposable() {
    throw Error.notImplemented();
}
$type.prototype = {
    dispose: function IDisposable$dispose() {
        throw Error.notImplemented();
    }
}
$type.registerInterface('Sys.IDisposable');
$type = Sys.StringBuilder = function StringBuilder(initialText) {
    /// <summary locid="M:J#Sys.StringBuilder.#ctor">Provides an optimized mechanism to concatenate a sequence of strings.</summary>
    /// <param name="initialText" optional="true" mayBeNull="true">The initial text for the StringBuilder.</param>
    var e = Function._validateParams(arguments, [
        {name: "initialText", mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    this._parts = (typeof(initialText) !== 'undefined' && initialText !== null && initialText !== '') ?
        [initialText.toString()] : [];
    this._value = {};
    this._len = 0;
}

$type.prototype = {
    append: function StringBuilder$append(text) {
        /// <summary locid="M:J#Sys.StringBuilder.append">Appends a new string at the end of the StringBuilder.</summary>
        /// <param name="text" mayBeNull="true">The string to append.</param>
        /// <returns type="Sys.StringBuilder"></returns>
        var e = Function._validateParams(arguments, [
            {name: "text", mayBeNull: true}
        ]);
        if (e) throw e;
        this._parts.push(text);
        return this;
    },

    appendLine: function StringBuilder$appendLine(text) {
        /// <summary locid="M:J#Sys.StringBuilder.appendLine">Appends a new string as a line of text at the end of the StringBuilder.</summary>
        /// <param name="text" optional="true" mayBeNull="true">The string to append.</param>
        /// <returns type="Sys.StringBuilder"></returns>
        var e = Function._validateParams(arguments, [
            {name: "text", mayBeNull: true, optional: true}
        ]);
        if (e) throw e;
        this._parts.push(
            ((typeof(text) === 'undefined') || (text === null) || (text === '')) ?
            '\r\n' : (text + '\r\n'));
        return this;
    },

    clear: function StringBuilder$clear() {
        /// <summary locid="M:J#Sys.StringBuilder.clear">Clears the StringBuilder of its current contents.</summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        this._parts = [];
        this._value = {};
        this._len = 0;
    },

    isEmpty: function StringBuilder$isEmpty() {
        /// <summary locid="M:J#Sys.StringBuilder.isEmpty">Use this method to determine if the StringBuilder has contents.</summary>
        /// <returns type="Boolean">True if the StringBuilder has any contents.</returns>
        if (arguments.length !== 0) throw Error.parameterCount();
        return (!this._parts.length || !this.toString());
    },

    toString: function StringBuilder$toString(separator) {
        /// <summary locid="M:J#Sys.StringBuilder.toString">Creates a string from the contents of the StringBuilder.</summary>
        /// <param name="separator" type="String" optional="true" mayBeNull="true">The separator to insert between the elements of the StringBuilder.</param>
        /// <returns type="String">The string built from the StringBuilder.</returns>
        var e = Function._validateParams(arguments, [
            {name: "separator", type: String, mayBeNull: true, optional: true}
        ]);
        if (e) throw e;
        separator = separator || '';
        var parts = this._parts;
        if (this._len !== parts.length) {
            this._value = {};
            this._len = parts.length;
        }
        var val = this._value;
        var ret = val[separator];
        if (typeof(ret) === 'undefined') {
            if (separator !== '') {
                for (var i = 0; i < parts.length;) {
                    var part = parts[i];
                    if ((typeof(part) === 'undefined') || (part === '') || (part === null)) {
                        parts.splice(i, 1);
                    }
                    else {
                        i++;
                    }
                }
            }
            val[separator] = ret = parts.join(separator);
        }
        return ret;
    }
}
$type.registerClass('Sys.StringBuilder');

var agent = navigator.userAgent,
    browser = Sys.Browser = {
        InternetExplorer: {},
        Firefox: {},
        Safari: {},
        Opera: {},
        agent: null,
        hasDebuggerStatement: false,
        name: navigator.appName,
        version: parseFloat(navigator.appVersion),
        documentMode: 0 };

if (agent.indexOf(' MSIE ') > -1) {
    browser.agent = browser.InternetExplorer;
    browser.version = parseFloat(agent.match(/MSIE (\d+\.\d+)/)[1]);
    if ((browser.version > 7) && (document.documentMode > 6)) {
        browser.documentMode = document.documentMode;    
    }
    browser.hasDebuggerStatement = true;
}
else if (agent.indexOf(' Firefox/') > -1) {
    browser.agent = browser.Firefox;
    browser.version = parseFloat(agent.match(/ Firefox\/(\d+\.\d+)/)[1]);
    browser.name = 'Firefox';
    browser.hasDebuggerStatement = true;
}
else if (agent.indexOf(' AppleWebKit/') > -1) {
    browser.agent = browser.Safari;
    browser.version = parseFloat(agent.match(/ AppleWebKit\/(\d+(\.\d+)?)/)[1]);
    browser.name = 'Safari';
}
else if (agent.indexOf('Opera/') > -1) {
    browser.agent = browser.Opera;
}



$type = Sys.EventArgs = function EventArgs() {
    /// <summary locid="M:J#Sys.EventArgs.#ctor">EventArgs is the base class for classes containing event data.</summary>
    if (arguments.length !== 0) throw Error.parameterCount();
}
$type.registerClass('Sys.EventArgs');

Sys.EventArgs.Empty = new Sys.EventArgs();
$type = Sys.CancelEventArgs = function CancelEventArgs() {
    /// <summary locid="M:J#Sys.CancelEventArgs.#ctor">CancelEventArgs is the base class for classes containing event data, which can be used to cancel the event.</summary>
    if (arguments.length !== 0) throw Error.parameterCount();
    Sys.CancelEventArgs.initializeBase(this);

    this._cancel = false;
}
$type.prototype = {
    get_cancel: function CancelEventArgs$get_cancel() {
        /// <value type="Boolean" locid="P:J#Sys.CancelEventArgs.cancel"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._cancel;
    },
    set_cancel: function CancelEventArgs$set_cancel(value) {
        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
        if (e) throw e;
        this._cancel = value;
    }
}
$type.registerClass('Sys.CancelEventArgs', Sys.EventArgs);
$type = Sys.EventHandlerList = function EventHandlerList() {
    /// <summary locid="M:J#Sys.EventHandlerList.#ctor">The EventHandlerList class contains a dictionary of multicast events.</summary>
    if (arguments.length !== 0) throw Error.parameterCount();
    this._list = {};
}

$type.prototype = {
    _addHandler: function EventHandlerList$_addHandler(id, handler) {
        Array.add(this._getEvent(id, true), handler);
    },
    addHandler: function EventHandlerList$addHandler(id, handler) {
        /// <summary locid="M:J#Sys.EventHandlerList.addHandler">The addHandler method adds a handler to the event identified by id.</summary>
        /// <param name="id" type="String">The identifier for the event.</param>
        /// <param name="handler" type="Function">The handler to add to the event.</param>
        var e = Function._validateParams(arguments, [
            {name: "id", type: String},
            {name: "handler", type: Function}
        ]);
        if (e) throw e;
        this._addHandler(id, handler);
    },
    _removeHandler: function EventHandlerList$_removeHandler(id, handler) {
        var evt = this._getEvent(id);
        if (!evt) return;
        Array.remove(evt, handler);
    },
    _removeHandlers: function EventHandlerList$_removeHandlers(id) {
        if (!id) {
            this._list = {};
        }
        else {
            var evt = this._getEvent(id);
            if (!evt) return;
            evt.length = 0;
        }
    },
    removeHandler: function EventHandlerList$removeHandler(id, handler) {
        /// <summary locid="M:J#Sys.EventHandlerList.removeHandler">The removeHandler method removes a handler to the event identified by id.</summary>
        /// <param name="id" type="String">The identifier for the event.</param>
        /// <param name="handler" type="Function">The handler to remove from the event.</param>
        var e = Function._validateParams(arguments, [
            {name: "id", type: String},
            {name: "handler", type: Function}
        ]);
        if (e) throw e;
        this._removeHandler(id, handler);
    },
    getHandler: function EventHandlerList$getHandler(id) {
        /// <summary locid="M:J#Sys.EventHandlerList.getHandler">The getHandler method returns a single function that will call all   handlers sequentially for the specified event.</summary>
        /// <param name="id" type="String">The identifier for the event.</param>
        /// <returns type="Function">A function that will call each handler sequentially.</returns>
        var e = Function._validateParams(arguments, [
            {name: "id", type: String}
        ]);
        if (e) throw e;
        var evt = this._getEvent(id);
        if (!evt || !evt.length) return null;
        evt = Array.clone(evt);
        return function(source, args) {
            for (var i = 0, l = evt.length; i < l; i++) {
                evt[i](source, args);
            }
        };
    },
    _getEvent: function EventHandlerList$_getEvent(id, create) {
        var e = this._list[id];
        if (!e) {
            if (!create) return null;
            this._list[id] = e = [];
        }
        return e;
    }
}
$type.registerClass('Sys.EventHandlerList');

Type.registerNamespace('Sys.UI');

$type = Sys._Debug = function _Debug() {
    /// <summary locid="M:J#Sys.Debug.#ctor">Provides a set of methods that help debug your code.</summary>
    /// <field name="isDebug" type="Boolean" locid="F:J#Sys.Debug.isDebug"></field>
    if (arguments.length !== 0) throw Error.parameterCount();
}
$type.prototype = {
    _appendConsole: function _Debug$_appendConsole(text) {
        if ((typeof(Debug) !== 'undefined') && Debug.writeln) {
            Debug.writeln(text);
        }
        if (window.console && window.console.log) {
            window.console.log(text);
        }
        if (window.opera) {
            window.opera.postError(text);
        }
        if (window.debugService) {
            window.debugService.trace(text);
        }
    },

    _getTrace: function() {
        var traceElement = Sys.get('#TraceConsole');
        return (traceElement && (traceElement.tagName.toUpperCase() === 'TEXTAREA')) ? traceElement : null;
    },

    _appendTrace: function _Debug$_appendTrace(text) {
        var traceElement = this._getTrace();
        if (traceElement) {
            traceElement.value += text + '\n';
        }
    },

    assert: function _Debug$assert(condition, message, displayCaller) {
        /// <summary locid="M:J#Sys.Debug.assert">Checks for a condition, displays a message and prompts the user to break   into the debugger if the condition is false.</summary>
        /// <param name="condition" type="Boolean">true to prevent a message being displayed; otherwise, false.</param>
        /// <param name="message" type="String" optional="true" mayBeNull="true">A message to display.</param>
        /// <param name="displayCaller" type="Boolean" optional="true" mayBeNull="true">True if the function calling assert should be displayed in the message.</param>
        var e = Function._validateParams(arguments, [
            {name: "condition", type: Boolean},
            {name: "message", type: String, mayBeNull: true, optional: true},
            {name: "displayCaller", type: Boolean, mayBeNull: true, optional: true}
        ]);
        if (e) throw e;
        if (!condition) {
            message = (displayCaller && this.assert.caller) ?
                String.format(Sys.Res.assertFailedCaller, message, this.assert.caller) :
                String.format(Sys.Res.assertFailed, message);

            if (confirm(String.format(Sys.Res.breakIntoDebugger, message))) {
                this.fail(message);
            }
        }
    },

    clearTrace: function _Debug$clearTrace() {
        /// <summary locid="M:J#Sys.Debug.clearTrace"></summary>
        if (arguments.length !== 0) throw Error.parameterCount();
        var traceElement = this._getTrace();
        if (traceElement) {
            traceElement.value = '';
        }
    },

    fail: function _Debug$fail(message) {
        /// <summary locid="M:J#Sys.Debug.fail">Displays a message in the debugger's output window and breaks into the debugger.</summary>
        /// <param name="message" type="String" mayBeNull="true">A message to display.</param>
        var e = Function._validateParams(arguments, [
            {name: "message", type: String, mayBeNull: true}
        ]);
        if (e) throw e;
        this._appendConsole(message);

        if (Sys.Browser.hasDebuggerStatement) {
            window.eval('debugger');
        }
    },

    trace: function _Debug$trace(text) {
        /// <summary locid="M:J#Sys.Debug.trace">Appends a text line to the debugger console and the TraceConsole textarea element if available.</summary>
        /// <param name="text">Text for trace.</param>
        var e = Function._validateParams(arguments, [
            {name: "text"}
        ]);
        if (e) throw e;
        this._appendConsole(text);
        this._appendTrace(text);
    },

    traceDump: function _Debug$traceDump(object, name) {
        /// <summary locid="M:J#Sys.Debug.traceDump">Dumps an object to the debugger console and the TraceConsole textarea element if available.</summary>
        /// <param name="object" mayBeNull="true">Object for trace dump.</param>
        /// <param name="name" type="String" mayBeNull="true" optional="true">Object name.</param>
        var e = Function._validateParams(arguments, [
            {name: "object", mayBeNull: true},
            {name: "name", type: String, mayBeNull: true, optional: true}
        ]);
        if (e) throw e;
        this._traceDump(object, name, true);
    },

    _traceDump: function _Debug$_traceDump(object, name, recursive, indentationPadding, loopArray) {
        name = name || 'traceDump';
        indentationPadding = indentationPadding || '';
        var prefix = indentationPadding + name + ": ";
        if (object === null) {
            this.trace(prefix + 'null');
            return;
        }
        switch(typeof(object)) {
            case 'undefined':
                this.trace(prefix + 'Undefined');
                break;
            case 'number': case 'string': case 'boolean':
                this.trace(prefix + object);
                break;
            default:
                if (Date.isInstanceOfType(object) || RegExp.isInstanceOfType(object)) {
                    this.trace(prefix + object.toString());
                    break;
                }
                if (!loopArray) {
                    loopArray = [];
                }
                else if (Array.contains(loopArray, object)) {
                    this.trace(prefix + '...');
                    return;
                }
                loopArray.push(object);

                if ((object == window) || (object === document) ||
                    (window.HTMLElement && (object instanceof HTMLElement)) ||
                    (typeof(object.nodeName) === 'string')) {
                    var tag = object.tagName || 'DomElement';
                    if (object.id) {
                        tag += ' - ' + object.id;
                    }
                    this.trace(indentationPadding + name + ' {' +  tag + '}');
                }
                else {
                    var typeName = Object.getTypeName(object);
                    this.trace(indentationPadding + name + (typeof(typeName) === 'string' ? ' {' + typeName + '}' : ''));
                    if ((indentationPadding === '') || recursive) {
                        indentationPadding += "    ";
                        var i, length, properties, p, v;
                        if (object instanceof Array) {
                            length = object.length;
                            for (i = 0; i < length; i++) {
                                this._traceDump(object[i], '[' + i + ']', recursive, indentationPadding, loopArray);
                            }
                        }
                        else {
                            for (p in object) {
                                v = object[p];
                                if (typeof(v) !== "function") {
                                    this._traceDump(v, p, recursive, indentationPadding, loopArray);
                                }
                            }
                        }
                    }
                }
                Array.remove(loopArray, object);
        }
    }
}
$type.registerClass('Sys._Debug');

$type = Sys.Debug = new Sys._Debug();
$type.isDebug = true;
function Sys$Enum$parse(value, ignoreCase) {
    /// <summary locid="M:J#Sys.Enum.parse">Converts the string representation of the name or numeric value of one or more enumerated   constants to an equivalent enumerated object.</summary>
    /// <param name="value" type="String">A string containing the name or value to convert.</param>
    /// <param name="ignoreCase" type="Boolean" optional="true" mayBeNull="true">If true, the parsing will be done case-insensitively.  If omitted, the parsing is done case-sensitively.</param>
    /// <returns>An object of type enumType whose value is represented by value.</returns>
    var e = Function._validateParams(arguments, [
        {name: "value", type: String},
        {name: "ignoreCase", type: Boolean, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    var values, parsed, val;
    if (ignoreCase) {
        values = this.__lowerCaseValues;
        if (!values) {
            this.__lowerCaseValues = values = {};
            var prototype = this.prototype;
            for (var name in prototype) {
                values[name.toLowerCase()] = prototype[name];
            }
        }
    }
    else {
        values = this.prototype;
    }
    function throwError(v) {
        if (typeof(parsed) !== 'number') throw Error.argument('value', String.format(Sys.Res.enumInvalidValue, v, this.__typeName));
    }
    if (!this.__flags) {
        val = (ignoreCase ? value.toLowerCase() : value);
        parsed = values[val.trim()];
        if (typeof(parsed) !== 'number') throwError.call(this, value);
        return parsed;
    }
    else {
        var parts = (ignoreCase ? value.toLowerCase() : value).split(',');
        var v = 0;

        for (var i = parts.length - 1; i >= 0; i--) {
            var part = parts[i].trim();
            parsed = values[part];
            if (typeof(parsed) !== 'number') throwError.call(this, value.split(',')[i].trim());
            v |= parsed;
        }
        return v;
    }
}

function Sys$Enum$toString(value) {
    /// <summary locid="M:J#Sys.Enum.toString">Converts the value of an enum instance to its equivalent string representation.</summary>
    /// <param name="value" optional="true" mayBeNull="true">The value of the enum instance for which the string representation must be constructed.</param>
    /// <returns type="String">The string representation of "value".</returns>
    var e = Function._validateParams(arguments, [
        {name: "value", mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    if ((typeof(value) === 'undefined') || (value === null)) return this.__string;
    if ((typeof(value) != 'number') || ((value % 1) !== 0)) throw Error.argumentType('value', Object.getType(value), this);
    var values = this.prototype;
    var i;
    if (!this.__flags || (value === 0)) {
        for (i in values) {
            if (values[i] === value) {
                return i;
            }
        }
    }
    else {
        var sorted = this.__sortedValues;
        if (!sorted) {
            sorted = [];
            for (i in values) {
                sorted.push({key: i, value: values[i]});
            }
            sorted.sort(function(a, b) {
                return a.value - b.value;
            });
            this.__sortedValues = sorted;
        }
        var parts = [];
        var v = value;
        for (i = sorted.length - 1; i >= 0; i--) {
            var kvp = sorted[i];
            var vali = kvp.value;
            if (vali === 0) continue;
            if ((vali & value) === vali) {
                parts.push(kvp.key);
                v -= vali;
                if (v === 0) break;
            }
        }
        if (parts.length && v === 0) return parts.reverse().join(', ');
    }
    throw Error.argumentOutOfRange('value', value, String.format(Sys.Res.enumInvalidValue, value, this.__typeName));
}

$type = Type;

$type.prototype.registerEnum = function Type$registerEnum(name, flags) {
    /// <summary locid="M:J#Sys.UI.LineType.#ctor">Registers an enum type.</summary>
    /// <param name="name" type="String">The fully-qualified name of the enum.</param>
    /// <param name="flags" type="Boolean" optional="true" mayBeNull="true">True if the enum is a flags collection.</param>
    var e = Function._validateParams(arguments, [
        {name: "name", type: String},
        {name: "flags", type: Boolean, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    if (!Type.__fullyQualifiedIdentifierRegExp.test(name)) throw Error.argument('name', Sys.Res.notATypeName);
    var parsedName;
    try {
        parsedName = eval(name);
    }
    catch(e) {
        throw Error.argument('name', Sys.Res.argumentTypeName);
    }
    if (parsedName !== this) throw Error.argument('name', Sys.Res.badTypeName);
    if (Sys.__registeredTypes[name]) throw Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, name));
    for (var j in this.prototype) {
        var val = this.prototype[j];
        if (!Type.__identifierRegExp.test(j)) throw Error.invalidOperation(String.format(Sys.Res.enumInvalidValueName, j));
        if (typeof(val) !== 'number' || (val % 1) !== 0) throw Error.invalidOperation(Sys.Res.enumValueNotInteger);
        if (typeof(this[j]) !== 'undefined') throw Error.invalidOperation(String.format(Sys.Res.enumReservedName, j));
    }
    Sys.__upperCaseTypes[name.toUpperCase()] = this;

    for (var i in this.prototype) {
        this[i] = this.prototype[i];
    }
    this.__typeName = name;
    this.parse = Sys$Enum$parse;
    this.__string = this.toString();
    this.toString = Sys$Enum$toString;
    this.__flags = flags;
    this.__enum = true;
    Sys.__registeredTypes[name] = true;
}

$type.isEnum = function Type$isEnum(type) {
    /// <summary locid="M:J#Type.isEnum"></summary>
    /// <param name="type" mayBeNull="true">The type to test.</param>
    /// <returns type="Boolean">True if the type is an enum.</returns>
    var e = Function._validateParams(arguments, [
        {name: "type", mayBeNull: true}
    ]);
    if (e) throw e;
    return !!(type && type.__enum);
}

$type.isFlags = function Type$isFlags(type) {
    /// <summary locid="M:J#Type.isFlags"></summary>
    /// <param name="type" mayBeNull="true">The type to test.</param>
    /// <returns type="Boolean">True if the type is a set of flags.</returns>
    var e = Function._validateParams(arguments, [
        {name: "type", mayBeNull: true}
    ]);
    if (e) throw e;
    return !!(type && type.__flags);
}

$type = Sys.CollectionChange = function CollectionChange(action, newItems, newStartingIndex, oldItems, oldStartingIndex) {
    /// <summary locid="M:J#Sys.CollectionChange.#ctor">Describes a change in a collection.</summary>
    /// <param name="action" type="Sys.NotifyCollectionChangedAction"></param>
    /// <param name="newItems" optional="true" mayBeNull="true">The items that were added when action is add or replace.</param>
    /// <param name="newStartingIndex" type="Number" integer="true" optional="true" mayBeNull="true">The index where new items have been inserted.</param>
    /// <param name="oldItems" optional="true" mayBeNull="true">The items that were removed when action is remove or replace.</param>
    /// <param name="oldStartingIndex" type="Number" integer="true" optional="true" mayBeNull="true">The index where old items have been removed.</param>
    /// <field name="action" type="Sys.NotifyCollectionChangedAction" locid="F:J#Sys.CollectionChange.action"></field>
    /// <field name="newItems" type="Array" mayBeNull="true" elementMayBeNull="true" locid="F:J#Sys.CollectionChange.newItems">The items that were added when action is add.</field>
    /// <field name="newStartingIndex" type="Number" integer="true" locid="F:J#Sys.CollectionChange.newStartingIndex">The index where new items have been inserted.</field>
    /// <field name="oldItems" type="Array" mayBeNull="true" elementMayBeNull="true" locid="F:J#Sys.CollectionChange.oldItems">The items that were removed when action is remove.</field>
    /// <field name="oldStartingIndex" type="Number" integer="true" locid="F:J#Sys.CollectionChange.oldStartingIndex">The index where old items have been removed.</field>
    var e = Function._validateParams(arguments, [
        {name: "action", type: Sys.NotifyCollectionChangedAction},
        {name: "newItems", mayBeNull: true, optional: true},
        {name: "newStartingIndex", type: Number, mayBeNull: true, integer: true, optional: true},
        {name: "oldItems", mayBeNull: true, optional: true},
        {name: "oldStartingIndex", type: Number, mayBeNull: true, integer: true, optional: true}
    ]);
    if (e) throw e;
    this.action = action;
    if (newItems) {
        if (!(newItems instanceof Array)) {
            newItems = [newItems];
        }
    }
    this.newItems = newItems || null;
    if (typeof newStartingIndex !== "number") {
        newStartingIndex = -1;
    }
    this.newStartingIndex = newStartingIndex;
    if (oldItems) {
        if (!(oldItems instanceof Array)) {
            oldItems = [oldItems];
        }
    }
    this.oldItems = oldItems || null;
    if (typeof oldStartingIndex !== "number") {
        oldStartingIndex = -1;
    }
    this.oldStartingIndex = oldStartingIndex;
}
$type.registerClass("Sys.CollectionChange");
$type = Sys.NotifyCollectionChangedAction = function NotifyCollectionChangedAction() {
    /// <summary locid="M:J#Sys.NotifyCollectionChangedAction.#ctor">Describes how a collection has changed.</summary>
    /// <field name="add" type="Number" integer="true" static="true" locid="F:J#Sys.NotifyCollectionChangedAction.add"></field>
    /// <field name="remove" type="Number" integer="true" static="true" locid="F:J#Sys.NotifyCollectionChangedAction.remove"></field>
    /// <field name="reset" type="Number" integer="true" static="true" locid="F:J#Sys.NotifyCollectionChangedAction.reset"></field>
    if (arguments.length !== 0) throw Error.parameterCount();
    throw Error.notImplemented();
}
$type.prototype = {
    add: 0,
    remove: 1,
    reset: 2
}
$type.registerEnum('Sys.NotifyCollectionChangedAction');
$type = Sys.NotifyCollectionChangedEventArgs = function NotifyCollectionChangedEventArgs(changes) {
    /// <summary locid="M:J#Sys.NotifyCollectionChangedEventArgs.#ctor">Describes how the collection was changed.</summary>
    /// <param name="changes" type="Array" elementType="Sys.CollectionChange">A list of changes that were performed on the collection since the last event.</param>
    var e = Function._validateParams(arguments, [
        {name: "changes", type: Array, elementType: Sys.CollectionChange}
    ]);
    if (e) throw e;
    this._changes = changes;
    Sys.NotifyCollectionChangedEventArgs.initializeBase(this);
}
$type.prototype = {
    get_changes: function NotifyCollectionChangedEventArgs$get_changes() {
        /// <value type="Array" elementType="Sys.CollectionChange" locid="P:J#Sys.NotifyCollectionChangedEventArgs.changes"></value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._changes || [];
    }
}
$type.registerClass("Sys.NotifyCollectionChangedEventArgs", Sys.EventArgs);

$type = Sys.INotifyPropertyChange = function INotifyPropertyChange() {
    /// <summary locid="M:J#Sys.INotifyPropertyChange.#ctor">Implement this interface to become a provider of property change notifications.</summary>
    if (arguments.length !== 0) throw Error.parameterCount();
    throw Error.notImplemented();
}
$type.prototype = {
    add_propertyChanged: function INotifyPropertyChange$add_propertyChanged(handler) {
    /// <summary locid="E:J#Sys.INotifyPropertyChange.propertyChanged"></summary>
    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
    if (e) throw e;
        throw Error.notImplemented();
    },
    remove_propertyChanged: function INotifyPropertyChange$remove_propertyChanged(handler) {
    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
    if (e) throw e;
        throw Error.notImplemented();
    }
}
$type.registerInterface('Sys.INotifyPropertyChange');
$type = Sys.PropertyChangedEventArgs = function PropertyChangedEventArgs(propertyName) {
    /// <summary locid="M:J#Sys.PropertyChangedEventArgs.#ctor">Describes property changes.</summary>
    /// <param name="propertyName" type="String">The name of the property that changed.</param>
    var e = Function._validateParams(arguments, [
        {name: "propertyName", type: String}
    ]);
    if (e) throw e;
    Sys.PropertyChangedEventArgs.initializeBase(this);
    this._propertyName = propertyName;
}
 $type.prototype = {
    get_propertyName: function PropertyChangedEventArgs$get_propertyName() {
        /// <value type="String" locid="P:J#Sys.PropertyChangedEventArgs.propertyName">The name of the property that changed.</value>
        if (arguments.length !== 0) throw Error.parameterCount();
        return this._propertyName;
    }
}
$type.registerClass('Sys.PropertyChangedEventArgs', Sys.EventArgs);
$type = Sys.Observer = function Observer() {
    throw Error.invalidOperation();
}
$type.registerClass("Sys.Observer");

$type.makeObservable = function Observer$makeObservable(target) {
    /// <summary locid="M:J#Sys.Observer.makeObservable">Makes an object directly observable by adding observable methods to it.</summary>
    /// <param name="target" mayBeNull="false">The object, array, or DOM element to make observable.</param>
    /// <returns>The observable object.</returns>
    var e = Function._validateParams(arguments, [
        {name: "target"}
    ]);
    if (e) throw e;
    var isArray = target instanceof Array,
        o = Sys.Observer;
    Sys.Observer._ensureObservable(target);
    if (target.setValue === o._observeMethods.setValue) return target;
    o._addMethods(target, o._observeMethods);
    if (isArray) {
        o._addMethods(target, o._arrayMethods);
    }
    return target;
}

$type._ensureObservable = function Observer$_ensureObservable(target) {
    var type = typeof target;
    if ((type === "string") || (type === "number") || (type === "boolean") || (type === "date")) {
        throw Error.invalidOperation(String.format(Sys.Res.notObservable, type));
    }
}
$type._addMethods = function Observer$_addMethods(target, methods) {
    for (var m in methods) {
        if (target[m] && (target[m] !== methods[m])) {
            throw Error.invalidOperation(String.format(Sys.Res.observableConflict, m));
        }
        target[m] = methods[m];
    }
}
$type._addEventHandler = function Observer$_addEventHandler(target, eventName, handler) {
    Sys.Observer._getContext(target, true).events._addHandler(eventName, handler);
}
$type.addEventHandler = function Observer$addEventHandler(target, eventName, handler) {
    /// <summary locid="M:J#Sys.Observer.addEventHandler">Adds an observable event handler to the target.</summary>
    /// <param name="target"></param>
    /// <param name="eventName" type="String"></param>
    /// <param name="handler" type="Function"></param>
    var e = Function._validateParams(arguments, [
        {name: "target"},
        {name: "eventName", type: String},
        {name: "handler", type: Function}
    ]);
    if (e) throw e;
    Sys.Observer._ensureObservable(target);
    Sys.Observer._addEventHandler(target, eventName, handler);
}
$type._removeEventHandler = function Observer$_removeEventHandler(target, eventName, handler) {
    Sys.Observer._getContext(target, true).events._removeHandler(eventName, handler);
}
$type.removeEventHandler = function Observer$removeEventHandler(target, eventName, handler) {
    /// <summary locid="M:J#Sys.Observer.removeEventHandler">Removes an observable event handler from the target.</summary>
    /// <param name="target"></param>
    /// <param name="eventName" type="String"></param>
    /// <param name="handler" type="Function"></param>
    var e = Function._validateParams(arguments, [
        {name: "target"},
        {name: "eventName", type: String},
        {name: "handler", type: Function}
    ]);
    if (e) throw e;
    Sys.Observer._ensureObservable(target);
    Sys.Observer._removeEventHandler(target, eventName, handler);
}
$type.clearEventHandlers = function Observer$clearEventHandlers(target, eventName) {
    /// <summary locid="M:J#Sys.Observer.clearEventHandlers">Removes all observable event handlers from the target.</summary>
    /// <param name="target"></param>
    /// <param name="eventName" type="String" mayBeNull="true" optional="true">If not given, handlers for all events are removed.</param>
    var e = Function._validateParams(arguments, [
        {name: "target"},
        {name: "eventName", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    Sys.Observer._ensureObservable(target);
    Sys.Observer._getContext(target, true).events._removeHandlers(eventName);
}
$type.raiseEvent = function Observer$raiseEvent(target, eventName, eventArgs) {
    /// <summary locid="M:J#Sys.Observer.raiseEvent">Raises an observable event on the target.</summary>
    /// <param name="target"></param>
    /// <param name="eventName" type="String"></param>
    /// <param name="eventArgs" optional="true" mayBeNull="true"></param>
    var e = Function._validateParams(arguments, [
        {name: "target"},
        {name: "eventName", type: String},
        {name: "eventArgs", mayBeNull: true, optional: true}
    ]);
    if (e) throw e;
    Sys.Observer._ensureObservable(target);
    var ctx = Sys.Observer._getContext(target);
    if (!ctx) return;
    var handler = ctx.events.getHandler(eventName);
    if (handler) {
        handler(target, eventArgs || Sys.EventArgs.Empty);
    }
}
$type.addPropertyChanged = function Observer$addPropertyChanged(target, handler) {
    /// <summary locid="M:J#Sys.Observer.addPropertyChanged">Adds a propertyChanged event handler to the target.</summary>
    /// <param name="target" mayBeNull="false">The object to observe.</param>
    /// <param name="handler" type="Function">The event handler.</param>
    var e = Function._validateParams(arguments, [
        {name: "target"},
        {name: "handler", type: Function}
    ]);
    if (e) throw e;
    Sys.Observer._ensureObservable(target);
    Sys.Observer._addEventHandler(target, "propertyChanged", handler);
}
$type.removePropertyChanged = function Observer$removePropertyChanged(target, handler) {
    /// <summary locid="M:J#Sys.Observer.removePropertyChanged">Removes a propertyChanged event handler from the target.</summary>
    /// <param name="target" mayBeNull="false">The object to observe.</param>
    /// <param name="handler" type="Function">The event handler.</param>
    var e = Function._validateParams(arguments, [
        {name: "target"},
        {name: "handler", type: Function}
    ]);
    if (e) throw e;
    Sys.Observer._ensureObservable(target);
    Sys.Observer._removeEventHandler(target, "propertyChanged", handler);
}
$type.beginUpdate = function Observer$beginUpdate(target) {
    /// <summary locid="M:J#Sys.Observer.beginUpdate"></summary>
    /// <param name="target" mayBeNull="false"></param>
    var e = Function._validateParams(arguments, [
        {name: "target"}
    ]);
    if (e) throw e;
    Sys.Observer._ensureObservable(target);
    Sys.Observer._getContext(target, true).updating = true;
}
$type.endUpdate = function Observer$endUpdate(target) {
    /// <summary locid="M:J#Sys.Observer.endUpdate"></summary>
    /// <param name="target" mayBeNull="false"></param>
    var e = Function._validateParams(arguments, [
        {name: "target"}
    ]);
    if (e) throw e;
    Sys.Observer._ensureObservable(target);
    var ctx = Sys.Observer._getContext(target);
    if (!ctx || !ctx.updating) return;
    ctx.updating = false;
    var dirty = ctx.dirty;
    ctx.dirty = false;
    if (dirty) {
        if (target instanceof Array) {
            var changes = ctx.changes;
            ctx.changes = null;
            Sys.Observer.raiseCollectionChanged(target, changes);
        }
        Sys.Observer.raisePropertyChanged(target, "");
    }
}
$type.isUpdating = function Observer$isUpdating(target) {
    /// <summary locid="M:J#Sys.Observer.isUpdating"></summary>
    /// <param name="target" mayBeNull="false"></param>
    /// <returns type="Boolean"></returns>
    var e = Function._validateParams(arguments, [
        {name: "target"}
    ]);
    if (e) throw e;
    Sys.Observer._ensureObservable(target);
    var ctx = Sys.Observer._getContext(target);
    return ctx ? ctx.updating : false;
}
$type._setValue = function Observer$_setValue(target, propertyName, value) {
    var getter, setter, mainTarget = target, path = propertyName.split('.');
    for (var i = 0, l = (path.length - 1); i < l ; i++) {
        var name = path[i];
        getter = target["get_" + name]; 
        if (typeof (getter) === "function") {
            target = getter.call(target);
        }
        else {
            target = target[name];
        }
        var type = typeof (target);
        if ((target === null) || (type === "undefined")) {
            throw Error.invalidOperation(String.format(Sys.Res.nullReferenceInPath, propertyName));
        }
    }    
    var currentValue, lastPath = path[l];
    getter = target["get_" + lastPath];
    if (typeof(getter) === 'function') {
        currentValue = getter.call(target);
    }
    else {
        currentValue = target[lastPath];
    }
    callIf(target, "set_" + lastPath, value) || (target[lastPath] = value);
    if (currentValue !== value) {
        var ctx = Sys.Observer._getContext(mainTarget);
        if (ctx && ctx.updating) {
            ctx.dirty = true;
            return;
        };
        Sys.Observer.raisePropertyChanged(mainTarget, path[0]);
    }
}
$type.setValue = function Observer$setValue(target, propertyName, value) {
    /// <summary locid="M:J#Sys.Observer.setValue">Sets a property or field on the target in an observable manner.</summary>
    /// <param name="target" mayBeNull="false">The object to set a property on.</param>
    /// <param name="propertyName" type="String">The name of the property to field to set.</param>
    /// <param name="value" mayBeNull="true">The value to set.</param>
    var e = Function._validateParams(arguments, [
        {name: "target"},
        {name: "propertyName", type: String},
        {name: "value", mayBeNull: true}
    ]);
    if (e) throw e;
    Sys.Observer._ensureObservable(target);
    Sys.Observer._setValue(target, propertyName, value);
}
$type.raisePropertyChanged = function Observer$raisePropertyChanged(target, propertyName) {
    /// <summary locid="M:J#Sys.Observer.raisePropertyChanged">Raises a change notification event.</summary>
    /// <param name="target" mayBeNull="false">The object to raise the event on.</param>
    /// <param name="propertyName" type="String">The name of the property that changed.</param>
    Sys.Observer.raiseEvent(target, "propertyChanged", new Sys.PropertyChangedEventArgs(propertyName));
}

$type.addCollectionChanged = function Observer$addCollectionChanged(target, handler) {
    /// <summary locid="M:J#Sys.Observer.addCollectionChanged"></summary>
    /// <param name="target" type="Array" elementMayBeNull="true"></param>
    /// <param name="handler" type="Function"></param>
    var e = Function._validateParams(arguments, [
        {name: "target", type: Array, elementMayBeNull: true},
        {name: "handler", type: Function}
    ]);
    if (e) throw e;
    Sys.Observer._addEventHandler(target, "collectionChanged", handler);
}
$type.removeCollectionChanged = function Observer$removeCollectionChanged(target, handler) {
    /// <summary locid="M:J#Sys.Observer.removeCollectionChanged"></summary>
    /// <param name="target" type="Array" elementMayBeNull="true"></param>
    /// <param name="handler" type="Function"></param>
    var e = Function._validateParams(arguments, [
        {name: "target", type: Array, elementMayBeNull: true},
        {name: "handler", type: Function}
    ]);
    if (e) throw e;
    Sys.Observer._removeEventHandler(target, "collectionChanged", handler);
}
$type._collectionChange = function Observer$_collectionChange(target, change) {
    var ctx = this._getContext(target);
    if (ctx && ctx.updating) {
        ctx.dirty = true;
        var changes = ctx.changes;
        if (!changes) {
            ctx.changes = changes = [change];
        }
        else {
            changes.push(change);
        }
    }
    else {
        this.raiseCollectionChanged(target, [change]);
        this.raisePropertyChanged(target, 'length');
    }
}
$type.add = function Observer$add(target, item) {
    /// <summary locid="M:J#Sys.Observer.add">Adds an item to the collection in an observable manner.</summary>
    /// <param name="target" type="Array" elementMayBeNull="true">The array to add to.</param>
    /// <param name="item" mayBeNull="true">The item to add.</param>
    var e = Function._validateParams(arguments, [
        {name: "target", type: Array, elementMayBeNull: true},
        {name: "item", mayBeNull: true}
    ]);
    if (e) throw e;
    var change = new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.add, [item], target.length);
    Array.add(target, item);
    Sys.Observer._collectionChange(target, change);
}
$type.addRange = function Observer$addRange(target, items) {
    /// <summary locid="M:J#Sys.Observer.addRange">Adds items to the collection in an observable manner.</summary>
    /// <param name="target" type="Array" elementMayBeNull="true">The array to add to.</param>
    /// <param name="items" type="Array" elementMayBeNull="true">The array of items to add.</param>
    var e = Function._validateParams(arguments, [
        {name: "target", type: Array, elementMayBeNull: true},
        {name: "items", type: Array, elementMayBeNull: true}
    ]);
    if (e) throw e;
    var change = new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.add, items, target.length);
    Array.addRange(target, items);
    Sys.Observer._collectionChange(target, change);
}
$type.clear = function Observer$clear(target) {
    /// <summary locid="M:J#Sys.Observer.clear">Clears the array of its elements in an observable manner.</summary>
    /// <param name="target" type="Array" elementMayBeNull="true">The array to clear.</param>
    var e = Function._validateParams(arguments, [
        {name: "target", type: Array, elementMayBeNull: true}
    ]);
    if (e) throw e;
    var oldItems = Array.clone(target);
    Array.clear(target);
    Sys.Observer._collectionChange(target, new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.reset, null, -1, oldItems, 0));
}
$type.insert = function Observer$insert(target, index, item) {
    /// <summary locid="M:J#Sys.Observer.insert">Inserts an item at the specified index in an observable manner.</summary>
    /// <param name="target" type="Array" elementMayBeNull="true">The array to insert into.</param>
    /// <param name="index" type="Number" integer="true">The index where the item will be inserted.</param>
    /// <param name="item" mayBeNull="true">The item to insert.</param>
    var e = Function._validateParams(arguments, [
        {name: "target", type: Array, elementMayBeNull: true},
        {name: "index", type: Number, integer: true},
        {name: "item", mayBeNull: true}
    ]);
    if (e) throw e;
    Array.insert(target, index, item);
    Sys.Observer._collectionChange(target, new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.add, [item], index));
}
$type.remove = function Observer$remove(target, item) {
    /// <summary locid="M:J#Sys.Observer.remove">Removes the first occurence of an item from the array in an observable manner.</summary>
    /// <param name="target" type="Array" elementMayBeNull="true">The array to remove from.</param>
    /// <param name="item" mayBeNull="true">The item to remove.</param>
    /// <returns type="Boolean">True if the item was found.</returns>
    var e = Function._validateParams(arguments, [
        {name: "target", type: Array, elementMayBeNull: true},
        {name: "item", mayBeNull: true}
    ]);
    if (e) throw e;
    var index = Array.indexOf(target, item);
    if (index !== -1) {
        Array.remove(target, item);
        Sys.Observer._collectionChange(target, new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.remove, null, -1, [item], index));
        return true;
    }
    return false;
}
$type.removeAt = function Observer$removeAt(target, index) {
    /// <summary locid="M:J#Sys.Observer.removeAt">Removes the item at the specified index from the array in an observable manner.</summary>
    /// <param name="target" type="Array" elementMayBeNull="true">The array to remove from.</param>
    /// <param name="index" type="Number" integer="true">The index of the item to remove.</param>
    var e = Function._validateParams(arguments, [
        {name: "target", type: Array, elementMayBeNull: true},
        {name: "index", type: Number, integer: true}
    ]);
    if (e) throw e;
    if ((index > -1) && (index < target.length)) {
        var item = target[index];
        Array.removeAt(target, index);
        Sys.Observer._collectionChange(target, new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.remove, null, -1, [item], index));
    }
}
$type.raiseCollectionChanged = function Observer$raiseCollectionChanged(target, changes) {
    /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged">Raises the collectionChanged event.</summary>
    /// <param name="target">The collection to raise the event on.</param>
    /// <param name="changes" type="Array" elementType="Sys.CollectionChange">A list of changes that were performed on the collection since the last event.</param>
    Sys.Observer.raiseEvent(target, "collectionChanged", new Sys.NotifyCollectionChangedEventArgs(changes));
}

$type._observeMethods = {
    add_propertyChanged: function(handler) {
        Sys.Observer._addEventHandler(this, "propertyChanged", handler);
    },
    remove_propertyChanged: function(handler) {
        Sys.Observer._removeEventHandler(this, "propertyChanged", handler);
    },
    addEventHandler: function(eventName, handler) {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged">Adds an observable event handler.</summary>
        /// <param name="eventName" type="String"></param>
        /// <param name="handler" type="Function"></param>
        var e = Function._validateParams(arguments, [
            {name: "eventName", type: String},
            {name: "handler", type: Function}
        ]);
        if (e) throw e;
        Sys.Observer._addEventHandler(this, eventName, handler);
    },
    removeEventHandler: function(eventName, handler) {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged">Removes an observable event handler.</summary>
        /// <param name="eventName" type="String"></param>
        /// <param name="handler" type="Function"></param>
        var e = Function._validateParams(arguments, [
            {name: "eventName", type: String},
            {name: "handler", type: Function}
        ]);
        if (e) throw e;
        Sys.Observer._removeEventHandler(this, eventName, handler);
    },
    clearEventHandlers: function(eventName) {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged">Removes all observable event handlers from the target.</summary>
        /// <param name="target"></param>
        /// <param name="eventName" type="String" mayBeNull="true" optional="true">If not given, handlers for all events are removed.</param>
        var e = Function._validateParams(arguments, [
            {name: "target"},
            {name: "eventName", type: String, mayBeNull: true, optional: true}
        ]);
        if (e) throw e;
        Sys.Observer._getContext(this, true).events._removeHandlers(eventName);
    },
    get_isUpdating: function() {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged"></summary>
        /// <returns type="Boolean"></returns>
        return Sys.Observer.isUpdating(this);
    },
    beginUpdate: function() {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged"></summary>
        Sys.Observer.beginUpdate(this);
    },
    endUpdate: function() {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged"></summary>
        Sys.Observer.endUpdate(this);
    },
    setValue: function(name, value) {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged">Sets a property or field on the target in an observable manner.</summary>
        /// <param name="name" type="String">The name of the property to field to set.</param>
        /// <param name="value" mayBeNull="true">The value to set.</param>
        var e = Function._validateParams(arguments, [
            {name: "name", type: String},
            {name: "value", mayBeNull: true}
        ]);
        if (e) throw e;
        Sys.Observer._setValue(this, name, value);
    },
    raiseEvent: function(eventName, eventArgs) {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged">Raises an observable event.</summary>
        /// <param name="eventName" type="String"></param>
        /// <param name="eventArgs" optional="true" mayBeNull="true"></param>
        Sys.Observer.raiseEvent(this, eventName, eventArgs||null);
    },
    raisePropertyChanged: function(name) {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged">Raises a change notification event.</summary>
        /// <param name="name" type="String">The name of the property that changed.</param>
        Sys.Observer.raiseEvent(this, "propertyChanged", new Sys.PropertyChangedEventArgs(name));
    }
}
$type._arrayMethods = {
    add_collectionChanged: function(handler) {
        Sys.Observer._addEventHandler(this, "collectionChanged", handler);
    },
    remove_collectionChanged: function(handler) {
        Sys.Observer._removeEventHandler(this, "collectionChanged", handler);
    },
    add: function(item) {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged">Adds an item to the collection in an observable manner.</summary>
        /// <param name="item" mayBeNull="true">The item to add.</param>
        Sys.Observer.add(this, item);
    },
    addRange: function(items) {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged">Adds items to the collection in an observable manner.</summary>
        /// <param name="items" type="Array" elementMayBeNull="true">The array of items to add.</param>
        Sys.Observer.addRange(this, items);
    },
    clear: function() {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged">Clears the array of its elements in an observable manner.</summary>
        Sys.Observer.clear(this);
    },
    insert: function(index, item) { 
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged">Inserts an item at the specified index in an observable manner.</summary>
        /// <param name="index" type="Number" integer="true">The index where the item will be inserted.</param>
        /// <param name="item" mayBeNull="true">The item to insert.</param>
        Sys.Observer.insert(this, index, item);
    },
    remove: function(item) {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged">Removes the first occurence of an item from the array in an observable manner.</summary>
        /// <param name="item" mayBeNull="true">The item to remove.</param>
        /// <returns type="Boolean">True if the item was found.</returns>
        return Sys.Observer.remove(this, item);
    },
    removeAt: function(index) {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged">Removes the item at the specified index from the array in an observable manner.</summary>
        /// <param name="index" type="Number" integer="true">The index of the item to remove.</param>
        Sys.Observer.removeAt(this, index);
    },
    raiseCollectionChanged: function(changes) {
        /// <summary locid="M:J#Sys.Observer.raiseCollectionChanged">Raises the collectionChanged event.</summary>
        /// <param name="changes" type="Array" elementType="Sys.CollectionChange">A list of changes that were performed on the collection since the last event.</param>
        Sys.Observer.raiseEvent(this, "collectionChanged", new Sys.NotifyCollectionChangedEventArgs(changes));
    }
}
$type._getContext = function Observer$_getContext(obj, create) {
    var ctx = obj._observerContext;
    if (ctx) return ctx();
    if (create) {
        return (obj._observerContext = this._createContext())();
    }
    return null;
}
$type._createContext = function Observer$_createContext() {
    var ctx = {
        events: new Sys.EventHandlerList()
    };
    return function() {
        return ctx;
    }
}

Type.registerNamespace("Sys.Services");
var ns = Sys.Services;
var service = "Service",
    role = "Role",
    auth = "Authentication",
    profile = "Profile";
function setPath(path) {
    this._path = path;
}
ns[auth+service] = {
    set_path: setPath,
    _setAuthenticated: function(auth) {
        this._auth = auth;
    }
};
ns["_" + auth + service] = {};

ns[profile + service] = { set_path: setPath };
ns["_" + profile + service] = {};
ns.ProfileGroup = function ns$ProfileGroup(properties) {
    this._propertygroup = properties;
}

ns[role + service] = { set_path: setPath };
ns["_" + role + service] = {};



Sys._domLoaded();
}

if (Sys.loader) {
	Sys.loader.registerScript("Core", null, execute);
}
else {
	execute();
}

})(window, window.Sys);

�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.Selector=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.Selector.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.Selector.prototype={};Sys.Extended.UI.HTMLEditor.ToolbarButton.Selector.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.Selector",Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModePopupImageButton);\	Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.SelectButton = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.SelectButton.initializeBase(this, [element]);
    
    this._onclick_option$delegate = Function.createDelegate(this, this._onclick_option);
    this._onchange$delegate = Function.createDelegate(this, this._onchange);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.SelectButton.prototype = {
    
    initialize : function() {
        var nodeId = this.get_element().id;
        Sys.Extended.UI.HTMLEditor.ToolbarButton.SelectButton.callBaseMethod(this, "initialize");
        this._select =  $get(nodeId+"_select");
        
        $addHandler(this._select, "change", this._onchange$delegate);
        for(var i=0; i < this._select.options.length; i++) {
            var option = this._select.options[i];
            $addHandler(option, "click", this._onclick_option$delegate);
        }
    },
    
    dispose : function() {
        for(var i=0; i < this._select.options.length; i++) {
            var option = this._select.options[i];
            $removeHandler(option, "click", this._onclick_option$delegate);
        }

        $removeHandler(this._select, "change", this._onchange$delegate);
        Sys.Extended.UI.HTMLEditor.ToolbarButton.SelectButton.callBaseMethod(this, "dispose");
    },
    
    isImage : function() {
        return false;
    },
    
    
    callMethod : function(select,e) {
        return true;
    },
    
    _onclick_option : function(e) {
        if (!this.isEnable()) {
            return false;
        }
        var option = e.target;
        option.parentNode.value=option.value;
        Sys.Extended.UI.HTMLEditor._stopEvent(e);
        if(!Sys.Extended.UI.HTMLEditor.isSafari) return false;
        this.callMethod(option.parentNode,e);
        return true;
    },
    
    _onchange : function(e) {
        if (!this.isEnable()) {
            return false;
        }
        var select = e.target;
        Sys.Extended.UI.HTMLEditor._stopEvent(e);
        this.callMethod(select,e);
        return true;
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.SelectButton.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.SelectButton", Sys.Extended.UI.HTMLEditor.ToolbarButton.CommonButton);

3Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.Redo=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.Redo.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.Redo.prototype={callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.Redo.callBaseMethod(this,"callMethod"))return false;this._designPanel.redo()}};Sys.Extended.UI.HTMLEditor.ToolbarButton.Redo.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.Redo",Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeBoxButton = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeBoxButton.initializeBase(this, [element]);

    this._designPanel = null;
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeBoxButton.prototype = {
    _onmousedown : function(e) {
        if(this._designPanel == null) return false;
        if(this._designPanel.isPopup()) return false;
        if(Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeBoxButton.callBaseMethod(this, "_onmousedown",[e])===null) return false;
        this.callMethod();
        return false;
    },
    
    onEditPanelActivity : function() {
        this._designPanel = this._editPanel.get_activePanel();
    },
    
    callMethod : function() {
        if(this._designPanel == null) return false;
        if(this._designPanel.isPopup()) return false;
        return true;
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeBoxButton.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeBoxButton", Sys.Extended.UI.HTMLEditor.ToolbarButton.BoxButton);

�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.DecreaseIndent=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.DecreaseIndent.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.DecreaseIndent.prototype={callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.DecreaseIndent.callBaseMethod(this,"callMethod"))return false;this._designPanel._execCommand("Outdent")}};Sys.Extended.UI.HTMLEditor.ToolbarButton.DecreaseIndent.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.DecreaseIndent",Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.BulletedList=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.BulletedList.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.BulletedList.prototype={callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.BulletedList.callBaseMethod(this,"callMethod"))return false;this._designPanel._execCommand("InsertUnorderedList")}};Sys.Extended.UI.HTMLEditor.ToolbarButton.BulletedList.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.BulletedList",Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton);z�Type.registerNamespace("Sys.Extended.UI.HTMLEditor");Sys.Extended.UI.HTMLEditor.DesignPanel=function(d){var c=false,b=null,a=this;Sys.Extended.UI.HTMLEditor.DesignPanel.initializeBase(a,[d]);a._doc=b;a._updated_now=c;a._updateTimer=b;a._popup=b;a._contextElement=b;a._a_prize=c;a.__stack=b;a._StyleForTyping=b;a.isWord=c;a.isPlainText=c;a.dfltBlockElement="P";a._FontNotSet=true;a._design_timer1=b;a._events$delegate=Function.createDelegate(a,Sys.Extended.UI.HTMLEditor.DesignPanelEventHandler);a._blur$delegate=Function.createDelegate(a,a._blur);a._focus$delegate=Function.createDelegate(a,a._focus_event)};Sys.Extended.UI.HTMLEditor.DesignPanel.prototype={initialize:function(){Sys.Extended.UI.HTMLEditor.DesignPanel.callBaseMethod(this,"initialize")},dispose:function(){Sys.Extended.UI.HTMLEditor.DesignPanel.callBaseMethod(this,"dispose")},_activate:function(b){var a=this;Sys.Extended.UI.HTMLEditor.DesignPanel.callBaseMethod(a,"_activate");a._wasFocused=false;a._initIframe(b);a._onDocumentLoaded()},_deactivate:function(){var a=this;a._deactivateCommon();if(Sys.Extended.UI.HTMLEditor.isIE){a._doc.open();a._doc.write("");a._doc.close();a.get_element().src="javascript:false;"}a._doc=null;Sys.Extended.UI.HTMLEditor.DesignPanel.callBaseMethod(a,"_deactivate")},_deactivateCommon:function(){var a=this;a._editPanel.__blured=false;for(var c=a._doc.body.getElementsByTagName("IMG"),b=0;b<c.length;b++)if(c[b].getAttribute(Sys.Extended.UI.HTMLEditor.attachedIdAttribute)&&c[b].getAttribute(Sys.Extended.UI.HTMLEditor.attachedIdAttribute).length>0)try{if(Sys.Extended.UI.HTMLEditor.isIE)$removeHandler(c[b],"dragstart",Sys.Extended.UI.HTMLEditor.stopDrag);else $removeHandler(c[b],"draggesture",Sys.Extended.UI.HTMLEditor.stopDrag)}catch(d){}Sys.Extended.UI.HTMLEditor._removeEvents(a._doc,["keydown","keypress","mousedown","mouseup","dblclick"],a._events$delegate);Sys.Extended.UI.HTMLEditor._removeEvents(a.get_element().contentWindow,["blur"],a._blur$delegate);Sys.Extended.UI.HTMLEditor._removeEvents(a.get_element().contentWindow,["focus"],a._focus$delegate)},_initIframe:function(b){var a=this;if(!Sys.Extended.UI.HTMLEditor.isIE){a._savedValue=b;a._absAndFixedParents=a._getAbsAndFixedParents()}var c=Sys.Extended.UI.HTMLEditor.Trim(a._prepareContent(b));a._doc=a.get_element().contentWindow.document;if(!Sys.Extended.UI.HTMLEditor.isIE)a._doc.designMode="on";a._doc.open();a._doc.write('<html><head><link rel="stylesheet" href="'+a._editPanel.get_documentCssPath()+'" media="all" /><link rel="stylesheet" href="'+a._editPanel.get_designPanelCssPath()+'" media="all" /></head><body>'+c+"</body></html>");a._doc.close();a._doc.id="EditorDocument";if(Sys.Extended.UI.HTMLEditor.isIE){a._doc.body.contentEditable=true;a._tryForward=true}},_blur:function(b){var a=this;a._editPanel.__blured=true;if(!Sys.Extended.UI.HTMLEditor.isIE&&a._design_timer1!=null){clearTimeout(a._design_timer1);a._design_timer1=null}!a.isPopup&&a._editPanel._validate(b,null);return true},_focus_event:function(){var a=this;a._editPanel.__blured=false;if(Sys.Extended.UI.HTMLEditor.isIE)a._really_focused();else{var b=a;Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel=a._editPanel;if(a._design_timer1==null)a._design_timer1=setTimeout(function(){b._really_focused();b._design_timer1=null},0)}return true},_getAbsAndFixedParents:function(){var a=this.get_element(),b="";while(a!=null&&a.tagName&&a.tagName.toLowerCase()!="body"){b+=a.tagName;if(a.style.position=="absolute"||a.style.position=="fixed")b+=": "+a.style.position;b+="\n";a=a.parentNode}return b},_onDocumentLoaded:function(){var a=this,b=a;if(!Sys.Extended.UI.HTMLEditor.isIE){var c=a._getAbsAndFixedParents();if(c!=a._absAndFixedParents){a._initIframe(a._savedValue);setTimeout(function(){b._onDocumentLoaded()},10);return}}try{if(!Sys.Extended.UI.HTMLEditor.isIE){a._doc.queryCommandValue("forecolor");if(Sys.Extended.UI.HTMLEditor.isSafari||Sys.Extended.UI.HTMLEditor.isOpera)if(!Sys.Extended.UI.HTMLEditor.isReallyVisible(a.get_element())){setTimeout(function(){b._onDocumentLoaded()},10);return}}var d=b._doc.body.innerHTML}catch(e){setTimeout(function(){b._onDocumentLoaded()},10);return}a._afterBodyIsFormed();setTimeout(function(){b._activateFinished();Sys.Extended.UI.HTMLEditor.isIE&&!b._editPanel.get_autofocus()&&b._getSelection().empty()},0)},_afterBodyIsFormed:function(){var b=this,d=b;Sys.Extended.UI.HTMLEditor._addEvents(b._doc,["keydown","keypress","mousedown","mouseup","dblclick"],b._events$delegate);Sys.Extended.UI.HTMLEditor._addEvents(b.get_element().contentWindow,["blur"],b._blur$delegate);Sys.Extended.UI.HTMLEditor._addEvents(b.get_element().contentWindow,["focus"],b._focus$delegate);Sys.Extended.UI.HTMLEditor.inspectForShadows(d._doc.body);var a=b._doc.body;if(a.childNodes.length==1&&a.firstChild.tagName&&a.firstChild.tagName.toUpperCase()=="DIV"&&a.firstChild.style.cssText.length>0&&a.firstChild.style.direction.length>0&&Sys.Extended.UI.HTMLEditor.getStyle(a.firstChild,"position")!="absolute"){a.style.cssText=a.firstChild.style.cssText;var c=a.firstChild;while(c.firstChild)a.insertBefore(c.firstChild,c);a.removeChild(c)}d._clearP()},_getContent:function(){var u="pseudomode",t="dummybgcolor",s="dummysrc",r="dummytag",f="$1$3",q="$1<br/>$3",b=this;if(b._popup!=null)if(typeof b._popup._forceImClose=="function"){var y=b._popup._forceImClose;y(b._popup._iframe.contentWindow)}b._clearP();var a;if(Sys.Extended.UI.HTMLEditor.isIE){Sys.Extended.UI.HTMLEditor.spanJoiner(b._doc.body,b._doc);a=Sys.Extended.UI.HTMLEditor.getHTML(b._doc.body,false,true);a=a.replace(/(<td[^>]*?>)([\s ]*?)(<\/td[^>]*?>)/ig,"$1&nbsp;$3").replace(/(<td[^>]*?>)\s*(&nbsp;)\s*(<\/td[^>]*?>)/ig,q).replace(/(<p[^>]*?>)\s*(&nbsp;)\s*(<\/p[^>]*?>)/ig,q);a=(b._doc.body.style.cssText.length>0?'<div style="'+b._doc.body.style.cssText.replace('"',"'")+'">':"")+a+(b._doc.body.style.cssText.length>0?"</div>":"");if(b._editPanel.get_noScript())a=a.replace(/(<script(?:[^>]*?)>(?:[^<]*?)<\/script(?:[^>]*?)>)/gi,"");if(/<embed/ig.test(a))a=a.replace(/(<embed(?:.*?))(\sloop=\"true\")((?:.*?)>)/ig,f).replace(/(<embed(?:.*?))(\splay=\"true\")((?:.*?)>)/ig,f).replace(/(<embed(?:.*?))(\sbgcolor=\"\")((?:.*?)>)/ig,f).replace(/(<embed(?:.*?))(\sscale=\"\")((?:.*?)>)/ig,f).replace(/(<embed(?:.*?))(\shspace=\"0\")((?:.*?)>)/ig,f).replace(/(<embed(?:.*?))(\svspace=\"0\")((?:.*?)>)/ig,f).replace(/(<embed(?:.*?))(\swmode=\"[^\"]+\")((?:.*?)>)/ig,f).replace(/(<embed(?:.*?))(pseudomode=)(\"[^\"]*\")((?:.*?)>)/ig,"$1wmode=$3$4").replace(/(<embed(?:.*?))(\swmode=\"\")((?:.*?)>)/ig,f);var x=new RegExp("(<[/]?)(teo"+Sys.Extended.UI.HTMLEditor.smartClassName+":)","ig");a=a.replace(x,"$1")}else{var h=b._doc.createElement("DIV"),v=new Sys.Extended.UI.HTMLEditor.DesignPanel.ScriptRecover;h.style.cssText=b._doc.body.style.cssText;!b._editPanel.get_noScript()&&b._doc.body.innerHTML.replace(/<script(?:[^>]*?)>(.*?)<\/script(?:[^>]*?>)/gi,function(a,b){return v.regReplScript1(a,b)});h.innerHTML=Sys.Extended.UI.HTMLEditor.Trim(b._doc.body.innerHTML);for(var p=h.getElementsByTagName("IMG"),l=[],i=0;i<p.length;i++)l.push(p[i]);for(var o=0;o<l.length;o++){var c=l[o],k;k=c.getAttribute(r);if(k&&k.length>0&&k.toLowerCase()=="embed"){var z=c.getAttribute(s),j=c.getAttribute(t),m=c.getAttribute(u),w=c.attributes,e=b._doc.createElement("EMBED");e.src=z;e.width=c.width;e.height=c.height;if(j&&j.length>0){j=Sys.Extended.UI.HTMLEditor.tryReplaceRgb(j);e.setAttribute("bgcolor",j)}m&&m.length>0&&e.setAttribute("wmode",m);for(var i=0;i<w.length;++i){var n=w.item(i);if(!n.specified)continue;var d=n.name.toLowerCase(),g=n.value;if(d==r||d==s||d==t||d=="style"||d=="wmode"||d==u||d=="src")continue;if(d=="loop"&&g=="true")continue;if(d=="play"&&g=="true")continue;if(d=="hspace"&&g=="0")continue;if(d=="vspace"&&g=="0")continue;if(d=="scale"&&g.length==0)continue;if(d=="align"&&g.length==0)continue;e.setAttribute(d,g)}if(c.style.width&&c.style.width.length>0)e.style.width=c.style.width;if(c.style.height&&c.style.height.length>0)e.style.height=c.style.height;c.parentNode.insertBefore(e,c);c.parentNode.removeChild(c)}}Sys.Extended.UI.HTMLEditor.spanJoiner(h,b._doc);a=Sys.Extended.UI.HTMLEditor.getHTML(h,h.style.cssText.length>0?true:false,true);if(!b._editPanel.get_noScript())a=a.replace(/(<script(?:[^>]*?)>)(.*?)(<\/script(?:[^>]*?)>)/gi,function(a,b,c,d){return v.regReplFromScript1(a,b,c,d)});else a=a.replace(/(<script(?:[^>]*?)>(?:[^<]*?)<\/script(?:[^>]*?)>)/gi,"");delete h}a=Sys.Extended.UI.HTMLEditor.brXHTML(a.replace(/^([\n|\r]+)/,""));if(b._editPanel.get_noUnicode())a=a.replace(/([\u0080-\uFFFF])/g,function(b,a){return"&#"+a.charCodeAt(0).toString(10)+";"});if(Sys.Extended.UI.HTMLEditor.Trim(a)=="<br />")a="";return a},_setContent:function(b){var a=this;a._deactivateCommon();var c=Sys.Extended.UI.HTMLEditor.Trim(a._prepareContent(b));a._doc.open();a._doc.write('<html><head><link rel="stylesheet" href="'+a._editPanel.get_documentCssPath()+'" media="all" /><link rel="stylesheet" href="'+a._editPanel.get_designPanelCssPath()+'" media="all" /></head><body>'+c+"</body></html>");a._doc.close();if(Sys.Extended.UI.HTMLEditor.isIE){a._doc.body.contentEditable=true;a._tryForward=true}a._afterBodyIsFormed();a._editPanel.get_autofocus()&&a._focus();Sys.Extended.UI.HTMLEditor.isIE&&!a._editPanel.get_autofocus()&&a._getSelection().empty()},_focus:function(a){this.focusEditor();this._focused(a)},focusEditor:function(){var a=this;try{a.get_element().contentWindow.focus()}catch(b){}if(!a._wasFocused){a._wasFocused=true;!a._editPanel.get_startEnd()&&a._setToEnd()}},_prepareContent:function(o){var m="$1&nbsp;$3",g=this,a=o;a=a.replace(/<object(?:[^>]*?)>(?:[^\u0000]*?)(<embed(?:[^>]*?)>)(?:[^\u0000]*?)<\/object(?:[^>]*?)>/gi,"$1");if(Sys.Extended.UI.HTMLEditor.isIE){a=Sys.Extended.UI.HTMLEditor.Trim(a.replace(/([\n\r]+<)/g,"<").replace(/([^>])([\n\r]+)([^<])/g,"$1 $3")).replace(/(&amp;)/g,"&amp;amp;").replace(/<br\s*[\/]*>\s*<\/td>/ig,"</td>").replace(/(<td[^>]*?>)([\s ]*?)(<\/td[^>]*?>)/ig,m).replace(/(<p[^>]*?>)\s*(<br[^>]*?>)\s*(<\/p[^>]*?>)/ig,m);if(/<embed/ig.test(a))a=a.replace(/(<embed(?:.*?))(wmode=)(\"[^\"]*\")((?:.*?)>)/ig,"$1pseudomode=$3$4").replace(/(<embed)([^>]*?>)/ig,'$1 wmode="transparent"$2');a=a.replace(/&amp;/ig,"&");return a}else{var i=new Sys.Extended.UI.HTMLEditor.DesignPanel.ScriptRecover,f=document.createElement("DIV");!g._editPanel.get_noScript()&&a.replace(/<script(?:[^>]*?)>(.*?)<\/script(?:[^>]*?>)/gi,function(a,b){return i.regReplScript1(a,b)});f.innerHTML=Sys.Extended.UI.HTMLEditor.Trim(a.replace(/([^>])([\n\r]+)([^<])/g,"$1 $3"));for(var l=f.getElementsByTagName("EMBED"),h=[],e=0;e<l.length;e++)h.push(l[e]);for(var k=0;k<h.length;k++){var b=h[k],c=document.createElement("IMG"),n=b.attributes;c.src=g._editPanel.get_imagePath_1x1();c.setAttribute("dummytag","embed");for(var e=0;e<n.length;++e){var j=n.item(e);if(!j.specified)continue;var d=j.name.toLowerCase(),o=j.value;if(d=="src")d="dummysrc";else if(d=="bgcolor")d="dummybgcolor";else if(d=="wmode")d="pseudomode";c.setAttribute(d,o)}c.style.cssText="border: 1px dotted #000000; background-image: url('"+(c.getAttribute("type").toLowerCase()=="application/x-mplayer2"?g._editPanel.get_imagePath_media():tthis._editPanel.get_imagePath_flash())+"'); background-position: center; background-repeat: no-repeat; background-color: #c0c0c0;";if(b.style.width&&b.style.width.length>0)c.style.width=b.style.width;if(b.style.height&&b.style.height.length>0)c.style.height=b.style.height;b.parentNode.insertBefore(c,b);b.parentNode.removeChild(b)}Sys.Extended.UI.HTMLEditor.spanJoiner(f,document);a=Sys.Extended.UI.HTMLEditor.Trim(Sys.Extended.UI.HTMLEditor.getHTML(f,false,true));if(!g._editPanel.get_noScript())a=a.replace(/(<script(?:[^>]*?)>)(.*?)(<\/script(?:[^>]*?)>)/gi,function(a,b,c,d){return i.regReplFromScript1(a,b,c,d)});delete f;delete i;a=Sys.Extended.UI.HTMLEditor.brXHTML(a);if(a.length==0)a="<br/>";return a}},_clearP:function(){var b=true;try{var a=this._doc.body;if(a.firstChild)if(a.firstChild.nodeType==3){var d=Sys.Extended.UI.HTMLEditor.Trim(""+a.firstChild.data+"");if(d.length==0)a.removeChild(a.firstChild);else if(d!=""+a.firstChild.data+"")a.firstChild.data=d}if(Sys.Extended.UI.HTMLEditor.isIE)if(a.childNodes.length==1){a=a.firstChild;if(a.nodeType==1){var c=a.tagName.toLowerCase();if(c=="p"||c=="ul"||c=="ol"){var f=false,g=c=="ul"||c=="ol";function e(a){var d=false;if(a.nodeType==1){var c=a.tagName.toUpperCase();if(!(g&&c=="LI"))if(Sys.Extended.UI.HTMLEditor.isRestricted(a)||c=="IMG"||c=="IFRAME"||c=="EMBED"||c=="SCRIPT")return b;if(a.childNodes.length>1)return b;if(a.childNodes.length==0)return false;d|=e(a.firstChild)}else if(a.nodeType==3)d|=b;return d}if(a.childNodes.length==1)if(!e(a.firstChild)){a.removeChild(a.firstChild);f=b}(f||a.parentNode.innerHTML.toLowerCase()=="<p>&nbsp;</p>")&&this._doc.body.removeChild(a)}}}}catch(h){}},isControl:function(){var b=false;try{var d=this._getSelection();if(Sys.Extended.UI.HTMLEditor.isIE)return d.type.toLowerCase()=="control"?true:b;else{var a=this._createRange(d),c=this._getParent(a);return c.nodeType!=3&&a.startContainer==a.endContainer?!c.tagName?b:a.startContainer.childNodes.item(a.startOffset)==null?b:a.startOffset==a.endOffset&&a.startContainer.childNodes.item(a.startOffset).tagName&&(a.startContainer.childNodes.item(a.startOffset).tagName.toUpperCase()=="BR"||Sys.Extended.UI.HTMLEditor.isStyleTag(a.startContainer.childNodes.item(a.startOffset).tagName))?b:c.tagName.toUpperCase()=="BODY"&&a.startOffset==0&&a.endOffset>0&&a.endOffset==c.childNodes.length?b:a.startOffset==a.endOffset&&a.startContainer.childNodes.item(a.startOffset).nodeType==3?b:true:b}}catch(e){return true}},isPopup:function(){return this._popup!=null},_getSelection:function(){var a=this;if(Sys.Extended.UI.HTMLEditor.isIE)return a._doc.selection;else{a.focusEditor();var b,c,d,e=a.get_element().contentWindow;b=e.getSelection();c=a._createRange(b);d=c.startContainer;try{while(d&&d.nodeType)d=d.parentNode}catch(f){a._removeAllRanges(b);c=a._createRange(b);c.setStart(a._saved_startContainer,a._saved_startOffset);c.setEnd(a._saved_startContainer,a._saved_startOffset);a._selectRange(b,c);b=e.getSelection()}return b}},_createRange:function(b){var c="undefined",a=this;if(Sys.Extended.UI.HTMLEditor.isIE)return typeof b==c?a._doc.body.createTextRange():b.createRange();else{a.focusEditor();if(typeof b==c)return a._doc.createRange();else try{return b.getRangeAt(0)}catch(e){return a._doc.createRange()}}},toEndOfProtected:function(){var e=null,c=this,g=this._getSelection(),b;try{b=this._createRange(g)}catch(h){return false}var a;if(!Sys.Extended.UI.HTMLEditor.isIE){a=Sys.Extended.UI.HTMLEditor.contentEditable(b.startContainer);if(a==e)a=Sys.Extended.UI.HTMLEditor.contentEditable(b.endContainer)}else a=Sys.Extended.UI.HTMLEditor.contentEditable(Sys.Extended.UI.HTMLEditor.getSelParent(c));if(Sys.Extended.UI.HTMLEditor.isIE&&a!=e){try{b.remove(a)}catch(i){}b=c._doc.body.createControlRange();b.add(a);b.select()}else if(!Sys.Extended.UI.HTMLEditor.isIE&&a!=e){var f=c._getSelection(),d;if(a.nextSibling!=e&&a.nextSibling.nodeType==3)d=a.nextSibling;else{d=c._doc.createTextNode("");if(a.nextSibling!=e)a.parentNode.insertBefore(d,a.nextSibling);else a.parentNode.appendChild(d)}c._removeAllRanges(f);var b=c._createRange(f);b.setStart(d,0);b.setEnd(d,0);c._selectRange(f,b)}return true},_commonPaste:function(h){var c=null,d=this,a=d;d._saveContent();if(Sys.Extended.UI.HTMLEditor.isIE){d.openWait();setTimeout(function(){a._paste(!a._editPanel.get_noPaste());a.closeWait()},0);Sys.Extended.UI.HTMLEditor._stopEvent(h)}else if(!d.isPlainText&&!d.isWord&&!d._editPanel.get_noPaste())setTimeout(function(){Sys.Extended.UI.HTMLEditor.operateAnchors(a,a._doc,!a._editPanel.get_showAnchors());Sys.Extended.UI.HTMLEditor.operatePlaceHolders(a,a._doc,!a._editPanel.get_showPlaceHolders());Sys.Extended.UI.HTMLEditor.inspectForShadows(a._doc.body);a._checkImages(a._doc.body);a.onContentChanged()},0);else{var e=a._getSafePlace();if(e!=c){var b=a._doc.createElement("div");b.style.display="inline";b.style.borderStyle="none";e.parentNode.insertBefore(b,e);b.appendChild(e);b.removeChild(e);b.innerHTML="xx";var g=a._getSelection(),f=a._createRange();a._removeAllRanges(g);f.setStart(b.firstChild,0);f.setEnd(b.firstChild,1);a._selectRange(g,f);a.openWait();setTimeout(function(){var i=b.parentNode;b.lastChild.deleteData(b.lastChild.length-1,1);if(a.isWord){b.innerHTML=Sys.Extended.UI.HTMLEditor.cleanUp(b.innerHTML);Sys.Extended.UI.HTMLEditor.replaceOldTags(b,a);Sys.Extended.UI.HTMLEditor.spanJoiner(b,a._doc)}else{var g=document.createElement("div");g.innerHTML=Sys.Extended.UI.HTMLEditor.cleanUp(b.innerHTML);var j=new Sys.Extended.UI.HTMLEditor.jsDocument(true);Sys.Extended.UI.HTMLEditor.__MozillaGetInnerText(g,j);b.innerHTML=j.toString().replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\r/g,"").replace(/\n/g,"<br/>").replace(/\t/g,"&nbsp;");delete g}while(b.firstChild)i.insertBefore(b.firstChild,b);var e=c,d=c;if(b.nextSibling&&b.nextSibling.nodeType==3&&b.previousSibling&&b.previousSibling.nodeType==3){e=b.nextSibling;d=b.previousSibling}i.removeChild(b);var f=c;if(e!=c&&d!=c){f=d.data.length;d.data=""+d.data+""+e.data+"";e.parentNode.removeChild(e)}a.isWord=false;a.isPlainText=false;a.closeWait();if(f!=c){var k=a._getSelection(),h=a._createRange();a._removeAllRanges(k);h.setStart(d,f);h.setEnd(d,f);a._selectRange(k,h)}a.onContentChanged()},0)}else Sys.Extended.UI.HTMLEditor._stopEvent(h)}},_selectRange:function(b,a){b.addRange(a);this.focusEditor()},_selectRng:function(a){var d="character",b=this,g=b._getSelection();if(!Sys.Extended.UI.HTMLEditor.isIE){var h=b._doc.createRange();h.setStart(a[0],0);h.setEnd(a[a.length-1],(""+a[a.length-1].data+"").length);b._removeAllRanges(g);b._selectRange(g,h)}else{var c=b._createRange(g),e=b._createRange(g),i=b._doc.createElement("span"),f=b._doc.createElement("span");a[0].parentNode.insertBefore(i,a[0]);if(a[a.length-1].nextSibling)a[a.length-1].parentNode.insertBefore(f,a[a.length-1].nextSibling);else a[a.length-1].parentNode.appendChild(f);try{c.moveToElementText(i);var j=c.moveStart(d,1);c.moveStart(d,-j);e.moveToElementText(f);j=e.moveEnd(d,-1);e.moveEnd(d,-j);c.setEndPoint("EndToEnd",e);c.select()}catch(k){}a[0].parentNode.removeChild(i);a[a.length-1].parentNode.removeChild(f)}},_removeAllRanges:function(a){a.removeAllRanges()},_setToEnd:function(){var a=this;setTimeout(function(){a._setToEnd_();a._editPanel.updateToolbar()},0)},_setToEnd_:function(){var a=this;if(Sys.Extended.UI.HTMLEditor.isIE){var f=a._getSelection(),d=a._createRange(f);if(f.type.toLowerCase()!="control"){d.moveEnd("textedit",1);d.collapse(false)}d.select();a.focusEditor();return}var e=0,b=a._doc.body,c=null;if(b.lastChild&&b.lastChild.nodeType==3){b=b.lastChild;e=(""+b.data+"").length}else{var g=a._doc.createTextNode("");if(b.lastChild&&b.lastChild.nodeType==1&&b.lastChild.tagName.toUpperCase()=="BR")b.insertBefore(g,b.lastChild);else b.appendChild(g);b=g;e=0}var f=a._getSelection();a._removeAllRanges(f);var d=a._createRange();d.setStart(b,e);d.setEnd(b,e);a._selectRange(f,d);c!=null&&a._doc.body.removeChild(c);a.focusEditor();if(!Sys.Extended.UI.HTMLEditor.isSafari&&!Sys.Extended.UI.HTMLEditor.isOpera)try{var c=a._doc.createElement("button");c.style.width="0px";c.style.height="20px";a._doc.body.appendChild(c);c.focus();c.blur();a.focusEditor();a._doc.body.removeChild(c)}catch(h){}},isShadowed:function(){var b=this;if(!b.isControl())return false;var e=b._getSelection(),a=b._createRange(e),c;if(Sys.Extended.UI.HTMLEditor.isIE)c=a.item(0);else c=a.startContainer.childNodes.item(a.startOffset);if(c.tagName&&c.tagName.toUpperCase()=="IMG"&&c.getAttribute(Sys.Extended.UI.HTMLEditor.attachedIdAttribute)&&c.getAttribute(Sys.Extended.UI.HTMLEditor.attachedIdAttribute).length>0){var d=b.getAttachedElement(c);if(d!=null){if(Sys.Extended.UI.HTMLEditor.isIE){a=b._doc.body.createControlRange();a.add(d);a.select()}else try{var f=Sys.Extended.UI.HTMLEditor.__getIndex(d);e.collapseToEnd();b._removeAllRanges(e);a=b._createRange(e);a.setStart(d.parentNode,f);a.setEnd(d.parentNode,f+1);b._selectRange(e,a)}catch(g){return true}return false}return true}return false},_ifShadow:function(){if(Sys.Extended.UI.HTMLEditor.isIE)try{var g=this._doc.selection}catch(h){return false}var b=this,d=null,a=Sys.Extended.UI.HTMLEditor.getSelParent(b);while(a&&(a.nodeType==3||a.tagName&&a.tagName.toUpperCase()!="BODY")){if(a.nodeType==3||!a.tagName){a=a.parentNode;continue}var f=a.tagName.toUpperCase();if(f=="TABLE"&&a.getAttribute(Sys.Extended.UI.HTMLEditor.noContextMenuAttribute)&&a.getAttribute(Sys.Extended.UI.HTMLEditor.noContextMenuAttribute)=="yes"){d=a.rows.item(0).cells.item(0).firstChild;if(Sys.Extended.UI.HTMLEditor.isIE&&f=="P")d=d.firstChild;break}a=a.parentNode}if(d!=null){var e=b._getSelection(),c=b._createRange(e);if(Sys.Extended.UI.HTMLEditor.isIE){c=b._doc.body.createControlRange();c.add(d);c.select()}else try{e.collapseToEnd();b._removeAllRanges(e);c=b._createRange(e);c.setStart(d.parentNode,0);c.setEnd(d.parentNode,1);b._selectRange(e,c)}catch(h){}}},_saveContent:function(){var a=this,b,d,c;try{try{b=a._getSelection();d=a._createRange(b)}catch(e){}c=new Sys.Extended.UI.HTMLEditor._Marker(a,d,b)}catch(e){return}if(!a.__stack){a.__stack=[];a.__stackPos=0}while(a.__stackPos<a.__stack.length)a.__stack.pop();if(a.__stack.length==Sys.Extended.UI.HTMLEditor.__stackMaxSize){a.__stack.reverse();a.__stack.pop();a.__stack.reverse()}a.__stack.push(c);a.__stackPos=a.__stack.length},_restoreContent:function(){var a=this;if(a.__stack&&a.__stackPos>=0&&a.__stackPos<a.__stack.length){var b=a.__stack[a.__stackPos],f,d;if(Sys.Extended.UI.HTMLEditor.isIE){function o(d,b,e,a,c){return b.replace(/\salign=[^\s>]*/ig,"")+(a=='"X"'?"":"align="+a)+c.replace(/\salign=[^\s>]*/ig,"")}for(var l=a._doc.body.getElementsByTagName("EMBED"),h=[],c=0;c<l.length;c++)h.push(l[c]);for(var i=0;i<h.length;i++)h[i].parentNode.removeChild(h[i]);var g=b._save.replace(/&amp;/ig,"&");g=g.replace(/(<embed(?:.*?))(teoalign=)(\"[^\"]*\")((?:.*?)>)/ig,o);a._doc.body.innerHTML="!!!<span></span>"+Sys.Extended.UI.HTMLEditor.Trim(g);a._doc.body.firstChild&&a._doc.body.removeChild(a._doc.body.firstChild);a._doc.body.firstChild&&a._doc.body.removeChild(a._doc.body.firstChild);var k=Sys.Extended.UI.HTMLEditor.getHrefsText(g);Sys.Extended.UI.HTMLEditor.setHrefsText(a._doc.body,k);if(a._editPanel.get_relativeImages()){k=Sys.Extended.UI.HTMLEditor.getImagesText(g);Sys.Extended.UI.HTMLEditor.setImagesText(a._doc.body,k)}Sys.Extended.UI.HTMLEditor.setNames(a._doc.body,b._nArr);Sys.Extended.UI.HTMLEditor.operateAnchors(a,a._doc,!a._editPanel.get_showAnchors());Sys.Extended.UI.HTMLEditor.operatePlaceHolders(a,a._doc,!a._editPanel.get_showPlaceHolders());if(b._tree!=null){var e=a._doc.body,c;try{for(c=b._tree.length-1;c>=0;c--)e=e.childNodes.item(b._tree[c])}catch(q){if(a.__stackPos>0){a.__stackPos--;a._restoreContent();a.__stackPos++}return}try{var n=a._doc.body.createControlRange();n.add(e);n.select()}catch(q){}}else{var j=a;setTimeout(function(){try{if(j._editPanel==Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel){f=j._getSelection();d=j._createRange(f);if(f.type.toLowerCase()!="control")try{d.moveToPoint(b._offsetLeft,b._offsetTop)}catch(a){}d.select()}}catch(a){}},0)}}else{if(Sys.Extended.UI.HTMLEditor.isOpera)a._doc.body.innerHTML=Sys.Extended.UI.HTMLEditor.Trim(b._save);else{a._doc.body.innerHTML="";for(var c=0;c<b._save.childNodes.length;c++)a._doc.body.appendChild(b._save.childNodes.item(c).cloneNode(true))}Sys.Extended.UI.HTMLEditor.operateAnchors(a,a._doc,!a._editPanel.get_showAnchors());Sys.Extended.UI.HTMLEditor.operatePlaceHolders(a,a._doc,!a._editPanel.get_showPlaceHolders());try{f=a._getSelection();d=a._createRange();a._removeAllRanges(f)}catch(q){}for(var p="",e=a._doc.body,c=b._tree.length-1;c>=0;c--){p+=" "+b._tree[c];e=e.childNodes.item(b._tree[c])}var m=b._offset;try{d.setStart(e,m);d.setEnd(e,m)}catch(q){Sys.Extended.UI.HTMLEditor.inspectForShadows(a._doc.body);return}try{a._selectRange(f,d)}catch(q){}}try{Sys.Extended.UI.HTMLEditor.inspectForShadows(a._doc.body)}catch(q){}}},SaveContent:function(){this._saveContent()},RestoreContent:function(){this._undo(false)},_undo:function(c){var a=this;if(a.__stack)if(a.__stackPos>0){a.__stackPos==a.__stack.length&&c&&a._saveContent();do{var d=Sys.Extended.UI.HTMLEditor.Trim(a._doc.body.innerHTML);a.__stackPos--;a._restoreContent()}while(Sys.Extended.UI.HTMLEditor.Trim(a._doc.body.innerHTML)==d&&a.__stackPos>0&&c);var b=a;setTimeout(function(){try{b._ifShadow()}catch(a){}if(b._editPanel==Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel)try{b._editPanel.updateToolbar()}catch(a){}!c&&b.onContentChanged()},0)}},_redo:function(){var a=this;if(a.__stack)if(a.__stackPos<a.__stack.length-1){a.__stackPos++;var b=a,c;if(Sys.Extended.UI.HTMLEditor.isIE){c=b._doc.body.getElementsByTagName("EMBED").length;if(c>0){var d=b._body.ownerDocument.createElement("div");b._body.appendChild(d);setTimeout(function(){b._body.removeChild(d)},0)}}a._restoreContent();var b=a;setTimeout(function(){b._ifShadow();b._editPanel.updateToolbar()},0)}},undo:function(){this._undo(true);this.onContentChanged()},redo:function(){this._redo();this.onContentChanged()},_contextMenuCallP:function(){},onContentChanged:function(){},_copyCut:function(i,q){var e=true,a=this,l=a;if(Sys.Extended.UI.HTMLEditor.isIE){var c=a._getSelection(),b=a._createRange(c),j=false,f="";i=="x"&&a._saveContent();if(c.type.toLowerCase()=="control"){j=e;f=Sys.Extended.UI.HTMLEditor.getHTML(b.item(0),e)}else if(b.text!=""){j=e;f=b.htmlText;var o=b.duplicate(),h=a._getTextNodeCollection();if(h.length<1)return;var m=Sys.Extended.UI.HTMLEditor._commonParent(h[0],h[h.length-1]);if(m!=null&&h[0].previousSibling&&h[0].previousSibling.nodeType==3){var g=m.parent;while(g&&g.tagName.toUpperCase()!="BODY"&&Sys.Extended.UI.HTMLEditor.isStyleTag(g.tagName)){var n=g.cloneNode(false);n.innerHTML=f;f=n.outerHTML;g=g.parentNode}}c=a._getSelection();c.empty();b=a._createRange(c);b.setEndPoint("EndToEnd",o);b.setEndPoint("StartToStart",o);b.select()}else if(b.htmlText!=""){j=e;f=b.htmlText}if(j){var d=a._doc.createElement("DIV");d.innerHTML="!!!<span></span>"+f;d.removeChild(d.firstChild);d.removeChild(d.firstChild);var k=Sys.Extended.UI.HTMLEditor.getHTML(d,false,e),p=new RegExp("(<[/]?)(teo"+Sys.Extended.UI.HTMLEditor.smartClassName+":)","ig");k=k.replace(p,"$1");delete d;a._contentCopy(k,e);b.select();if(i=="x"){c.clear();a._clearP()}}else if(i=="x"){c.clear();a._clearP()}q&&setTimeout(function(){l._editPanel.updateToolbar()},0)}else if(i=="x"){a._saveContent();var c=a._getSelection(),b=a._createRange(c);a._removeAllRanges(c);b.deleteContents();if(a._doc.body.innerHTML==""){a._doc.body.innerHTML="<br/>";b.setStart(a._doc.body,0);b.setEnd(a._doc.body,0)}l.onContentChanged();a._selectRange(c,b)}else{var c=a._getSelection(),b=a._createRange(c);a._removeAllRanges(c);alert(String.format(Sys.Extended.UI.Resources.HTMLEditor_toolbar_button_Use_verb,Sys.Extended.UI.HTMLEditor.isSafari&&navigator.userAgent.indexOf("mac")!=-1?"Apple-C":"Ctrl-C"));a._selectRange(c,b)}},_paste:function(m,n){var c=this,d=c,o=c._getSelection(),g=c._createRange(o),k,l;if(!m){k=g.offsetLeft;l=g.offsetTop;c.insertHTML(c._getPlain());d.onContentChanged();return}if(c._editPanel.get_noPaste())return;k=g.offsetLeft;l=g.offsetTop;var b=c._doc.createElement("span"),a,h=c._contentCopy("",false,n);if(/<[\/]*p[\s>]+/i.test(h)||/<[\/]*h/i.test(h))a=c._getSafePlace();else{a=c._doc.createElement("SPAN");a.id=Sys.Extended.UI.HTMLEditor.smartClassName;if(!c.insertHTML(Sys.Extended.UI.HTMLEditor.getHTML(a,true)))return;a=c._doc.getElementById(Sys.Extended.UI.HTMLEditor.smartClassName);if(a){a.id=null;a.removeAttribute("id");a.setAttribute("para","no")}}b.innerHTML=h;if(!a)return;c._checkImages(b);var i=a.parentNode,f=a.getAttribute("para");if(f!="no"){if(f.indexOf("left")>=0&&b.firstChild)if(b.firstChild.tagName&&b.firstChild.tagName.toUpperCase()=="P"){while(b.firstChild.firstChild)a.previousSibling.appendChild(b.firstChild.firstChild);b.removeChild(b.firstChild)}if(f.indexOf("right")>=0&&b.lastChild)if(b.lastChild.tagName&&b.lastChild.tagName.toUpperCase()=="P"){while(b.lastChild.lastChild)a.nextSibling.insertBefore(b.lastChild.lastChild,a.nextSibling.firstChild);b.removeChild(b.lastChild)}}var j=a,e=null;if(b.childNodes.length==0&&f.indexOf("left")>=0&&f.indexOf("right")>=0){if(a.nextSibling.firstChild){e=c._doc.createElement("span");j=e;e.innerHTML="111";a.previousSibling.appendChild(e)}while(a.nextSibling.firstChild)a.previousSibling.appendChild(a.nextSibling.firstChild);i.removeChild(a.nextSibling)}else while(b.firstChild)i.insertBefore(b.firstChild,a);setTimeout(function(){var c=d._getSelection(),b=d._createRange(c);if(c.type.toLowerCase()=="control")while(b.length>0)b.remove(0);try{b.collapse(false)}catch(f){}d.focusEditor();Sys.Extended.UI.HTMLEditor._setCursor(j,d);e&&e.parentNode.removeChild(e);i.removeChild(a);Sys.Extended.UI.HTMLEditor.inspectForShadows(d._doc.body);d.onContentChanged();b.select()},0)},_contentCopy:function(i,n,p){var j=true,o="$1<br/>$3",m="$1&nbsp;$3",b=this;if(i!="")i=i.replace(/(<td[^>]*?>)([\s ]*?)(<\/td[^>]*?>)/ig,m).replace(/(<td[^>]*?>)\s*(&nbsp;)\s*(<\/td[^>]*?>)/ig,o).replace(/(<p[^>]*?>)\s*(&nbsp;)\s*(<\/p[^>]*?>)/ig,o);var e=b._doc.createElement("iframe");e.width="0";e.height="0";if(Sys.Extended.UI.HTMLEditor.isIE)e.src="javascript:false;";b._doc.appendChild(e);var a=e.contentWindow.document;a.write("<html><head></head><body>"+i+"</body></html>");a.close();a.body.contentEditable=j;var k=a.body.createTextRange(),q=false;if(i==""){k.execCommand("paste");for(var t=a.createElement("DIV"),d=0;d<a.body.childNodes.length;d++){var h=a.body.childNodes.item(d);if(h.nodeType==8){var c=""+h.data+"";if(c.search(/StartFragment/i)>=0)if(h.nextSibling&&h.nextSibling.nodeType==3){var c=""+h.nextSibling.data+"";if(c.length)if(c.charCodeAt(0)==160){c=c.substr(1);h.nextSibling.data=c;q=j;break}}}}if(typeof p!="undefined"&&p)a.body.innerHTML=Sys.Extended.UI.HTMLEditor.cleanUp(a.body.innerHTML);var c=Sys.Extended.UI.HTMLEditor.Trim(Sys.Extended.UI.HTMLEditor.getHTML(a.body,false,j));c=c.replace(/(<script(?:[^>]*?)>(?:[^<]*?)<\/script(?:[^>]*?)>)/gi,"");a.body.innerHTML=c;if(!n){Sys.Extended.UI.HTMLEditor.operateAnchors(b,a,!b.showAnchors);Sys.Extended.UI.HTMLEditor.operatePlaceHolders(b,a,!b.showPlaceHolders);for(var l=a.body.getElementsByTagName("EMBED"),f=[],d=0;d<l.length;d++)f.push(l[d]);for(var g=0;g<f.length;g++)f[g].parentNode.removeChild(f[g])}delete k;delete t;if(n&&Sys.Extended.UI.HTMLEditor.isIE)k=a.body.createTextRange()}if(n&&Sys.Extended.UI.HTMLEditor.isIE){if(i!=""){Sys.Extended.UI.HTMLEditor.operateAnchors(b,a,j);Sys.Extended.UI.HTMLEditor.operatePlaceHolders(b,a,j)}k.select();k.execCommand("copy")}for(var s=Sys.Extended.UI.HTMLEditor.Trim(a.body.innerHTML).replace(/<br\s*[\/]*>\s*<\/td>/ig,"</td>").replace(/(<td[^>]*?>)([\s ]*?)(<\/td[^>]*?>)/ig,m).replace(/(<p[^>]*?>)\s*(<br[^>]*?>)\s*(<\/p[^>]*?>)/ig,m).replace(/(<embed(?:.*?))(wmode=)(\"[^\"]*\")((?:.*?)>)/ig,"$1pseudomode=$3$4").replace(/(<embed)([^>]*?>)/ig,'$1 wmode="transparent"$2'),l=a.body.getElementsByTagName("EMBED"),f=[],d=0;d<l.length;d++)f.push(l[d]);for(var g=0;g<f.length;g++)f[g].parentNode.removeChild(f[g]);e.src="";var r=b;r._doc.removeChild(e);delete e;return s},insertHTML:function(p,c){var n="<span>qqq</span>",b=this;b.focusEditor();var w=b._getSelection();if(typeof c=="undefined")c=b._createRange(w);if(Sys.Extended.UI.HTMLEditor.isIE){function r(b,a){return'<span class="'+Sys.Extended.UI.HTMLEditor.smartClassName+"_script\" style='display:none;visibility:hidden;'>"+a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")+"</span>"}function q(b,a){return a.replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&amp;/g,"&")}var d='<span id="'+Sys.Extended.UI.HTMLEditor.smartClassName+'">111<span></span>'+p+"</span>",u=Sys.Extended.UI.HTMLEditor.getHrefsText(d),s=Sys.Extended.UI.HTMLEditor.getImagesText(d);if(!b._editPanel.get_noScript())d=d.replace(/(<script(?:[^>]*?)>.*?<\/script(?:[^>]*?)>)/gi,r);else d=d.replace(/(<script(?:[^>]*?)>.*?<\/script(?:[^>]*?)>)/gi,"");var x=b;try{if(c.pasteHTML)c.pasteHTML(d);else{var f=b._doc.createElement("DIV");f.innerHTML=d;while(f.firstChild)c(0).parentNode.insertBefore(f.firstChild,c(0));c(0).parentNode.removeChild(c(0));c.remove(0);delete f}}catch(y){return false}var a=b._doc.getElementById(Sys.Extended.UI.HTMLEditor.smartClassName);a.innerHTML=n+Sys.Extended.UI.HTMLEditor.getHTML(a,false,true).replace(new RegExp("<span(?:[^>]*?)class="+Sys.Extended.UI.HTMLEditor.smartClassName+"_script(?:[^>]*?)>(.*?)</span(?:[^>]*?)>","gi"),q)+n;a.removeChild(a.firstChild);a.removeChild(a.lastChild);Sys.Extended.UI.HTMLEditor.setHrefsText(a,u);Sys.Extended.UI.HTMLEditor.setImagesText(a,s);a.firstChild&&a.removeChild(a.firstChild);a.firstChild&&a.removeChild(a.firstChild);while(a.firstChild)a.parentNode.insertBefore(a.firstChild,a);a.parentNode.removeChild(a);delete a;return true}else{var f=b._doc.createElement("div");f.innerHTML=p;for(var m=f.getElementsByTagName("EMBED"),j=[],h=0;h<m.length;h++)j.push(m[h]);for(var l=0;l<j.length;l++){var i=j[l],g=document.createElement("IMG"),o=i.attributes;g.src=b._images_list[1];g.setAttribute("dummytag","embed");for(var h=0;h<o.length;++h){var k=o.item(h);if(!k.specified)continue;var e=k.name.toLowerCase(),t=k.value;if(e=="src")e="dummysrc";else if(e=="bgcolor")e="dummybgcolor";else if(e=="wmode")e="pseudomode";g.setAttribute(e,t)}g.getAttribute("type");g.style.cssText="border: 1px dotted #000000; background-image: url('"+(g.getAttribute("type").toLowerCase()=="application/x-mplayer2"?b._images_list[3]:b._images_list[2])+"'); background-position: center; background-repeat: no-repeat; background-color: #c0c0c0;";i.parentNode.insertBefore(g,i);i.parentNode.removeChild(i)}var v=b.insertNodeAtSelection(f,c);return v}},insertNodeAtSelection:function(e,b){var d=false,c=this;if(!Sys.Extended.UI.HTMLEditor.isIE){var f=c._getSelection();if(typeof b=="undefined")try{b=c._createRange(f)}catch(l){c._removeAllRanges(f);return d}var a=b.startContainer,j=b.startOffset;if(a.ownerDocument.id!="EditorDocument")return d;if(b.startContainer.nodeType==1&&b.startContainer.tagName.toUpperCase()=="TR"||b.endContainer.nodeType==1&&b.endContainer.tagName.toUpperCase()=="TR")return d;c._removeAllRanges(f);b.deleteContents();try{b=c._createRange()}catch(l){c._removeAllRanges(f);return d}switch(a.nodeType){case 3:if(j>0)a=a.splitText(j);while(e.firstChild)a.parentNode.insertBefore(e.firstChild,a);b.setStart(a,0);b.setEnd(a,0);break;case 1:case 11:try{c._removeAllRanges(f);if(a.childNodes.length>=j+1){a=a.childNodes.item(j);while(e.firstChild)a.parentNode.insertBefore(e.firstChild,a);var g=c._doc.createTextNode("");a.parentNode.insertBefore(g,a);a=g}else{var g=c._doc.createTextNode("");if(Sys.Extended.UI.HTMLEditor.canHaveChildren(a)){while(e.firstChild)a.appendChild(e.firstChild);a.appendChild(g)}else{while(e.firstChild)a.parentNode.insertBefore(e.firstChild,a);a.parentNode.insertBefore(g,a)}a=g}if(a.nodeType==1){for(var h=a.parentNode,k=h,i=0;i<h.childNodes.length;i++)if(a==h.childNodes.item(i))break;b.setStart(h,i);b.setEnd(h,i)}else{b.setStart(a,0);b.setEnd(a,0)}}catch(l){c._removeAllRanges(f);return d}}c._selectRange(f,b);return true}else return d},trickWithStyles:function(j){var a=this,c=a._doc.getElementById(j);if(c!=null)if(c.nextSibling&&c.nextSibling.nodeType==3){var b=c.nextSibling;c.parentNode.removeChild(c);var e=(""+b.data+"").indexOf(" ");if(e>0)b.splitText(e);else e==0&&b.splitText(1);if(a.n_arr!=null)for(var h=0;h<a.n_arr.length;h++)a.MSIE_applyCssStyle(a.n_arr[h],[b],false);a.n_arr=null;var g=a._getSelection();if(!Sys.Extended.UI.HTMLEditor.isIE){var f=a._doc.createRange();f.setStart(b,b.length);f.setEnd(b,b.length);a._removeAllRanges(g);a._selectRange(g,f)}else{var i=a._createRange(g),d=a._doc.createElement("span");if(b.nextSibling)b.parentNode.insertBefore(d,b.nextSibling);else b.parentNode.appendChild(d);try{i.moveToElementText(d);i.select()}catch(k){}d.parentNode.removeChild(d)}}else c.parentNode.removeChild(c)},_getParent:function(a){return Sys.Extended.UI.HTMLEditor.isIE?a.parentElement():a.startContainer},_checkImages:function(g){var e="qwerty.gif";if(this._editPanel.get_relativeImages())for(var f=g.getElementsByTagName("IMG"),d=0;d<f.length;d++){var a=f[d];if(a.src.indexOf("http://")>=0){var b=a.src;a.src=e;var c=a.src.indexOf(e);if(b.substr(0,c)==a.src.substr(0,c))b=b.substr(c,b.length-c);a.src=b}}},_getSafePlace:function(d){var e="para",b=null,g=this,a=g._doc.createElement("SPAN"),j=g;a.id=Sys.Extended.UI.HTMLEditor.smartClassName;if(typeof d=="undefined"){if(!g.insertHTML(Sys.Extended.UI.HTMLEditor.getHTML(a,true)))return b}else{if(d.nextSibling==b)d.parentNode.appendChild(a);else d.parentNode.insertBefore(a,d.nextSibling);d.parentNode.removeChild(d)}a=g._doc.getElementById(Sys.Extended.UI.HTMLEditor.smartClassName);a.id=b;a.removeAttribute("id");a.setAttribute(e,"no");var c=a.parentNode,f=c.tagName.toUpperCase();while(f!="BODY"&&f!="TD"&&f!="P"&&f!="DIV")if(Sys.Extended.UI.HTMLEditor.isStyleTag(c.tagName)){c=c.parentNode;f=c.tagName.toUpperCase()}else break;if(f=="P"){a.setAttribute(e,"");function i(k,a,e,f){var l,d=Sys.Extended.UI.HTMLEditor.myClone(e,j._doc,false);k&&d.appendChild(k);while(a){if(a.nodeType==1||a.nodeType==3&&Sys.Extended.UI.HTMLEditor.Trim(""+a.data+"").length>0){var g=b;if(a.tagName&&a.tagName.toUpperCase()=="SCRIPT")g=a.text;var h=Sys.Extended.UI.HTMLEditor.myClone(a,j._doc,true);if(d.childNodes.length==0||!f)d.appendChild(h);else d.insertBefore(h,d.firstChild);if(g!=b)h.text=g}a=f?a.previousSibling:a.nextSibling}if(d.childNodes.length==0){delete d;d=b}return e==c?d:i(d,f?e.previousSibling:e.nextSibling,e.parentNode,f)}var k=i(b,a.previousSibling,a.parentNode,true),l=i(b,a.nextSibling,a.parentNode,false),h=c.parentNode;if(k){h.insertBefore(k,c);a.setAttribute(e,a.getAttribute(e)+" left")}h.insertBefore(a,c);if(l){h.insertBefore(l,c);a.setAttribute(e,a.getAttribute(e)+" right")}h.removeChild(c)}return a},noContextMenuAttributeName:function(){return Sys.Extended.UI.HTMLEditor.noContextMenuAttribute},_getTextNodeCollection:function(x){var a="",u="<span id='",n="undefined",f=null,d=this,e=[];if(d.isControl())return e;var o=d._getSelection(),j=d._createRange(o),m=Sys.Extended.UI.HTMLEditor.smartClassName+"_right",r=Sys.Extended.UI.HTMLEditor.smartClassName+"_left",g=f,i=f,q;if(typeof x==n){if(Sys.Extended.UI.HTMLEditor.isIE){g=j.duplicate();i=j.duplicate();g.setEndPoint("EndToStart",j);i.setEndPoint("StartToEnd",j)}else{g=j.cloneRange();i=j.cloneRange();g.setEnd(g.startContainer,g.startOffset);i.setStart(i.endContainer,i.endOffset);q=g.endOffset}if(!d.insertHTML(u+m+"'/>",i))return e;else{if(Sys.Extended.UI.HTMLEditor.isOpera){g.setEnd(g.startContainer,q);g.setStart(g.startContainer,q)}if(!d.insertHTML(u+r+"'/>",g)){var t=d._doc.getElementById(m);if(t!=f){h=t.parentNode;h.removeChild(t)}var s=d._doc.getElementById(rl);if(s!=f){h=s.parentNode;h.removeChild(s)}return e}}}else{var k;k=d._doc.createElement("SPAN");k.id=m;d._doc.body.appendChild(k);k=d._doc.createElement("SPAN");k.id=r;d._doc.body.insertBefore(k,d._doc.body.firstChild)}var b=d._doc.getElementById(r),c=d._doc.getElementById(m);if(b==f||c==f){var h;if(b!=f){h=b.parentNode;h.removeChild(b)}if(c!=f){h=c.parentNode;h.removeChild(c)}return[]}while(b.firstChild)b.removeChild(b.firstChild);while(c.firstChild)c.removeChild(c.firstChild);while(b.previousSibling&&b.previousSibling.nodeType==3&&Sys.Extended.UI.HTMLEditor.Trim(a+b.previousSibling.data+a).length==0)b.parentNode.removeChild(b.previousSibling);while(b.nextSibling&&b.nextSibling.nodeType==3&&Sys.Extended.UI.HTMLEditor.Trim(a+b.nextSibling.data+a).length==0)b.parentNode.removeChild(b.nextSibling);while(c.previousSibling&&c.previousSibling.nodeType==3&&Sys.Extended.UI.HTMLEditor.Trim(a+c.previousSibling.data+a).length==0)c.parentNode.removeChild(c.previousSibling);while(c.nextSibling&&c.nextSibling.nodeType==3&&Sys.Extended.UI.HTMLEditor.Trim(a+c.nextSibling.data+a).length==0)c.parentNode.removeChild(c.nextSibling);var w=false,l=d;function v(b,d){while(b){if(b.id&&b.id==m){w=true;return}if(b.nodeType==3){while(b.nextSibling&&(b.nextSibling.nodeType==3||!Sys.Extended.UI.HTMLEditor.isIE&&typeof l.__saveBM__!=n&&l.__saveBM__!=f&&l.__saveBM__[0]==b.nextSibling)){if(b.nextSibling.nodeType==3)b.data=a+b.data+a+b.nextSibling.data+a;else{l.__saveBM__[0]=b;l.__saveBM__[1]=(a+b.data+a).length}b.parentNode.removeChild(b.nextSibling)}Sys.Extended.UI.HTMLEditor.Trim(a+b.data+a).length>0&&e.push(b)}else{var c=b.tagName;if(b.tagName){c=c.toUpperCase();if(!(c=="MAP"||c=="AREA"||c=="SCRIPT"||c=="NOSCRIPT"))!(b.style&&(Sys.Extended.UI.HTMLEditor.getStyle(b,"display")=="none"||Sys.Extended.UI.HTMLEditor.getStyle(b,"visibility")=="hidden"))&&v(b.firstChild,false)}}if(w)return;var g=b.parentNode;if(d)while(b.nextSibling==f)b=b.parentNode;b=b.nextSibling}}v(b,true);var h;h=b.parentNode;h.removeChild(b);h=c.parentNode;h.removeChild(c);if(typeof x==n)if(Sys.Extended.UI.HTMLEditor.isIE){o.empty();i.select()}else if(e.length>0){d._removeAllRanges(o);var p=d._createRange();p.setEnd(e[e.length-1],e[e.length-1].length);p.setStart(e[e.length-1],e[e.length-1].length);d._selectRange(o,p)}return e},_getPlain:function(){var a=this._doc.createElement("textarea");a.width="0";a.height="0";this._doc.appendChild(a);var c=a.createTextRange();c.execCommand("paste");var b=a.value;b=b.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\r/g,"").replace(/\n/g,"<br/>");this._doc.removeChild(a);return b},_execCommand:function(c,g,b){var e=false,h="createlink",a=this,i=a,d,f;if(Sys.Extended.UI.HTMLEditor.isIE&&!a.isControl()){d=a._getSelection();f=a._createRange(d);var j=f.parentElement();if(j.tagName.toUpperCase()=="TEXTAREA")return}c.toLowerCase()!=h&&a._saveContent();switch(c.toLowerCase()){case h:if(Sys.Extended.UI.HTMLEditor.isIE||!g)a._doc.execCommand(c,g,b);else{var b;(b=prompt("Enter URL"))&&a._doc.execCommand(c,e,b)}break;case"backcolor":case"forecolor":case"fontname":case"fontsize":a.MSIE_applyCommand(c.toLowerCase(),b);break;case"indent":a.MSIE_indent(true);break;case"outdent":a.MSIE_indent(e);break;case"justifyleft":a.MSIE_justify("left");break;case"justifyfull":a.MSIE_justify("justify");break;case"justifycenter":a.MSIE_justify("center");break;case"justifyright":a.MSIE_justify("right");break;case"paragraph":a.MSIE_justify("remain",e,"P");break;case"formatblock":if(b!=null&&typeof b=="string"&&b.length==2)if(b.substr(0,1).toUpperCase()=="H"&&parseInt(b.substr(1,1))>0){a.MSIE_justify("remain",e,b);break}a._doc.execCommand(c,g,b);break;case"insertunorderedlist":a.MSIE_list("UL");break;case"insertorderedlist":a.MSIE_list("OL");break;case"bold":case"italic":case"underline":case"strikethrough":case"superscript":case"subscript":a.MSIE_applyCommand(c.toLowerCase());break;default:a._doc.execCommand(c,g,b)}a.onContentChanged();if(!Sys.Extended.UI.HTMLEditor.isIE){d=a._getSelection();f=a._createRange(d);a._removeAllRanges(d);a._selectRange(d,f);a.focusEditor()}var i=a;setTimeout(function(){i._editPanel.updateToolbar()},0)},MSIE_indent:function(a){return Function.createDelegate(this,Sys.Extended.UI.HTMLEditor.MSIE_indent)(a)},MSIE_justify:function(c,b,a){return Function.createDelegate(this,Sys.Extended.UI.HTMLEditor.MSIE_justify)(c,b,a)},MSIE_list:function(a){return Function.createDelegate(this,Sys.Extended.UI.HTMLEditor.MSIE_list)(a)},getSelectionAfterOperation:function(a){return Function.createDelegate(this,Sys.Extended.UI.HTMLEditor.getSelectionAfterOperation)(a)},setSelectionAfterOperation:function(b,a){return Function.createDelegate(this,Sys.Extended.UI.HTMLEditor.setSelectionAfterOperation)(b,a)},get_paragraphs:function(){return Function.createDelegate(this,Sys.Extended.UI.HTMLEditor.get_paragraphs)()},getPseudoP:function(){return Function.createDelegate(this,Sys.Extended.UI.HTMLEditor.getPseudoP)()},getPseudoP_Recur:function(b,c,a){return Function.createDelegate(this,Sys.Extended.UI.HTMLEditor.getPseudoP_Recur)(b,c,a)},unWrap:function(a,b){return Function.createDelegate(this,Sys.Extended.UI.HTMLEditor.unWrap)(a,b)},tryUnWrap:function(a,c,b){return Function.createDelegate(this,Sys.Extended.UI.HTMLEditor.tryUnWrap)(a,c,b)},MSIE_applyCommand:function(n,g){var f=null,k="vertical-align",j="text-decoration",i="underline",d=false,a=this,l=!Sys.Extended.UI.HTMLEditor.isIE?Sys.Extended.UI.HTMLEditor.Trim(a.getSelectedHTML()):"";if(a.isControl())return;var e=a._getSelection(),c=a._createRange(e),o=Sys.Extended.UI.HTMLEditor.isIE?[c.boundingLeft,c.boundingTop]:[c.startContainer,c.startOffset],m=Sys.Extended.UI.HTMLEditor.isIE&&c.text.length>0||!Sys.Extended.UI.HTMLEditor.isIE&&l.length>0,b={name:"none",value:"none"};switch(n.toLowerCase()){case"bold":b={name:"font-weight",value:"bold",repl:d};break;case"italic":b={name:"font-style",value:"italic",repl:d};break;case i:b={name:j,value:i,repl:d};break;case"strikethrough":b={name:j,value:"line-through",repl:d};break;case"superscript":b={name:k,value:"super",repl:d};break;case"subscript":b={name:k,value:"sub",repl:d};break;case"forecolor":b={name:"color",value:g,repl:d};break;case"backcolor":b={name:"background-color",value:g,repl:d};break;case"fontname":b={name:"font-family",value:g,repl:d};break;case"fontsize":b={name:"font-size",value:g,repl:d}}if(m){var h=a._getTextNodeCollection();a.MSIE_applyCssStyle(b,h,true)}else{if(a.isControl())return;var h=a._tryExpand();if(h.length>0){a.MSIE_applyCssStyle(b,h,d);if(Sys.Extended.UI.HTMLEditor.isIE&&a.__saveBM__!=f){e=a._getSelection();c=a._createRange(e);c.moveToBookmark(a.__saveBM__);c.select();a.__saveBM__=f}else if(a.__saveBM__!=f){if(a.__saveBM__[0].nodeType==3){e=a._getSelection();c=a._doc.createRange();c.setStart(a.__saveBM__[0],a.__saveBM__[1]);c.setEnd(a.__saveBM__[0],a.__saveBM__[1]);a._removeAllRanges(e);a._selectRange(e,c)}else{a._trySelect(a.__saveBM__[0],a.__saveBM__[0]);a.__saveBM__[0].parentNode.removeChild(a.__saveBM__[0])}a.__saveBM__=f}}else a._setStyleForTyping(b)}},MSIE_applyCssStyle:function(h,c,J){var q=true,G="text-decoration",u=null,p="SPAN",i=this,b=h.name.replace(/\-(\w)/g,function(b,a){return a.toUpperCase()}),d=h.value,L=h.repl,A=false,B=false;i._saveContent();var N=Sys.Extended.UI.HTMLEditor.smartClassName+"_right",M=Sys.Extended.UI.HTMLEditor.smartClassName+"_left",o=i._doc.createElement(p);o.id=M;var m=i._doc.createElement(p);m.id=N;c[0].parentNode.insertBefore(o,c[0]);if(c[c.length-1].nextSibling!=u)c[c.length-1].parentNode.insertBefore(m,c[c.length-1].nextSibling);else c[c.length-1].parentNode.appendChild(m);Sys.Extended.UI.HTMLEditor.unStyle(o);Sys.Extended.UI.HTMLEditor.unStyle(m);for(var n=[],g=0;g<c.length;g++){for(var l=c[g],a=l.parentNode,z=0;z<n.length;z++){var x=n[z];if(x.parent==a){x.textNodes.push(l);break}}z==n.length&&n.push({parent:a,textNodes:[l]})}for(var g=0;g<n.length;g++){var x=n[g];if(x.textNodes.length>1){var e=x.textNodes,w=i._doc.createElement(p),t=i._doc.createElement(p);e[0].parentNode.insertBefore(w,e[0]);if(e[e.length-1].nextSibling!=u)e[e.length-1].parentNode.insertBefore(t,e[e.length-1].nextSibling);else e[e.length-1].parentNode.appendChild(t);Sys.Extended.UI.HTMLEditor._moveTagsUp(w,t);w.parentNode.removeChild(w);t.parentNode.removeChild(t)}}for(var g=0;g<c.length;g++){var l=c[g],a=l.parentNode,D=false;while(a&&a.tagName&&a.childNodes.length==1&&Sys.Extended.UI.HTMLEditor.isStyleTag(a.tagName)){var f=a.tagName.toUpperCase();if((f=="I"||f=="EM")&&h.name=="font-style"||(f=="B"||f=="STRONG")&&h.name=="font-weight"||(f=="S"||f=="STRIKE")&&h.name==G||f=="U"&&h.name==G||(f=="SUB"||f=="SUP")&&h.name=="vertical-align"){var v=a;a=a.parentNode;while(v.firstChild)a.insertBefore(v.firstChild,v);a.removeChild(v);D=q;continue}else if(a.style&&a.style[b]&&a.style[b].length>0){var k=a.style[b];if(b.toLowerCase().indexOf("color")>=0||b=="fontFamily"||b=="fontSize")a.style[b]=d;else if(L)try{a.style[b]=a.style[b]+" "+d;if(k==a.style[b])a.style[b]=d}catch(O){a.style[b]=d}else if(!A){var F=k.replace(d,"");if(b=="fontWeight"&&k.toString()=="700")F="";if(F==k)try{a.style[b]=a.style[b]+" "+d;if(k==a.style[b])a.style[b]=d}catch(O){a.style[b]=d}else{a.style[b]=F.replace(/,/,"");B=q}A=q}else if(B)a.style[b]=k.replace(d,"").replace(/,/,"");else try{a.style[b]=a.style[b]+" "+d;if(k==a.style[b])a.style[b]=d}catch(O){a.style[b]=d}D=q}a=a.parentNode}if(!D&&!B){var y;y=i._doc.createElement(p);y.style[b]=d;var K=l.parentNode;K.insertBefore(y,l);y.appendChild(l);A=q}}var j=Sys.Extended.UI.HTMLEditor._commonTotalParent(o,m),I=j.parent.childNodes.item(j.indexFirst).previousSibling,s=j.parent.childNodes.item(j.indexLast).nextSibling;o.parentNode.removeChild(o);m.parentNode.removeChild(m);var H=0,r=j.parent.childNodes.length;if(I!=u)H=Sys.Extended.UI.HTMLEditor.__getIndex(I);if(s!=u){r=Sys.Extended.UI.HTMLEditor.__getIndex(s)+1;if(r<j.parent.childNodes.length)if(s.nodeType==3)r++;else if(s.nodeType==1){var E=s.tagName.toUpperCase();if(E!="TR"&&E!="TD"&&E!="LI")r++}}Sys.Extended.UI.HTMLEditor.spanJoiner(j.parent,i._doc,H,r);var C=i;J&&C._selectRng(c);setTimeout(function(){!Sys.Extended.UI.HTMLEditor.isIE&&C.focusEditor();C._editPanel.updateToolbar()},0)},_tryExpand:function(p){var u="'></span><span id='",h=false,n="undefined",a=this,v=[],i,j,m=a._getSelection(),b=a._createRange(m),l,k,x=Sys.Extended.UI.HTMLEditor.smartClassName+"_right_add",w=Sys.Extended.UI.HTMLEditor.smartClassName+"_left_add",q=Sys.Extended.UI.HTMLEditor.smartClassName+"_middle_add";if(Sys.Extended.UI.HTMLEditor.isIE&&typeof p==n){b.execCommand("bold");a.__saveBM__=b.getBookmark();b.execCommand("bold")}if(Sys.Extended.UI.HTMLEditor.isIE){var d=null,r="<span id="+q+"></span>",o=b.duplicate();try{b.pasteHTML(r)}catch(y){}d=a._doc.getElementById(q);if(d==null)return[];if(typeof p!=n)a.__saveBM__=d;if(d.nextSibling!=null&&!Sys.Extended.UI.HTMLEditor.isInlineElement(d.nextSibling)){d.parentNode.removeChild(d);return[]}b.expand("word");b.select();if(b.text.length==0){d.parentNode.removeChild(d);o.select();return[]}var t=new RegExp(r,"ig");if(!t.test(b.htmlText.replace(/[\n\r]/g,""))){d.parentNode.removeChild(d);o.select();return[]}t=new RegExp(r+"(</span>|&nbsp;|[\\s])*$","ig");if(t.test(b.htmlText.replace(/[\n\r]/g,""))){d.parentNode.removeChild(d);o.select();return[]}while(b.text.length>0&&b.text.substr(b.text.length-1,1)==" "){b.moveEnd("character",-1);b.select();if(b.text.length==0){d.parentNode.removeChild(d);o.select();return[]}}typeof p==n&&d.parentNode.removeChild(d);return a._getTextNodeCollection()}function s(b){var a=/[\d\w]/;if(a.test(b))return h;a=/[\u0080-\u024F]/;if(a.test(b))return h;a=/[\u0370-\u2000]/;return a.test(b)?h:true}if(!a.insertHTML("<span id='"+w+u+q+u+x+"'></span>"))return[];var c=a._doc.getElementById(w),e=a._doc.getElementById(x),g=a._doc.getElementById(q);Sys.Extended.UI.HTMLEditor.positionInParagraph(c,c.previousSibling,true,c.parentNode,s);try{a._trySelect(c,e)}catch(y){}l=a._getSelection();k=a._createRange(l);i=!Sys.Extended.UI.HTMLEditor.isIE?Sys.Extended.UI.HTMLEditor.Trim(a.getSelectedHTML()):"";j=Sys.Extended.UI.HTMLEditor.isIE&&k.text.length>0||!Sys.Extended.UI.HTMLEditor.isIE&&i.length>0;if(!j||a._getTextNodeCollection().length==0){var f=a._doc.createTextNode("");c.parentNode.insertBefore(f,c);c.parentNode.removeChild(c);e.parentNode.removeChild(e);g.parentNode.removeChild(g);var b=a._doc.createRange();b.setStart(f,0);b.setEnd(f,0);b.setStart(f,0);b.setEnd(f,0);a._removeAllRanges(m);a._selectRange(m,b);return[]}e.parentNode.insertBefore(c,g);Sys.Extended.UI.HTMLEditor.positionInParagraph(e,e.nextSibling,h,e.parentNode,s);a._trySelect(c,e);l=a._getSelection();k=a._createRange(l);i=!Sys.Extended.UI.HTMLEditor.isIE?Sys.Extended.UI.HTMLEditor.Trim(a.getSelectedHTML()):"";j=Sys.Extended.UI.HTMLEditor.isIE&&k.text.length>0||!Sys.Extended.UI.HTMLEditor.isIE&&i.length>0;if(!j||a._getTextNodeCollection().length==0){var f=a._doc.createTextNode("");c.parentNode.insertBefore(f,c);c.parentNode.removeChild(c);e.parentNode.removeChild(e);g.parentNode.removeChild(g);var b=a._doc.createRange();b.setStart(f,0);b.setEnd(f,0);b.setStart(f,0);b.setEnd(f,0);a._removeAllRanges(m);a._selectRange(m,b);return[]}Sys.Extended.UI.HTMLEditor.positionInParagraph(c,c.previousSibling,true,c.parentNode,s);a._trySelect(c,e);l=a._getSelection();k=a._createRange(l);i=!Sys.Extended.UI.HTMLEditor.isIE?Sys.Extended.UI.HTMLEditor.Trim(a.getSelectedHTML()):"";j=Sys.Extended.UI.HTMLEditor.isIE&&k.text.length>0||!Sys.Extended.UI.HTMLEditor.isIE&&i.length>0;if(Sys.Extended.UI.HTMLEditor.isIE)if(typeof p!=n)a.__saveBM__=g;else g.parentNode.removeChild(g);else a.__saveBM__=[g,0];if(j)v=a._getTextNodeCollection();c.parentNode.removeChild(c);e.parentNode.removeChild(e);return v},_setStyleForTyping:function(c){var a=this,i=c.name.replace(/\-(\w)/g,function(b,a){return a.toUpperCase()}),h=c.value,j=c.repl;if(a._StyleForTyping==null)a._StyleForTyping=[];for(var e=[],d=true,b=0;b<a._StyleForTyping.length;b++){var g=a._StyleForTyping[b].name.replace(/\-(\w)/g,function(b,a){return a.toUpperCase()}),f=a._StyleForTyping[b].value;if(!(g==i&&(f==h||j)))e.push(a._StyleForTyping[b]);else d=false}a._StyleForTyping=e;d&&a._StyleForTyping.push(c)},_trySelect:function(c,d){var b=null,a=this,e=a._getSelection(),i=b,j=b;if(Sys.Extended.UI.HTMLEditor.isIE){e.empty();e=a._getSelection();var f=a._createRange(e),g=a._createRange(e);try{c!=b&&f.moveToElementText(c);d!=b&&g.moveToElementText(d);if(c!=b&&d!=b){f.setEndPoint("EndToEnd",g);f.select()}else if(c!=b)f.select();else d!=b&&g.select()}catch(k){}}else try{i=a._doc.createTextNode("");j=a._doc.createTextNode("");c.parentNode.insertBefore(i,c);d.parentNode.insertBefore(j,d);var h=a._doc.createRange();h.setStart(i,0);h.setEnd(j,0);a._removeAllRanges(e);a._selectRange(e,h)}catch(k){}},getSelectedHTML:function(){var c=this._getSelection(),b=this._createRange(c),a=null;if(Sys.Extended.UI.HTMLEditor.isIE)a=b.htmlText;else if(Sys.Extended.UI.HTMLEditor.isSafari&&(c.type=="Caret"||c.type=="None"))a="";else{if(Sys.Extended.UI.HTMLEditor.isSafari)if(b.cloneContents()==null)return"";a=Sys.Extended.UI.HTMLEditor.getHTML(b.cloneContents(),false)}return a},_queryCommandState:function(h){var r="vertical-align",k="line-through",j="strikethrough",q="text-decoration",f="underline",m="font-weight",i="bold",g=this,n=g._rangeStartEnd();if(n==null)return false;try{var a={name:"none",value:"none"};switch(h.toLowerCase()){case i:a={name:m,value:i};break;case"italic":a={name:"font-style",value:"italic"};break;case f:a={name:q,value:f};break;case j:a={name:q,value:k};break;case"superscript":a={name:r,value:"super"};break;case"subscript":a={name:r,value:"sub"}}var b=n.start,c=n.end,d=Sys.Extended.UI.HTMLEditor.getStyle(b,a.name).toString().toLowerCase(),e=Sys.Extended.UI.HTMLEditor.getStyle(c,a.name).toString().toLowerCase();if(a.name==m&&d=="700")d=i;if(a.name==m&&e=="700")e=i;if(/MSIE (5|6)/.test(navigator.userAgent)&&h.toLowerCase()==j&&(d==f||e==f)){while(b&&Sys.Extended.UI.HTMLEditor.isStyleTag(b.tagName)){if(b.style.textDecoration.indexOf(k)>=0){d=b.style.textDecoration;break}b=b.parentNode}while(c&&Sys.Extended.UI.HTMLEditor.isStyleTag(c.tagName)){if(c.style.textDecoration.indexOf(k)>=0){e=c.style.textDecoration;break}c=c.parentNode}}if(Sys.Extended.UI.HTMLEditor.isSafari&&(h.toLowerCase()==j||h.toLowerCase()==f)){var l=h.toLowerCase();if(l==j)l=k;while(b&&Sys.Extended.UI.HTMLEditor.isStyleTag(b.tagName)){if(b.style.textDecoration.indexOf(l)>=0){d=b.style.textDecoration;break}b=b.parentNode}while(c&&Sys.Extended.UI.HTMLEditor.isStyleTag(c.tagName)){if(c.style.textDecoration.indexOf(l)>=0){e=c.style.textDecoration;break}c=c.parentNode}}var o=d.indexOf(a.value)>=0&&e.indexOf(a.value)>=0;if(g._StyleForTyping!=null&&g._StyleForTyping.length>0)for(var p=0;p<g._StyleForTyping.length;p++){var s=g._StyleForTyping[p];if(s.name==a.name&&s.value==a.value){o=!o;break}}return o}catch(t){return false}},_textAlignState:function(b){var a=this._rangeStartEnd();if(a==null)return false;try{var c=this._textAlignStateSingle(a.start),d=this._textAlignStateSingle(a.end);return c==b&&d==b}catch(e){return false}},_textAlignStateSingle:function(a){while(a&&Sys.Extended.UI.HTMLEditor.isStyleTag(a.tagName))a=a.parentNode;if(a!=null){var b=a.tagName.toUpperCase();if(b=="P"||b=="DIV")return a.style.textAlign.toLowerCase()}return null},_rangeStartEnd:function(){var i="<span id='",b=null,e=this;if(e.isControl())return b;try{var o=e._getSelection(),a=e._createRange(o),c=b,d=b;if(!Sys.Extended.UI.HTMLEditor.isIE){function f(c,d){var e=b;while(e==b){if(c.nodeType==3)if(d&&a.startContainer!=a.endContainer&&a.startOffset==c.length&&c.nextSibling)e=f(c.nextSibling,d);else if(!d&&a.startContainer!=a.endContainer&&a.endOffset==0&&c.previousSibling)e=f(c.previousSibling,d);else e=c;else if((d?c.firstChild:c.lastChild)==b)e=b;else e=f(d?c.firstChild:c.lastChild,d);if(e==b){c=d?c.nextSibling:c.previousSibling;if(c==b)return b}else return e}}var n=e._getParent(a);if(n.nodeType!=3&&a.startContainer==a.endContainer&&a.startOffset==a.endOffset&&a.startContainer.childNodes.item(a.startOffset).tagName&&Sys.Extended.UI.HTMLEditor.isStyleTag(a.startContainer.childNodes.item(a.startOffset).tagName))return{start:a.startContainer.childNodes.item(a.startOffset),end:a.startContainer.childNodes.item(a.startOffset)};c=f(a.startContainer,true);if(c!=b&&c.parentNode!=b)c=c.parentNode;if(c==b)c=a.startContainer;d=f(a.endContainer,false);if(d!=b&&d.parentNode!=b)d=d.parentNode;if(d==b)d=a.endContainer}else if(a.text.length==0)c=d=e._getParent(a);else{var m=Sys.Extended.UI.HTMLEditor.smartClassName+"_right_marker",l=Sys.Extended.UI.HTMLEditor.smartClassName+"_left_marker",k=a.duplicate(),j=a.duplicate();k.setEndPoint("EndToStart",a);j.setEndPoint("StartToEnd",a);j.pasteHTML(i+m+"'/>");k.pasteHTML(i+l+"'/>");var g=e._doc.getElementById(l),h=e._doc.getElementById(m);c=g.parentNode;d=h.parentNode;g.parentNode.removeChild(g);h.parentNode.removeChild(h)}return{start:c,end:d}}catch(p){return b}},rtlState:function(){return this._doc.body.style.direction&&this._doc.body.style.direction=="rtl"?true:false},openWait:function(){this._editPanel.openWait()},closeWait:function(){this._editPanel.closeWait()}};Sys.Extended.UI.HTMLEditor.DesignPanel.ScriptRecover=function(){var a=this;a.scriptsArray=[];a.scriptsArray_index=-1;a.regReplScript1=function(b,a){this.scriptsArray.push(a);return""};a.regReplFromScript=function(b,a){return a.replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&amp;/g,"&")};a.regReplFromScript1=function(e,c,f,d){var a=this;a.scriptsArray_index++;var b;if(!Sys.Extended.UI.HTMLEditor.isIE)b=a.scriptsArray[a.scriptsArray_index].replace(/&amp;/g,"&").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"');else b=a.scriptsArray[a.scriptsArray_index];return c+b+d}};Sys.Extended.UI.HTMLEditor.DesignPanel.registerClass("Sys.Extended.UI.HTMLEditor.DesignPanel",Sys.Extended.UI.HTMLEditor.ModePanel);// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedThreading";function a(){var c=false,a=null,b=true,d=Sys.version;if(!d&&!Sys._versionChecked){Sys._versionChecked=b;throw new Error("AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts. Ensure the correct version of the scripts are referenced. If you are using an ASP.NET ScriptManager, switch to the ToolkitScriptManager in AjaxControlToolkit.dll.");}Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.DeferredOperation=function(g,f,e){var d=this;d._delay=g;d._context=f;d._callback=e;d._completeCallback=a;d._errorCallback=a;d._timer=a;d._callArgs=a;d._isComplete=c;d._completedSynchronously=c;d._asyncResult=a;d._exception=a;d._throwExceptions=b;d._oncomplete$delegate=Function.createDelegate(d,d._oncomplete);d.post=Function.createDelegate(d,d.post)};Sys.Extended.UI.DeferredOperation.prototype={get_isPending:function(){return this._timer!=a},get_isComplete:function(){return this._isComplete},get_completedSynchronously:function(){return this._completedSynchronously},get_exception:function(){return this._exception},get_throwExceptions:function(){return this._throwExceptions},set_throwExceptions:function(a){this._throwExceptions=a},get_delay:function(){return this._delay},set_delay:function(a){this._delay=a},post:function(){for(var c=[],b=0;b<arguments.length;b++)c[b]=arguments[b];this.beginPost(c,a,a)},beginPost:function(e,c,d){var a=this;a.cancel();a._callArgs=Array.clone(e||[]);a._completeCallback=c;a._errorCallback=d;if(a._delay==-1)try{a._oncomplete()}finally{a._completedSynchronously=b}else a._timer=setTimeout(a._oncomplete$delegate,a._delay)},cancel:function(){var b=this;if(b._timer){clearTimeout(b._timer);b._timer=a}b._callArgs=a;b._isComplete=c;b._asyncResult=a;b._completeCallback=a;b._errorCallback=a;b._exception=a;b._completedSynchronously=c},call:function(){var c=this;for(var e=[],d=0;d<arguments.length;d++)e[d]=arguments[d];c.cancel();c._callArgs=e;c._completeCallback=a;c._errorCallback=a;try{c._oncomplete()}finally{c._completedSynchronously=b}if(c._exception)throw c._exception;return c._asyncResult},complete:function(){var a=this;if(a._timer){try{a._oncomplete()}finally{a._completedSynchronously=b}return a._asyncResult}else if(a._isComplete)return a._asyncResult},_oncomplete:function(){var a=this,f=a._callArgs,d=a._completeCallback,e=a._errorCallback;a.cancel();try{if(f)a._asyncResult=a._callback.apply(a._context,f);else a._asyncResult=a._callback.call(a._context);a._isComplete=b;a._completedSynchronously=c;d&&d(a)}catch(g){a._isComplete=b;a._completedSynchronously=c;a._exception=g;if(e)if(e(a))return;if(a._throwExceptions)throw g;}}};Sys.Extended.UI.DeferredOperation.registerClass("Sys.Extended.UI.DeferredOperation")}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["Core"],a);else a()})();6   �& h�( @ G��G��G��S��*R��hO��mN��:L��G��	G��F��9F��^F��mF��mF��mF��vF��mF��!������������������������������������V��}W��U��R���O��aH��G�ӄF���F��D��D��B��B��B��F��hY�׆]��^��Y��Q���P�ֆM��J��lI���F��D��D��D��D��C���D���F��O[��g^��c��a��Z��R���O��HK���J��G��F��D��D��D��E�ШG����������������������������������^��P`��g��d��`��Y��R��P�԰O���O���K��G��F��F��F���F�ѨF��<`��%]�վa���c���b��a���Y���V���U��Q��I��F��F��G��G���b��`��4^�؜]���]���a���b���_��[��P��F��F��F��I��I�������������������������������������������������a�� _��y]�ئ]���c��d��`��W��H��F��F��K��J���I��yI��zH��iG�������qf��n]���e���i��f��`��V��J��H��O��O��L��J��H���H��mG��
�����������������������������������������������������������������[��n��o��q��q��e��[��T��V��U��Q��N��K��H���H��՘�������������������������������������������������p��t��{���������w��e��_��]��W��R��R��P��L��H�������������������������������������������������������w���������������m��c��^��V���Q�ӼR���P��L���J�Ѳ��������������������������������������������p��������v����������������r���e���_��Z����������������������������������������������������p��z�������������������w���h���d��^���������������������������������������������������������y��i��k��g������y���m���g��_�����������������������������������������������������}������|��q��������p������|��t��j��`�������������������������������������������������}��|��t���������������f��}������~��p��_������������������������������������������������������������������������f��r������������j��c��������������������������������������������������������������������������|����������p��d���d�آ������������������������������������������������������������������������h��f��e��d��c��f���i��>d�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������x�x�����0������������������������(  ���������������[��&������#q��&���&���&���������&���h���E���D��&���������������������X���o��_���\���&���D��&������8��xl��l��d��+��5�׀&��������������������������������d��q��D��E��^��&���&��������������������������������d�������n��[��U��[��}�����������������p���������p����[��[��[��h���]��[������������������g��g�����g�����[��[��h�������������������������k�������g��[��b��h�������������������������������g��[��r������������������������������������m���������������������������������������������������������	������������������������������������������������������������������������������������������������������������������������������������������������������������������������a��������������������������������� ��y�   �( @ �����n���n���n���n���n���n���n�������n���n���n���n���n���n���n����������������������������n����������������������������n���������������������������n���������������������������n���������������������������n���������������������������n���������������������������n���������������������������n�����������������������������������������������n���������������������������������������������������n������������������������������������������������������������n�������������������������������������������n�����������������������������������������������������������n��������������������������������������������������n����������������������������������������������n��������������������������n��������������������������n��������������������������n��������������������������n��������������������������n��������������������������n��������������������������n��������������������������n��������������������������n�������������������������������n�������������������������������n���������������������������������������������������������������������������������������������������������������������������������������������������������������6   �& h�( @ x^F�x^F�x^F�x^F�x^F�x^F�x^F�x^F�x^F�x^F�x^F�x^F�x^F�x^F�x^F�x^F�x^F�x^F�x^F�x^F�x^F�x^F�x^F�{bN�����������������������������������������������������������������������{bN�����������������������������������������������������������������������������������{bN����������������������������������������������������������������������������������{bN��������������������������������������������������������������������������������������{bN��������������������������qC��ô�����������������������������������������������������{bN��������������������ţ���x7��o1�ҽ�����������������������������������������������������{bN�������������������ǃE�ݨu��yD�ѽ��������������������������������������������������������{bN���~�����ɻ�͸��ÅP�۩z�廑��n5������������������������������������������������������������{bN�T$e*O�e>��zR��m<��j6���^�ཙ�㺑��wI��a8�§������������������������������������������������������{bN�w9?�A��Yިk6��~M���[���h�ά���ǡ���›w��vF��a+��^.��{Z�������������������������������������{<	h�`%ظ�W�Ýy�ͪ��ҳ��޾���ͬ��Ա��޸��ٳ�⽛�Э��Ğx���T��]!�v5�3�P�t?�|�Ҷ���Ǭ��ѳ��׶��ٸ�߬���wM���Ǡ��۶��Ϊ��ġ�Ե��Ġz��u?�:�N 
-�KPɍ]�ç������ֹ��߿�������ճ��J&��%��G��kD�����߻��ش��Ѯ����ʪ���yC�|8�W%FɅU�ʩ���ű��ۿ��������������ٹ��L,�I�]	��e@�����߾��޼��޻��ղ��Ħ�ͬ���m5�p0nλ�>λ��p:]͛u��Ų����������������������ἠ��t^���k��Ȩ�������������߾��׷��ƫ�ǚm��R�í��λ�ґc�ά������������������������������ʫ��в�����������������������׼�Բ���l6�q3cަ���Ƕ����������������������������ƁZ�ˍf�������������������������ʰ���[��C�㳖��������������������������������~[��@���������������������������Ξu��R�㵛����������������������������߽���2��l=��շ����������������������ҥ|��V�庣�������������������������dF����c2�ܯ�������������������Ѣw��U�绤��̽���������������˷��W������ǧ��t��"��_<������������������đc��Nx汔o�ʺ����������������zc�|��@�����Ƶ�x ����L-��������������ũ��m6�y<	8ਃ.辬�����������������o�c��\<����Ť��q�v��W;�������������֥|��B�Y(ߦ�꽧��IJ�����������������������M5��7�ʐq��3�T�=!��ȷ�������������������U�_("ᧁ纡��ƶ����������������������ԭ����c���k�ƨ���������������������Ƭ��u?�{<	=b+�~ৃ,꾨��ų������������������������������������������������纘��wDȓT!<�Bᦂ꾧	距�淝��˻�������������������������������̵�彟�מt�l>}�\-�W$踝綘&峕d㱓�߮��ڧ��۫��ܬ��ܭ��߮��᱔�ۢzֽ�Tr�c;���������������������������������������?�����(  x^F�x^F�x^F�x^F�x^F�x^F�x^F�x^F�x^F�x^F�x^F�x^F������������������������������������x^F�������������������������������������������x^F��������������������������������������������x^F�λ���������yK�Ǯ�����������������������������x^F�ɳ�DZ�|��}Y�ߥi��sQ�����������������������������x^F��?
n�U.관Q��ț����tO��Z9�����������������������������KYŘs��������nR�������Ř��]5�ư��λ���\���������������ἑ�o0
�ɚv����������I:�����������`,�Ƙu���������F'�ݱ�����������u9�ʜz�������k]����c��h_��������z>�Т�Tͣ������v��������������l=�b$ᧃУ�pХ��֯��ٻ��۽��ө����hֆFɞ|ʞ}'ʟ~(������������?��?��?��?��?7�1���6h&   ��( ����������������������������������������ɵ�������ɵ�������ɵ�������ɵ������޹���������ɵ�������ɵ�������ɵ�������ɵ������޹���ɵ�ɵ�ɵ�ɵ�ɵ�ɵ�ɵ�ɵ�Oq�Oq�Oq�Oq�ɵ�ɵ�����������ɵ�������ɵ�������Oqٵ���Oq����������������ɵ�������ɵ�������Oqٵ���Oq����������ɵ�ɵ�ɵ�ɵ�ɵ�ɵ�ɵ�ɵ�Oq�Oq�Oq�Oq�ɵ�ɵ�����������ɵ�������ɵ�������ɵ�������ɵ�����������������ɵ�������ɵ�������ɵ�������ɵ�����������ɵ�ɵ�ɵ�ɵ�ɵ�ɵ�ɵ�ɵ�ɵ�ɵ�ɵ�ɵ�ɵ�ɵ�����������ɵ�������ɵ�������ɵ�������ɵ�����������������ɵ�������ɵ�������ɵ�������ɵ���������ꪋ駇袀�d�j�i�a�Y�Q�J�yC�u<�q7�m5�i3�e1ꪋ����j����l��|��s��k��c��]��Y�T����xK�rF�e1ꪋ�j������l��{��s��k��d��]��Y�S�ϼ����qF�e1ꪋ駇�i�ϼ�_�i�a�Y�Q�J�yC�u<��m5�i3�e1( @ ˱��{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�{bN�˱���v��t��r��p�ޓn�ۑm�ُj�֍i�ԋg�щf�Άc�˄a�ɂ`��^��|[��{Z��xX��vV��tT��rS��qR��mP��lO��jM��gL��fJ��dI��cH��aG�{bN�˱���w���������p��������֍i����������ʃa�����������zY�Ȼ��Ȼ��Ȼ���qR�Ȼ��Ȼ��Ȼ���jM�Ȼ��Ȼ��Ȼ���bG�{bN�˱���x��������q��������؎j���������̆b�����������{Z�Ȼ��Ȼ��Ȼ���sS�Ȼ��Ȼ��Ȼ���jN�Ȼ��Ȼ��Ȼ���cH�{bN�˱���z����������s��������ڐk��������ψd�����������~\�Ȼ��Ȼ��Ȼ���tU�Ȼ��Ȼ��Ȼ���lO�Ȼ��Ȼ��Ȼ���eI�{bN�˱���{��y��w��v��t��r��q�ߕo�ܑl�ڐk�׍i�ԋg�҉e�·c�˄a�ȁ_�ŀ^��}\��zZ��yX��wV��sT��rR��qR��nP��lO��jN��iL��fJ�{bN�˱���|��������������u��������ޔn��������Ԋg����������ȁ_�����������xW�����������pR�����ξ��̻��hL�{bN�˱���~��������������v���������p��������Ռh���������ɂ`�����������yY�����������qR�����Ͽ��ξ��iL�{bN�˱��褀��������������x��������q��������؎i�����������������������������������������sS��������Ͽ��jN�{bN�˱��襂����|��{��y��w��v��u��r��q�ޓn�ܒl�ِk�֍h�ԋg�����$$��$$��$$��$$��$$�������rR��qR��nP��lO��jN��iL��fJ�{bN�˱���|��������������u��������ޔn��������Ԋg�����������$$������������$$�������������pR�����ξ��̻��hL�{bN�˱���~��������������v���������p��������Ռh����������$$�������������$$�������������qR�����Ͽ��ξ��iL�{bN�˱��褀��������������x��������q��������؎i����������$$��������������$$�������������sS��������Ͽ��jN�{bN�˱��襂����|��{��y��w��v��u��r��q�ޓn�ܒl�ِk�֍h�ԋg�����$$��$$��$$��$$��$$�������zX��wW��sU��rS��qR��mP��lN�{bN�˱��觃��������������{�������������t��������ۑl����������������������������������������wV�����������mP�{bN�˱��騅��������������|��������������u��������ݓm��������ۑl���������щe�����������wW�����������nQ�{bN�˱��骆��������������}��������������v�������ߕo��������ۑl��������щe�����������zY�����������qR�{bN�˱��骈�驇�规�襂�裀��}��|��z��w��v��u��r��q�ޔn�ܒl�ܒl�ۑl�ܒl�ܒl�ܒl�ܒl�ܒl�Ɓ^��}\��{Z��xX��wV��tU��qS�{bN�˱��髊����������襁�����������y�������������r��������ۑl��������щe�����������}[�����������sT�{bN�˱��ꭌ����������覂�����������{��������������s��������ۑl��������щe�����������]�����������vV�{bN�˱��ꮎ����������规�����������|��������������u��������ݓm��������ӊf���������Ɓ^�����������xX�{bN�˱��갏�ꮍ�ꬋ�ꬋ�ꬋ�ꬋ��p��w��}��|��z��w��v��u��s��q�ޓo�ܒm�ِk�׎i�Ԍg��f�އ\�ކ[��~\��~\��~\��{Z��zX�{bN�˱������������������ه`�ׄ^��ɮ��y����������{��x��t��p��m��i��f��b�߉_�ގe���vO��{Q��{O��{O��{O��xK�{bN�˱���������������~��p��������x����������|��x��t��p��m��i��e��b�߉_�؇_�����м�ԂZ��{O��{O��{O��xK�{bN�˱�������������������~W��z�����y�������|��w��t��q��m��i��e��b�ߊ_��W�����m��wP��{O��{O��zL��xK�{bN�˱����������������������ދc��u��t����������|��x��t��q��m��i��e��b�߉^��|S�Յ_��tL��{O��{O��{O��yM��xK�{bN�˱��˱��˰��ʰ��ʯ��ɯ��ɯ��Ȯ��ǭ��Ǭ��Ƭ��ū��Ū��ĩ��è��§��¦������������������������������������������������������~������������������������������������������������Rg���JFIF,,��
fExifMM*bj(1r2��i��-�'-�'Adobe Photoshop CS4 Windows2011:08:26 14:02:45��P�P&(.	0HH���JFIFHH��Adobe_CM��Adobed����			



��PP"����?	
	
3!1AQa"q�2���B#$R�b34r��C%�S���cs5���&D�TdE£t6�U�e���u��F'������������Vfv�������7GWgw�������5!1AQaq"2����B#�R��3$b�r��CScs4�%���&5��D�T�dEU6te����u��F������������Vfv�������'7GWgw������?���ǽ�Tֿx	$�[iA�V������O��V��g�Z?U���8��I��:� �=�#����X#�e��2<DQ�
7u��8����Z���I�W�[����c�#�Wbdu�,+5v�-���=6�w�]m��w�wל��թ�]��Y��;k��ֺ��v��4����a�N�4��*ۺ�M���<��C��W�����~��}~�跷�t�|l&>˪x��sC#����ݷ�����3�;�ɶ�;���%4g�\c�RpO�C��������K��W�����?�=��=v�̸O������?_02��s�KN���Q���W���qK�%�p�y�x��[��{��Y_�_��J�Oϻ*�2���A��%b5�sC�C�� �A�it_���
L��� ,�9�K���2���A�S�S�gU��7;2�=1^1s�a�po�;�9O��;!���\W׫[��=&h�Z�Vͧ�=�]1�	�щѤ%�0�-�?�?[�1��~��>��0�}����"�9����g�g�o]�X�����3��|��M�E�[�Ս��[���^L�:M��cfP@
}�>�o��Br���s��x�¿�>��V��:m�m�-�ǩ�{��c��\�=�~��=y:�_I�vXjf5��$;�@,���W�M��jZ��ʈŐ�!#^9q���r���GN��Uc�'��-��0�?C{��T^DZŏik�a�"#�&M�$]t+�����b������U\�qq��.[=��?��B�>�u��`��NV$Wa<����m]E�~���$A�qڜ��2Է����z��P~W/=��>�4��~ W�Kк��P~W,>��0:����AC��L	��~����~և�n#м�߫��h���$2�`���>�W����wc�ʉIc@$*>��ћ�wg`.M���>�N���oJ�o��3�V�-sX������8c��H�#�Vby'�CS�F�-T��ڌX�0�8�S2�l1[���O�V,nף���~���Xn�+�h�ݟ�g�Mq6�m���Yc9��B���=S�u��Ɖs����e�Mdž�]�2��9;ϸ?��֪\�L�#�|�_�w��8�`�G�Ajt�<߫}{�����h�'Ԃƻ�,e��t_���##&���X}ZCObߠ柤�5k�_���	�9};��'H�=[���z��P~W,��ֿ�����g�<_$\̟<��o��zoU���-���\?�����_T��Y8����dPد�u����Lj�1�ɥ�^�eV
�c� �e�/����2�c
7Vf�f������� %ix�/�s����s"BQ�@p�?�!��R^{��Au@:�r�;e���j]K�c��Cl��o�?�Z��L����C����}���'��u���S�ʽ��?1�G=����.�ڽo�NM�T�Ͻ�=��E��>�XE>�>
�oͲE���n;]��z��11���`���5��~���p�b!c|R���t�Z�')H�ZJ�c�q��y&Z=��?��B�Z=��?��Bv_������뺇O�*澷4ݾ�|I�
��+����El�����F��l�q�b�~�y�ȥ�+����El���?{0�y|��89nߑ����]8�\�5ɱ��t�go�������{]�u)&���~I��U��q�b�~�y�ȥ�+����El���O��<\oع_�_��*�O���>���I��_I�DQꑊ ������Photoshop 3.08BIMi8BIM%�
�`P���$�8BIM�,,8BIM&?�8BIM
x8BIM8BIM�	8BIM'
8BIM�H/fflff/ff���2Z5-8BIM�p��������������������������������������������������������������������������������������������8BIM8BIM"8BIM08BIM-/8BIM@@�8BIM8BIMMPPgravatar-defPPnullboundsObjcRct1Top longLeftlongBtomlongPRghtlongPslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenumESliceOrigin
autoGeneratedTypeenum
ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongPRghtlongPurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT	horzAlignenumESliceHorzAligndefault	vertAlignenumESliceVertAligndefaultbgColorTypeenumESliceBGColorTypeNone	topOutsetlong
leftOutsetlongbottomOutsetlongrightOutsetlong8BIM(?�8BIM58BIM	LPP�K	0���JFIFHH��Adobe_CM��Adobed����			



��PP"����?	
	
3!1AQa"q�2���B#$R�b34r��C%�S���cs5���&D�TdE£t6�U�e���u��F'������������Vfv�������7GWgw�������5!1AQaq"2����B#�R��3$b�r��CScs4�%���&5��D�T�dEU6te����u��F������������Vfv�������'7GWgw������?���ǽ�Tֿx	$�[iA�V������O��V��g�Z?U���8��I��:� �=�#����X#�e��2<DQ�
7u��8����Z���I�W�[����c�#�Wbdu�,+5v�-���=6�w�]m��w�wל��թ�]��Y��;k��ֺ��v��4����a�N�4��*ۺ�M���<��C��W�����~��}~�跷�t�|l&>˪x��sC#����ݷ�����3�;�ɶ�;���%4g�\c�RpO�C��������K��W�����?�=��=v�̸O������?_02��s�KN���Q���W���qK�%�p�y�x��[��{��Y_�_��J�Oϻ*�2���A��%b5�sC�C�� �A�it_���
L��� ,�9�K���2���A�S�S�gU��7;2�=1^1s�a�po�;�9O��;!���\W׫[��=&h�Z�Vͧ�=�]1�	�щѤ%�0�-�?�?[�1��~��>��0�}����"�9����g�g�o]�X�����3��|��M�E�[�Ս��[���^L�:M��cfP@
}�>�o��Br���s��x�¿�>��V��:m�m�-�ǩ�{��c��\�=�~��=y:�_I�vXjf5��$;�@,���W�M��jZ��ʈŐ�!#^9q���r���GN��Uc�'��-��0�?C{��T^DZŏik�a�"#�&M�$]t+�����b������U\�qq��.[=��?��B�>�u��`��NV$Wa<����m]E�~���$A�qڜ��2Է����z��P~W/=��>�4��~ W�Kк��P~W,>��0:����AC��L	��~����~և�n#м�߫��h���$2�`���>�W����wc�ʉIc@$*>��ћ�wg`.M���>�N���oJ�o��3�V�-sX������8c��H�#�Vby'�CS�F�-T��ڌX�0�8�S2�l1[���O�V,nף���~���Xn�+�h�ݟ�g�Mq6�m���Yc9��B���=S�u��Ɖs����e�Mdž�]�2��9;ϸ?��֪\�L�#�|�_�w��8�`�G�Ajt�<߫}{�����h�'Ԃƻ�,e��t_���##&���X}ZCObߠ柤�5k�_���	�9};��'H�=[���z��P~W,��ֿ�����g�<_$\̟<��o��zoU���-���\?�����_T��Y8����dPد�u����Lj�1�ɥ�^�eV
�c� �e�/����2�c
7Vf�f������� %ix�/�s����s"BQ�@p�?�!��R^{��Au@:�r�;e���j]K�c��Cl��o�?�Z��L����C����}���'��u���S�ʽ��?1�G=����.�ڽo�NM�T�Ͻ�=��E��>�XE>�>
�oͲE���n;]��z��11���`���5��~���p�b!c|R���t�Z�')H�ZJ�c�q��y&Z=��?��B�Z=��?��Bv_������뺇O�*澷4ݾ�|I�
��+����El�����F��l�q�b�~�y�ȥ�+����El���?{0�y|��89nߑ����]8�\�5ɱ��t�go�������{]�u)&���~I��U��q�b�~�y�ȥ�+����El���O��<\oع_�_��*�O���>���I��_I�DQꑊ ����8BIM!UAdobe PhotoshopAdobe Photoshop CS48BIM��!�http://ns.adobe.com/xap/1.0/<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.2-c063 53.352624, 2008/07/30-18:12:18        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:exif="http://ns.adobe.com/exif/1.0/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmp:CreatorTool="Adobe Photoshop CS4 Windows" xmp:CreateDate="2011-08-23T21:52:04+07:00" xmp:MetadataDate="2011-08-26T14:02:45+07:00" xmp:ModifyDate="2011-08-26T14:02:45+07:00" dc:format="image/jpeg" xmpMM:InstanceID="xmp.iid:BF76304EB1CFE0118EADDB079BF6CD0A" xmpMM:DocumentID="xmp.did:ACDA3B7797CDE0119B3BB1CB33EA20D3" xmpMM:OriginalDocumentID="xmp.did:ACDA3B7797CDE0119B3BB1CB33EA20D3" tiff:Orientation="1" tiff:XResolution="3000000/10000" tiff:YResolution="3000000/10000" tiff:ResolutionUnit="2" tiff:NativeDigest="256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;7C11F3328D4E928BA7CF771AF27BC5E5" exif:PixelXDimension="80" exif:PixelYDimension="80" exif:ColorSpace="1" exif:NativeDigest="36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;EE10C350724BE0305260295EBCF555B9" photoshop:ColorMode="3" photoshop:ICCProfile="sRGB IEC61966-2.1"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:ACDA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T21:52:04+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:ADDA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T21:53:26+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:AEDA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T21:58:18+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:AFDA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:00:42+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:B0DA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:00:54+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:B1DA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:26:40+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:B2DA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:33:16+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:B3DA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:34:30+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:B5DA3B7797CDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:35:36+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:1D2520989DCDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:35:56+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:1E2520989DCDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:38:29+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:1F2520989DCDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:39:01+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:202520989DCDE0119B3BB1CB33EA20D3" stEvt:when="2011-08-23T22:39:30+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A1A00195AECFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T13:42:35+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A2A00195AECFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T13:42:35+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A3A00195AECFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T13:49:33+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A4A00195AECFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T13:50:39+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A5A00195AECFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T13:57:23+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A6A00195AECFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T13:59:37+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:BE76304EB1CFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T14:02:45+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="converted" stEvt:parameters="from application/vnd.adobe.photoshop to image/jpeg"/> <rdf:li stEvt:action="derived" stEvt:parameters="converted from application/vnd.adobe.photoshop to image/jpeg"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:BF76304EB1CFE0118EADDB079BF6CD0A" stEvt:when="2011-08-26T14:02:45+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:BE76304EB1CFE0118EADDB079BF6CD0A" stRef:documentID="xmp.did:ACDA3B7797CDE0119B3BB1CB33EA20D3" stRef:originalDocumentID="xmp.did:ACDA3B7797CDE0119B3BB1CB33EA20D3"/> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 <?xpacket end="w"?>��XICC_PROFILEHLinomntrRGB XYZ �	1acspMSFTIEC sRGB���-HP  cprtP3desc�lwtpt�bkptrXYZgXYZ,bXYZ@dmndTpdmdd��vuedL�view�$lumi�meas$tech0rTRC<gTRC<bTRC<textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ �Q�XYZ XYZ o�8��XYZ b����XYZ $����descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view��_.���\�XYZ L	VPW�meas�sig CRT curv
#(-27;@EJOTY^chmrw|�������������������������
%+28>ELRY`gnu|����������������&/8AKT]gqz������������!-8COZfr~���������� -;HUcq~���������
+:IXgw��������'7HYj{�������+=Oat�������2FZn�������		%	:	O	d	y	�	�	�	�	�	�

'
=
T
j
�
�
�
�
�
�"9Qi������*C\u�����


&
@
Z
t
�
�
�
�
�.Id����	%A^z����	&Ca~����1Om����&Ed����#Cc����'Ij����4Vx���&Il����Ae����@e���� Ek���*Qw���;c���*R{���Gp���@j���>i���  A l � � �!!H!u!�!�!�"'"U"�"�"�#
#8#f#�#�#�$$M$|$�$�%	%8%h%�%�%�&'&W&�&�&�''I'z'�'�(
(?(q(�(�))8)k)�)�**5*h*�*�++6+i+�+�,,9,n,�,�--A-v-�-�..L.�.�.�/$/Z/�/�/�050l0�0�11J1�1�1�2*2c2�2�3
3F33�3�4+4e4�4�55M5�5�5�676r6�6�7$7`7�7�88P8�8�99B99�9�:6:t:�:�;-;k;�;�<'<e<�<�="=a=�=�> >`>�>�?!?a?�?�@#@d@�@�A)AjA�A�B0BrB�B�C:C}C�DDGD�D�EEUE�E�F"FgF�F�G5G{G�HHKH�H�IIcI�I�J7J}J�KKSK�K�L*LrL�MMJM�M�N%NnN�OOIO�O�P'PqP�QQPQ�Q�R1R|R�SS_S�S�TBT�T�U(UuU�VV\V�V�WDW�W�X/X}X�YYiY�ZZVZ�Z�[E[�[�\5\�\�]']x]�^^l^�__a_�``W`�`�aOa�a�bIb�b�cCc�c�d@d�d�e=e�e�f=f�f�g=g�g�h?h�h�iCi�i�jHj�j�kOk�k�lWl�mm`m�nnkn�ooxo�p+p�p�q:q�q�rKr�ss]s�ttpt�u(u�u�v>v�v�wVw�xxnx�y*y�y�zFz�{{c{�|!|�|�}A}�~~b~�#��G���
�k�͂0����W�������G����r�ׇ;����i�Ή3�����d�ʋ0�����c�ʍ1�����f�Ώ6����n�֑?����z��M��� ����_�ɖ4���
�u��L���$�����h�՛B��������d�Ҟ@��������i�ءG���&����v��V�ǥ8��������n��R�ĩ7�������u��\�ЭD���-�������u��`�ֲK�³8���%�������y��h��Y�ѹJ�º;���.���!������
�����z���p��g���_���X���Q���K���F���Aǿ�=ȼ�:ɹ�8ʷ�6˶�5̵�5͵�6ζ�7ϸ�9к�<Ѿ�?��D���I���N���U���\���d���l���v�ۀ�܊�ݖ�ޢ�)߯�6��D���S���c���s���
����2��F���[���p�����(��@���X���r�����4��P��m��������8��W��w����)���K��m����Adobed@�����PP��
���	
	
	u!"1A2#	QBa$3Rq�b�%C���&4r
��5'�S6��DTsEF7Gc(UVW�����d�t��e�����)8f�u*9:HIJXYZghijvwxyz����������������������������������������������������m!1"AQ2aqB�#�R�b3	�$��Cr��4%�ScD�&5T6Ed'
s��Ft����UeuV7��������)����������(GWf8v�������gw�������HXhx�������9IYiy�������*:JZjz��������?�ӽ��}�����Kg`���s��
�ZJ�^k)���d3]6?O��Q=D�/ME��a{�2���Sg޶���t��%�V���EEb�]����Ϭ`��k�6]��m��!���]��;(U�Z�(I'��9~��d���/;���^��F��u��[����g6��E��Oq?��k���VK�7o��S�w��;s3L�������|� �4��MUp8Ԃ��m=��;���{�̰��B��DtWu�5��a�ڭ�qV�e#�2���u������&;G��wp����}���������sub=-"�{X���ؽ�Jۈ[�XX�4	_���O��:n
Z�b�etC;�d=H�|���(-�zn]���hi��nN��\29��O���Դ�,�(��ǀ�my?�/��\���EB���Ɯp#'gN�s=YBn/9z8��x'U��*d>Y�>�3{9�2�\����G���/���y���j����O���x�����������^��߿ֻ`�������WZ�]
��P��$���{�������^��߿ֻ`�������W^�]
��P��$���{�������^��߿ֻ`�������W^�]
��P��$����{�w�����7;m�Scp�%�h�t�KK�V��dch�s�`�onmǰw:r��˖6�6S��I.����i'Qs�^�<���1^��^��Z��pk��v�}:�п��C/�
d������Oؕu��<^����>��×�G���k�����9�5��ʣ�?�v?��O�O�?*�"�Gb|{�+]��4~ǡ��x��h��[P,ۣrdp�R�llؼmR���г�}dh�a�ئ�wK���fZ��r�P���#Q��߳�}��!�v�]��j@�jU���@sU�g��ʜ�T�O����Ҟ�)����3RV�j�z�fϰp�b�ž?�L6g~o�T>F�&�O�Z���f�{�Zm��шi�Uq�
��:I�:kP)����6�Ȼ}�ڂ rt�2%>U��<ƪMz�����;��θ�_?:hvoznyz�kc)�Njm���m��\O_l�,F?�!��s��jY�����qx�Y�-$�I����W7w�H�N�9mD�>d��>}
������Ū%HG��ǐꙿ�gq>��[��_�=u�Kc���i�����oO��XJ-���.;*���%MG4Q��PH���X�E:�F
�Sѡ�6Z5+�A֬{_�|슸�gvv�ҭ�#�*����Sqqk633K �1�[�����}���=��u�4�E?ɇE�;�x�.�{YP�<Q��jz<}E��}�-U1~�n��@љ��m��۾��G�Z�����(nŖ�Q77 c=�ݎx��k�}L#�΢@~�ğ��@��ڞH����4��@��1��=^�Ŀ���=�[�ٿ"���ﮒ:H7|u��j�����e�����G�CUA
��WF��W��d�+M���n��]u@OͰ��A�q.:����]�kI.����gE4��r�S�%X�z��~B�/AE��WQ��y*Jz�vKS
mB��������y)�*��^9#fGF
��qȒ�K��� �PA� �G:����w�T+"�"��9 �u>������������N�=��u&{[�%]�y�����S�)��ǘ<�oՑ`l����g�kL[�����)v����4i��?jD?��/n�_�^XP?��ǔ�����U�GÝ��퍼jPm����}#m��7rn\�8�.3KvS'I5;�+�&
`C<�c�����[x�֌�SS-J�(��SV=�z�Џ���Xy�d�����V:�V�i
ME��Z+�-/�������]����[??�����ʝ���&{�p9<�^n��[�H�c��"�cjk^�&o��d�FSq�&��{�1qƤ�Px��dߘ_�w��L�-���_�غ��q�͋-at�b{{��R*��.��Vm.��[����>
(!��<��cWE<U	,��_����u�n��L۫����������e����B����g�n]����߸���=�K�j�uh�9)c�Y�%y���u���׽��tn>�?����Cbu�����m���o�gv�W�{�!-<[^-˔�b��C��Ue�*&�8�Y⑥�����,v
˘,�9�yb��:C#*�CMٕ���� �I�_�ow��o�r��!���V1]z����$�[�t/D���ή۽=�ty�~��|تL����j؟']>F����ed��5mK����"����8v=�×��6��l㮐��rjr��$�
�XG��W���O��N�y%5UA����>d�e_����j���}��N�=��t9���J�������һ?�t0��O:�G�4���;���^ؠ}���Ko��Xg�k��lXq�Q�W$�W�矺h���;m,;�=r����q�r�����2�>�mZd�-F�
��ދ��9?�b4{�����Z��(?oG>�[>��U(�Z[I �LԈ'b>δ��e�VK�_�n�M��%z�}f���uu��;T��w�WcjjTSo�*���u��6���={=�[_��?lr"'0E�֓�a�Bx���W���z������۽�����ߗ�{�n���*�p�kd8�R�]�+�/�%76��mL'G�Mng�����[%K�����zZ�k3����)�MޤF�Ub,}�v~�s��6�i��u���,YMi�G�>D�!�{��V0�W|�`��F�����XT�I���	Q�F)���gb�Rg����
QQ���M����)y:83��uQ�T�O#�Y���?w�u�����9�4��:(z1�#1<'�U��ڻ�Ŵ��&�G�e������*�Đ:!�lFW���gq��l�*�z�'+GQ��c��dh�h�j㊦���U*�Ȫ�������������⺍��:�u`hU��*A�:��m�mỳ�ImdP�����V�� ���펟�yo���B��oƸv����pt_𝕼g���_�6ܴ���޵&Fif��Pc������Z�|���:y��?7�3�𶼓V�e�9	��OӐ��X���~!�{��+�<�nm#��{�H��_Ԍ|�!�y+>�Ɵ����j�����?�$����>7U���J�������ӻ����1��4�����_k��}�=g����{��%����rN���W�G��%���}f�+�T�5��w[Sг/кÕ�������wܯ���9?h�==�D7<�!��@�L���GU������7�����23�Tu��[sh�릥�oj�UT�Y
��u�U�6�l/�)#����Hw=��Bߜ�9���a�b�X��d%X�)"Vh�;�9Uv���'��9]i�e����\jP�������H�1!6��龧������d�J�\xj����z܎:*�WJ�8"��2T�J��[��n=������R4ܿ��s4a��Q�A�T��X���
��o�d�a��������3��%�	�Q@.�obN��{ߺ�U����;����-1�W��tAh��M��Աi����e�RF�:<�
,��$� ����m��i7m�Gm�ѧk�K�#��t�K��VԔ�:�C�>���{N�^�d~����
|����˥�WMٳ7F������y
��v�]Mg���YCUK����$�X�x�Fh���Hّ��;�-�q���u�{}�+$n(�@���"����]
�w]�x��7]��.6��2H����~DhT��u|�:�����������:/�%7�(w�.*���jÃY�񹔜�;sx�}�6J�'f�ܵ<�B� �yWj�=��m����]�DBQ]
�P7�H�h,��T�I���g������޶�e1k_���7�X~-!� ���_����P���[�O�I;w��ύ�O�o��w���ׯ�Ի����1��4�����_k��}�=g����{��%����rN���W�~��Vz�{�h|):�uɻ��6L�]:��zU���穩d�s `�J�G!'jdW�FH���s7��6�*�K�H�B�M*x�W+��F��?��u�5�Z�5I�Xd�hEE�:�']�>Q�|����>N�f?���e���aePA^����Ut��}�=��Km���]�'�7��_�D���j�O��羶�s��3��;��-���L��+D��թc�+|���\N���o�v�v��;���і��c*bY鲔��T�c*�`�T�ʌ��op9�p�ڮy�m�q���oq2�4(u0�~ p@�;��9��o��m�Cr�n�C$�o+�)4��#!�2	�$�m׵f4��ln�P���g��,<��^�1d)��3x����?�Zn[v��/�=cuq�T�Q�v�n�6��a4�"2�z�`�����
m��3ۆ��A��L\h%T�X	�_�?�������S�GT��궻}��h���g�Dg?�A�e�e7�����rQ��5
NS%��u���R�ch�3�W޿N�Q�@���t���
�����ޜ�5�QnbbY�����
	$�:��>;���;s[8��;[J�*���QPIO��2�}}���j|!��{�:���&{,�B�y�&�%A��E �a18����Ij)�VD�IRXs�ʻ�컋Zi��ംD�2�X�H)ފ��I�5(�3+L?w^i���z���W*�c=��UZ �3^�g*�kU,�˱�`t�[v��F��jc��C���Tj!|mfݚ�����h����j�X䦫��*�]n�.n��i�;/��֫%�m�(T�*�@!�z��u�6���7-�uXS!�05�	H �ub_����j���=��N�=��t>���J�������ջ����1��4�����_k��}�=g����{��%����rN��/�תJ�շk>/���2�I�{����J�i�v��Txz��k�$K�4�!��O�j��!�KQ�0n��϶<�3�;�ii||�pŮ�*O�炡cB�C��~�;�R�k̻l�wb<�B?�m�L���8\�Rz�c�K���ݫ�k����QQ�g[�b�l�QSſ:��+�e���+�qaif�K��Jkq�~���^l���<m0ywp�ĕ�"��-J���ޯ�[2vj�>��Y�[�$n���o�É[h�Z~�+���B����?x��Ju�~��U7�B�����7OmL�5sv����I��m���t��e�6`&�G[_��J|dM�W�CP.��	�'�����6|˸[�rń�&�('�2"O�U`R*_��Ϻ\��ל���+�5�&= ���+�2��BI�0��C�ߓ��v�`zߏ
��m~�̴O&�>AnzO���5M�Wט-1��H"�zy�r�]f��w_p��[�F�ʼ�(\e'��Ri�d�@E9�Ԑ�B[.���z�Wk����ʜ(�0�3�1�J0:�/bނ�����n��5����t�䓷�G���I���Wq����z�ֻ����1��4�����_k��}�=g����{��%����rN��/�פ���[;�6n���۸�۲�~*�	���b=OV��)d��p�C4L��̉,N�"�I}ci�Z\X_۬�r�WF�TB
 �zUe{w������4W�0de����* ���w�?四X�~����{5G�����uy.���F&��V��P
|���{^� )r�L�E�1��i_f�=��{Y�`ۤ�}�`Q-ŤL(b�&�n���
1�>�˛7��Qoܿ�G����;�&+{�T�K�B�H�M�:�7��o�{6Kkc���I��%=$+O]����f$(�@�T�x�gJpIQ�����Y[W�+�h���;�&s�V-'q�d��j+�y�sŜж��U@���ݯz���\�-�ǁ3G"�P�ȄI����fbzy�)�
4��mZ�1{â����a&ew}�߆"�7�f����0�p�u��(�v��cٞLe�˞��D�4�ďO�TL���90�U����NrV�y;���w�2�RJ�_�l��G���AS��k�N�3-���f��N��ߺ��Uv��.�
��\�S�:�e�g^ �;^
D��&�ڎ�A��~��6I���ɳ�����x2��1Y�A�#C#iQ�H(�O(휏z��ϗ��XȖ��h�Љo&��kQ�+C���UԝK���[S�:�nQ�M��1���Xj?$�8ü�5��s��y,�N�Y**��y**�eydfv$�m{]�˷��m���Ҫ?�$�5,Ƥ�I5=n����s��W[ٚ���@�(AЍ�ä����n��5����t�䓷�G���I���Wq����z��ػ�A��ݘ����m�:J
�&h�U�Jz���%��g�(p��*��
�-br��9�l�ݺ��	�W��(�E
��S��T�zg�[�.N��q����� C��P��Ҍ)F�@O�&���;��M�ؿ�����y���m�#������Y���Z���&���;��M�ؿ�����(w����޽������Y���Z���&���;��M�ؿ�����(w����޽������Y���Z�*����:?��e���4���j�˅��n
�.d&�=��x��}�bm4�.���w��]�C.�ʍ$Njx0���Uc��Лn�}�ڐEa�k#���2��Z"��7u��:���y%��~��͌�E"�M���d�.N�e*V\fCtm\�^.@Pz��#����v϶;d�-�(��\1�'#�/+����osw(�+�mV��DҠ?hH�ν��M;?�w��>����b����?���?���[�k���L��{���u�M;?�w��>����~�]��P�?�#���{�k���L��{���u�M;?�w��>����~�]��P�?�#���{�k���L��{���t>�}�}���7��Y�[M��l	����N���-V�V���b�E�1���>����o1��[YA:I���@)��iv�}:�g(n\�{ws{<
�iɮ�s����ۣܿ�I׽��u�~��{ߺ�^��׽��u�~��{ߺ�^��׽��u���A���JFIFHH���ExifMM*bj(1r2��i��
��'
��'Adobe Photoshop CS4 Windows2011:08:27 09:25:52�������&(.�HH���JFIFHH��Adobe_CM��Adobed����			



����"��
��?	
	
3!1AQa"q�2���B#$R�b34r��C%�S���cs5���&D�TdE£t6�U�e���u��F'������������Vfv�������7GWgw�������5!1AQaq"2����B#�R��3$b�r��CScs4�%���&5��D�T�dEU6te����u��F������������Vfv�������'7GWgw������?�@hN�I)I$�JRI$���H9Y�ؕ��7�����II�\�w֫�%�M������r�3u���>�KΚ�4�Ii�0�WQϫ�����4�RS�$���J��oo}���ڶ�>����B���?ɱ%:�$�JRI$���I$���T�I%)$�INo[�߳�h�_o���{�-gW�v;s�l��-�j7��T�YmQ[����Y�)�W\�}�8.�V�dedeXm�y�����BI%)$�IJI$�R�I$��t����<�n��Wa姳qu�Wi�3�gOiy�j>�ό}���$�I%)$�IO��T�I%)$�IO���ɶ��{���CH�JRI$���I$�$�I)I$�JR��qnU�v{�m1�XKW�Ɏ�����RSؤ�I)I$�J��T�I%)$�|��|}l�Cf�|S�d3Ӿ��{��PVz��ݛm�����D]���J�JRI$���I$�$�I)I$�JR����?�����Y+s�������?�	)�I$���I%?��T�I%)r�[n'*�g��Ǜ�����liB�v5��IN*I$���I$�$�I)I$�JRI$������ԏ�I$����{��uo2�ɮ|����ZK��w�k��b�IJI$�S��T�I%)s�[q���%���X���o�J��1�ɥ�\7W`����K�TY�K�O�:�t[v�+�`}�5�6MdVO%��2IM4�I%)$�IJI$�R�I$����A�9=N�ʏ���~��=�����̋}k(�RA-��ajJE�v�WJ�D���o����k�ֈpN���I$���T�I%)$�IJY}��]�	��,�?9����J|��������d�Co:�����׮b�m��]�5����
J`�I$�$�I)I)UU�<WS���%u��q�rs!�
Y_!��߼���0���E�C�<�1j$�JRI$���I$���T�I%)$�IJI%K�uJzu���WX��Jn���a[Q9�c�n�ρ������<��ec�kA��޳�sr��Z�#�N��ߢ����r�0Z[@�d����ګ$�JR��OO�H�q��-$��ݵUI%=�>U��6�~s#_�r���3+�=��y
:�~��W�N�[�u�֎Z��5�)��U:wP��c�Ѝ��\���$�I)I$�J��T�I%)$�ILl{+c�y����
J�z�{���{�o�����}i��q[���˿����*���I$�$�I)I$�JRI$����sw��e���E��r�W��ߢf}��Uc��������}�)��I$�$�I)��T�ʩ$�ꤗʩ$���;!�R�sKDP0}�@�?yۖb�S�/I%>Ȓ�S�/I%>Ȓ�S싣��n���>����x���5|�J~�I|��J~�I|��J����Photoshop 3.08BIM%8BIM�HH8BIM&?�8BIM
x8BIM8BIM�	8BIM'
8BIM�5-8BIM������������������������8BIM8BIM8BIM08BIM-8BIM@@8BIM8BIMY��gravatar-anonymous��nullboundsObjcRct1Top longLeftlongBtomlong�Rghtlong�slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenumESliceOrigin
autoGeneratedTypeenum
ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong�Rghtlong�urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT	horzAlignenumESliceHorzAligndefault	vertAlignenumESliceVertAligndefaultbgColorTypeenumESliceBGColorTypeNone	topOutsetlong
leftOutsetlongbottomOutsetlongrightOutsetlong8BIM(?�8BIM8BIM���������JFIFHH��Adobe_CM��Adobed����			



����"��
��?	
	
3!1AQa"q�2���B#$R�b34r��C%�S���cs5���&D�TdE£t6�U�e���u��F'������������Vfv�������7GWgw�������5!1AQaq"2����B#�R��3$b�r��CScs4�%���&5��D�T�dEU6te����u��F������������Vfv�������'7GWgw������?�@hN�I)I$�JRI$���H9Y�ؕ��7�����II�\�w֫�%�M������r�3u���>�KΚ�4�Ii�0�WQϫ�����4�RS�$���J��oo}���ڶ�>����B���?ɱ%:�$�JRI$���I$���T�I%)$�INo[�߳�h�_o���{�-gW�v;s�l��-�j7��T�YmQ[����Y�)�W\�}�8.�V�dedeXm�y�����BI%)$�IJI$�R�I$��t����<�n��Wa姳qu�Wi�3�gOiy�j>�ό}���$�I%)$�IO��T�I%)$�IO���ɶ��{���CH�JRI$���I$�$�I)I$�JR��qnU�v{�m1�XKW�Ɏ�����RSؤ�I)I$�J��T�I%)$�|��|}l�Cf�|S�d3Ӿ��{��PVz��ݛm�����D]���J�JRI$���I$�$�I)I$�JR����?�����Y+s�������?�	)�I$���I%?��T�I%)r�[n'*�g��Ǜ�����liB�v5��IN*I$���I$�$�I)I$�JRI$������ԏ�I$����{��uo2�ɮ|����ZK��w�k��b�IJI$�S��T�I%)s�[q���%���X���o�J��1�ɥ�\7W`����K�TY�K�O�:�t[v�+�`}�5�6MdVO%��2IM4�I%)$�IJI$�R�I$����A�9=N�ʏ���~��=�����̋}k(�RA-��ajJE�v�WJ�D���o����k�ֈpN���I$���T�I%)$�IJY}��]�	��,�?9����J|��������d�Co:�����׮b�m��]�5����
J`�I$�$�I)I)UU�<WS���%u��q�rs!�
Y_!��߼���0���E�C�<�1j$�JRI$���I$���T�I%)$�IJI%K�uJzu���WX��Jn���a[Q9�c�n�ρ������<��ec�kA��޳�sr��Z�#�N��ߢ����r�0Z[@�d����ګ$�JR��OO�H�q��-$��ݵUI%=�>U��6�~s#_�r���3+�=��y
:�~��W�N�[�u�֎Z��5�)��U:wP��c�Ѝ��\���$�I)I$�J��T�I%)$�ILl{+c�y����
J�z�{���{�o�����}i��q[���˿����*���I$�$�I)I$�JRI$����sw��e���E��r�W��ߢf}��Uc��������}�)��I$�$�I)��T�ʩ$�ꤗʩ$���;!�R�sKDP0}�@�?yۖb�S�/I%>Ȓ�S�/I%>Ȓ�S싣��n���>����x���5|�J~�I|��J~�I|��J��8BIM!UAdobe PhotoshopAdobe Photoshop CS48BIM��maniIRFR�8BIMAnDs�nullAFStlongFrInVlLsObjcnullFrIDlongf�{FStsVlLsObjcnullFsIDlongAFrmlongFsFrVlLslongf�{LCntlong8BIMRoll8BIM�mfri8BIM���http://ns.adobe.com/xap/1.0/<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.2-c063 53.352624, 2008/07/30-18:12:18        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:exif="http://ns.adobe.com/exif/1.0/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmp:CreatorTool="Adobe Photoshop CS4 Windows" xmp:CreateDate="2011-08-27T09:17:51+07:00" xmp:MetadataDate="2011-08-27T09:25:52+07:00" xmp:ModifyDate="2011-08-27T09:25:52+07:00" dc:format="image/jpeg" xmpMM:InstanceID="xmp.iid:AACAF1C352D0E0119F6CCA48C7F5E69A" xmpMM:DocumentID="xmp.did:A4CAF1C352D0E0119F6CCA48C7F5E69A" xmpMM:OriginalDocumentID="xmp.did:A4CAF1C352D0E0119F6CCA48C7F5E69A" tiff:Orientation="1" tiff:XResolution="720000/10000" tiff:YResolution="720000/10000" tiff:ResolutionUnit="2" tiff:NativeDigest="256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;EA52433A2EE5ED9CE8DE1BE61ECE0E81" exif:PixelXDimension="150" exif:PixelYDimension="150" exif:ColorSpace="65535" exif:NativeDigest="36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;AFBE0FFA1C55E563755D599CF613124B" photoshop:ColorMode="1" photoshop:ICCProfile="Dot Gain 20%"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:A4CAF1C352D0E0119F6CCA48C7F5E69A" stEvt:when="2011-08-27T09:17:51+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A5CAF1C352D0E0119F6CCA48C7F5E69A" stEvt:when="2011-08-27T09:21:26+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A6CAF1C352D0E0119F6CCA48C7F5E69A" stEvt:when="2011-08-27T09:22:33+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A7CAF1C352D0E0119F6CCA48C7F5E69A" stEvt:when="2011-08-27T09:23:49+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A8CAF1C352D0E0119F6CCA48C7F5E69A" stEvt:when="2011-08-27T09:24:55+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A9CAF1C352D0E0119F6CCA48C7F5E69A" stEvt:when="2011-08-27T09:25:52+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="converted" stEvt:parameters="from application/vnd.adobe.photoshop to image/jpeg"/> <rdf:li stEvt:action="derived" stEvt:parameters="converted from application/vnd.adobe.photoshop to image/jpeg"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:AACAF1C352D0E0119F6CCA48C7F5E69A" stEvt:when="2011-08-27T09:25:52+07:00" stEvt:softwareAgent="Adobe Photoshop CS4 Windows" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:A9CAF1C352D0E0119F6CCA48C7F5E69A" stRef:documentID="xmp.did:A4CAF1C352D0E0119F6CCA48C7F5E69A" stRef:originalDocumentID="xmp.did:A4CAF1C352D0E0119F6CCA48C7F5E69A"/> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 <?xpacket end="w"?>���ICC_PROFILE�ADBEprtrGRAYXYZ �acspAPPLnone���-ADBEcprt�2desc�gwtpt\bkptpkTRC�textCopyright 1999 Adobe Systems Incorporateddesc
Dot Gain 20%XYZ ���-XYZ curv 0@Pa���Du��R��Y��9��.��9��W�"��	a	�
A
�)��

���,�E�e��$�W��2�x�o�v'��D� �!q"."�#�$p%4%�&�'�(U)")�*�+�,e-:..�/�0�1}2\3=455�6�7�8�9�:~;m<^=Q>E?;@3A,B&C"D EF G#H'I-J4K<LGMSN`OoPQ�R�S�T�U�WXY:ZX[x\�]�^�`a-bVc�d�e�gh8iij�k�mn?oxp�q�s+tju�v�x/ytz�|}J~��.�|�ͅ�q�ʼn�r�ˍ%���ݑ<�����_�Ø(�����`�˟7��������i�ީT�ˬD���9���4���4���:���E�;V��l�ć�Ǩ�;���c�ϒ�+���a�ל�<����#���n���i���o�����5���W�����A����Adobed��C���������	
	u!"1A2#	QBa$3Rq�b�%C���&4r
��5'�S6��DTsEF7Gc(UVW�����d�t��e�����)8f�u*9:HIJXYZghijvwxyz������������������������������������������������������?��߽�߽�߽�߽�߽�߽�߽�߽�߽�����߽�߽�߽��x�򟤾2�3�۾��a6�1)�w������"J`2.�UP��1�$�H�|��o���UU؞���魢�$T�������<��|����t�t4�zv$
�,�e���.����}v>��53y|��mٝ͒��ƫ���H�ub����_�w
�a3��;jgՋ����[����'��t@	���{v�ߔ[X�lw�j�E���yf3؅n=_�7NSX�&p<��?��&�������:uQ&�ݒ��[oS��<���X���A��y�5%o�ٝ�Q߯w��c2������y���Pb��M��%�IM�/~��~������߽�߽���#������z��o��sy��B��>��566J|d�誷&bx$��Y!���[�'�"������7��'Y�C�ᩝ�<X���{�m#������*-��&m�?�SiR�?�s����m�����YW#��9\��"uf ��8�Q���ݽ���|n<�����S��gk�29�O
��ݒP�%�Q�DUPL���{��{��SM
M4���S��O��M�"�c*�K�ee ��1�Z�K+����]�5��HLq�99�UnϷ�R�-�P�~�s�MkyC��hz���~������߽�߽���j{��n�T�-UO�7�i��ͯǶ1�
�iC\�)6�>�;�V����߽�߽�߽�߽��d�\�?3�����q5ԙ<fF�g����PTGUE[IQY ����d�ԆWPG#��?��?�_�ߵ$0�k1�8��OXқw�'�
��@�SS�d(ڪ�3Ȧ���{�2>�������߽��}�{�]��]�����6����!��x��m̖F9.#C���މ�����������-�H��aw�Z�N���;_x�!��]���2k�tE�>��
s_�O���~�����߽���O�#�.e^����~����S�Vޠ?#ސ>�������������#ּ}����GUָ��Nl�A�) F?���0�c�do~������߽��g�89w?Nv�څ�n�ߘ8�PKI.[keh#@$�T�E?~��~��~��~��~��ww��q�/j�~X���soH|��j��6�õ�����}�߽�����߽��d�+�ߦ~)�y>����s����6���G��YX�D'#]
�t�c��s�i�Ȩ���~�M��ݟܺ����n��V�Zih�n�WO6j���+a��O�c�YU�@r���~��~��~��~��{$lݙ�[֮X M��v.Ϣ��H��Um�V-5-;HW\�
�(�f�8���{��{����߽�ާ?ͯ{�n��;�=D�P����S�a�r~�zִi��Wn�Wo�|j	��+7߽�߽�߽�߽�߽����
ZJ_X�Ts��R-L�MI_R��S]O��*ڄ��^UFXcRHEu߈������%�s5RW��{	v�g�6C;���9���I���\\ҿ�S�f7߽�����߽�ޠ��>;�t4��<��:WbO�	��g��/����T�����~��~��~��~��~��{��-%�~t8���+w����]���;(�z}�����߽�޶�Χ��0ݷֽ�KJ����}����61ǹv}}M\MW0c�%����ւB/�ڔ��߽�߽�߽�߽��aK(,l�`	6PY��PI��{����MW]|`荡_L�Y,gY�y��n�9)3�|y̽,��5>K%*?�X>�o�{����߽���+��1�ٮ����&;!,Ff�B2�gpЉ?��O�-U:�$R#
3�M,-鐟u�?�ߤ�
��Nwm�Rm��{�me�4����3��[��#���Q��H�K��y^��~��l��vf����P$�M�3
ݵ�!UٌU5O�<��{}�߽�߽�߽�ݳ�'����>E�3%B�k���uIz�DԳ��I_�0�2G 1HL�MέS�mv]�_��qY�c�i:CoE���2�aI��4;E�QL�GT�"�/�(��ӊ1I%�x���:^�������߽�߽��.�6ψ5���)>Fu�.J��׸����(�J��¦�j�3�A
3O_�樕��S�v-jTS�O�{��{��{��|5������1����%E���1�MvK'������������Q@���r����,tF��S��F��HwWb���IV���S%E-B�͌�Q��CN��(��ҭ3f�߽�߽�����߽�߽��L��U�e`U��*�E� �A��7򧯬�f{k��.�U���'��v����r�U�:�h�L�gl;�~6��fV��(W3��mܭ~pbrX,�.�J<�1CU��c��6���[t��Ԓ"���m�����E�����4�/��voy�*����H����3_��Jb�a����5r�.��g���˛j�`J^�ߵ4ӻ��^��?.��P�E���j���z���;EQ��c��-1�Jg��~��~������߽�߽�߽��S�Q�3�##��Q�݄6�����7%*��<npa�ݓ��>)�J����=�b�����*��	���j�Y�hc7.Le����,1T�j�q蚽ѧ)�YFY�\;��g��_r}�6�g�Ț|��K�wv���@9Y(7�Xv�di"��������zY��4C�gZ�.���G��m����ӫ��X�V3A��,�+C�i�q�yYjb`�r�+�
˛�؁����������߽�߽��}��鴾"�h�x�}��
�DջiMR��pؿ#Ӯ�ݲҲ�Ìz��)��)=t�:�Ĉ�����Cp
���]�����(�llM��$�Қ}�M�*�з
�F�opڀ ��7l�wn��=��uL(����|�vUq�H�ޛMS3���ƣ
2E�t��{�����>��3�+R�m�m��IZu�Qff��^wb�;m���m��F7gjb�~O���ͻ����*����؆xS)��퍳���1�$s&?=���j�\��KG=JV'��H�{ً���dw�Zm�����ے�� �	K���9Lf�E��bk��C4ma$l�:;
��������߽�߽�=��g���{v�e`�r�@�$u:ۥ.#	D�

��Z�
85z|�.��iA�=���ò�wio�߼�{�+.B�P��c�@X1�llr3�8�.:(�iВ�(�Qf��߽�߽�߽�߽���1U֝�/F�,�M��Sh��S)�~ɤ��&z}M��U*�ꞩh��C}�=�߽�����߽�߽���~A5FCb�m�֟Aؽ��I���%M��T� ޖ������t�	{��{��{��{��{q�e�X�/;������h�ج�3詡�c�b����~tOKU
��(��Ǟڡ�^��N٠��j�drT��A�)��622I%1{��������e��~�����߽�ߏ���?�.@�����:���|��\�m��6���5Uy
�]YA�������i�V�Y����Pm&��`�X�U���k��~��~��~��~��{>�&z�'�ю�Xj�6E.����QUD��!���Ո������<�;�e��|���b�Go~������GIF89a�/-1/,998>?@GG2LH1YU5zW{Xqm=YYOSRS[ZQYZUhhhz{e{|d|}aqqq�]�b�d�l�n�o�p�s�x�x�s'�v#��,����������7��1�� ��G��P��Q��T��c��e��i��`��g��}е3Ժ:�	����ūCɰSϷVӸPļiʳaϷa�8��<����� ��!��-��9��:��?��_��X��Z��h��i���x��D��D��F��O��T��Q��T��`��a��b��w��~��f��o��o��u��{����������؀�ޕ�߁��������������������!��,��	H��A�;84䌔	2�#�FD�=�Lh���'̐@#��:�D�e�(^�P�`��!/:�3g�1�dIQȚ:o�H��'B��M�*�(Yb��@t�#�AT���A`�8c�hA0@�#Dp�p��
�1a�d���.�7J�`�C�2d���
��h0 ;jGIF89a� ��������������ض������������������������������������������������!� ,G@�@<p� $8�`�A>xp��&�@�`�
/\H��	-4"B ���g@;]GIF89a�ABD!�����!�,.��i��xM�Ȥ�7����בa&�⚩��b�3ɣS{,�����DD;�GIF89a����������-^�@k�Ir�Cr�.l�4n�X��������������������������������333!�,�@�pH,��r�l6�I��	�V�����\`+��w�D������[M�g�\t}ϸ/�s__qK�a�a~P������f
�����P������^�P��
���h�P�^X����P������P�����b�P�ߖ���P�����P����G��A;.ajax__colorPicker {}
.ajax__colorPicker_container {background-color:#fff;position:absolute;width:201px;overflow:hidden;}
.ajax__colorPicker_container table {border:1px solid #646464;}
.ajax__colorPicker_container table td div {width:10px;height:11px;cursor:crosshair;}�.ajax__calendar_container {padding:4px;cursor:default;width:170px;font-size:11px;text-align:center;font-family:tahoma,verdana,helvetica;}
.ajax__calendar_body {height:139px;width:170px;position:relative;overflow:hidden;margin:auto;}
.ajax__calendar_days, .ajax__calendar_months, .ajax__calendar_years {top:0px;left:0px;height:139px;width:170px;position:absolute;text-align:center;margin:auto;}
.ajax__calendar_container TABLE {padding:0px;margin:0px;font-size:11px;}
.ajax__calendar_container TD {padding:0px;margin:0px;font-size:11px;}
.ajax__calendar_header {height:20px;width:100%;}
.ajax__calendar_prev {cursor:pointer;width:15px;height:15px;float:left;background-repeat:no-repeat;background-position:50% 50%;background-image:url(arrow-left.gif);}
.ajax__calendar_next {cursor:pointer;width:15px;height:15px;float:right;background-repeat:no-repeat;background-position:50% 50%;background-image:url(arrow-right.gif);}
.ajax__calendar_title {cursor:pointer;font-weight:bold; margin-left:15px; margin-right:15px;}
.ajax__calendar_footer {height:15px;}
.ajax__calendar_today {cursor:pointer;padding-top:3px;}
.ajax__calendar_dayname {height:17px;width:17px;text-align:right;padding:0 2px;}
.ajax__calendar_day {height:17px;width:18px;text-align:right;padding:0 2px;cursor:pointer;}
.ajax__calendar_month {height:44px;width:40px;text-align:center;cursor:pointer;overflow:hidden;}
.ajax__calendar_year {height:44px;width:40px;text-align:center;cursor:pointer;overflow:hidden;}

.ajax__calendar .ajax__calendar_container {border:1px solid #646464;background-color:#ffffff;color:#000000;}
.ajax__calendar .ajax__calendar_footer {border-top:1px solid #f5f5f5;}
.ajax__calendar .ajax__calendar_dayname {border-bottom:1px solid #f5f5f5;}
.ajax__calendar .ajax__calendar_day {border:1px solid #ffffff;}
.ajax__calendar .ajax__calendar_month {border:1px solid #ffffff;}
.ajax__calendar .ajax__calendar_year {border:1px solid #ffffff;}

.ajax__calendar .ajax__calendar_active .ajax__calendar_day {background-color:#edf9ff;border-color:#0066cc;color:#0066cc;}
.ajax__calendar .ajax__calendar_active .ajax__calendar_month {background-color:#edf9ff;border-color:#0066cc;color:#0066cc;}
.ajax__calendar .ajax__calendar_active .ajax__calendar_year {background-color:#edf9ff;border-color:#0066cc;color:#0066cc;}

/* styles for calendar today */
.ajax__calendar .ajax__calendar_today .ajax__calendar_day {border-color:#0066cc;}
.ajax__calendar .ajax__calendar_today .ajax__calendar_month {border-color:#0066cc;}
.ajax__calendar .ajax__calendar_today .ajax__calendar_year {border-color:#0066cc;}

.ajax__calendar .ajax__calendar_other .ajax__calendar_day {background-color:#ffffff;border-color:#ffffff;color:#646464;}
.ajax__calendar .ajax__calendar_other .ajax__calendar_year {background-color:#ffffff;border-color:#ffffff;color:#646464;}

.ajax__calendar .ajax__calendar_hover .ajax__calendar_day {background-color:#edf9ff;border-color:#daf2fc;color:#0066cc;}
.ajax__calendar .ajax__calendar_hover .ajax__calendar_month {background-color:#edf9ff;border-color:#daf2fc;color:#0066cc;}
.ajax__calendar .ajax__calendar_hover .ajax__calendar_year {background-color:#edf9ff;border-color:#daf2fc;color:#0066cc;}

.ajax__calendar .ajax__calendar_hover .ajax__calendar_title {color:#0066cc;}
.ajax__calendar .ajax__calendar_hover .ajax__calendar_today {color:#0066cc;}

/* styles for invalid dates as defined by startDate and endDate*/
.ajax__calendar .ajax__calendar_invalid .ajax__calendar_day {background-color:#ffffff;border-color:#ffffff; color:#646464; text-decoration:line-through; cursor:default;}
.ajax__calendar .ajax__calendar_invalid .ajax__calendar_month {background-color:#ffffff;border-color:#ffffff; color:#646464; text-decoration:line-through; cursor:default;}
.ajax__calendar .ajax__calendar_invalid .ajax__calendar_year {background-color:#ffffff;border-color:#ffffff; color:#646464; text-decoration:line-through; cursor:default;}
.ajax__calendar .ajax__calendar_invalid .ajax__calendar_today  {visibility:hidden; cursor:default;}�@charset "utf-8";
/* CSS Document */

.ajax__balloon_popup .rect {
    background-image: url(<%=WebResource("BalloonPopup.Rectangle.sprite.png")%>) !important;
    background-image:url(<%=WebResource("BalloonPopup.Rectangle.sprite.gif")%>);
}

/* SMALL SIZE */
.ajax__balloon_popup .rect .small {
	width:200px;
	height:150px;
}

.ajax__balloon_popup .rect .small .bottom_right {
	background-position: 0 0;
}
.ajax__balloon_popup .rect .small .bottom_right .ajax__content {
	padding: 25px 25px 25px 15px;
}
*html .ajax__balloon_popup .rect .small .bottom_right_shadow 
{
    background: none;    
}
.ajax__balloon_popup .rect .small .bottom_right_shadow {
	background-position: -950px 0;
}

.ajax__balloon_popup .rect .small .bottom_left {
	background-position: 0 -150px;
}
.ajax__balloon_popup .rect .small .bottom_left .ajax__content {
	padding: 25px 15px 25px 25px;
}
*html .ajax__balloon_popup .rect .small .bottom_left_shadow {
    background: none;
}
.ajax__balloon_popup .rect .small .bottom_left_shadow {
	background-position: -950px -150px;
}


.ajax__balloon_popup .rect .small .top_right {
	background-position: 0 -300px;
}
.ajax__balloon_popup .rect .small .top_right .ajax__content {
	padding: 25px 25px 25px 15px;
}
*html .ajax__balloon_popup .rect .small .top_right_shadow {
    background: none;
}
.ajax__balloon_popup .rect .small .top_right_shadow {
	background-position: -950px -300px;
}

.ajax__balloon_popup .rect .small .top_left {
	background-position: 0 -450px;
}
.ajax__balloon_popup .rect .small .top_left .ajax__content {
	padding: 25px 15px 25px 25px;
}
*html .ajax__balloon_popup .rect .small .top_left_shadow {
    background: none;
}
.ajax__balloon_popup .rect .small .top_left_shadow {
	background-position: -950px -450px;
}
/* END OF - SMALL SIZE */

/* MEDIUM SIZE */
.ajax__balloon_popup .rect .medium {
	width:250px;
	height:200px;
}

.ajax__balloon_popup .rect .medium .bottom_right {
	background-position: -200px 0;
}
.ajax__balloon_popup .rect .medium .bottom_right .ajax__content {
	padding: 30px 25px 25px 15px;
}
*html .ajax__balloon_popup .rect .medium .bottom_right_shadow {
    background: none;
}
.ajax__balloon_popup .rect .medium .bottom_right_shadow {
	background-position: -1150px 0;
}

.ajax__balloon_popup .rect .medium .bottom_left {
	background-position: -200px -200px;
}
.ajax__balloon_popup .rect .medium .bottom_left .ajax__content {
	padding: 30px 15px 35px 35px;
}
*html .ajax__balloon_popup .rect .medium .bottom_left_shadow {
    background: none;
}
.ajax__balloon_popup .rect .medium .bottom_left_shadow {
	background-position: -1150px -200px;
}

.ajax__balloon_popup .rect .medium .top_right {
	background-position: -200px -400px;
}
.ajax__balloon_popup .rect .medium .top_right .ajax__content {
	padding: 30px 30px 35px 15px;
}
*html .ajax__balloon_popup .rect .medium .top_right_shadow {
    background: none;
}
.ajax__balloon_popup .rect .medium .top_right_shadow {
	background-position: -1150px -400px;
}

.ajax__balloon_popup .rect .medium .top_left {
	background-position: -200px -600px;
}
.ajax__balloon_popup .rect .medium .top_left .ajax__content {
	padding: 35px 15px 35px 35px;
}
*html .ajax__balloon_popup .rect .medium .top_left_shadow {
    background: none;
}
.ajax__balloon_popup .rect .medium .top_left_shadow {
	background-position: -1150px -600px;
}
/* END OF - MEDIUM SIZE */

/* LARGE SIZE */
.ajax__balloon_popup .rect .large {
	width:500px;
	height:300px;
}

.ajax__balloon_popup .rect .large .bottom_right {
	background-position: -450px 0;
}
.ajax__balloon_popup .rect .large .bottom_right .ajax__content {
	padding: 40px 30px 30px 15px;
}
*html .ajax__balloon_popup .rect .large .bottom_right_shadow {
    background: none;
}
.ajax__balloon_popup .rect .large .bottom_right_shadow {
	background-position: -1400px 0;
}

.ajax__balloon_popup .rect .large .bottom_left {
	background-position: -450px -300px;
}
.ajax__balloon_popup .rect .large .bottom_left .ajax__content {
	padding: 40px 15px 30px 30px;
}
*html .ajax__balloon_popup .rect .large .bottom_left_shadow {
    background: none;
}
.ajax__balloon_popup .rect .large .bottom_left_shadow {
	background-position: -1400px -300px;
}

.ajax__balloon_popup .rect .large .top_right {
	background-position: -450px -600px;
}
.ajax__balloon_popup .rect .large .top_right .ajax__content {
	padding: 30px 30px 45px 15px;
}
*html .ajax__balloon_popup .rect .large .top_right_shadow {
    background: none;
}
.ajax__balloon_popup .rect .large .top_right_shadow {
	background-position: -1400px -600px;
}

.ajax__balloon_popup .rect .large .top_left {
	background-position: -450px -900px;
}
.ajax__balloon_popup .rect .large .top_left .ajax__content {
	padding: 25px 15px 45px 30px;
}
*html .ajax__balloon_popup .rect .large .top_left_shadow {
    background: none;
}
.ajax__balloon_popup .rect .large .top_left_shadow {
	background-position: -1400px -900px;
}
/* END OF - LARGE SIZE */o@charset "utf-8";
/* CSS Document */
/*Round Rectangle Popup Sprite*/
.roundRectangle{float:left; }
#type2 {background-color:#CDDFCA;}
#type2 .corner {background-image:url(<%=WebResource("BalloonPopup.corners-type2.gif")%>);}
.roundedBox {position:relative; padding:17px; margin:0px 0;}
    .corner {position:absolute; width:17px; height:17px;}
        .topLeft {top:0; left:0; background-position:-1px -1px;}
        .topRight {top:0; right:0; background-position:-19px -1px;}
        .bottomLeft {bottom:0; left:0; background-position:-1px -19px;}
        .bottomRight {bottom:0; right:0; background-position:-19px -19px;}		
.up-left-arrow{ float:right; margin-top:-1px; background-image:url(<%=WebResource("BalloonPopup.act_up_left.png")%>); position:relative; top:0; left:10; width:50px; height:30px;}
.up-right-arrow{ float:left; margin-top:-1px;background-image:url(<%=WebResource("BalloonPopup.act_up_right.png")%>); position:relative; top:0; left:10; width:50px; height:30px;}
.down-left-arrow{ float:right; margin-top:-1px; background-image:url(<%=WebResource("BalloonPopup.act_down_left.png")%>); position:relative; top:0; left:10; width:50px; height:30px;}
.down-right-arrow{ float:left; margin-top:-1px;background-image:url(<%=WebResource("BalloonPopup.act_down_right.png")%>); position:relative; top:0; left:10; width:50px; height:30px;}
		
.clear{clear:both ;}��PNG


IHDR#"Յ`�	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�F�IDATxڬ�]l���޹3�_޵�1��q��IL��4�$P)�*RU�J T����}�i�c�"U<�P��JEZ�В�!@b�`'6Nbg�z?�;;3���x�	�t��;{e��sϽ�.13��CD���7��יֺ�F�Q����)d����u(��j�Po����`B@�A[���pk�&����aZ@�)���Çw�j5�y���[�S�N����N&��ggg��n3!�0���#���~���g2�!�Y훽t�����2[�P׾��ɣG��=y�d�����h
��	���|���O=�ԽQ�Ч�k���dO�b̯�L�@�!-�b���m�;�ɗ3��=����8qb�*�*�Z��gϲ�{����R�f�7�ػ��ч?����]�R�]��|�'�cŤ
$@BI��1ao����o��������y�ȑs��z�w���_nj��/�u�ĉ��7��ğ�{`�Ӊ���o{�ݤ��f�:"$C�}��y�Y�Ru��,^�m�\��yp���x���3�<�Ah����r���L�XD[[[�+�رc�?��_����^���(�+~Z^�2u\*m
�JPct���9�+V�Kn�i��nub�~��/������/9A�3uD�qZ�����_:4?6+��4�~;�mKG-�m���)��$V�H	����m�2t|i�1�&��''�����`]?Ѐ�V��W@����
ӟ�?��e��t�er�6�0���6����l�,���VJ��I!-!`f~l�bg�X=�裏��`-�2�L�@3�����>�۹��ӂtZl��H����������2Y��� !4X^Z��v��q��3t�R�G�'�x��4;u��\6��nڴ������DJAH� Q�/��{���c�$kW���N^��7
t��e||��,#��u'pc
�V�����@���T� �3*̎qd�:`�|~����Y"�f]f�a�a�\�{��3����7� M��Y��rbu�"����Y�qL,w���IZ����k)�ه��p����5�+Wٙ/sm��ѝ�1˲RM,Z�& <ϋK�l��%��ZY�І1HR�|�/�"�#�J�4M�D��t]���(��xp��:._����*�t��\�}߷�@�F0T*�8-5%bLQ�P	_�Da��3g.oH�T
�|~C�=�zI�f�#C&X��\.�E�o��s�\�;f9�.%�5��3���g�g��!M�$�zo��]q0lk�bY����
D��Jq�
�ռ�0���������7�*���Ҫ`@2�D؈��
%"{~�E-_A�ZE��#�%�,|��|.�+��NC���џ}���֮��[3�;�kנ�<���+T�-��:y	̀�0"��HS"�-��?�Mg���`;�XK
�;}�tvhh�ޝ��#�W�U<a1H�����5�B,G�gs�c�ӅBa1$%�fLX.:�.]:������3��Up��x}�F@��&�������B��	{��2y�w�}wL�{O�ŭ#�8���,� �5����ڑÀ��h �ٍK���?�����)�ӷ.Iy]nz衇ž����̜;���7�v���.(� L��8`$�T�Zk$��( M��
�x��#��9�f�P�`%�����g0�ޯ�M
@ezz���ř�O�0�������J�J�$���	���J��(��~d7�~߯Ͼ~eni�q����J��ak0�R���SSS��e��o����[rh{���UU���Q,�5�j�|	�Q�V
��s�1)/��>�R\��y����3aa�7ꭺ���8�|X�ځJH)����w�%���Ƿ�9��L�*%Q�������(��F��.�s�}a�����r�b(���0CCC�Zcrr2\�� �E�$��H$r�b3��}{:�����.W�7����~Ik��Z_	���,���iY300�(����+EO��&�v63��d^�NZ
Y�U�*������YWn���rV��
���Py��Pk*�j-N�u)��L&7��j�Uy[S�J�����[?\I�Yc�:��5�8�ſhJ)����)�)e���]�M�D6d���� 6\����w�2����+IEND�B`�C�PNG


IHDR#"Յ`�	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�FnIDATxڬ�MlT����1o����b0_	�6�N�H-(�J)*�(�"�R?�@�x��.�	ɦj��m�E>T��	G*R��N4��ی�z_��Ӆߘ��@Q�'���{s��#fƗ���Z��}&e�ef�Y��,��a��┲�ߜ<���&GQĭ���� �L��gJ�0@�G�q/,,p m��
���
�>|�p���(Zk:{���o�1�(qb*1S(OLLp+�/fR iwhh��رc���<���z4�В��U��Г������{��ק�)[���Ri	hǎ�aR 2�pN�8�{����֮��&�4���l�M�0k�$4	'&ӝ�x��(>�>)��}���^{�	
�(�����l�����=�f�K)[A܋/>���+F�jѵeP���8ӡ��i��8�VX��);n�b�6o7s�=��g�}yhh�]�*L
�޽{��L�ͽKo����2�w�/�ʄ�6L��q���4,ː^���F���~��g�:��%wՖ�'�=��/懆��L�>4��^�3�Ea�����ꫯ>�~m�o��O��1�AP(��q�f�J[���J[`��Fj�栳;�A���Xw����wm��ѣG�
���	�e�)C����nڴ�֕���Ob�y��p3 m$�X�2 �(�#ـk
ֆ�0���1k=��ݹs�~#�@N^�LH{�̙3�7�ƕQg..(-,f�$Ǒ�Ahs8�m4-�9���G�m�H()x.�T�M�[s�o=z�{�2ɏ^bX�̺u��	�Y�f���/�+w:8.8BD�
� �b��Q�>a�a
R�	[T�rzS�Rdž
�.��R���L*�['O�|̭�zL��u|-Aq$)m�}���
2��0~F��]4?���ϐ�]�}Q`SɆ�"7YszD�pppK7N�j�K�h���O��W=JJm!�����#���Rf� K�I��b`�JC��JG~�8�XE��)P_�aÆ��.]�,#Pk9��r��5��fY=ie�m�,�<�)7tܼ%���G-u�:�C鼖qG(����M8_�G�m����4�܊�DD�]�ܬm�s�"cf� EA���ߚp<�[,����EPJ�V�!C�g�Y-Y,��Fb."�u��Z�R}- t?�V�,�@xaݒ�Ȓ�B(C�����|�r9���;el%��|���:�V��M�o_����w��:�[ӱx��6���f#�m"��[�9b��2�T�rj����+cY52�V�~��Y+6���i�3�R�IE,g#�;�2�@��O��
̝�L$�(&�L^&�AWT.���ɮل��1###W�=�_��<�4�C����$�L
�ˀH3�20�@
@X�/��9�65�ſ�>������…76n���k��,dc8�u��)�E�X(uۍ�ע[�ry<�J4��V�$K�ccc�^����>��� Sq�޸��@�y[4={�����To���n�������i���{������)�������0����	�]�sy�|������ُ��fK���8t�P�3�`||��ߍl�5�ū{]�t��E�x
���,�/t�x�l����8�n�V�R��B���rϤ�I�K��?�����:��
��Fg#�9���,��Q�� @�����s�tܜ����}���?�I��4�:�@�T*�S�y�?�s�;/U�'���C2��`l�vGɄ\�!�k}jҾ����щ��_|�p7�L=�?N�{=��ݻ��Ƶk��o@@޲�5�b�ǫbߑ}���l	[*k"�E/	��񌬝+��ߑw'�c��{�<
��x��
`�f۶m0���i�b'�K�ż����}B��1s�ֵ��ʲ,WY�k��z��G�֗L'�W���=a�r����%Au���V�`'@^⩦e�}r�1������淓*)	|���w�ܜ��o��v��)sR�5�b.NM��M�]&ږ`
��
QA;y��SJ�Uk�y��J��2�L&�$m-oD�/ZJ�i��X#�\��6�}%����_�<b����E_v��G��)^�yIEND�B`�^�PNG


IHDR#"Յ`�	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�F	�IDATxڬ�kl���5����ڎ��n�4�jjJ
T����(�J-*4**�P[�R��>d@�J�Z�6 �4�B^$ʼnL����Ə���y���:�I�ґ���h��o�9��󿌈�I.�k|F3)�3c�ܘN�!���_�V�L�(��CQ�P�1��$ @�c��%`����eY���"���a���)j˖-�M�6-	��k��޽{'w��Y�"alQl&���p�5°�˙H��z衇�Y�x�4�P��͹�^DŚ9��SO��cǎI~��������_�0LD���?ܹu���ۛ�e^�l��t�LhiN�kƭ���&v��Z���ã�<��3/>����x�H��G��1����a�.�h�<x�
���'|d�d'	/�	=���fm�e����!��pL޲�J��w��m�-|e�k���C�I����~9g�0��.���޲��k+|2埪�-s�\[�ѐ�0�	t�W�6ڏZX�m��Ԍ����8k߶��mۖx!��PO�j�J�r�\.#��ֽ"��o�~�-n�u��{Z�rf�K�l�2L�#0F1i
i�2V,�Ly,%�|�޵����m���o(�^��'4����`/_����س����殐g�P��������D��1fd@&��!ɨ�wD��Q����^�v����\��a<ϫ�rj׮]�Zkg��c#�l�Sc6V����t�	�7`��3��Ml��BK0�H�P�NG1���d����V���>x�����8����Y�tirC�:::��}:S���œ�S��5��OG
}Pf�%�ّ�#���=��w��-^k�5����ܦ�U�+]�h��3��{{?+���\�Ė.��Uvel�p�r�R�����()��l����B@��=Y��G7W	��&ͭfm���S\2ù
,�y��5-x�x�Z�]Z��߿���ÕH�o�d__ߍ����;!���)�}E���M6��:hn�`���-oɘ���֠7��E�K�7�'�*
4w'���sNoo�Z)V��F�pB�)>6dycӤ���P�J<*Y�����I��-�9�aQ��	�44yЈ-iI�(1�����J��o��f)��ZvR�sX(L<�5;�L~V�b`��9��,XK�yrR���w]�2����l�g�}s��kuB]��3�޲�5�F��)��W�"�tU4�������q0�\.�=�U)X�8gdjܮT�?
q��ʢM�v���/���/�Q�����i��uZ����;|��d����[�R�`��?/g�B�P�#[ה�W�핕�kʲC�W`�GRLT�����,7L0lz�xK����v��vN+�j��/ͣk�l4��ew��6�����pRd'�
E���JO
	�&T��"�|��o���=�O�6~�M�xiF��v&��_�=��I�b�A>��Lnv�&l!344t���8]�PҗByJ0W�� �����4����d���ea��l�?
���SJ����āY�211�A���;�0@����Njj�|w�SN �1�S��(481T�M����1�yh�[2d���$���"*T�����b�Uy/c�|~4�J��˅2�a$@f�ƍ��ZF�<Zڿ�tQ��I��&��6��I��J!nP���H�����GH͸XU(#<_̈́�^����3;O{;����`�4�2@$S ܷo�>v��o��s���T[QPC_��B�8 #�����,�`Z����Fj�;	�f���7�w����P�}�i~�6oޜl�����+?Z=6�©:��"�~Q�]�AT+��2��D%��,��i�R�W�6!��g{x��2c�R���K�%��`��j2o�����sc���+?8��)e�5� h� j609�n%�V�n!�̥�m�9!Ӯql�(}���3S�ҫ��@!�qcϘ+�vC���P�3|���ϝ{�.�^�=F�-� bF1h��H�ACS� �i�为��g�S����{�L�dc���V=�ׯ_�5N�8��S�2Rʎ�������Qn�{��[���&` 0pI82%*����13��G�(z��&�c���y� ̚5k`���￟�(*.h�f!�b�q��#���ݑݒ&�/�~o��z��F��GL�//�c=<~�|����9Au���F��b '�T�R��.MD�L"�~쁺�I������9On
�F9���N�?	y��\\���;O���r�+D��y��:�J(�F�5�[�T��̃I�R�@��p�������U�+`�s�jgW9���'�D�q���b�t�!��r:mB�IEND�B`��?// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedSlider";function a(){var m="valueChanged",l="slideStart",k="slideEnd",o="selectstart",n="keypress",j="change",i="INPUT",h="sliderInitialized",e="1px",d="0px",g="absolute",f="hidden",b=true,c=false,a=null;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI._SliderDragDropManagerInternal=function(){Sys.Extended.UI._SliderDragDropManagerInternal.initializeBase(this);this._instance=a};Sys.Extended.UI._SliderDragDropManagerInternal.prototype={_getInstance:function(){var a=this;a._instance=new Sys.Extended.UI.GenericDragDropManager;a._instance.initialize();a._instance.add_dragStart(Function.createDelegate(a,a._raiseDragStart));a._instance.add_dragStop(Function.createDelegate(a,a._raiseDragStop));return a._instance}};Sys.Extended.UI._SliderDragDropManagerInternal.registerClass("Sys.Extended.UI._SliderDragDropManagerInternal",Sys.Extended.UI._DragDropManager);Sys.Extended.UI.SliderDragDropManagerInternal=new Sys.Extended.UI._SliderDragDropManagerInternal;Sys.Extended.UI.SliderOrientation=function(){};Sys.Extended.UI.SliderOrientation.prototype={Horizontal:0,Vertical:1};Sys.Extended.UI.SliderOrientation.registerEnum("Sys.Extended.UI.SliderOrientation",c);Sys.Extended.UI.SliderBehavior=function(e){var d=this;Sys.Extended.UI.SliderBehavior.initializeBase(d,[e]);d._minimum=0;d._maximum=100;d._value=a;d._steps=0;d._decimals=0;d._orientation=Sys.Extended.UI.SliderOrientation.Horizontal;d._railElement=a;d._railCssClass=a;d._isHorizontal=b;d._isUpdatingInternal=c;d._isInitializedInternal=c;d._enableHandleAnimation=c;d._handle=a;d._handleImage=a;d._handleAnimation=a;d._handleAnimationDuration=.1;d._handleImageUrl=a;d._handleCssClass=a;d._dragHandle=a;d._mouseupHandler=a;d._selectstartHandler=a;d._boundControlChangeHandler=a;d._boundControlKeyPressHandler=a;d._boundControlID=a;d._boundControl=a;d._length=a;d._raiseChangeOnlyOnMouseUp=b;d._animationPending=c;d._selectstartPending=c;d._tooltipText="";d._enableKeyboard=b;d._keyDownHandler=a};Sys.Extended.UI.SliderBehavior.prototype={initialize:function(){Sys.Extended.UI.SliderBehavior.callBaseMethod(this,"initialize");this._initializeLayout()},dispose:function(){var a=this;a._disposeHandlers();a._disposeBoundControl();a._enableHandleAnimation&&a._handleAnimation&&a._handleAnimation.dispose();Sys.Extended.UI.SliderBehavior.callBaseMethod(a,"dispose")},_initializeLayout:function(){var a=this;a._railElement=document.createElement("DIV");a._railElement.id=a.get_id()+"_railElement";a._railElement.tabIndex=-1;a._railElement.innerHTML="<div></div>";a._handle=a._railElement.childNodes[0];a._handle.style.overflow=f;a._handle.style.position=g;if(Sys.Browser.agent==Sys.Browser.Opera){a._handle.style.left=d;a._handle.style.top=d}var e=a.get_element(),j=$common.getBounds(e);e.parentNode.insertBefore(a._railElement,e);a._isHorizontal=a._orientation==Sys.Extended.UI.SliderOrientation.Horizontal;var i=a._isHorizontal?"ajax__slider_h_rail":"ajax__slider_v_rail",h=a._isHorizontal?"ajax__slider_h_handle":"ajax__slider_v_handle",c=a._isHorizontal?"slider_h_handle.gif":"slider_v_handle.gif";if(Sys.loader){var b=Sys.loader.basePath;if(b){if(b.charAt(b.length-1)!=="/")b+="/";c=b+"extended/slider/images/"+c}}a._railElement.className=a._railCssClass?a._railCssClass:i;a._handle.className=a._handleCssClass?a._handleCssClass:h;if(!a._handleImageUrl)a._handleImageUrl=c;if(a._isHorizontal){if(a._length)a._railElement.style.width=a._length}else if(a._length)a._railElement.style.height=a._length;a._loadHandleImage();a._enforceTextBoxElementPositioning();a._hideTextBoxElement();a._initializeSlider()},_enforceTextBoxElementPositioning:function(){var b=this,a={position:b.get_element().style.position,top:b.get_element().style.top,right:b.get_element().style.right,bottom:b.get_element().style.bottom,left:b.get_element().style.left};if(a.position!="")b._railElement.style.position=a.position;if(a.top!="")b._railElement.style.top=a.top;if(a.right!="")b._railElement.style.right=a.right;if(a.bottom!="")b._railElement.style.bottom=a.bottom;if(a.left!="")b._railElement.style.left=a.left},_hideTextBoxElement:function(){var a=this.get_element();a.readOnly=b;var c=d;if(Sys.Browser.agent==Sys.Browser.Safari)c=e;a.style.width=c;a.style.height=c;a.style.border=d;a.style.padding=d;a.style.margin=d;a.style.fontSize=e;a.style.lineHeight=e;a.style.outline="0";a.style.position=g},_loadHandleImage:function(){var a=this;a._handleImage=document.createElement("IMG");a._handleImage.id=a.get_id()+"_handleImage";a._handle.appendChild(a._handleImage);a._handleImage.src=a._handleImageUrl},_initializeSlider:function(){var a=this;a._initializeBoundControl();var c;try{c=parseFloat(a.get_element().value)}catch(d){c=Number.NaN}a.set_Value(c);a._setHandleOffset(a._value);a._initializeDragHandle();Sys.Extended.UI.SliderDragDropManagerInternal.registerDropTarget(a);a._initializeHandlers();a._initializeHandleAnimation();a._isInitializedInternal=b;a._raiseEvent(h)},_initializeBoundControl:function(){var a=this;if(a._boundControl){var b=a._boundControl.nodeName==i;if(b){a._boundControlChangeHandler=Function.createDelegate(a,a._onBoundControlChange);a._boundControlKeyPressHandler=Function.createDelegate(a,a._onBoundControlKeyPress);$addHandler(a._boundControl,j,a._boundControlChangeHandler);$addHandler(a._boundControl,n,a._boundControlKeyPressHandler)}}},_disposeBoundControl:function(){var a=this;if(a._boundControl){var b=a._boundControl.nodeName==i;if(b){$removeHandler(a._boundControl,j,a._boundControlChangeHandler);$removeHandler(a._boundControl,n,a._boundControlKeyPressHandler)}}},_onBoundControlChange:function(){this._animationPending=b;this._setValueFromBoundControl()},_onBoundControlKeyPress:function(a){if(a.charCode==13){this._animationPending=b;this._setValueFromBoundControl();a.preventDefault()}},_setValueFromBoundControl:function(){var a=this;a._isUpdatingInternal=b;a._boundControlID&&a._calcValue($get(a._boundControlID).value);a._isUpdatingInternal=c},_initializeHandleAnimation:function(){var a=this;if(a._steps>0){a._enableHandleAnimation=c;return}if(a._enableHandleAnimation)a._handleAnimation=new Sys.Extended.UI.Animation.LengthAnimation(a._handle,a._handleAnimationDuration,100,"style")},_ensureBinding:function(){var a=this;if(a._boundControl){var b=a._value;if(b>=a._minimum||b<=a._maximum){var c=a._boundControl.nodeName==i;if(c)a._boundControl.value=b;else if(a._boundControl)a._boundControl.innerHTML=b}}},_getBoundsInternal:function(d){var a=$common.getBounds(d);function e(){return a.width>0&&a.height>0}if(!e()){a.width=parseInt($common.getCurrentStyle(d,"width"));a.height=parseInt($common.getCurrentStyle(d,"height"));if(!e()){var c=d.cloneNode(b);c.visibility=f;document.body.appendChild(c);a.width=parseInt($common.getCurrentStyle(c,"width"));a.height=parseInt($common.getCurrentStyle(c,"height"));document.body.removeChild(c);if(!e())throw Error.argument("element size",Sys.Extended.UI.Resources.Slider_NoSizeProvided);}}if(this._orientation==Sys.Extended.UI.SliderOrientation.Vertical)a={x:a.y,y:a.x,height:a.width,width:a.height,right:a.right,bottom:a.bottom,location:{x:a.y,y:a.x},size:{width:a.height,height:a.width}};return a},_getRailBounds:function(){return this._getBoundsInternal(this._railElement)},_getHandleBounds:function(){return this._getBoundsInternal(this._handle)},_initializeDragHandle:function(){var a=this._dragHandle=document.createElement("DIV");a.style.position=g;a.style.width=e;a.style.height=e;a.style.overflow=f;a.style.zIndex="999";a.style.background="none";document.body.appendChild(this._dragHandle)},_resetDragHandle:function(){var a=$common.getBounds(this._handle);$common.setLocation(this._dragHandle,{x:a.x,y:a.y})},_initializeHandlers:function(){var a=this;a._selectstartHandler=Function.createDelegate(a,a._onSelectStart);a._mouseupHandler=Function.createDelegate(a,a._onMouseUp);a._keyDownHandler=Function.createDelegate(a,a._onKeyDown);$addHandler(document,"mouseup",a._mouseupHandler);$addHandler(a.get_element(),"keydown",a._keyDownHandler);$addHandlers(a._handle,{mousedown:a._onMouseDown,dragstart:a._IEDragDropHandler,drag:a._IEDragDropHandler,dragend:a._IEDragDropHandler},a);$addHandlers(a._railElement,{click:a._onRailClick},a)},_disposeHandlers:function(){var b=this;$clearHandlers(b._handle);$clearHandlers(b._railElement);$removeHandler(b.get_element(),"keydown",b._keyDownHandler);$removeHandler(document,"mouseup",b._mouseupHandler);b._keyDownHandler=a;b._mouseupHandler=a;b._selectstartHandler=a},startDragDrop:function(b){this._resetDragHandle();Sys.Extended.UI.SliderDragDropManagerInternal.startDragDrop(this,b,a)},_onMouseDown:function(c){var a=this;window._event=c;c.preventDefault();if(!Sys.Extended.UI.SliderBehavior.DropPending){Sys.Extended.UI.SliderBehavior.DropPending=a;$addHandler(document,o,a._selectstartHandler);a._selectstartPending=b;a.startDragDrop(a._dragHandle)}},_onMouseUp:function(b){var c=b.target;if(Sys.Extended.UI.SliderBehavior.DropPending==this){Sys.Extended.UI.SliderBehavior.DropPending=a;this._selectstartPending&&$removeHandler(document,o,this._selectstartHandler)}},_onKeyDown:function(d){if(this._enableKeyboard){var a=new Sys.UI.DomEvent(d);switch(a.keyCode||a.rawEvent.keyCode){case Sys.UI.Key.up:case Sys.UI.Key.left:this._handleSlide(b);a.preventDefault();return;case Sys.UI.Key.down:case Sys.UI.Key.right:this._handleSlide(c);a.preventDefault();return c;default:return c}}},_handleSlide:function(f){var a=this;a._animationPending=b;a._isUpdatingInternal=b;var e=a.get_Value(),d;if(a._steps>0){var g=a._maximum-a._minimum,h=(g/(a._steps-1)).toFixed(a._decimals);d=h}else d=a._decimals==0?1:1/Math.pow(10,a._decimals);if(f)d=0-d;a._calcValue(parseFloat(e)+parseFloat(d));a._isUpdatingInternal=c;a._fireTextBoxChangeEvent()},_onRailClick:function(a){if(a.target==this._railElement){this._animationPending=b;this._onRailClicked(a)}},_IEDragDropHandler:function(a){a.preventDefault()},_onSelectStart:function(a){a.preventDefault()},_calcValue:function(e,k){var d=this,f;if(e!=a){if(!Number.isInstanceOfType(e))try{e=parseFloat(e)}catch(o){e=Number.NaN}if(isNaN(e))e=d._minimum;f=e<d._minimum?d._minimum:e>d._maximum?d._maximum:e}else{var i=d._minimum,l=d._maximum,g=d._getHandleBounds(),h=d._getRailBounds(),j=k?k-g.width/2:g.x-h.x,n=h.width-g.width,m=j/n;f=j==0?i:j==h.width-g.width?l:i+m*(l-i)}if(d._steps>0)f=d._getNearestStepValue(f);f=f<d._minimum?d._minimum:f>d._maximum?d._maximum:f;d._isUpdatingInternal=b;d.set_Value(f);d._isUpdatingInternal=c;return f},_setHandleOffset:function(g,i){var a=this,e=a._minimum,h=a._maximum,b=a._getHandleBounds(),d=a._getRailBounds(),l=h-e,k=(g-e)/l,j=Math.round(k*(d.width-b.width)),f=g==e?0:g==h?d.width-b.width:j;if(i){a._handleAnimation.set_startValue(b.x-d.x);a._handleAnimation.set_endValue(f);a._handleAnimation.set_propertyKey(a._isHorizontal?"left":"top");a._handleAnimation.play();a._animationPending=c}else if(a._isHorizontal)a._handle.style.left=f+"px";else a._handle.style.top=f+"px"},_getNearestStepValue:function(b){var a=this;if(a._steps==0)return b;var c=a._maximum-a._minimum;if(c==0)return b;var d=c/(a._steps-1);return Math.round(b/d)*d},_onHandleReleased:function(){this._raiseChangeOnlyOnMouseUp&&this._fireTextBoxChangeEvent();this._raiseEvent(k)},_onRailClicked:function(g){var c=this,h=c._getHandleBounds(),i=c._getRailBounds(),d=c._isHorizontal?g.offsetX:g.offsetY,e=h.width/2,f=i.width-e;d=d<e?e:d>f?f:d;c._calcValue(a,d,b);c.get_element().focus();c._fireTextBoxChangeEvent()},_fireTextBoxChangeEvent:function(){if(document.createEvent){var a=document.createEvent("HTMLEvents");a.initEvent(j,b,c);this.get_element().dispatchEvent(a)}else document.createEventObject&&this.get_element().fireEvent("onchange")},get_dragDataType:function(){return"HTML"},getDragData:function(){return this._handle},get_dragMode:function(){return Sys.Extended.UI.DragMode.Move},onDragStart:function(){this.get_element().focus();this._resetDragHandle();this._raiseEvent(l)},onDrag:function(){var b=this,e=b._getBoundsInternal(b._dragHandle),g=b._getHandleBounds(),f=b._getRailBounds(),d;if(b._isHorizontal)d={x:e.x-f.x,y:0};else d={y:e.x-f.x,x:0};$common.setLocation(b._handle,d);b._calcValue(a,a);b._steps>1&&b._setHandleOffset(b.get_Value(),c)},onDragEnd:function(){this._onHandleReleased()},get_dropTargetElement:function(){return document.body},canDrop:function(b,a){return a=="HTML"},drop:Function.emptyMethod,onDragEnterTarget:Function.emptyMethod,onDragLeaveTarget:Function.emptyMethod,onDragInTarget:Function.emptyMethod,add_sliderInitialized:function(a){this.get_events().addHandler(h,a)},remove_sliderInitialized:function(a){this.get_events().removeHandler(h,a)},add_valueChanged:function(a){this.get_events().addHandler(m,a)},remove_valueChanged:function(a){this.get_events().removeHandler(m,a)},add_slideStart:function(a){this.get_events().addHandler(l,a)},remove_slideStart:function(a){this.get_events().removeHandler(l,a)},add_slideEnd:function(a){this.get_events().addHandler(k,a)},remove_slideEnd:function(a){this.get_events().removeHandler(k,a)},_raiseEvent:function(c,a){var b=this.get_events().getHandler(c);if(b){if(!a)a=Sys.EventArgs.Empty;b(this,a)}},get_Value:function(){return this._value},set_Value:function(c){var a=this,d=a._value,b=c;if(!a._isUpdatingInternal)b=a._calcValue(c);a.get_element().value=a._value=b.toFixed(a._decimals);a._ensureBinding();if(!Number.isInstanceOfType(a._value))try{a._value=parseFloat(a._value)}catch(e){a._value=Number.NaN}if(a._tooltipText)a._handle.alt=a._handle.title=String.format(a._tooltipText,a._value);if(a._isInitializedInternal){a._setHandleOffset(b,a._enableHandleAnimation&&a._animationPending);if(a._isUpdatingInternal)!a._raiseChangeOnlyOnMouseUp&&a._fireTextBoxChangeEvent();a._value!=d&&a._raiseEvent(m)}},get_RailCssClass:function(){return this._railCssClass},set_RailCssClass:function(a){this._railCssClass=a},get_HandleImageUrl:function(){return this._handleImageUrl},set_HandleImageUrl:function(a){this._handleImageUrl=a},get_HandleCssClass:function(){return this._handleCssClass},set_HandleCssClass:function(a){this._handleCssClass=a},get_Minimum:function(){return this._minimum},set_Minimum:function(a){this._minimum=a},get_Maximum:function(){return this._maximum},set_Maximum:function(a){this._maximum=a},get_Orientation:function(){return this._orientation},set_Orientation:function(a){this._orientation=a},get_Steps:function(){return this._steps},set_Steps:function(b){var a=this;a._steps=Math.abs(b);a._steps=a._steps==1?2:a._steps},get_Decimals:function(){return this._decimals},set_Decimals:function(a){this._decimals=Math.abs(a)},get_EnableHandleAnimation:function(){return this._enableHandleAnimation},set_EnableHandleAnimation:function(a){this._enableHandleAnimation=a},get_HandleAnimationDuration:function(){return this._handleAnimationDuration},set_HandleAnimationDuration:function(a){this._handleAnimationDuration=a},get_BoundControlID:function(){return this._boundControlID},set_BoundControlID:function(c){var b=this;b._boundControlID=c;if(b._boundControlID)b._boundControl=$get(b._boundControlID);else b._boundControl=a},get_Length:function(){return this._length},set_Length:function(a){this._length=a+"px"},get_SliderInitialized:function(){return this._isInitializedInternal},get_RaiseChangeOnlyOnMouseUp:function(){return this._raiseChangeOnlyOnMouseUp},set_RaiseChangeOnlyOnMouseUp:function(a){this._raiseChangeOnlyOnMouseUp=a},get_TooltipText:function(){return this._tooltipText},set_TooltipText:function(a){this._tooltipText=a},get_enableKeyboard:function(){return this._enableKeyboard},set_enableKeyboard:function(a){if(a!==this._enableKeyboard){this._enableKeyboard=a;this.raisePropertyChanged("enableKeyboard")}},getClientState:function(){var b=Sys.Extended.UI.SliderBehavior.callBaseMethod(this,"get_ClientState");if(b=="")b=a;return b},setClientState:function(a){return Sys.Extended.UI.SliderBehavior.callBaseMethod(this,"set_ClientState",[a])}};Sys.Extended.UI.SliderBehavior.DropPending=a;Sys.Extended.UI.SliderBehavior.registerClass("Sys.Extended.UI.SliderBehavior",Sys.Extended.UI.BehaviorBase,Sys.Extended.UI.IDragSource,Sys.Extended.UI.IDropTarget);Sys.registerComponent(Sys.Extended.UI.SliderBehavior,{name:"slider"})}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedBase","ExtendedDragDrop","ExtendedAnimations"],a);else a()})();qP// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />

(function() {
var scriptName = "ExtendedRating";

function execute() {

Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.RatingBehavior = function(element) {
    /// <summary>
    /// The RatingBehavior creates a sequence of stars used to rate an item
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// DOM element associated with the behavior
    /// </param>
    Sys.Extended.UI.RatingBehavior.initializeBase(this, [element]);
    this._starCssClass = "rating_star";
    this._filledStarCssClass = "rating_filled";
    this._emptyStarCssClass = "rating_empty";
    this._waitingStarCssClass = null;
    this._isServerControl = false;
    this._readOnly = false;
    this._ratingValue = 0;
    this._currentRating = 0;
    this._maxRatingValue = 5;
    this._tag = "";
    this._ratingDirection = 0;
    this._stars = null;
    this._callbackID = null;
    this._mouseOutHandler = Function.createDelegate(this, this._onMouseOut);
    this._starClickHandler = Function.createDelegate(this, this._onStarClick);
    this._starMouseOverHandler = Function.createDelegate(this, this._onStarMouseOver);
    this._keyDownHandler = Function.createDelegate(this, this._onKeyDownBack);
    this._autoPostBack = false;
}
Sys.Extended.UI.RatingBehavior.prototype = {
    initialize : function() {
        /// <summary>
        /// Initialize the behavior
        /// </summary>
        Sys.Extended.UI.RatingBehavior.callBaseMethod(this, 'initialize');
        var elt = this.get_element();
        this._stars = [];
        for (var i = 1; i <= this._maxRatingValue; i++) {
            starElement = $get(elt.id + '_Star_' + i);
            starElement.value = i;
            Array.add(this._stars, starElement);
            $addHandler(starElement, 'click', this._starClickHandler);
            $addHandler(starElement, 'mouseover', this._starMouseOverHandler);
        }
        $addHandler(elt, 'mouseout', this._mouseOutHandler);        
        $addHandler(elt, "keydown", this._keyDownHandler);
        this._update();        
    },
    
    dispose : function() {
        /// <summary>
        /// Dispose the behavior
        /// </summary>

        var elt = this.get_element();
        if (this._stars) {
            for (var i = 0; i < this._stars.length; i++) {
                var starElement = this._stars[i];
                $removeHandler(starElement, 'click', this._starClickHandler);
                $removeHandler(starElement, 'mouseover', this._starMouseOverHandler);
            }
            this._stars = null;
        }
        $removeHandler(elt, 'mouseout', this._mouseOutHandler);        
        $removeHandler(elt, "keydown", this._keyDownHandler);
        Sys.Extended.UI.RatingBehavior.callBaseMethod(this, 'dispose');
    },
    
    _onError : function(message, context) {
        /// <summary>
        /// Error handler for the callback
        /// </summary>
        /// <param name="message" type="String">
        /// Error message
        /// </param>
        /// <param name="context" type="Object">
        /// Context
        /// </param>
        alert(String.format(Sys.Extended.UI.Resources.Rating_CallbackError, message));
    },
    
    _receiveServerData : function(arg, context) {
        /// <summary>
        /// Handler for successful return from callback
        /// </summary>
        /// <param name="arg" type="Object">
        /// Argument
        /// </param>
        /// <param name="context" type="Object">
        /// Context
        /// </param>
        context._waitingMode(false);
        context.raiseEndClientCallback(arg);
    },
    
    _onMouseOut : function(e) {
        /// <summary>
        /// Handler for a star's mouseout event
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">
        /// Event info
        /// </param>

        if (this._readOnly) {
            return;
        }
        this._currentRating = this._ratingValue;
        this._update();
        this.raiseMouseOut(this._currentRating);
    },
    
    _onStarClick : function(e) {
        /// <summary>
        /// Handler for a star's click event
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">
        /// Event info
        /// </param>
        if (this._readOnly) {
            return;
        }
        if (this._ratingValue != this._currentRating) {
            this.set_Rating(this._currentRating);
        }
    },
    
    _onStarMouseOver : function(e) {
        /// <summary>
        /// Handler for a star's mouseover event
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">
        /// Event info
        /// </param>
        if (this._readOnly) {
            return;
        }
        if (this._ratingDirection == 0) {
            this._currentRating = e.target.value;
        } else {
            this._currentRating = this._maxRatingValue + 1 - e.target.value;
        }
        this._update();
        this.raiseMouseOver(this._currentRating);
    },
    
    
    _onKeyDownBack : function(ev){
        /// <summary>
        /// Handler for a star's keyDown event
        /// </summary>
        /// <param name="ev" type="Sys.UI.DomEvent">
        /// Event info
        /// </param>
        if (this._readOnly) {
            return;
        }
        var k = ev.keyCode ? ev.keyCode : ev.rawEvent.keyCode;
        if ( (k == Sys.UI.Key.right) || (k == Sys.UI.Key.up) ) {
            this._currentRating = Math.min(this._currentRating + 1, this._maxRatingValue);
            this.set_Rating(this._currentRating);
            ev.preventDefault();
            ev.stopPropagation();
        } else if ( (k == Sys.UI.Key.left) || (k == Sys.UI.Key.down) )  {
            this._currentRating = Math.max(this._currentRating - 1, 1);
            this.set_Rating(this._currentRating);
            ev.preventDefault();
            ev.stopPropagation();            
        }
    },
    
    _waitingMode : function(activated) {
        /// <summary>
        /// Update the display to indicate whether or not we are waiting
        /// </summary>
        /// <param name="activated" type="Boolean">
        /// Whether or not we are waiting
        /// </param>

        for (var i = 0; i < this._maxRatingValue; i++) {
            var starElement;
            if (this._ratingDirection == 0) {
                starElement = this._stars[i];
            } else {
                starElement = this._stars[this._maxRatingValue - i - 1];
            }
            if (this._currentRating > i) {
                if (this._waitingStarCssClass) {
                    if (activated) {
                            Sys.UI.DomElement.removeCssClass(starElement, this._filledStarCssClass);
                            Sys.UI.DomElement.addCssClass(starElement, this._waitingStarCssClass);
                    }
                    else {
                        Sys.UI.DomElement.removeCssClass(starElement, this._waitingStarCssClass);
                        Sys.UI.DomElement.addCssClass(starElement, this._filledStarCssClass);
                    }
                }
            }
            else {
                if (this._waitingStarCssClass) {
                    Sys.UI.DomElement.removeCssClass(starElement, this._waitingStarCssClass);
                }
                Sys.UI.DomElement.removeCssClass(starElement, this._filledStarCssClass);
                Sys.UI.DomElement.addCssClass(starElement, this._emptyStarCssClass);
            }
        }
    },
    
    _update : function() {
        /// <summary>
        /// Update the display
        /// </summary>
        var elt = this.get_element();
        $get(elt.id + "_A").title = this._currentRating;
        
        for (var i = 0; i < this._maxRatingValue; i++) {
            var starElement;
            if (this._ratingDirection == 0) {
                starElement = this._stars[i];
            } else {
                starElement = this._stars[this._maxRatingValue - i - 1];
            }

            if (this._currentRating > i) {
                Sys.UI.DomElement.removeCssClass(starElement, this._emptyStarCssClass);
                Sys.UI.DomElement.addCssClass(starElement, this._filledStarCssClass);
            }
            else {
                Sys.UI.DomElement.removeCssClass(starElement, this._filledStarCssClass);
                Sys.UI.DomElement.addCssClass(starElement, this._emptyStarCssClass);
            }
        }
    },
    
    add_Rated : function(handler) {
        /// <summary>
        /// Add a handler to the rated event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        this.get_events().addHandler("Rated", handler);
    },
    remove_Rated : function(handler) {
        /// <summary>
        /// Remove a handler from the rated event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        this.get_events().removeHandler("Rated", handler);
    },
    raiseRated : function(rating) {
        /// <summary>
        /// Raise the rated event
        /// </summary>
        /// <param name="rating" type="Number" integer="true">
        /// Rating
        /// </param>
        var handler = this.get_events().getHandler("Rated");
        if (handler) {
            handler(this, new Sys.Extended.UI.RatingEventArgs(rating));
        }
    },
    
    add_MouseOver : function(handler) {
        /// <summary>
        /// Add a handler to the MouseMove event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        this.get_events().addHandler("MouseOver", handler);
    },
    remove_MouseOver : function(handler) {
        /// <summary>
        /// Remove a handler from the MouseOver event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        this.get_events().removeHandler("MouseOver", handler);
    },
    raiseMouseOver : function(rating_tmp) {
        /// <summary>
        /// Raise the MouseOver event
        /// </summary>
        /// <param name="eventArgs" type="">
        /// eventArgs
        /// </param>
        var handler = this.get_events().getHandler("MouseOver");
        if (handler) {
            handler(this, new Sys.Extended.UI.RatingEventArgs(rating_tmp));
        }
    },

    add_MouseOut : function(handler) {
        /// <summary>
        /// Add a handler to the MouseOut event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        this.get_events().addHandler("MouseOut", handler);
    },
    remove_MouseOut : function(handler) {
        /// <summary>
        /// Remove a handler from the MouseOut event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        this.get_events().removeHandler("MouseOut", handler);
    },
    raiseMouseOut : function(rating_old) {
        /// <summary>
        /// Raise the MouseOut event
        /// </summary>
        /// <param name="eventArgs" type="">
        /// eventArgs
        /// </param>
        var handler = this.get_events().getHandler("MouseOut");
        if (handler) {
            handler(this, new Sys.Extended.UI.RatingEventArgs(rating_old));
        }
    },
    
    add_EndClientCallback : function(handler) {
        /// <summary>
        /// Add a handler to the EndClientCallback event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        this.get_events().addHandler("EndClientCallback", handler);
    },
    remove_EndClientCallback : function(handler) {
        /// <summary>
        /// Remove a handler from the EndClientCallback event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        this.get_events().removeHandler("EndClientCallback", handler);
    },
    raiseEndClientCallback : function(result) {
        /// <summary>
        /// Raise the EndClientCallback event
        /// </summary>
        /// <param name="result" type="String">
        /// Callback result
        /// </param>
        var handler = this.get_events().getHandler("EndClientCallback");
        if (handler) {
            handler(this, new Sys.Extended.UI.RatingCallbackResultEventArgs(result));
        }
    },
    
    get_AutoPostBack : function() {
        return this._autoPostBack;
    },
    
    set_AutoPostBack : function(value) {
        this._autoPostBack = value;
    },

    get_Stars : function() {
        /// <value type="Array" elementType="Sys.UI.DomElement" elementDomElement="true">
        /// Elements for the displayed stars
        /// </value>
        return this._stars;    
    },
    
    get_Tag : function() {
        /// <value type="String">
        /// A custom parameter to pass to the ClientCallBack
        /// </value>
        return this._tag;
    },
    set_Tag : function(value) {
        if (this._tag != value) {
            this._tag = value;
            this.raisePropertyChanged('Tag');
        }
    },
    
    get_CallbackID : function() {
        /// <value type="String">
        /// ID of the ClientCallBack
        /// </value>
        return this._callbackID;
    },
    set_CallbackID : function(value) {
        this._callbackID = value;
    },
    
    get_RatingDirection : function() {
        /// <value type="Number" integer="true">
        /// RatingDirection - Orientation of the stars (LeftToRightTopToBottom or RightToLeftBottomToTop)
        /// </value>
        /// TODO: We should create an enum for this
        return this._ratingDirection;
    },
    set_RatingDirection : function(value) {
        if (this._ratingDirection != value) {
            this._ratingDirection = value;
            if (this.get_isInitialized()) {
                this._update();
            }
            this.raisePropertyChanged('RatingDirection');
        }
    },
    
    get_EmptyStarCssClass : function() {
        /// <value type="String">
        /// CSS class for a star in empty mode
        /// </value>
        return this._emptyStarCssClass;
    },
    set_EmptyStarCssClass : function(value) {
        if (this._emptyStarCssClass != value) {
            this._emptyStarCssClass = value;
            this.raisePropertyChanged('EmptyStarCssClass');
        }
    },
    
    get_FilledStarCssClass : function() {
        /// <value type="String">
        /// CSS class for star in filled mode
        /// </value>
        return this._filledStarCssClass;
    },
    set_FilledStarCssClass : function(value) {
        if (this._filledStarCssClass != value) {
            this._filledStarCssClass = value;
            this.raisePropertyChanged('FilledStarCssClass');
        }
    },
    
    get_WaitingStarCssClass : function() {
        /// <value type="String">
        /// CSS class for a star in waiting mode
        /// </value>
        return this._waitingStarCssClass;
    },
    set_WaitingStarCssClass : function(value) {
        if (this._waitingStarCssClass != value) {
            this._waitingStarCssClass = value;
            this.raisePropertyChanged('WaitingStarCssClass');
        }
    },
    
    get_Rating : function() {
        /// <value type="Number" integer="true">
        /// Current rating value
        /// </value>
        var hiddenValue = Sys.Extended.UI.RatingBehavior.callBaseMethod(this, 'get_ClientState');
        if (hiddenValue !== null && hiddenValue.length) {
            this._ratingValue = hiddenValue
        }
        if (this._ratingValue == '') 
            this._ratingValue = null;
        return this._ratingValue;
    },
    set_Rating : function(value) {
        if (this._ratingValue != value) {
            this._ratingValue = value;
            this._currentRating = value;
            if (this.get_isInitialized()) {
                if ((value < 0) || (value > this._maxRatingValue)) {
                    return;                
                }

                this._update();
               
                Sys.Extended.UI.RatingBehavior.callBaseMethod(this, 'set_ClientState', [ this._ratingValue ]);
                this.raisePropertyChanged('Rating');
                this.raiseRated(this._currentRating);
                
                if (this._isServerControl) {
                    this._waitingMode(true);
                   
                    var args = this._currentRating + ";" + this._tag;
                    var id = this._callbackID;
                    
                    if (this._autoPostBack) {                    
                        __doPostBack(id, args);
                    }
                    else {
                        WebForm_DoCallback(id, args, this._receiveServerData, this, this._onError, true)
                    }     
                }          
            }
        }
    },

    get_MaxRating : function() {
        /// <value type="Number" integer="true">
        /// Maximum rating value
        /// </value>
        return this._maxRatingValue;
    },
    set_MaxRating : function(value) {
        if (this._maxRatingValue != value) {
            this._maxRatingValue = value;
            this.raisePropertyChanged('MaxRating');
        }
    },

    get_ReadOnly : function() {
        /// <value type="Boolean">
        /// Whether or not the rating can be changed
        /// </value>
        return this._readOnly;
    },
    set_ReadOnly : function(value) {
        if (this._readOnly != value) {
            this._readOnly = value;
            this.raisePropertyChanged('ReadOnly');
        }
    },
    
    get_StarCssClass : function() {
        /// <value type="String">
        /// CSS class for a visible star
        /// </value>
        return this._starCssClass;
    },
    set_StarCssClass : function(value) {
        if (this._starCssClass != value) {
            this._starCssClass = value;
            this.raisePropertyChanged('StarCssClass');
        }
    }
}
Sys.Extended.UI.RatingBehavior.registerClass('Sys.Extended.UI.RatingBehavior', Sys.Extended.UI.BehaviorBase);
Sys.registerComponent(Sys.Extended.UI.RatingBehavior, { name: "rating" });

Sys.Extended.UI.RatingEventArgs = function(rating) {
    /// <summary>
    /// Event arguments for the RatingBehavior's rated event
    /// </summary>
    /// <param name="rating" type="Number" integer="true">
    /// Rating
    /// </param>
    Sys.Extended.UI.RatingEventArgs.initializeBase(this);

    this._rating = rating;
}
Sys.Extended.UI.RatingEventArgs.prototype = {
    get_Rating : function() {
        /// <value type="Number" integer="true">
        /// Rating
        /// </value>
        return this._rating;
    }
}
Sys.Extended.UI.RatingEventArgs.registerClass('Sys.Extended.UI.RatingEventArgs', Sys.EventArgs);


Sys.Extended.UI.RatingCallbackResultEventArgs = function(result) {
    /// <summary>
    /// Event arguments for the RatingBehavior's EndClientCallback event
    /// </summary>
    /// <param name="result" type="Object">
    /// Callback result
    /// </param>
    Sys.Extended.UI.RatingCallbackResultEventArgs.initializeBase(this);

    this._result = result;
}
Sys.Extended.UI.RatingCallbackResultEventArgs.prototype = {
    get_CallbackResult : function() {
        /// <value type="Object">
        /// Callback result
        /// </value>
        return this._result;
    }
}
Sys.Extended.UI.RatingCallbackResultEventArgs.registerClass('Sys.Extended.UI.RatingCallbackResultEventArgs', Sys.EventArgs);

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedBase"], execute);
}
else {
    execute();
}

})();
o// (c) 2010 CodePlex Foundation
(function(){var a=null;function b(){var b=false,e="callback",c="undefined";Type._registerScript("MicrosoftAjaxWebServices.js",["MicrosoftAjaxNetwork.js"]);var d,f;Type.registerNamespace("Sys.Net");d=Sys.Net.WebServiceProxy=function(){var a=Object.getType(this);if(a._staticInstance&&typeof a._staticInstance.get_enableJsonp==="function")this._jsonp=a._staticInstance.get_enableJsonp()};d.prototype={get_timeout:function(){return this._timeout||0},set_timeout:function(a){this._timeout=a},get_defaultUserContext:function(){return typeof this._userContext===c?a:this._userContext},set_defaultUserContext:function(a){this._userContext=a},get_defaultSucceededCallback:function(){return this._succeeded||a},set_defaultSucceededCallback:function(a){this._succeeded=a},get_defaultFailedCallback:function(){return this._failed||a},set_defaultFailedCallback:function(a){this._failed=a},get_enableJsonp:function(){return!!this._jsonp},set_enableJsonp:function(a){this._jsonp=a},get_path:function(){return this._path||a},set_path:function(a){this._path=a},get_jsonpCallbackParameter:function(){return this._callbackParameter||e},set_jsonpCallbackParameter:function(a){this._callbackParameter=a},_invoke:function(g,h,j,i,f,e,d){var b=this;f=f||b.get_defaultSucceededCallback();e=e||b.get_defaultFailedCallback();if(d===a||typeof d===c)d=b.get_defaultUserContext();return Sys.Net.WebServiceProxy.invoke(g,h,j,i,f,e,d,b.get_timeout(),b.get_enableJsonp(),b.get_jsonpCallbackParameter())}};d.registerClass("Sys.Net.WebServiceProxy");d.invoke=function(u,d,q,p,o,f,k,l,z,t){var g="Content-Type",n=z!==b?Sys.Net.WebServiceProxy._xdomain.exec(u):a,h,r=n&&n.length===3&&(n[1]!==location.protocol||n[2]!==location.host);q=r||q;if(r){t=t||e;h="_jsonp"+Sys._jsonp++}if(!p)p={};var v=p;if(!q||!v)v={};var m,j=a,s=a,x=Sys.Net.WebRequest._createUrl(d?u+"/"+encodeURIComponent(d):u,v,r?t+"=Sys."+h:a);if(r){function y(){if(j===a)return;j=a;m=new Sys.Net.WebServiceError(true,String.format(Sys.Res.webServiceTimedOut,d));delete Sys[h];f&&f(m,k,d)}function w(e,g){if(j!==a){window.clearTimeout(j);j=a}delete Sys[h];h=a;if(typeof g!==c&&g!==200){if(f){m=new Sys.Net.WebServiceError(b,e.Message||String.format(Sys.Res.webServiceFailedNoMsg,d),e.StackTrace||a,e.ExceptionType||a,e);m._statusCode=g;f(m,k,d)}}else o&&o(e,k,d)}Sys[h]=w;l=l||Sys.Net.WebRequestManager.get_defaultTimeout();if(l>0)j=window.setTimeout(y,l);Sys._loadJsonp(x,function(){h&&w({Message:String.format(Sys.Res.webServiceFailedNoMsg,d)},-1)});return a}var i=new Sys.Net.WebRequest;i.set_url(x);i.get_headers()[g]="application/json; charset=utf-8";if(!q){s=Sys.Serialization.JavaScriptSerializer.serialize(p);if(s==="{}")s=""}i.set_body(s);i.add_completed(A);l>0&&i.set_timeout(l);i.invoke();function A(h){if(h.get_responseAvailable()){var s,i=h.get_statusCode(),e=a,l;try{var m=h.getResponseHeader(g);l=m.startsWith("application/json");e=l?h.get_object():m.startsWith("text/xml")?h.get_xml():h.get_responseData()}catch(s){}var p=h.getResponseHeader("jsonerror"),j=p==="true";if(j){if(e)e=new Sys.Net.WebServiceError(b,e.Message,e.StackTrace,e.ExceptionType,e)}else if(l)e=!e||typeof e.d===c?e:e.d;if(i<200||i>=300||j){if(f){if(!e||!j)e=new Sys.Net.WebServiceError(b,String.format(Sys.Res.webServiceFailedNoMsg,d));e._statusCode=i;f(e,k,d)}}else o&&o(e,k,d)}else{var n=h.get_timedOut(),q=String.format(n?Sys.Res.webServiceTimedOut:Sys.Res.webServiceFailedNoMsg,d);f&&f(new Sys.Net.WebServiceError(n,q,"",""),k,d)}}return i};d._generateTypedConstructor=function(a){return function(b){if(b)for(var c in b)this[c]=b[c];this.__type=a}};Sys._jsonp=0;d._xdomain=/^\s*([a-zA-Z0-9\+\-\.]+\:)\/\/([^?#\/]+)/;Sys._loadJsonp=function(h,g){var d="onreadystatechange",c=document.createElement("script");c.type="text/javascript";c.src=h;var f=c.attachEvent;function e(){if(!f||/loaded|complete/.test(c.readyState)){if(f)c.detachEvent(d,e);else{c.removeEventListener("load",e,b);c.removeEventListener("error",e,b)}g.apply(c);c=a}}if(f)c.attachEvent(d,e);else{c.addEventListener("load",e,b);c.addEventListener("error",e,b)}Sys.get("head").appendChild(c)};d=Sys.Net.WebServiceError=function(e,f,d,b,c){var a=this;a._timedOut=e;a._message=f;a._stackTrace=d;a._exceptionType=b;a._errorObject=c;a._statusCode=-1};d.prototype={get_timedOut:function(){return this._timedOut},get_statusCode:function(){return this._statusCode},get_message:function(){return this._message},get_stackTrace:function(){return this._stackTrace||""},get_exceptionType:function(){return this._exceptionType||""},get_errorObject:function(){return this._errorObject||a}};d.registerClass("Sys.Net.WebServiceError")}if(window.Sys&&Sys.loader)Sys.loader.registerScript("WebServices",a,b);else b()})();�8// (c) 2010 CodePlex Foundation
(function(){var a=null;function b(){var g="+",p="MonthNames",o="MonthGenitiveNames",m="Abbreviated",d="-",c=true,b="",l="yyyy",k="MMMM",j="dddd",f=" ",e=false;Type._registerScript("MicrosoftAjaxGlobalization.js",["MicrosoftAjaxCore.js"]);var h,n,A=Sys._merge,z=Sys._forIn,y=Sys._foreach,t=Sys._indexOf;function i(a,c,b){return a<c||a>b}function x(c,a){var d=new Date,e=q(d);if(a<100){var b=s(d,c,e);a+=b-b%100;if(a>c.Calendar.TwoDigitYearMax)a-=100}return a}function q(f,d){if(!d)return 0;for(var c,e=f.getTime(),b=0,g=d.length;b<g;b+=4){c=d[b+2];if(c===a||e>=c)return b}return 0}function s(d,b,e,c){var a=d.getFullYear();if(!c&&b.eras)a-=b.eras[e+3];return a}Sys._appendPreOrPostMatch=function(f,b){for(var d=0,a=e,c=0,h=f.length;c<h;c++){var g=f.charAt(c);switch(g){case"'":if(a)b.push("'");else d++;a=e;break;case"\\":a&&b.push("\\");a=!a;break;default:b.push(g);a=e}}return d};h=Date;h._expandFormat=function(a,b){b=b||"F";var c=b.length;if(c===1)switch(b){case"d":return a.ShortDatePattern;case"D":return a.LongDatePattern;case"t":return a.ShortTimePattern;case"T":return a.LongTimePattern;case"f":return a.LongDatePattern+f+a.ShortTimePattern;case"F":return a.FullDateTimePattern;case"M":case"m":return a.MonthDayPattern;case"s":return a.SortableDateTimePattern;case"Y":case"y":return a.YearMonthPattern;default:throw Error.format(Sys.Res.formatInvalidString);}else if(c===2&&b.charAt(0)==="%")b=b.charAt(1);return b};h._getParseRegExp=function(g,i){var h=g._parseRegExp;if(!h)g._parseRegExp=h={};else{var q=h[i];if(q)return q}var e=Date._expandFormat(g,i);e=e.replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g,"\\\\$1");var d=["^"],r=[],m=0,p=0,o=Date._getTokenRegExp(),f;while((f=o.exec(e))!==a){var u=e.slice(m,f.index);m=o.lastIndex;p+=Sys._appendPreOrPostMatch(u,d);if(p%2){d.push(f[0]);continue}var s=f[0],v=s.length,c;switch(s){case j:case"ddd":case k:case"MMM":case"gg":case"g":c="(\\D+)";break;case"tt":case"t":c="(\\D*)";break;case l:case"fff":case"ff":case"f":c="(\\d{"+v+"})";break;case"dd":case"d":case"MM":case"M":case"yy":case"y":case"HH":case"H":case"hh":case"h":case"mm":case"m":case"ss":case"s":c="(\\d\\d?)";break;case"zzz":c="([+-]?\\d\\d?:\\d{2})";break;case"zz":case"z":c="([+-]?\\d\\d?)";break;case"/":c="(\\"+g.DateSeparator+")"}c&&d.push(c);r.push(f[0])}Sys._appendPreOrPostMatch(e.slice(m),d);d.push("$");var t=d.join(b).replace(/\s+/g,"\\s+"),n={regExp:t,groups:r};h[i]=n;return n};h._getTokenRegExp=function(){return/\/|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z|gg|g/g};h.parseLocale=function(a){return Date._parse(a,Sys.CultureInfo.CurrentCulture,arguments)};h.parseInvariant=function(a){return Date._parse(a,Sys.CultureInfo.InvariantCulture,arguments)};h._parse=function(k,g,l){var b,f,d,i,h,j=e;for(b=1,f=l.length;b<f;b++){i=l[b];if(i){j=c;d=Date._parseExact(k,i,g);if(d)return d}}if(!j){h=g._getDateTimeFormats();for(b=0,f=h.length;b<f;b++){d=Date._parseExact(k,h[b],g);if(d)return d}}return a};h._parseExact=function(C,O,y){C=C.trim();var f=y.dateTimeFormat,K=this._getParseRegExp(f,O),N=(new RegExp(K.regExp)).exec(C);if(N===a)return a;for(var M=K.groups,E=a,o=a,m=a,n=a,u=a,g=0,p,F=0,G=0,D=0,q=a,B=e,w=0,P=M.length;w<P;w++){var h=N[w+1];if(h){var L=M[w],r=L.length,c=parseInt(h,10);switch(L){case"dd":case"d":n=c;if(i(n,1,31))return a;break;case"MMM":case k:m=y._getMonthIndex(h,r===3);if(i(m,0,11))return a;break;case"M":case"MM":m=c-1;if(i(m,0,11))return a;break;case"y":case"yy":case l:o=r<4?x(f,c):c;if(i(o,0,9999))return a;break;case"h":case"hh":g=c;if(g===12)g=0;if(i(g,0,11))return a;break;case"H":case"HH":g=c;if(i(g,0,23))return a;break;case"m":case"mm":F=c;if(i(F,0,59))return a;break;case"s":case"ss":G=c;if(i(G,0,59))return a;break;case"tt":case"t":var J=h.toUpperCase();B=J===f.PMDesignator.toUpperCase();if(!B&&J!==f.AMDesignator.toUpperCase())return a;break;case"f":case"ff":case"fff":D=c*Math.pow(10,3-r);if(i(D,0,999))return a;break;case"ddd":case j:u=y._getDayIndex(h,r===3);if(i(u,0,6))return a;break;case"zzz":var A=h.split(/:/);if(A.length!==2)return a;p=parseInt(A[0],10);if(i(p,-12,13))return a;var z=parseInt(A[1],10);if(i(z,0,59))return a;q=p*60+(h.startsWith(d)?-z:z);break;case"z":case"zz":p=c;if(i(p,-12,13))return a;q=p*60;break;case"g":case"gg":var t=h;if(!t||!f.eras)return a;t=t.toLowerCase().trim();for(var v=0,Q=f.eras.length;v<Q;v+=4)if(t===f.eras[v+1].toLowerCase()){E=v;break}if(E===a)return a}}}var b=new Date,I,s=f.Calendar.convert;I=s?s.fromGregorian(b)[0]:b.getFullYear();if(o===a)o=I;else if(f.eras)o+=f.eras[(E||0)+3];if(m===a)m=0;if(n===a)n=1;if(s){b=s.toGregorian(o,m,n);if(b===a)return a}else{b.setFullYear(o,m,n);if(b.getDate()!==n)return a;if(u!==a&&b.getDay()!==u)return a}if(B&&g<12)g+=12;b.setHours(g,F,G,D);if(q!==a){var H=b.getMinutes()-(q+b.getTimezoneOffset());b.setHours(b.getHours()+parseInt(H/60,10),H%60)}return b};n=h.prototype;n.format=function(a){return this._toFormattedString(a,Sys.CultureInfo.InvariantCulture)};n.localeFormat=function(a){return this._toFormattedString(a,Sys.CultureInfo.CurrentCulture)};n._toFormattedString=function(n,x){var e=this,f=x.dateTimeFormat,y=f.Calendar.convert;if(!n||!n.length||n==="i"){var a;if(x&&x.name.length)if(y)a=e._toFormattedString(f.FullDateTimePattern,x);else{var I=new Date(e.getTime()),P=q(e,f.eras);I.setFullYear(s(e,f,P));a=I.toLocaleString()}else a=e.toString();return a}var J=f.eras,G=n==="s";n=Date._expandFormat(f,n);a=[];var r,O=["0","00","000"];function i(d,a){var c=d+b;return a>1&&c.length<a?(O[a-2]+c).substr(-a):c}var v,D,K=/([^d]|^)(d|dd)([^d]|$)/g;function M(){if(v||D)return v;v=K.test(n);D=c;return v}var F=0,C=Date._getTokenRegExp(),u;if(!G&&y)u=y.fromGregorian(e);for(;c;){var N=C.lastIndex,w=C.exec(n),L=n.slice(N,w?w.index:n.length);F+=Sys._appendPreOrPostMatch(L,a);if(!w)break;if(F%2){a.push(w[0]);continue}function z(a,b){if(u)return u[b];switch(b){case 0:return a.getFullYear();case 1:return a.getMonth();case 2:return a.getDate()}}var H=w[0],h=H.length;switch(H){case"ddd":case j:A=h===3?f.AbbreviatedDayNames:f.DayNames;a.push(A[e.getDay()]);break;case"d":case"dd":v=c;a.push(i(z(e,2),h));break;case"MMM":case k:var E=h===3?m:b,B=f[E+o],A=f[E+p],t=z(e,1);a.push(B&&M()?B[t]:A[t]);break;case"M":case"MM":a.push(i(z(e,1)+1,h));break;case"y":case"yy":case l:t=u?u[0]:s(e,f,q(e,J),G);if(h<4)t=t%100;a.push(i(t,h));break;case"h":case"hh":r=e.getHours()%12;if(r===0)r=12;a.push(i(r,h));break;case"H":case"HH":a.push(i(e.getHours(),h));break;case"m":case"mm":a.push(i(e.getMinutes(),h));break;case"s":case"ss":a.push(i(e.getSeconds(),h));break;case"t":case"tt":t=e.getHours()<12?f.AMDesignator:f.PMDesignator;a.push(h===1?t.charAt(0):t);break;case"f":case"ff":case"fff":a.push(i(e.getMilliseconds(),3).substr(0,h));break;case"z":case"zz":r=e.getTimezoneOffset()/60;a.push((r<=0?g:d)+i(Math.floor(Math.abs(r)),h));break;case"zzz":r=e.getTimezoneOffset()/60;a.push((r<=0?g:d)+i(Math.floor(Math.abs(r)),2)+":"+i(Math.abs(e.getTimezoneOffset()%60),2));break;case"g":case"gg":f.eras&&a.push(f.eras[q(e,J)+1]);break;case"/":a.push(f.DateSeparator)}}return a.join(b)};String.localeFormat=function(){return String._toFormattedString(c,arguments)};var w={P:["Percent",["-n %","-n%","-%n"],["n %","n%","%n"],100],N:["Number",["(n)","-n","- n","n-","n -"],a,1],C:["Currency",["($n)","-$n","$-n","$n-","(n$)","-n$","n-$","n$-","-n $","-$ n","n $-","$ n-","$ -n","n- $","($ n)","(n $)"],["$n","n$","$ n","n $"],1]};Sys._toFormattedString=function(g,p){var j=this;if(!g||!g.length||g==="i")return p&&p.name.length?j.toLocaleString():j.toString();function n(a,c,d){for(var b=a.length;b<c;b++)a=d?"0"+a:a+"0";return a}function r(l,j,o,q,s){var k=o[0],m=1,r=Math.pow(10,j),p=Math.round(l*r)/r;if(!isFinite(p))p=l;l=p;var d=l+b,a=b,f,h=d.split(/e/i);d=h[0];f=h.length>1?parseInt(h[1]):0;h=d.split(".");d=h[0];a=h.length>1?h[1]:b;var t;if(f>0){a=n(a,f,e);d+=a.slice(0,f);a=a.substr(f)}else if(f<0){f=-f;d=n(d,f+1,c);a=d.slice(-f,d.length)+a;d=d.slice(0,-f)}if(j>0)a=s+(a.length>j?a.slice(0,j):n(a,j,e));else a=b;var g=d.length-1,i=b;while(g>=0){if(k===0||k>g)return d.slice(0,g+1)+(i.length?q+i+a:a);i=d.slice(g-k+1,g+1)+(i.length?q+i:b);g-=k;if(m<o.length){k=o[m];m++}}return d.slice(0,g+1)+q+i+a}var a=p.numberFormat,h=Math.abs(j);g=g||"D";var i=-1;if(g.length>1)i=parseInt(g.slice(1),10);var m,f=g.charAt(0).toUpperCase();switch(f){case"D":m="n";if(i!==-1)h=n(b+h,i,c);if(j<0)h=-h;break;case"C":case"N":case"P":f=w[f];var k=f[0];m=j<0?f[1][a[k+"NegativePattern"]]:f[2]?f[2][a[k+"PositivePattern"]]:"n";if(i===-1)i=a[k+"DecimalDigits"];h=r(Math.abs(j)*f[3],i,a[k+"GroupSizes"],a[k+"GroupSeparator"],a[k+"DecimalSeparator"]);break;default:throw Error.format(Sys.Res.formatBadFormatSpecifier);}for(var q=/n|\$|-|%/g,l=b;c;){var s=q.lastIndex,o=q.exec(m);l+=m.slice(s,o?o.index:m.length);if(!o)break;switch(o[0]){case"n":l+=h;break;case"$":l+=a.CurrencySymbol;break;case d:if(/[1-9]/.test(h))l+=a.NegativeSign;break;case"%":l+=a.PercentSymbol}}return l};h=Number;h.parseLocale=function(a){return Number._parse(a,Sys.CultureInfo.CurrentCulture)};h.parseInvariant=function(a){return Number._parse(a,Sys.CultureInfo.InvariantCulture)};h._parse=function(c,u){c=c.trim();if(c.match(/^[+-]?infinity$/i))return parseFloat(c);if(c.match(/^0x[a-f0-9]+$/i))return parseInt(c);var d=u.numberFormat,k=Number._parseNumberNegativePattern(c,d,d.NumberNegativePattern),l=k[0],i=k[1];if(l===b&&d.NumberNegativePattern!==1){k=Number._parseNumberNegativePattern(c,d,1);l=k[0];i=k[1]}if(l===b)l=g;var n,h,j=i.indexOf("e");if(j<0)j=i.indexOf("E");if(j<0){h=i;n=a}else{h=i.substr(0,j);n=i.substr(j+1)}var e,o,t=d.NumberDecimalSeparator,r=h.indexOf(t);if(r<0){e=h;o=a}else{e=h.substr(0,r);o=h.substr(r+t.length)}var q=d.NumberGroupSeparator;e=e.split(q).join(b);var s=q.replace(/\u00A0/g,f);if(q!==s)e=e.split(s).join(b);var p=l+e;if(o!==a)p+="."+o;if(n!==a){var m=Number._parseNumberNegativePattern(n,d,1);if(m[0]===b)m[0]=g;p+="e"+m[0]+m[1]}return p.match(/^[+-]?\d*\.?\d*(e[+-]?\d+)?$/)?parseFloat(p):Number.NaN};h._parseNumberNegativePattern=function(a,h,i){var c=h.NegativeSign,e=h.PositiveSign;switch(i){case 4:c=f+c;e=f+e;case 3:if(a.endsWith(c))return[d,a.substr(0,a.length-c.length)];else if(a.endsWith(e))return[g,a.substr(0,a.length-e.length)];break;case 2:c+=f;e+=f;case 1:if(a.startsWith(c))return[d,a.substr(c.length)];else if(a.startsWith(e))return[g,a.substr(e.length)];break;case 0:if(a.startsWith("(")&&a.endsWith(")"))return[d,a.substr(1,a.length-2)]}return[b,a]};n=h.prototype;n.format=function(a){return Sys._toFormattedString.call(this,a,Sys.CultureInfo.InvariantCulture)};n.localeFormat=function(a){return Sys._toFormattedString.call(this,a,Sys.CultureInfo.CurrentCulture)};function u(a){return a.split(" ").join(f).toUpperCase()}function r(b){var a=[];y(b,function(b,c){a[c]=u(b)});return a}function v(c){var b={};z(c,function(c,d){b[d]=c instanceof Array?c.length===1?[c]:Array.apply(a,c):typeof c==="object"?v(c):c});return b}h=Sys.CultureInfo=function(c,b,a){this.name=c;this.numberFormat=b;this.dateTimeFormat=a};h.prototype={_getDateTimeFormats:function(){var b=this._dateTimeFormats;if(!b){var a=this.dateTimeFormat;this._dateTimeFormats=b=[a.MonthDayPattern,a.YearMonthPattern,a.ShortDatePattern,a.ShortTimePattern,a.LongDatePattern,a.LongTimePattern,a.FullDateTimePattern,a.RFC1123Pattern,a.SortableDateTimePattern,a.UniversalSortableDateTimePattern]}return b},_getMonthIndex:function(c,h){var a=this,d=h?"_upperAbbrMonths":"_upperMonths",f=d+"Genitive",i=a[d];if(!i){var g=h?m:b;a[d]=r(a.dateTimeFormat[g+p]);a[f]=r(a.dateTimeFormat[g+o])}c=u(c);var e=t(a[d],c);if(e<0)e=t(a[f],c);return e},_getDayIndex:function(f,d){var a=this,c=d?"_upperAbbrDays":"_upperDays",e=a[c];if(!e)a[c]=r(a.dateTimeFormat[(d?m:b)+"DayNames"]);return t(a[c],u(f))}};h.registerClass("Sys.CultureInfo");h._parse=function(a){var b=a.dateTimeFormat;if(b&&!b.eras)b.eras=a.eras;return new Sys.CultureInfo(a.name,a.numberFormat,b)};h._setup=function(){var e=this,c=window.__cultureInfo,i=["January","February","March","April","May","June","July","August","September","October","November","December",b],h=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",b],j={name:b,numberFormat:{CurrencyDecimalDigits:2,CurrencyDecimalSeparator:".",CurrencyGroupSizes:[3],NumberGroupSizes:[3],PercentGroupSizes:[3],CurrencyGroupSeparator:",",CurrencySymbol:"¤",NaNSymbol:"NaN",CurrencyNegativePattern:0,NumberNegativePattern:1,PercentPositivePattern:0,PercentNegativePattern:0,NegativeInfinitySymbol:"-Infinity",NegativeSign:d,NumberDecimalDigits:2,NumberDecimalSeparator:".",NumberGroupSeparator:",",CurrencyPositivePattern:0,PositiveInfinitySymbol:"Infinity",PositiveSign:g,PercentDecimalDigits:2,PercentDecimalSeparator:".",PercentGroupSeparator:",",PercentSymbol:"%",PerMilleSymbol:"‰",NativeDigits:["0","1","2","3","4","5","6","7","8","9"],DigitSubstitution:1},dateTimeFormat:{AMDesignator:"AM",Calendar:{MinSupportedDateTime:"@-62135568000000@",MaxSupportedDateTime:"@253402300799999@",AlgorithmType:1,CalendarType:1,Eras:[1],TwoDigitYearMax:2029},DateSeparator:"/",FirstDayOfWeek:0,CalendarWeekRule:0,FullDateTimePattern:"dddd, dd MMMM yyyy HH:mm:ss",LongDatePattern:"dddd, dd MMMM yyyy",LongTimePattern:"HH:mm:ss",MonthDayPattern:"MMMM dd",PMDesignator:"PM",RFC1123Pattern:"ddd, dd MMM yyyy HH':'mm':'ss 'GMT'",ShortDatePattern:"MM/dd/yyyy",ShortTimePattern:"HH:mm",SortableDateTimePattern:"yyyy'-'MM'-'dd'T'HH':'mm':'ss",TimeSeparator:":",UniversalSortableDateTimePattern:"yyyy'-'MM'-'dd HH':'mm':'ss'Z'",YearMonthPattern:"yyyy MMMM",AbbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],ShortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],DayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],AbbreviatedMonthNames:h,MonthNames:i,NativeCalendarName:"Gregorian Calendar",AbbreviatedMonthGenitiveNames:Array.clone(h),MonthGenitiveNames:Array.clone(i)},eras:[1,"A.D.",a,0]};e.InvariantCulture=e._parse(j);switch(typeof c){case"string":c=window.eval("("+c+")");case"object":e.CurrentCulture=e._parse(c);delete __cultureInfo;break;default:c=v(j);c.name="en-US";c.numberFormat.CurrencySymbol="$";var f=c.dateTimeFormat;f.FullDatePattern="dddd, MMMM dd, yyyy h:mm:ss tt";f.LongDatePattern="dddd, MMMM dd, yyyy";f.LongTimePattern="h:mm:ss tt";f.ShortDatePattern="M/d/yyyy";f.ShortTimePattern="h:mm tt";f.YearMonthPattern="MMMM, yyyy";e.CurrentCulture=e._parse(c)}};h._setup()}if(window.Sys&&Sys.loader)Sys.loader.registerScript("Globalization",a,b);else b()})();�// (c) 2010 CodePlex Foundation

//!/ <reference name="MicrosoftAjaxCore.js" />
(function() {

function execute() {
Type._registerScript("MicrosoftAjaxDataContext.js", ["MicrosoftAjaxComponentModel.js", "MicrosoftAjaxCore.js"]);

var $type, $prototype;
var merge = Sys._merge;

Type.registerNamespace("Sys.Net");

$type = Sys.Net.WebServiceOperation = function WebServiceOperation(operation, parameters, httpVerb) {
    /// <summary locid="M:J#Sys.Net.WebServiceOperation.#ctor">Defines a seb service operation.</summary>
    /// <param name="operation"></param>
    /// <param name="parameters" type="Object" mayBeNull="true" optional="true"></param>
    /// <param name="httpVerb" type="String" mayBeNull="true" optional="true"></param>
    /// <field name="operation" locid="F:J#Sys.Net.WebServiceOperation.operation"></field>
    /// <field name="parameters" type="Object" mayBeNull="true" locid="F:J#Sys.Net.WebServiceOperation.parameters"></field>
    /// <field name="httpVerb" type="String" mayBeNull="true" locid="F:J#Sys.Net.WebServiceOperation.httpVerb"></field>
    if (typeof(operation) === "undefined") {
        operation = null;
    }
    this.operation = operation;
    this.parameters = parameters || null;
    this.httpVerb = httpVerb || null;
}
$type.prototype = {
    operation: null,
    parameters: null,
    httpVerb: null
}
$type.registerClass("Sys.Net.WebServiceOperation");


Type.registerNamespace("Sys.Data");

if (!Sys.Data.IDataProvider) {
$type = Sys.Data.IDataProvider = function Data$IDataProvider() {
}
$type.prototype = {
    fetchData: function IDataProvider$fetchData(operation, parameters, mergeOption, httpVerb, succeededCallback, failedCallback, timeout, userContext) {
        /// <summary locid="M:J#Sys.Data.IDataProvider.fetchData">Fetches data from the service.</summary>
        /// <param name="operation">The operation to fetch data with.</param>
        /// <param name="parameters" type="Object" mayBeNull="true" optional="true"></param>
        /// <param name="mergeOption" type="Sys.Data.MergeOption" mayBeNull="true" optional="true">Determines how the returned data is tracked if the DataProvider supports it.</param>
        /// <param name="httpVerb" type="String" mayBeNull="true" optional="true"></param>
        /// <param name="succeededCallback" type="Function" mayBeNull="true" optional="true"></param>
        /// <param name="failedCallback" type="Function" mayBeNull="true" optional="true"></param>
        /// <param name="timeout" type="Number" integer="true" mayBeNull="true" optional="true"></param>
        /// <param name="userContext" mayBeNull="true" optional="true"></param>
        /// <returns type="Sys.Net.WebRequest"></returns>
        throw Error.notImplemented();
    }
}
$type.registerInterface("Sys.Data.IDataProvider");
}
if (!Sys.Data.MergeOption) {
$type = Sys.Data.MergeOption = function Data$MergeOption() {
    /// <summary locid="M:J#Sys.Data.MergeOption.#ctor">Describes how an item has changed.</summary>
    /// <field name="appendOnly" type="Number" integer="true" static="true" locid="F:J#Sys.Data.MergeOption.appendOnly"></field>
    /// <field name="overwriteChanges" type="Number" integer="true" static="true" locid="F:J#Sys.Data.MergeOption.overwriteChanges"></field>
    throw Error.notImplemented();
}
$type.prototype = {
    appendOnly: 0,
    overwriteChanges: 1
}
$type.registerEnum("Sys.Data.MergeOption");

}
$type = Sys.Data.DataContext = function Data$DataContext() {
    Sys.Data.DataContext.initializeBase(this);
    this._dataChangedDel = Function.createDelegate(this, this._dataChanged);
    this._items = {};
    this._methods = {};
}
$type.prototype = {
    _useIdentity: false,
    _dirty: false,
    _lastResults: null,
    _items: null,
    _ignoreChange: false,
    _inserts: null,
    _edits: null,
    _deletes: null,
    _changelist: null,
    _hasChanges: false,
    _mergeOption: Sys.Data.MergeOption.overwriteChanges,
    _saverequest: null,
    _saving: false,
    _serviceUri: null,
    _saveOperation: null,
    _saveParameters: null,
    _saveHttpVerb: null,
    _saveTimeout: 0,
    _methods: null,
    get_changes: function DataContext$get_changes() {
        /// <value type="Array" elementType="Sys.Data.ChangeOperation" locid="P:J#Sys.Data.DataContext.changes">Gets the current list of changes.</value>
        var changes = this._changelist;
        if (!changes) {
            this._changelist = changes = [];
        }
        return changes;
    },
    get_createEntityMethod: function DataContext$get_createEntityMethod() {
        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Data.DataContext.createEntityMethod"></value>
        return this._methods.createEntity || null;
    },
    set_createEntityMethod: function DataContext$set_createEntityMethod(value) {
        this._methods.createEntity = value;
    },
    get_getIdentityMethod: function DataContext$get_getIdentityMethod() {
        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Data.DataContext.getIdentityMethod"></value>
        return this._methods.getIdentity || null;
    },
    set_getIdentityMethod: function DataContext$set_getIdentityMethod(value) {
        if (this.get_isInitialized() && ((this._getIdentityMethod && !value) || (!this._getIdentityMethod && value))) {
            throw Error.invalidOperation(String.format(Sys.Data.DataRes.commonNotAfterInit, "DataContext", "getIdentityMethod"));
        }
        this._methods.getIdentity = value;
        this._useIdentity = !!value;
    },
    get_handleSaveChangesResultsMethod: function DataContext$get_handleSaveChangesResultsMethod() {
        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Data.DataContext.handleSaveChangesResultsMethod">The method that is called when a save operation completes.</value>
        return this._methods.handleSaveResults || null;
    },
    set_handleSaveChangesResultsMethod: function DataContext$set_handleSaveChangesResultsMethod(value) {
        this._methods.handleSaveResults = value;
    },
    get_isDeferredPropertyMethod: function DataContext$get_isDeferredPropertyMethod() {
        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Data.DataContext.isDeferredPropertyMethod">The method that determines if an entity field is currently a deferred entity link placeholder object.</value>
        return this._methods.isDeferredProperty || null;
    },
    set_isDeferredPropertyMethod: function DataContext$set_isDeferredPropertyMethod(value) {
        this._methods.isDeferredProperty = value;
    },
    get_getNewIdentityMethod: function DataContext$get_getNewIdentityMethod() {
        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Data.DataContext.getNewIdentityMethod">The method that is called when a new identity is created for an inserted entity.</value>
        return this._methods.getNewIdentity || null;
    },
    set_getNewIdentityMethod: function DataContext$set_getNewIdentityMethod(value) {
        this._methods.getNewIdentity = value;
    },
    get_getDeferredPropertyFetchOperationMethod: function DataContext$get_getDeferredPropertyFetchOperationMethod() {
        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Data.DataContext.getDeferredPropertyFetchOperationMethod">The method that determines the operation necessary to fetch a link to another entity or set of entities.</value>
        return this._methods.getDeferredQuery || null;
    },
    set_getDeferredPropertyFetchOperationMethod: function DataContext$set_getDeferredPropertyFetchOperationMethod(value) {
        this._methods.getDeferredQuery = value;
    },
    get_items: function DataContext$get_items() {
        /// <value type="Object" locid="P:J#Sys.Data.DataContext.items">A dictionary of entities, keyed by their identities as determined by the getIdentityMethod.</value>
        return this._items;
    },
    get_lastFetchDataResults: function DataContext$get_lastFetchDataResults() {
        /// <value mayBeNull="true" locid="P:J#Sys.Data.DataContext.lastFetchDataResults">The data last fetched successfully.</value>
        return this._lastResults || null;
    },
    get_hasChanges: function DataContext$get_hasChanges() {
        /// <value type="Boolean" locid="P:J#Sys.Data.DataContext.hasChanges"></value>
        return this._hasChanges;
    },
    get_fetchDataMethod: function DataContext$get_fetchDataMethod() {
        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Data.DataContext.fetchDataMethod"></value>
        return this._methods.fetchData || null;
    },
    set_fetchDataMethod: function DataContext$set_fetchDataMethod(value) {
        this._methods.fetchData = value;
    },
    get_mergeOption: function DataContext$get_mergeOption() {
        /// <value type="Sys.Data.MergeOption" locid="P:J#Sys.Data.DataContext.mergeOption"></value>
        return this._mergeOption;
    },
    set_mergeOption: function DataContext$set_mergeOption(value) {
        this._mergeOption = value;
    },
    get_saveChangesMethod: function DataContext$get_saveChangesMethod() {
        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Data.DataContext.saveChangesMethod"></value>
        return this._methods.saveChanges || null;
    },
    set_saveChangesMethod: function DataContext$set_saveChangesMethod(value) {
        this._methods.saveChanges = value;
    },
    get_saveOperation: function DataContext$get_saveOperation() {
        /// <value type="String" mayBeNull="true" locid="P:J#Sys.Data.DataContext.saveOperation"></value>
        return this._saveOperation || "";
    },
    set_saveOperation: function DataContext$set_saveOperation(value) {
        this._saveOperation = value;
    },
    get_saveHttpVerb: function DataContext$get_saveHttpVerb() {
        /// <value type="String" locid="P:J#Sys.Data.DataContext.saveHttpVerb"></value>
        return this._saveHttpVerb || "POST";
    },
    set_saveHttpVerb: function DataContext$set_saveHttpVerb(value) {
        this._saveHttpVerb = value;
    },
    get_saveParameters: function DataContext$get_saveParameters() {
        /// <value type="Object" mayBeNull="true" locid="P:J#Sys.Data.DataContext.saveParameters">A dictionary of parameters use when saving changes.</value>
        return this._saveParameters;
    },
    set_saveParameters: function DataContext$set_saveParameters(value) {
        this._saveParameters = value;
    },    
    get_saveChangesTimeout: function DataContext$get_saveChangesTimeout() {
        /// <value type="Number" integer="true" locid="P:J#Sys.Data.DataContext.saveChangesTimeout"></value>
        return this._saveTimeout;
    },
    set_saveChangesTimeout: function DataContext$set_saveChangesTimeout(value) {
        this._saveTimeout = value;
    },        
    get_isSaving: function DataContext$get_isSaving() {
        /// <value type="Boolean" locid="P:J#Sys.Data.DataContext.isSaving"></value>
        return this._saving;
    },
    get_serviceUri: function DataContext$get_serviceUri() {
        /// <value type="String" mayBeNull="true" locid="P:J#Sys.Data.DataContext.serviceUri"></value>
        return this._serviceUri || "";
    },
    set_serviceUri: function DataContext$set_serviceUri(value) {
        this._serviceUri = value;
    },
    addLink: function DataContext$addLink(sourceEntity, sourcePropertyName, targetEntity) {
        /// <summary locid="M:J#Sys.Data.DataContext.addLink"></summary>
        /// <param name="sourceEntity" type="Object"></param>
        /// <param name="sourcePropertyName" type="String"></param>
        /// <param name="targetEntity" type="Object"></param>
        var toggled = this._toggleLink(sourceEntity, sourcePropertyName, targetEntity),
            valueSet = this._setLinkField(true, sourceEntity, sourcePropertyName, targetEntity);
        if (!toggled || (toggled.action !== Sys.Data.ChangeOperationType.remove)) {
            if (valueSet || (toggled && (toggled.action === Sys.Data.ChangeOperationType.insert))) {
                this._registerChange(new Sys.Data.ChangeOperation(Sys.Data.ChangeOperationType.insert,
                    null, sourceEntity, sourcePropertyName, targetEntity));
            }
        }
    },
    removeLink: function DataContext$removeLink(sourceEntity, sourcePropertyName, targetEntity) {
        /// <summary locid="M:J#Sys.Data.DataContext.removeLink"></summary>
        /// <param name="sourceEntity" type="Object"></param>
        /// <param name="sourcePropertyName" type="String"></param>
        /// <param name="targetEntity" type="Object"></param>
        var toggled = this._toggleLink(sourceEntity, sourcePropertyName, targetEntity),
            valueSet = this._setLinkField(true, sourceEntity, sourcePropertyName, targetEntity, true);
            
        if (!toggled || (toggled.action !== Sys.Data.ChangeOperationType.insert)) {
            if (valueSet || (toggled && (toggled.action === Sys.Data.ChangeOperationType.remove))) {
                this._registerChange(new Sys.Data.ChangeOperation(Sys.Data.ChangeOperationType.remove,
                    null, sourceEntity, sourcePropertyName, targetEntity));
            }
        }
    },
    setLink: function DataContext$setLink(sourceEntity, sourcePropertyName, targetEntity) {
        /// <summary locid="M:J#Sys.Data.DataContext.setLink"></summary>
        /// <param name="sourceEntity" type="Object"></param>
        /// <param name="sourcePropertyName" type="String"></param>
        /// <param name="targetEntity" type="Object" mayBeNull="true"></param>
        this._toggleLink(sourceEntity, sourcePropertyName, targetEntity);
        this._setLinkField(false, sourceEntity, sourcePropertyName, targetEntity);
        this._registerChange(new Sys.Data.ChangeOperation(Sys.Data.ChangeOperationType.update,
            null, sourceEntity, sourcePropertyName, targetEntity));
    },    
    abortSave: function DataContext$abortSave() {
        /// <summary locid="M:J#Sys.Data.DataContext.abortSave">Aborts the current saveChanges request, if any.</summary>
        if (this._saverequest) {
            this._saverequest.get_executor().abort();
            this._saverequest = null;
        }
        if (this._saving) {
            this._saving = false;
            this.raisePropertyChanged("isSaving");
        }
    },
    clearChanges: function DataContext$clearChanges() {
        /// <summary locid="M:J#Sys.Data.DataContext.clearChanges">Clears any tracked changes without committing them. Does not revert the changes.</summary>
        this._edits = this._deletes = this._inserts = null;
        if (this._changelist) {
            Sys.Observer.clear(this._changelist);
        }
        if (this._hasChanges) {
            this._hasChanges = false;
            this.raisePropertyChanged("hasChanges");
        }
    },
    clearData: function DataContext$clearData() {
        /// <summary locid="M:J#Sys.Data.DataContext.clearData">Clears the stored entities and clears tracked changes.</summary>
        this._clearData();
    },
    createEntity: function DataContext$createEntity(entitySetName) {
        /// <summary locid="M:J#Sys.Data.DataContext.createEntity">Creates a new disconnected entity.</summary>
        /// <param name="entitySetName" type="String" optional="true" mayBeNull="true"></param>
        /// <returns type="Object"></returns>
        var getter = this.get_createEntityMethod();
        if (!getter) {
            throw Error.invalidOperation(String.format(Sys.Data.DataRes.requiredMethodProperty, "createEntityMethod", "createEntity"));
        }
        return getter(this, entitySetName);
    },
    dispose: function DataContext$dispose() {
        /// <summary locid="M:J#Sys.Data.DataContext.dispose">Disposes of the DataContext.</summary>
        if (this._disposed) return;
        this._disposed = true;
        if (this.get_isSaving()) {
            this.abortSave();
        }
        this.clearData();
        this._lastResults = null;
        this._saverequest = null;
        this._methods = {};        
        Sys.Data.DataContext.callBaseMethod(this, "dispose");
    },
    initialize: function DataContext$initialize() {
        /// <summary locid="M:J#Sys.Data.DataContext.initialize"></summary>
        this.updated();
        Sys.Data.DataContext.callBaseMethod(this, "initialize");
    },
    fetchDeferredProperty: function DataContext$fetchDeferredProperty(entity, propertyName, parameters, mergeOption, succeededCallback, failedCallback, timeout, userContext) {
        /// <summary locid="M:J#Sys.Data.DataContext.fetchDeferredProperty">Populates the property of a given item.</summary>
        /// <param name="entity" type="Object">Entity containing the property to be fetched.</param>
        /// <param name="propertyName" type="String">Name of the property which should be fetched.</param>
        /// <param name="parameters" type="Object" mayBeNull="true" optional="true"></param>
        /// <param name="mergeOption" type="Sys.Data.MergeOption" optional="true" mayBeNull="true">The merge option for any entities linked on the deferred entity once it is loaded.</param>
        /// <param name="succeededCallback" type="Function" mayBeNull="true" optional="true">Callback to execute upon successful completion of the operation.</param>
        /// <param name="failedCallback" type="Function" mayBeNull="true" optional="true">Callback to execute upon unsuccessful completion of the operation.</param>
        /// <param name="timeout" type="Number" integer="true" mayBeNull="true" optional="true"></param>
        /// <param name="userContext" mayBeNull="true" optional="true">A context object associated with this operation.</param>
        /// <returns type="Sys.Net.WebRequest">The WebRequest object used for this operation.</returns>
        var getter = this.get_getDeferredPropertyFetchOperationMethod();
        if (!getter) {
            throw Error.invalidOperation(String.format(Sys.Data.DataRes.requiredMethodProperty, "getDeferredPropertyFetchOperationMethod", "fetchDeferredProperty"));
        }
        var _this = this, query = getter(this, entity, propertyName, parameters || null, userContext);
        if (query && query.operation) {
            function done(result) {
                _this._setField(entity, propertyName, null, result, null, true);
                if (succeededCallback) {
                    succeededCallback(result, userContext, propertyName);
                }
            }
            function fail(error) {
                if (failedCallback) {
                    failedCallback(error, userContext, propertyName);
                }
            }
            if (typeof(userContext) === "undefined") {
                userContext = null;
            }
            if ((typeof(mergeOption) === "undefined") || (mergeOption === null)) {
                mergeOption = this.get_mergeOption();
            }
            return this.fetchData(query.operation, merge(null, query.parameters, parameters), mergeOption, query.httpVerb || "POST", done, fail, timeout || 0, userContext);
        }
    },
    getNewIdentity: function DataContext$getNewIdentity(entity, entitySetName) {
        /// <summary locid="M:J#fail">Generates a new identity for a new entity.</summary>
        /// <param name="entity">The new entity.</param>
        /// <param name="entitySetName" type="String" mayBeNull="true">The type of the new entity.</param>
        /// <returns mayBeNull="true"></returns>
        var getter = this.get_getNewIdentityMethod();
        return getter ? (getter(this, entity, entitySetName) || null) : null;
    },
    insertEntity: function DataContext$insertEntity(entity, entitySetName) {
        /// <summary locid="M:J#fail"></summary>
        /// <param name="entity"></param>
        /// <param name="entitySetName" type="String" optional="true" mayBeNull="true">The type of entity to insert.</param>
        var identity = null;
        if (this._useIdentity) {
            identity = this.getIdentity(entity);
            if (identity === null) {
                identity = this.getNewIdentity(entity, entitySetName || null);
            }
            if (!identity) {
                throw Error.invalidOperation(Sys.Data.DataRes.requiredIdentity);
            }
            if (this._items[identity]) {
                throw Error.invalidOperation(String.format(Sys.Data.DataRes.entityAlreadyExists, identity));
            }
            this._storeEntity(identity, entity);
        }
        else {
            this._captureEntity(entity);
        }
        this._inserts = this._pushChange(this._inserts, entity, identity);
        this._registerChange(new Sys.Data.ChangeOperation(Sys.Data.ChangeOperationType.insert, entity));
    },
    removeEntity: function DataContext$removeEntity(entity) {
        /// <summary locid="M:J#fail"></summary>
        /// <param name="entity"></param>
        if (this._ignoreChange) return;
        var identity = this.getIdentity(entity);
        if (identity !== null) {
            entity = this._items[identity];
            if (typeof (entity) === "undefined") {
                return;
            }
            delete this._items[identity];
        }
        this._releaseEntity(entity);
        var _this = this,
            changelist = this.get_changes(),
            hadChange = this._hasChanges;
        function unregister() {
            for (var i = 0, l = changelist.length; i < l; i++) {
                if (changelist[i].item === entity) {
                    Sys.Observer.removeAt(changelist, i);
                    _this._hasChanges = !!changelist.length;
                    return;
                }
            }
        }
        if (this._peekChange(this._inserts, entity, identity, true)) {
            this._removeChanges(entity, "*");
            unregister();
        }
        else {
            this._deletes = this._pushChange(this._deletes, entity, identity);
            if (this._peekChange(this._edits, entity, identity, true)) {
                unregister();
            }
            this._removeChanges(entity, "*", true);
            Sys.Observer.add(changelist, new Sys.Data.ChangeOperation(Sys.Data.ChangeOperationType.remove, entity));
            this._hasChanges = true;
        }
        if (this._hasChanges !== hadChange) {
            this._raiseChanged("hasChanges");
        }
    },
    fetchData: function DataContext$fetchData(operation, parameters, mergeOption, httpVerb, succeededCallback, failedCallback, timeout, userContext) {
        /// <summary locid="M:J#unregister">Fetches data from the provided service URI.</summary>
        /// <param name="operation" mayBeNull="true" optional="true">The operation to fetch data with.</param>
        /// <param name="parameters" type="Object" mayBeNull="true" optional="true"></param>
        /// <param name="mergeOption" type="Sys.Data.MergeOption" mayBeNull="true" optional="true"></param>
        /// <param name="httpVerb" type="String" mayBeNull="true" optional="true"></param>
        /// <param name="succeededCallback" type="Function" mayBeNull="true" optional="true"></param>
        /// <param name="failedCallback" type="Function" mayBeNull="true" optional="true"></param>
        /// <param name="timeout" type="Number" integer="true" mayBeNull="true" optional="true"></param>
        /// <param name="userContext" mayBeNull="true" optional="true"></param>
        /// <returns type="Sys.Net.WebRequest"></returns>
        var _this = this;
        if ((typeof(mergeOption) === "undefined") || (mergeOption === null)) {
            mergeOption = this.get_mergeOption();
        }
        function done(data) {
            if (_this._disposed) return;
            var trackedData = _this.trackData(data, mergeOption);
            if (succeededCallback) {
                if ((data instanceof Array) && (trackedData === data)) {
                    trackedData = Array.clone(trackedData);
                }
                succeededCallback(trackedData, userContext, operation);
            }
        }
        function fail(error) {
            if (_this._disposed) return;
            if (failedCallback) {
                failedCallback(error, userContext, operation);
            }
        }
        if (typeof(userContext) === "undefined") {
            userContext = null;
        }
        var method = this.get_fetchDataMethod(), uri = this.get_serviceUri();
        if (!method) {
            Type._checkDependency("MicrosoftAjaxWebServices.js", "Sys.Data.DataContext.fetchData");
            if (!uri) {
                throw Error.invalidOperation(Sys.Data.DataRes.requiredUri);
            }
        }
        return (method ? method(this, uri, operation, parameters || null, httpVerb || "POST", done, fail, timeout || 0, userContext) 
                       : Sys.Net.WebServiceProxy.invoke(uri, operation, httpVerb ? (httpVerb === "GET") : false, 
                                                        parameters || null, done, fail, userContext, timeout || 0)
                       );
    },
    _clearData: function DataContext$_clearData(newData) {
        if (this._useIdentity) {
            for (var identity in this._items) {
                var entity = this._items[identity];
                this._releaseEntity(entity);
            }
        }
        else if (this._lastResults) {
            this._release(this._lastResults);
        }
        this._items = {};
        var oldData = this._lastResults;
        this._lastResults = newData || null;
        this.clearChanges();
        if (newData) {
            this._capture(newData);
        }
        if (oldData !== null) {
            this._raiseChanged("lastFetchDataResults");
        }
    },
    _fixAfterSave: function DataContext$_fixAfterSave(change, entity, result) {
        if (this._useIdentity) {
            var oldIdentity = this.getIdentity(entity),
                newIdentity = this.getIdentity(result);
            this._combine(entity, result);
            if (oldIdentity !== newIdentity) {
                delete this._items[oldIdentity];
                this._items[newIdentity] = entity;
            }
        }
        else {
            this._combine(entity, result);
            if (change.action === Sys.NotifyCollectionChangedAction.add) {
                this._captureEntity(entity);
            }
        }
    },
    trackData: function DataContext$trackData(data, mergeOption) {
        /// <summary locid="M:J#fail">Loads the given data into the DataContext as if it were loaded with fetchData().</summary>
        /// <param name="data" mayBeNull="true">The data to load.</param>
        /// <param name="mergeOption" type="Sys.Data.MergeOption" mayBeNull="true" optional="true"></param>
        /// <returns mayBeNull="true">The data being tracked. If the mergeOption is appendOnly and there are deleted entities, they will be removed from this list.</returns>
        if (this._useIdentity) {
            if ((typeof(mergeOption) === "undefined") || (mergeOption === null)) {
                mergeOption = this.get_mergeOption();
            }
            var trackedData;
            if (data instanceof Array) {
                data = this._storeEntities(data, mergeOption);
            }
            else if ((typeof(data) !== "undefined") && (data !== null)) {
                trackedData = this._storeEntities([data], mergeOption);
                if (trackedData.length === 0) {
                    data = null;
                }
            }
            var oldData = this._lastResults;
            this._lastResults = data;
            if (oldData !== null) {
                this._raiseChanged("lastFetchDataResults");
            }
        }
        else {
            this._clearData(data);
        }
        return data;
    },
    _processResults: function DataContext$_processResults(dataContext, changes, results) {
        if (results && results.length === changes.length) {
            dataContext._ignoreChange = true;
            try {
                for (var i = 0, l = results.length; i < l; i++) {
                    var result = results[i], change = changes[i], item = change.item;
                    if (result && typeof(result) === "object") {
                        dataContext._fixAfterSave(change, item, result);
                    }
                }
            }
            finally {
                dataContext._ignoreChange = false;
            }
        }
    },
    _peekChange: function DataContext$_peekChange(changearray, entity, identity, remove) {
        if (!changearray) return false;
        if (identity !== null) {
            var key = "id$" + identity,
                i = changearray[key];
            if (i) {
                if (remove) {
                    changearray[key] = null;
                }
                return true;
            }
        }
        else {
            if (remove) {
                return Array.remove(changearray, entity);
            }
            else {
                return Array.contains(changearray, entity);
            }
        }
    },
    _pushChange: function DataContext$_pushChange(changearray, entity, identity) {
        if (!changearray) {
            changearray = [];
        }
        if (identity === null) {
            changearray.push(entity);
        }
        else {
            changearray["id$" + identity] = true;
        }
        return changearray;
    },
    _registerChange: function DataContext$_registerChange(change) {
        Sys.Observer.add(this.get_changes(), change);
        if (!this._hasChanges) {
            this._hasChanges = true;
            this.raisePropertyChanged("hasChanges");
        }        
    },
    saveChanges: function DataContext$saveChanges(succeededCallback, failedCallback, userContext) {
        /// <summary locid="M:J#Sys.Data.DataContext.saveChanges">Saves pending changes made to the current data.</summary>
        /// <param name="succeededCallback" type="Function" mayBeNull="true" optional="true"></param>
        /// <param name="failedCallback" type="Function" mayBeNull="true" optional="true"></param>
        /// <param name="userContext" mayBeNull="true" optional="true"></param>
        /// <returns type="Sys.Net.WebRequest"></returns>
        var delay = false,
            uri = this.get_serviceUri(),
            saveOperation = this.get_saveOperation(),
            _this = this,
            changes;
        function done(results) {
            if (_this._disposed) return;
            if (!delay) {
                delay = true;
                window.setTimeout(function() { done(results) }, 0);
            }
            else {
                _this.clearChanges();
                var processor = _this.get_handleSaveChangesResultsMethod();
                (processor || _this._processResults)(_this, changes, results);
                _this._saverequest = null;
                _this._saving = false;
                _this._raiseChanged("isSaving");
                if (succeededCallback) {
                    succeededCallback(results, userContext, saveOperation);
                }
            }
        }
        function failed(error) {
            if (_this._disposed) return;
            if (!delay) {
                delay = true;
                window.setTimeout(function() { failed(error) }, 0);
            }
            else {
                _this._saverequest = null;
                _this._saving = false;
                _this._raiseChanged("isSaving");
                if (failedCallback) {
                    failedCallback(error, userContext, saveOperation);
                }
            }
        }
        if (!this._hasChanges) {
            done(null);
            return null;
        }
        changes = Array.clone(this.get_changes());        
        if (changes.length === 0) {
            done(null);
            return null;
        }

        if (this.get_isSaving()) {
            this.abortSave();
        }
        this._saving = true;
        this._raiseChanged("isSaving");
        
        var filteredChanges = this._filterLinks(changes);
        this._saverequest = (this.get_saveChangesMethod() || this._saveInternal)(this, filteredChanges, done, failed, userContext);
        delay = true;
        return this._saverequest;
    },
    _isDeleted: function DataContext$_isDeleted(entity) {
        var i, l, change, changes = this.get_changes(), identity = this.getIdentity(entity);
        for (i = 0, l = changes.length; i < l; i++) {
            change = changes[i];
            if ((change.action === Sys.Data.ChangeOperationType.remove) && change.item &&
                ((change.item === entity) || (this.getIdentity(change.item) === identity)) ) {
                return true;
            }
        }
        return false;
    },
    _removeChanges: function DataContext$_removeChanges(entity, linkField, addsOnly) {
        var i, l, toRemove, change, changes = this.get_changes(),
            anyField = (linkField === "*");
        for (i = 0, l = changes.length; i < l; i++) {
            change = changes[i];
            if (// doing links and the entity is the source, and the linkField is correct
                (linkField && (!addsOnly || change.action === Sys.Data.ChangeOperationType.insert) && (change.linkSource === entity || (anyField && (change.linkTarget === entity))) && (anyField || (change.linkSourceField === linkField))) ||
                (!linkField && change.item && (typeof(change.item) === "object") &&
                    ((change.item === entity) || (this.getIdentity(change.item) === this.getIdentity(entity))))) {
                if (!toRemove) toRemove = [];
                toRemove.push(change);
            }
        }
        if (toRemove) {
            Sys.Observer.beginUpdate(changes);
            for (i = 0, l = toRemove.length; i < l; i++) {
                Sys.Observer.remove(changes, toRemove[i]);
            }
            Sys.Observer.endUpdate(changes);
            if (changes.length === 0) {
                this._hasChanges = false;
                this.raisePropertyChanged("hasChanges");
            }
        }
    },
    _setLinkField: function DataContext$_setLinkField(isArray, source, field, target, isRemove) {
        if (isArray) {
            var value = source[field];
            if (value === null || this._getValueType(source, field, value) !== 2) {
                if (isRemove) {
                    return false;
                }
                source[field] = value = [];
            }
            else if (!(value instanceof Array)) {
                throw Error.invalidOperation(String.format(Sys.Data.DataRes.mustBeArray, field));
            }
            this._ignoreChange = true;
            try {
                if (Array.contains(value, target)) {
                    if (isRemove) {
                        Sys.Observer.remove(value, target);
                        return true;
                    }
                    else {
                        return false;
                    }
                }
                else {
                    if (isRemove) {
                        return false;
                    }
                    else {
                        Sys.Observer.add(value, target);
                        return true;
                    }
                }
            }
            finally {
                this._ignoreChange = false;
            }
        }
        else {
            this._ignoreChange = true;
            try {
                if (isRemove) {
                    Sys.Observer.setValue(source, field, null);
                }
                else {
                    Sys.Observer.setValue(source, field, target);
                }
                return true;
            }
            finally {
                this._ignoreChange = false;
            }
        }
    },
    _toggleLink: function DataContext$_toggleLink(source, field, target, removing) {
        var change, changes = this.get_changes();
        for (var i = 0, l = changes.length; i < l; i++) {
            change = changes[i];
            if ((change.linkSourceField === field) && (change.linkSource === source) &&
                ((change.linkTarget === target) || (change.action === Sys.Data.ChangeOperationType.update))) {
                Sys.Observer.remove(changes, change);
                var hadChange = this._hasChanges;
                this._hasChanges = !!changes.length;
                if (hadChange !== this._hasChanges) {
                    this.raisePropertyChanged("hasChanges");
                }
                return change;
            }
        }
        return null;
    },
    updated: function DataContext$updated() {
        /// <summary locid="M:J#Sys.Data.DataContext.updated"></summary>
        if (this._dirty) {
            this._dirty = false;
            this.raisePropertyChanged("");
        }
    },
    _capture: function DataContext$_capture(data) {
        if (data instanceof Array) {
            for (var i = 0, l = data.length; i < l; i++) {
                this._captureEntity(data[i]);
            }
        }
        else if (data !== null) {
            this._captureEntity(data);
        }
    },
    _captureEntity: function DataContext$_captureEntity(item) {
        if (this._isCaptureable(item)) {
            Sys.Observer.addPropertyChanged(item, this._dataChangedDel);
        }
    },
    _dataChanged: function DataContext$_dataChanged(object, args) {
        if (this._ignoreChange) return;
        var changelist = this.get_changes();
        var identity = this.getIdentity(object);
        if (!this._peekChange(this._inserts, object, identity)) {
            var alreadyChanged = this._peekChange(this._edits, object, identity);
            if (!alreadyChanged) {
                Sys.Observer.add(changelist, new Sys.Data.ChangeOperation(Sys.Data.ChangeOperationType.update, object));
                this._edits = this._pushChange(this._edits, object, identity);
                if (!this._hasChanges) {
                    this._hasChanges = true;
                    this.raisePropertyChanged("hasChanges");
                }
            }
        }
    },
    _isActive: function DataContext$_isActive() {
        return this.get_isInitialized() && !this.get_isUpdating();
    },
    _isCaptureable: function DataContext$_isCaptureable(item) {
        if (item === null) return false;
        var type = typeof(item);
        return (type === "object" || type === "unknown");
    },
    _raiseChanged: function DataContext$_raiseChanged(name) {
        if (this._isActive()) {
            this.raisePropertyChanged(name);
            return true;
        }
        else {
            this._dirty = true;
            return false;
        }
    },
    _release: function DataContext$_release(data) {
        if (data instanceof Array) {
            for (var i = 0, l = data.length; i < l; i++) {
                this._releaseEntity(data[i]);
            }
        }
        else if (data !== null) {
            this._releaseEntity(data);
        }
    },
    _releaseEntity: function DataContext$_releaseEntity(item) {
        if (this._isCaptureable(item)) {
            Sys.Observer.removePropertyChanged(item, this._dataChangedDel);
        }
    },
    _saveInternal: function DataContext$_saveInternal(dc, changes, succeededCallback, failedCallback, context) {
        Type._checkDependency("MicrosoftAjaxWebServices.js", "Sys.Data.DataContext.saveChanges");
        var uri = dc.get_serviceUri(),
            operation = dc.get_saveOperation() || "",
            request = null;
        if (!uri) {
            failedCallback(new Sys.Net.WebServiceError(false, String.format(Sys.Res.webServiceFailedNoMsg, operation)), context, operation);
        }
        else {
            request = Sys.Net.WebServiceProxy.invoke(uri,
                operation,
                dc.get_saveHttpVerb() === "GET",
                merge(null, dc.get_saveParameters(), { changeSet: changes }),
                succeededCallback,
                failedCallback,
                context,
                dc.get_saveChangesTimeout() || 0);
        }
        return request;
    },
    _filterLinks: function DataContext$_filterLinks(changeSet) {
        if (!this._useIdentity) return changeSet;
        var i, l = changeSet.length,
            newChangeSet = new Array(l);
        for (i = 0; i < l; i++) {
            var change = changeSet[i], item = change.item, linkSource = change.linkSource, linkTarget = change.linkTarget;
            if (item) {
                item = this._getEntityOnly(item);
            }
            if (linkSource) {
                linkSource = this._getEntityOnly(linkSource);
            }
            if (linkTarget) {
                linkTarget = this._getEntityOnly(linkTarget);
            }
            newChangeSet[i] = new Sys.Data.ChangeOperation(change.action, item, linkSource, change.linkSourceField, linkTarget);
        }
        return newChangeSet;
    },
    _getEntityOnly: function DataContext$_getEntityOnly(source) {
        var target = {};
        this._combine(target, source, null, true);
        return target;
    },
    getIdentity: function DataContext$getIdentity(entity) {
        /// <summary locid="M:J#failed">Gets the unique identity for an entity.</summary>
        /// <param name="entity" type="Object" mayBeNull="false"></param>
        /// <returns mayBeNull="true" type="String">The identity of the entity, null if it has no identity or the identity could not be determined.</returns>
        if (entity === null) return null;
        var getter = this.get_getIdentityMethod();
        return getter ? (getter(this, entity) || null) : null;
    },
    isDeferredProperty: function DataContext$isDeferredProperty(entity, propertyName) {
        /// <summary locid="M:J#failed">Determines if the given entity and property name refer to a deferred link to another entity that has not been loaded yet.</summary>
        /// <param name="entity" type="Object"></param>
        /// <param name="propertyName" type="String"></param>
        /// <returns type="Boolean"></returns>
        var getter = this.get_isDeferredPropertyMethod();
        return getter ? (getter(this, entity, propertyName) || false) : false;
    },
    _getValueType: function DataContext$_getValueType(parent, name, object) {
        var type = typeof(object);
        if (type === "undefined") return 0;
        if ((object === null) || (type !== "object")) return 2;
        if (this.isDeferredProperty(parent, name)) return 1;
        return 2;
    },
    _setField: function DataContext$_setField(target, name, source, value, mergeOption, isLink) {
        var doSet = true, isArray = (target instanceof Array), appendOnly = (mergeOption === Sys.Data.MergeOption.appendOnly);
        if (!isArray) {
            var targetField = target[name], valueType = this._getValueType(target, name, targetField);
            if (appendOnly) {
                if (valueType === 2 &&
                        (!targetField || !value ||
                        (typeof(targetField) !== "object") ||
                        (targetField instanceof Array) ||
                        (typeof(value) !== "object") ||
                        (value instanceof Array) ||
                        (this.getIdentity(targetField) !== this.getIdentity(value)))) {
                    doSet = false;
                }
            }
            else if ((valueType === 2) && value && source && (this._getValueType(source, name, value) === 1)) {
                doSet = false;
            }
        }
        if (doSet) {
            if (isArray) {
                target[name] = value;
            }
            else {
                this._ignoreChange = true;
                try {
                    Sys.Observer.setValue(target, name, value);
                }
                finally {
                    this._ignoreChange = false;
                }
            }
            if (isLink && !appendOnly) {
                this._removeChanges(target, name);
            }
        }
        return doSet;
    },
    _combine: function DataContext$_combine(target, source, mergeOption, excludeEntities) {
        var removedChanges = false;
        for (var name in source) {
            var field = source[name], type = typeof(field);
            if (type === "function") continue;
            if (this._useIdentity && (field instanceof Array)) {
                if (!excludeEntities) {
                    field = this._storeEntities(field, mergeOption);
                    if (target) {
                        this._setField(target, name, source, field, mergeOption, true);
                    }
                }
            }
            else {
                var identity = null;
                if (field && (type === "object"))  {
                    identity = this.getIdentity(field);
                }
                if (identity !== null) {
                    if (!excludeEntities) {
                        this._storeEntity(identity, field, target, name, source, mergeOption);
                    }
                }
                else if (target) {
                    var targetField = target[name];
                    if (targetField && (typeof(targetField) === "object") && this.getIdentity(targetField)) {
                        continue;
                    }
                    if (this._setField(target, name, source, field, mergeOption) && !removedChanges &&
                        ((typeof(mergeOption) !== "number") || (mergeOption === Sys.Data.MergeOption.overwriteChanges))) {
                        removedChanges = true;
                        this._removeChanges(target);
                    }
                }
            }
        }
    },
    _storeEntity: function DataContext$_storeEntity(identity, entity, parent, parentField, source, mergeOption) {
        var updated = true, storedEntity = this._items[identity];
        if ((typeof (storedEntity) !== "undefined")) {
            if (storedEntity === entity) {
                updated = false;
            }
            else {
                this._combine(storedEntity, entity, mergeOption);
            }
        }
        else {
            this._items[identity] = storedEntity = entity;
            this._captureEntity(entity);
            this._combine(entity, entity, mergeOption);
        }
        if (parent && (parent[parentField] !== storedEntity)) {
            this._setField(parent, parentField, source, storedEntity, mergeOption, true);
        }
        return updated;
    },
    _storeEntities: function DataContext$_storeEntities(entities, mergeOption) {
        var i, l, filtered, deleted, appendOnly = (mergeOption === Sys.Data.MergeOption.appendOnly);
        for (i = 0, l = entities.length; i < l; i++) {
            var entity = entities[i], isObject = (entity && (typeof(entity) === "object"));
            if (isObject) {
                if (appendOnly) {
                    if (this._isDeleted(entity)) {
                        deleted = (deleted || []);
                        deleted.push(entity);
                        continue;
                    }
                }
                var identity = this.getIdentity(entity);
                if (identity !== null) {
                    if (this._storeEntity(identity, entity, entities, i, null, mergeOption) && !appendOnly) {
                        this._removeChanges(entity);
                    }
                }
            }
        }
        if (deleted) {
            filtered = Array.clone(entities);
            for (i = 0, l = deleted.length; i < l; i++) {
                Array.remove(filtered, deleted[i]);
            }
        }
        return filtered || entities;
    }
}
$type.registerClass("Sys.Data.DataContext", Sys.Component, Sys.Data.IDataProvider);
Sys.registerComponent($type);
$type = Sys.Data.ChangeOperationType = function Data$ChangeOperationType() {
    /// <summary locid="M:J#Sys.Data.ChangeOperationType.#ctor">Describes how an item has changed.</summary>
    /// <field name="insert" type="Number" integer="true" static="true" locid="F:J#Sys.Data.ChangeOperationType.insert"></field>
    /// <field name="update" type="Number" integer="true" static="true" locid="F:J#Sys.Data.ChangeOperationType.update"></field>
    /// <field name="remove" type="Number" integer="true" static="true" locid="F:J#Sys.Data.ChangeOperationType.remove"></field>
    throw Error.notImplemented();
}
$type.prototype = {
    insert: 0,
    update: 1,
    remove: 2
}
$type.registerEnum("Sys.Data.ChangeOperationType");
$type = Sys.Data.ChangeOperation = function Data$ChangeOperation(action, item, linkSource, linkSourceField, linkTarget) {
    /// <summary locid="M:J#Sys.Data.ChangeOperation.#ctor">Describes a single change in a set of data.</summary>
    /// <param name="action" type="Sys.Data.ChangeOperationType"></param>
    /// <param name="item" mayBeNull="true">The item that was changed.</param>
    /// <param name="linkSource" mayBeNull="true" optional="true">The item that is being linked from.</param>
    /// <param name="linkSourceField" mayBeNull="true" optional="true">The field on the source item representing the relationship.</param>
    /// <param name="linkTarget" mayBeNull="true" optional="true">The item that is being linked to.</param>
    /// <field name="action" type="Sys.Data.ChangeOperationType" locid="F:J#Sys.Data.ChangeOperation.action"></field>
    /// <field name="item" mayBeNull="true" locid="F:J#Sys.Data.ChangeOperation.item">The item that was changed.</field>
    /// <field name="linkSource" mayBeNull="true" locid="F:J#Sys.Data.ChangeOperation.linkSource">The item that is being linked from.</field>
    /// <field name="linkSourceField" mayBeNull="true" locid="F:J#Sys.Data.ChangeOperation.linkSourceField">The field on the source item representing the relationship.</field>
    /// <field name="linkTarget" mayBeNull="true" locid="F:J#Sys.Data.ChangeOperation.linkTarget">The item that is being linked to.</field>
    this.action = action;
    this.item = item;
    this.linkSourceField = linkSourceField;
    this.linkSource = linkSource;
    this.linkTarget = linkTarget;
}
$type.prototype = {
    action: null,
    item: null,
    linkSource: null,
    linkSourceField: null,
    linkTarget: null
}
$type.registerClass("Sys.Data.ChangeOperation");

}

if (window.Sys && Sys.loader) {
	Sys.loader.registerScript("DataContext", null, execute);
}
else {
	execute();
}

})();
�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.Underline = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.Underline.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.Underline.prototype = {
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.Underline.callBaseMethod(this, "callMethod")) return false;
        this._designPanel._execCommand("underline", false, null);
    },
    
    checkState : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.Underline.callBaseMethod(this, "checkState")) return false;
        return this._designPanel._queryCommandState("underline");
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.Underline.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.Underline", Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton);


	Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.Paragraph=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.Paragraph.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.Paragraph.prototype={checkState:function(){return!Sys.Extended.UI.HTMLEditor.ToolbarButton.Paragraph.callBaseMethod(this,"checkState")?false:this._designPanel._textAlignState("")},callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.Paragraph.callBaseMethod(this,"callMethod"))return false;this._designPanel._execCommand("Paragraph")}};Sys.Extended.UI.HTMLEditor.ToolbarButton.Paragraph.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.Paragraph",Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton);Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton.prototype = {
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton", Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeImageButton);

�*Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.InsertLink = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.InsertLink.initializeBase(this, [element]);
    this._emptySrc = window.location.href.replace(/(http[s]*\:\/\/)[^\u0000]*/i,"$1");
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.InsertLink.prototype = {
    callMethod: function() {
        var editor = this._designPanel;
        var sel = editor._getSelection();
        var range = editor._createRange(sel);
        var parent = Sys.Extended.UI.HTMLEditor.getSelParent(editor);

        if (parent.nodeType == 3) {
            parent = parent.parentNode;
        }

        while (parent && Sys.Extended.UI.HTMLEditor.isStyleTag(parent.tagName) && parent.tagName.toUpperCase() != "A") {
            parent = parent.parentNode;
        }

        if (parent && parent.tagName.toUpperCase() == "A") {
            this._edit = true;
            this._editLink(parent);
        } else {
            this._edit = false;
            if(!this._createLink()) return false;
        }

        if (!Sys.Extended.UI.HTMLEditor.ToolbarButton.InsertLink.callBaseMethod(this, "callMethod")) return false;
        return true;
    },

    opened: function(contentWindow) {
        this._preparePopup(contentWindow);
    },

    ok: function(contentWindow) {
        var targetField = contentWindow.popupMediator.getField("target");
        if (targetField != null) {
            this._obj.target = targetField.value;
        }

        var urlField = contentWindow.popupMediator.getField("url");
        if (urlField != null) {
            this._obj.href = urlField.value;
        }

        if (/^javascript:/.test(this._obj.href)) {
            this._obj.target = null;
            try {
                this._obj.removeAttribute("target");
            } catch (e) { }
        } else {
            var targetField = contentWindow.popupMediator.getField("target");
            if (targetField != null) {
                this._obj.target = targetField.value;
            }
        }

        if (this._edit) {
            this._edit_callback(true);
        } else {
            this._create_callback(true);
        }
    },

    cancel: function(contentWindow) {
        if (this._edit) {
            this._edit_callback(false);
        } else {
            this._create_callback(false);
        }
    },

    _createLink: function() {
        var editor = this._designPanel;

        var selectedHTML = (!Sys.Extended.UI.HTMLEditor.isIE) ? Sys.Extended.UI.HTMLEditor.Trim(editor.getSelectedHTML()) : "";
        var sel = editor._getSelection();
        var range = editor._createRange(sel);
        this._txt = null;

        if (!(editor.isControl() && Sys.Extended.UI.HTMLEditor.getSelParent(editor).tagName && (Sys.Extended.UI.HTMLEditor.getSelParent(editor).tagName.toUpperCase() == "EMBED" || Sys.Extended.UI.HTMLEditor.getSelParent(editor).tagName.toUpperCase() == "IMG")) &&
           !(!editor.isControl() && ((Sys.Extended.UI.HTMLEditor.isIE && range.text.length > 0) || (!Sys.Extended.UI.HTMLEditor.isIE && selectedHTML.length > 0)))) {
            editor._saveContent();
            var _span = editor._doc.createElement("span");
            _span.innerHTML = "new link";

            _span.id = Sys.Extended.UI.HTMLEditor.smartClassName;

            var needSelect = true;
            if (Sys.Extended.UI.HTMLEditor.isIE && editor.isControl()) {
                var control = range.item(0);
                var _span1 = editor._doc.createElement("span");
                control.parentNode.insertBefore(_span1, control);
                this._txt = _span.firstChild;
                control.parentNode.insertBefore(this._txt, control);
                var _span2 = editor._doc.createElement("span");
                control.parentNode.insertBefore(_span2, control);
                control.parentNode.removeChild(control);

                editor.setSelectionAfterOperation([_span1, _span2], false);
                needSelect = false;
            } else {
                editor.insertHTML(Sys.Extended.UI.HTMLEditor.getHTML(_span, true));

                var el = editor._doc.getElementById(Sys.Extended.UI.HTMLEditor.smartClassName);

                this._txt = el.firstChild;
                el.parentNode.insertBefore(el.firstChild, el);
                el.parentNode.removeChild(el);
            }

            if (!Sys.Extended.UI.HTMLEditor.isIE) {
                range = editor._createRange();
                range.setStart(this._txt, 0);
                range.setEnd(this._txt, ("" + this._txt.data + "").length);
                editor._removeAllRanges(sel);
                editor._selectRange(sel, range);
            } else {
                if (needSelect) range.select();
            }

            selectedHTML = (!Sys.Extended.UI.HTMLEditor.isIE) ? Sys.Extended.UI.HTMLEditor.Trim(editor.getSelectedHTML()) : "";
            sel = editor._getSelection();
            range = editor._createRange(sel);
        }

        if ((editor.isControl() && Sys.Extended.UI.HTMLEditor.getSelParent(editor).tagName.toUpperCase() == "IMG") ||
          (!editor.isControl() && ((Sys.Extended.UI.HTMLEditor.isIE && range.text.length > 0) || (!Sys.Extended.UI.HTMLEditor.isIE && selectedHTML.length > 0)))) {
            editor._saveContent();

            this._obj = { target: "default", href: this._emptySrc, title: "" };
            var temp = editor._doc.getElementsByTagName("A");
            var aList = [];
            for (var i = 0; i < temp.length; i++) aList.push([temp[i], "" + temp[i].href + ""]);

            editor._execCommand("createLink", false, this._emptySrc);
            this._oldList = [];

            for (var i = 0; i < aList.length; i++) {
                var a = aList[i][0];
                var href = aList[i][1];

                if (a.href == href) this._oldList.push(a);
            }
        } else {
            if (this._txt) {
                editor._undo(false);
                editor.__stack.pop();
            }
            return false;
        }

        return true;
    },

    _editLink: function(link) {
        var editor = this._designPanel;

        this._obj = link;
        editor._saveContent();
    },

    _preparePopup: function(contentWindow) {
        if (this._obj.target && this._obj.target.length > 0 && this._obj.target == "default") {
            this._obj.target = this.get_relatedPopup().get_defaultTarget();
        }
        var targetField = contentWindow.popupMediator.getField("target");
        if (targetField != null) {
            targetField.value = (this._obj.target && this._obj.target.length > 0 && this._obj.target.substr(0, 1) == "_") ? this._obj.target.toLowerCase() : "_self";
        }

        var urlField = contentWindow.popupMediator.getField("url");
        if (urlField != null) {
            if (this._edit) {
                urlField.value = Sys.Extended.UI.HTMLEditor.getRealAttribute(this._obj, "href");
            } else {
                urlField.value = this._obj.href;
            }
            if (urlField.value.length == 0) {
                urlField.value = this._emptySrc;
            }

            urlField.value = urlField.value.replace(/\&quot;/g, "\"");

            setTimeout(function() { Sys.Extended.UI.HTMLEditor.setSelectionRange(urlField, 0, urlField.value.length); }, 0);
        }
    },

    _edit_callback: function(ok) {
        var editor = this._designPanel;
        try {
            if (!ok) {
                editor._undo(false);
            } else {
                if (this._obj.title.length == 0) {
                    this._obj.title = null;
                    this._obj.removeAttribute("title");
                }
                editor.onContentChanged();
            }
        } catch (ex) { }
        return true;
    },

    okCheck: function(contentWindow) {
        var urlField = contentWindow.popupMediator.getField("url");

        if (urlField != null) {
            var url = urlField.value;
            if (url == "" || (url.length >= 3 && url.substr(url.length - 3, 3) == "://")) {
                contentWindow.alert(this.get_message("EmptyURL"));
                contentWindow.setTimeout(function() { try { urlField.focus(); } catch (e) { } }, 0);
                return false;
            }
            return true;
        }
        return false;
    },

    _create_callback: function(ok) {
        var editor = this._designPanel;
        try {
            if (ok) {
                var aList = editor._doc.getElementsByTagName("A");
                var aNumber = 0;

                for (var i = 0; i < aList.length; i++) {
                    var good = true;
                    var a = aList[i];

                    for (var j = 0; j < this._oldList.length; j++)
                        if (a == this._oldList[j]) {
                        good = false;
                        break;
                    }

                    if (!good) continue;

                    aNumber = i;
                    if (this._obj.target) a.target = this._obj.target;
                    a.href = this._obj.href;
                    if (this._obj.title.length > 0) a.title = this._obj.title;
                }

                if (this._txt) this._txt.data = this._obj.href;
                if (aList.length > 0) {
                    var elka = aList[aNumber];
                    var _span = editor._doc.createElement("span");
                    _span.innerHTML = "&nbsp;";

                    if (elka.nextSibling != null)
                        elka.parentNode.insertBefore(_span, elka.nextSibling);
                    else
                        elka.parentNode.appendChild(_span);

                    setTimeout(function() {
                        Sys.Extended.UI.HTMLEditor._setCursor(_span, editor);
                        setTimeout(function() {
                            elka.parentNode.removeChild(_span);
                        }, 0);
                    }, 0);
                }

                setTimeout(function() { editor._editPanel.updateToolbar(); editor.onContentChanged(); }, 0);
            } else {
                editor._undo(false);
                editor.__stack.pop();
                if (this._txt) {
                    editor._undo(false);
                    editor.__stack.pop();
                }
            }

            editor.focusEditor();
        } catch (e) { }
        return true;
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.InsertLink.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.InsertLink", Sys.Extended.UI.HTMLEditor.ToolbarButton.OkCancelPopupButton);
�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.HtmlMode=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.HtmlMode.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.HtmlMode.prototype={};Sys.Extended.UI.HTMLEditor.ToolbarButton.HtmlMode.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.HtmlMode",Sys.Extended.UI.HTMLEditor.ToolbarButton.ModeButton);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColor=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColor.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColor.prototype={callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColor.callBaseMethod(this,"callMethod"))return false},setColor:function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColor.callBaseMethod(this,"setColor",[a]);this._designPanel._execCommand("forecolor",false,a)}};Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColor.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColor",Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorButton);E
Type.registerNamespace("Sys.Extended.UI.HTMLEditor");

Sys.Extended.UI.HTMLEditor.PreviewPanel = function(element) {
    Sys.Extended.UI.HTMLEditor.PreviewPanel.initializeBase(this, [element]);
    this._focus$delegate = Function.createDelegate(this, this._focus_event);
    this._blur$delegate = Function.createDelegate(this, this._blur_event);
    this._doc = null;
    this._content = "";
    this._panel_timer = null;
}

Sys.Extended.UI.HTMLEditor.PreviewPanel.prototype = {
    _focus: function() {
        try { // some browsers fail when invisible
            this.get_element().contentWindow.focus();
        } catch (e) { }
        this._focused();
    },

    _focus_event: function() {
        if (this._panel_timer == null) {
            var contentWindow = this.get_element().contentWindow;
            var panel = this;
            this._really_focused();
            this._panel_timer = setTimeout(function() { contentWindow.focus(); panel._really_focused(); panel._panel_timer = null; }, 0);
        }
        return true;
    },

    _blur_event: function() {
        if (this._panel_timer != null) {
            clearTimeout(this._panel_timer);
            this._panel_timer = null;
        }
        return true;
    },

    _activate: function(value) {
        Sys.Extended.UI.HTMLEditor.PreviewPanel.callBaseMethod(this, "_activate");
        this._content = value;
        this._wasFocused = false;
        this._initIframe(value);
        Sys.Extended.UI.HTMLEditor._addEvents(this.get_element().contentWindow, ["focus"], this._focus$delegate);
        Sys.Extended.UI.HTMLEditor._addEvents(this.get_element().contentWindow, ["blur"], this._blur$delegate);
        this._activateFinished();
    },

    _deactivate: function() {
        Sys.Extended.UI.HTMLEditor._removeEvents(this.get_element().contentWindow, ["blur"], this._blur$delegate);
        Sys.Extended.UI.HTMLEditor._removeEvents(this.get_element().contentWindow, ["focus"], this._focus$delegate);
        if (Sys.Extended.UI.HTMLEditor.isIE) {
            try { // if src changed (with link in document) - security exception can occur in IE
                this._doc.open();
                this._doc.write("");
                this._doc.close();
                this.get_element().src = "javascript:false;";
            } catch (ex) { }
        }
        this._doc = null;
        this._content = "";
        Sys.Extended.UI.HTMLEditor.PreviewPanel.callBaseMethod(this, "_deactivate");
    },

    _initIframe: function(value) {
        var str = Sys.Extended.UI.HTMLEditor.Trim(value);
        this._doc = this.get_element().contentWindow.document;

        if (!Sys.Extended.UI.HTMLEditor.isIE) {
        } else {
            str = str.replace(/&amp;/ig, "&");
        }

        this._doc.open();
        this._doc.write("<html><head><link rel=\"stylesheet\" href=\"" + this._editPanel.get_documentCssPath() + "\" media=\"all\" /></head><body>" + str + "</body></html>");
        this._doc.close();
    },

    _getContent: function() {
        return this._content;
    },

    _setContent: function(value) {
        this._content = value;
        this._initIframe(value);
    }
}

Sys.Extended.UI.HTMLEditor.PreviewPanel.registerClass("Sys.Extended.UI.HTMLEditor.PreviewPanel",Sys.Extended.UI.HTMLEditor.ModePanel);
Type.registerNamespace("Sys.Extended.UI.HTMLEditor");Sys.Extended.UI.HTMLEditor.Editor=function(b){var a=this;Sys.Extended.UI.HTMLEditor.Editor.initializeBase(a,[b]);a._editPanel=null;a._changingToolbar=null;if(Sys.Extended.UI.HTMLEditor.isIE&&Sys.Browser.version==8&&document.compatMode!="BackCompat"||Sys.Extended.UI.HTMLEditor.isOpera)a._onresize$delegate=Function.createDelegate(a,a._onresize)};Sys.Extended.UI.HTMLEditor.Editor.prototype={get_autofocus:function(){return this._editPanel.get_autofocus()},set_autofocus:function(a){this._editPanel.set_autofocus(a)},get_content:function(){return this._editPanel.get_content()},set_content:function(a){this._editPanel.set_content(a)},get_activeMode:function(){return this._editPanel.get_activeMode()},set_activeMode:function(a){this._editPanel.set_activeMode(a)},get_editPanel:function(){return this._editPanel},set_editPanel:function(a){this._editPanel=a},get_changingToolbar:function(){return this._changingToolbar},set_changingToolbar:function(a){this._changingToolbar=a},add_propertyChanged:function(a){this._editPanel.add_propertyChanged(a)},remove_propertyChanged:function(a){this._editPanel.remove_propertyChanged(a)},initialize:function(){var c="BackCompat",a=this;Sys.Extended.UI.HTMLEditor.Editor.callBaseMethod(a,"initialize");var b=a.get_element(),e=b.className;Sys.UI.DomElement.removeCssClass(b,e);Sys.UI.DomElement.addCssClass(b,"ajax__htmleditor_editor_base");Sys.UI.DomElement.addCssClass(b,e);if(!Sys.Extended.UI.HTMLEditor.isIE&&document.compatMode!=c)a.get_element().style.height="100%";if(Sys.Extended.UI.HTMLEditor.isIE&&Sys.Browser.version==8&&document.compatMode!=c||Sys.Extended.UI.HTMLEditor.isOpera){$addHandlers(b,{resize:a._onresize$delegate});var d=a.get_editPanel();a._saved_setActive=d._setActive;d._setActive=Function.createDelegate(a,a._setActive);var f=a;if(Sys.Extended.UI.HTMLEditor.isOpera)setTimeout(function(){f._ensureVisibleResize()},0);else f._ensureVisibleResize()}},_setActive:function(c){var a=this,b=a;Function.createDelegate(a.get_editPanel(),a._saved_setActive)(c);if(!Sys.Extended.UI.HTMLEditor.isReallyVisible(a.get_element()))setTimeout(function(){b._ensureVisibleResize()},0);else b._ensureVisibleResize()},_ensureVisibleResize:function(){var b=false,a;if(!Sys.Extended.UI.HTMLEditor.isReallyVisible(this.get_element())){b=true;a=Sys.Extended.UI.HTMLEditor.setElementVisibility(this.get_element())}this._onresize();if(b){Sys.Extended.UI.HTMLEditor.restoreElementVisibility(a);delete a}},dispose:function(){var a=this;if(Sys.Extended.UI.HTMLEditor.isIE&&Sys.Browser.version==8&&document.compatMode!="BackCompat"||Sys.Extended.UI.HTMLEditor.isOpera){$common.removeHandlers(a.get_element(),{resize:a._onresize$delegate});a.get_editPanel()._setActive=a._saved_setActive}Sys.Extended.UI.HTMLEditor.Editor.callBaseMethod(a,"dispose")},_onresize:function(c){var b="undefined";try{var a=this.get_editPanel().get_element().parentNode;if(typeof c==b||c==null)a.style.height="";var d=Sys.Extended.UI.HTMLEditor.Editor.MidleCellHeightForIE(a.parentNode.parentNode.parentNode,a.parentNode);a.style.height=d;typeof this.get_editPanel().get_activePanel()._onresize!=b&&this.get_editPanel().get_activePanel()._onresize()}catch(e){}return true}};Sys.Extended.UI.HTMLEditor.Editor.registerClass("Sys.Extended.UI.HTMLEditor.Editor",Sys.UI.Control);Sys.Extended.UI.HTMLEditor.Editor.MidleCellHeightForIE=function(a,h){var e="100%";if(Sys.Extended.UI.HTMLEditor.isIE&&document.compatMode!="BackCompat"||Sys.Extended.UI.HTMLEditor.isOpera)try{for(var g=2,c=0;c<a.rows.length;c++)if(a.rows[c]!=h)g+=a.rows[c].offsetHeight+1;var b=a.clientHeight;if(Sys.Browser.version==8||Sys.Extended.UI.HTMLEditor.isOpera){var d=a.style.height,f=a.parentNode.style.height;if(d.indexOf("px")>0)b=parseInt(d);else if(d=="100%"&&f.indexOf("px")>0)b=parseInt(f)}e=(b-g)*100/(b*1)+"%"}catch(i){e=""}return e};�.// (c) 2010 CodePlex Foundation
Sys.loader.defineScripts({},[{name:"ExtendedCommon",releaseUrl:"%/extended/common/common.js",debugUrl:"%/extended/common/common.debug.js",executionDependencies:["ComponentModel"]},{name:"ExtendedDateTime",releaseUrl:"%/extended/common/datetime.js",debugUrl:"%/extended/common/datetime.debug.js",executionDependencies:["ExtendedCommon"]},{name:"ExtendedThreading",releaseUrl:"%/extended/common/threading.js",debugUrl:"%/extended/common/threading.debug.js",executionDependencies:["Core"]},{name:"ExtendedTimer",releaseUrl:"%/extended/compat/timer/timer.js",debugUrl:"%/extended/compat/timer/timer.debug.js",executionDependencies:["ComponentModel"]},{name:"ExtendedDragDrop",releaseUrl:"%/extended/compat/dragdrop/dragdropscripts.js",debugUrl:"%/extended/compat/dragdrop/dragdropscripts.debug.js",executionDependencies:["ExtendedTimer","ExtendedCommon"]},{name:"ExtendedBase",releaseUrl:"%/extended/extenderBase/baseScripts.js",debugUrl:"%/extended/extenderBase/baseScripts.debug.js",executionDependencies:["ComponentModel","Serialization"]},{name:"ExtendedAnimations",releaseUrl:"%/extended/animation/animations.js",debugUrl:"%/extended/animation/animations.debug.js",executionDependencies:["ExtendedCommon","ExtendedTimer"]},{name:"ExtendedAnimationBehavior",releaseUrl:"%/extended/animation/animationbehavior.js",debugUrl:"%/extended/animation/animationbehavior.debug.js",executionDependencies:["ExtendedAnimations","ExtendedBase"]},{name:"ExtendedAccordion",releaseUrl:"%/extended/accordion/accordionbehavior.js",debugUrl:"%/extended/accordion/accordionbehavior.debug.js",behaviors:[{name:"accordion",typeName:"Sys.Extended.UI.AccordionBehavior"}],executionDependencies:["ExtendedAnimations","ExtendedBase"]},{name:"ExtendedAlwaysVisible",releaseUrl:"%/extended/alwaysvisiblecontrol/alwaysvisiblecontrolbehavior.js",debugUrl:"%/extended/alwaysvisiblecontrol/alwaysvisiblecontrolbehavior.debug.js",behaviors:[{name:"alwaysVisible",typeName:"Sys.Extended.UI.AlwaysVisibleControlBehavior"}],executionDependencies:["ExtendedAnimations","ExtendedBase"]},{name:"ExtendedAutoComplete",releaseUrl:"%/extended/autocomplete/autocompletebehavior.js",debugUrl:"%/extended/autocomplete/autocompletebehavior.debug.js",behaviors:[{name:"autoComplete",typeName:"Sys.Extended.UI.AutoCompleteBehavior"}],executionDependencies:["ExtendedTimer","ExtendedAnimationBehavior","ExtendedPopup"]},{name:"ExtendedCalendar",releaseUrl:"%/extended/calendar/calendarbehavior.js",debugUrl:"%/extended/calendar/calendarbehavior.debug.js",behaviors:[{name:"calendar",typeName:"Sys.Extended.UI.CalendarBehavior"}],executionDependencies:["Globalization","ExtendedBase","ExtendedDateTime","ExtendedThreading","ExtendedAnimationBehavior","ExtendedPopup"]},{name:"ExtendedCascadingDropDown",releaseUrl:"%/extended/cascadingdropdown/cascadingdropdownbehavior.js",debugUrl:"%/extended/cascadingdropdown/cascadingdropdownbehavior.debug.js",behaviors:[{name:"cascadingDropDown",typeName:"Sys.Extended.UI.CascadingDropDownBehavior"}],executionDependencies:["ExtendedBase","ExtendedCommon","WebServices"]},{name:"ExtendedCollapsiblePanel",releaseUrl:"%/extended/collapsiblepanel/collapsiblepanelbehavior.js",debugUrl:"%/extended/collapsiblepanel/collapsiblepanelbehavior.debug.js",behaviors:[{name:"collapsiblePanel",typeName:"Sys.Extended.UI.CollapsiblePanelBehavior"}],executionDependencies:["ExtendedBase","ExtendedCommon","ExtendedAnimations"]},{name:"ExtendedColorPicker",releaseUrl:"%/extended/colorpicker/colorpickerbehavior.js",debugUrl:"%/extended/colorpicker/colorpickerbehavior.debug.js",behaviors:[{name:"colorPicker",typeName:"Sys.Extended.UI.ColorPickerBehavior"}],executionDependencies:["ExtendedBase","ExtendedCommon","ExtendedThreading","ExtendedPopup"]},{name:"ExtendedConfirmButton",releaseUrl:"%/extended/confirmbutton/confirmbuttonbehavior.js",debugUrl:"%/extended/confirmbutton/confirmbuttonbehavior.debug.js",behaviors:[{name:"confirmButton",typeName:"Sys.Extended.UI.ConfirmButtonBehavior",parameters:[{name:"ConfirmText",type:"String"}]}],executionDependencies:["ExtendedBase"]},{name:"ExtendedFloating",releaseUrl:"%/extended/dragpanel/floatingbehavior.js",debugUrl:"%/extended/dragpanel/floatingbehavior.debug.js",behaviors:[{name:"draggable",typeName:"Sys.Extended.UI.FloatingBehavior"}],executionDependencies:["ExtendedBase","ExtendedCommon","ExtendedDragDrop"]},{name:"ExtendedDropDown",releaseUrl:"%/extended/dropdown/dropdownbehavior.js",debugUrl:"%/extended/dropdown/dropdownbehavior.debug.js",behaviors:[{name:"dropDown",typeName:"Sys.Extended.UI.DropDownBehavior"}],executionDependencies:["ExtendedDynamicPopulate","ExtendedAnimationBehavior","ExtendedPopup","ExtendedHover"]},{name:"ExtendedDropShadow",releaseUrl:"%/extended/dropshadow/dropshadowbehavior.js",debugUrl:"%/extended/dropshadow/dropshadowbehavior.debug.js",behaviors:[{name:"dropShadow",typeName:"Sys.Extended.UI.DropShadowBehavior"}],executionDependencies:["ExtendedBase","ExtendedCommon","ExtendedTimer","ExtendedRoundedCorners"]},{name:"ExtendedDynamicPopulate",releaseUrl:"%/extended/dynamicpopulate/dynamicpopulatebehavior.js",debugUrl:"%/extended/dynamicpopulate/dynamicpopulatebehavior.debug.js",behaviors:[{name:"dynamicPopulate",typeName:"Sys.Extended.UI.DynamicPopulateBehavior"}],executionDependencies:["ExtendedBase","ExtendedCommon","Network"]},{name:"ExtendedFilteredTextBox",releaseUrl:"%/extended/filteredtextbox/filteredtextboxbehavior.js",debugUrl:"%/extended/filteredtextbox/filteredtextboxbehavior.debug.js",behaviors:[{name:"filteredTextBox",typeName:"Sys.Extended.UI.FilteredTextBoxBehavior"}],executionDependencies:["ExtendedBase","ExtendedCommon"]},{name:"ExtendedHover",releaseUrl:"%/extended/hoverextender/hoverbehavior.js",debugUrl:"%/extended/hoverextender/hoverbehavior.debug.js",behaviors:[{name:"hover",typeName:"Sys.Extended.UI.HoverBehavior"}],executionDependencies:["ExtendedBase","ExtendedCommon"]},{name:"ExtendedHoverMenu",releaseUrl:"%/extended/hovermenu/hovermenubehavior.js",debugUrl:"%/extended/hovermenu/hovermenubehavior.debug.js",behaviors:[{name:"hoverMenu",typeName:"Sys.Extended.UI.HoverMenuBehavior"}],executionDependencies:["ExtendedDynamicPopulate","ExtendedHover","ExtendedAnimationBehavior","ExtendedPopup"]},{name:"ExtendedListSearch",releaseUrl:"%/extended/listsearch/listsearchbehavior.js",debugUrl:"%/extended/listsearch/listsearchbehavior.debug.js",behaviors:[{name:"listSearch",typeName:"Sys.Extended.UI.ListSearchBehavior"}],executionDependencies:["ExtendedPopupBehavior"]},{name:"ExtendedMaskedEdit",releaseUrl:"%/extended/maskededit/maskededitbehavior.js",debugUrl:"%/extended/maskededit/maskededitbehavior.debug.js",behaviors:[{name:"maskedEdit",typeName:"Sys.Extended.UI.MaskedEditBehavior"}],executionDependencies:["ExtendedBase","ExtendedTimer","ExtendedCommon"]},{name:"ExtendedModalPopup",releaseUrl:"%/extended/modalpopup/modalpopupbehavior.js",debugUrl:"%/extended/modalpopup/modalpopupbehavior.debug.js",behaviors:[{name:"modalPopup",typeName:"Sys.Extended.UI.ModalPopupBehavior"}],executionDependencies:["ExtendedDynamicPopulate","ExtendedDropShadow","ExtendedFloating"]},{name:"ExtendedMultiHandleSlider",releaseUrl:"%/extended/multihandleslider/multihandlesliderbehavior.js",debugUrl:"%/extended/multihandleslider/multihandlesliderbehavior.debug.js",behaviors:[{name:"multiHandleSlider",typeName:"Sys.Extended.UI.MultiHandleSliderBehavior"}],executionDependencies:["ExtendedBase","ExtendedDragDrop","ExtendedAnimations"]},{name:"ExtendedMutuallyExclusiveCheckBox",releaseUrl:"%/extended/mutuallyexclusivecheckbox/mutuallyexclusivecheckboxbehavior.js",debugUrl:"%/extended/mutuallyexclusivecheckbox/mutuallyexclusivecheckboxbehavior.debug.js",behaviors:[{name:"mutuallyExclusiveCheckBox",typeName:"Sys.Extended.UI.MutuallyExclusiveCheckBoxBehavior",parameters:["Key"]}],executionDependencies:["ExtendedBase","ExtendedCommon"]},{name:"ExtendedUpDown",releaseUrl:"%/extended/numericupdown/numericupdownbehavior.js",debugUrl:"%/extended/numericupdown/numericupdownbehavior.debug.js",behaviors:[{name:"upDown",typeName:"Sys.Extended.UI.NumericUpDownBehavior",parameters:["Minimum","Maximum","Width"]}],executionDependencies:["ExtendedBase","ExtendedCommon","WebServices"]},{name:"ExtendedPagedList",releaseUrl:"%/extended/pagingbulletedlist/pagingbulletedlistbehavior.js",debugUrl:"%/extended/pagingbulletedlist/pagingbulletedlistbehavior.debug.js",behaviors:[{name:"pagedList",typeName:"Sys.Extended.UI.PagingBulletedListBehavior"}],executionDependencies:["ExtendedBase"]},{name:"ExtendedPasswordStrength",releaseUrl:"%/extended/passwordstrength/passwordstrengthextenderbehavior.js",debugUrl:"%/extended/passwordstrength/passwordstrengthextenderbehavior.debug.js",behaviors:[{name:"passwordStrength",typeName:"Sys.Extended.UI.PasswordStrengthExtenderBehavior"}],executionDependencies:["ExtendedBase","ExtendedCommon"]},{name:"ExtendedPopupBehavior",releaseUrl:"%/extended/popupcontrol/popupcontrolbehavior.js",debugUrl:"%/extended/popupcontrol/popupcontrolbehavior.js",behaviors:[{name:"popupBehavior",typeName:"Sys.Extended.UI.PopupControlBehavior"}],executionDependencies:["ExtendedDynamicPopulate","ExtendedPopup","ExtendedAnimationBehavior"]},{name:"ExtendedPopup",releaseUrl:"%/extended/popupextender/popupbehavior.js",debugUrl:"%/extended/popupextender/popupbehavior.debug.js",behaviors:[{name:"popup",typeName:"Sys.Extended.UI.PopupBehavior"}],executionDependencies:["ExtendedAnimations","ExtendedBase"]},{name:"ExtendedRating",releaseUrl:"%/extended/rating/ratingbehavior.js",debugUrl:"%/extended/rating/ratingbehavior.debug.js",behaviors:[{name:"rating",typeName:"Sys.Extended.UI.RatingBehavior"}],executionDependencies:["ExtendedBase"]},{name:"ExtendedResizable",releaseUrl:"%/extended/resizablecontrol/resizablecontrolbehavior.js",debugUrl:"%/extended/resizablecontrol/resizablecontrolbehavior.debug.js",behaviors:[{name:"resizable",typeName:"Sys.Extended.UI.ResizableControlBehavior"}],executionDependencies:["ExtendedBase","ExtendedCommon"]},{name:"ExtendedRoundedCorners",releaseUrl:"%/extended/roundedcorners/roundedcornersbehavior.js",debugUrl:"%/extended/roundedcorners/roundedcornersbehavior.debug.js",behaviors:[{name:"rounded",typeName:"Sys.Extended.UI.RoundedCornersBehavior"}],executionDependencies:["ExtendedBase","ExtendedCommon"]},{name:"ExtendedSlider",releaseUrl:"%/extended/slider/sliderbehavior.js",debugUrl:"%/extended/slider/sliderbehavior.debug.js",behaviors:[{name:"slider",typeName:"Sys.Extended.UI.SliderBehavior"}],executionDependencies:["ExtendedBase","ExtendedDragDrop","ExtendedAnimations"]},{name:"ExtendedSlideShow",releaseUrl:"%/extended/slideshow/slideshowbehavior.js",debugUrl:"%/extended/slideshow/slideshowbehavior.debug.js",behaviors:[{name:"slideShow",typeName:"Sys.Extended.UI.SlideShowBehavior"}],executionDependencies:["ExtendedBase","ExtendedCommon","ExtendedTimer","Network"]},{name:"ExtendedTabs",releaseUrl:"%/extended/tabs/tabs.js",debugUrl:"%/extended/tabs/tabs.debug.js",behaviors:[{name:"tabContainer",typeName:"Sys.Extended.UI.TabContainer",parameters:[{name:"activeTabIndex",type:"Number"}]},{name:"tabPanel",typeName:"Sys.Extended.UI.TabPanel",parameters:[{name:"owner",type:"Sys.Extended.UI.TabContainer"},{name:"headerTab",type:"String"}]}],executionDependencies:["ExtendedDynamicPopulate"]},{name:"ExtendedWatermark",releaseUrl:"%/extended/textboxwatermark/textboxwatermark.js",debugUrl:"%/extended/textboxwatermark/textboxwatermark.debug.js",behaviors:[{name:"watermark",typeName:"Sys.Extended.UI.TextBoxWatermarkBehavior",parameters:[{name:"WatermarkText",type:"String"},{name:"WatermarkCssClass",type:"String"}]}],executionDependencies:["ExtendedBase","ExtendedCommon"]},{name:"ExtendedToggleButton",releaseUrl:"%/extended/togglebutton/togglebutton.js",debugUrl:"%/extended/togglebutton/togglebutton.debug.js",behaviors:[{name:"toggleButton",typeName:"Sys.Extended.UI.ToggleButtonBehavior"}],executionDependencies:["ExtendedBase"]}]);�4// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference name="MicrosoftAjaxTimer.debug.js" />
/// <reference name="MicrosoftAjaxWebForms.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Compat/Timer/Timer.js" />
/// <reference path="../Common/Common.js" />
/// <reference path="../Animation/Animations.js" />

(function() {
var scriptName = "ExtendedAlwaysVisible";

function execute() {


Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.HorizontalSide = function() {
    /// <summary>
    /// The HorizontalSide enumeration describes the horizontal side
    /// of the window used to anchor the element
    /// </summary>
    /// <field name="Left" type="Number" integer="true" />
    /// <field name="Center" type="Number" integer="true" />
    /// <field name="Right" type="Number" integer="true" />
    throw Error.invalidOperation();
}
Sys.Extended.UI.HorizontalSide.prototype = {
    Left : 0,
    Center : 1,
    Right : 2
}
Sys.Extended.UI.HorizontalSide.registerEnum("Sys.Extended.UI.HorizontalSide", false);


Sys.Extended.UI.VerticalSide = function() {
    /// <summary>
    /// The VerticalSide enumeration describes the vertical side
    /// of the window used to anchor the element
    /// </summary>
    /// <field name="Top" type="Number" integer="true" />
    /// <field name="Middle" type="Number" integer="true" />
    /// <field name="Bottom" type="Number" integer="true" />
    throw Error.invalidOperation();
}
Sys.Extended.UI.VerticalSide.prototype = {
    Top : 0,
    Middle : 1,
    Bottom : 2
}
Sys.Extended.UI.VerticalSide.registerEnum("Sys.Extended.UI.VerticalSide", false);


Sys.Extended.UI.AlwaysVisibleControlBehavior = function(element) {
    /// <summary>
    /// The AlwaysVisibleControl behavior is used to fix a particular control a specified distance
    /// from the top/left corner at all times regardless of how the users scrolls or sizes the window.
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// The DOM element the behavior is associated with
    /// </param>
    Sys.Extended.UI.AlwaysVisibleControlBehavior.initializeBase(this, [element]);
    
    this._horizontalOffset = 0;
    
    this._horizontalSide = Sys.Extended.UI.HorizontalSide.Left;
    
    this._verticalOffset = 0;
    
    this._verticalSide = Sys.Extended.UI.VerticalSide.Top;
    
    this._scrollEffectDuration = .1;
    
    this._repositionHandler = null;
    
    this._animate = false;
    
    this._animation = null;
}
Sys.Extended.UI.AlwaysVisibleControlBehavior.prototype = {
    initialize : function() {
        /// <summary>
        /// Initialize the behavior
        /// </summary>
        /// <returns />
        Sys.Extended.UI.AlwaysVisibleControlBehavior.callBaseMethod(this, 'initialize');
        
        var element = this.get_element();
        if (!element) throw Error.invalidOperation(Sys.Extended.UI.Resources.AlwaysVisible_ElementRequired);
        
        this._repositionHandler = Function.createDelegate(this, this._reposition);
        
        if (Sys.Browser.agent == Sys.Browser.InternetExplorer && Sys.Browser.version < 7) {
            this._animate = true;
        }
        if (this._animate) {
            this._animation = new Sys.Extended.UI.Animation.MoveAnimation(
                element, this._scrollEffectDuration, 25, 0, 0, false, 'px');

            element.style.position = 'absolute';
        } else {
            element.style.position = 'fixed';
        }
        
        $addHandler(window, 'resize', this._repositionHandler);
        
        if (this._animate) {
            $addHandler(window, 'scroll', this._repositionHandler);
        }
        
        this._reposition();
    },
    
    dispose : function() {
        /// <summary>
        /// Dispose the behavior
        /// </summary>
        /// <returns />
    
        if (this._repositionHandler) {
            if (this._animate) {
                $removeHandler(window, 'scroll', this._repositionHandler);
            }
            $removeHandler(window, 'resize', this._repositionHandler);
            this._repositionHandler = null;
        }
        
        if (this._animation) {
            this._animation.dispose();
            this._animation = null;
        }
        
        Sys.Extended.UI.AlwaysVisibleControlBehavior.callBaseMethod(this, 'dispose');
    },

    _reposition : function(eventObject) {
        /// <summary>
        /// Handler to reposition the element and place it where it actually belongs
        /// whenever the browser is scrolled or resized
        /// </summary>
        /// <param name="eventObject" type="Sys.UI.DomEvent">
        /// Event info
        /// </param>
        /// <returns />

        var element = this.get_element();
        if (!element) return;
        
        this.raiseRepositioning(Sys.EventArgs.Empty);
        
        var x = 0;
        var y = 0;
        
        if (this._animate) {
            if (document.documentElement && document.documentElement.scrollTop) {
                x = document.documentElement.scrollLeft;
                y = document.documentElement.scrollTop;
            } else {
                x = document.body.scrollLeft;
                y = document.body.scrollTop;
            }
        }
        
        var clientBounds = $common.getClientBounds();
        var width = clientBounds.width;
        var height = clientBounds.height;
        
        switch (this._horizontalSide) {
            case Sys.Extended.UI.HorizontalSide.Center :
                x = Math.max(0, Math.floor(x + width / 2.0 - element.offsetWidth / 2.0 - this._horizontalOffset));
                break;
            case Sys.Extended.UI.HorizontalSide.Right :
                x = Math.max(0, x + width - element.offsetWidth - this._horizontalOffset);
                break;
            case Sys.Extended.UI.HorizontalSide.Left :
            default :
                x += this._horizontalOffset;
                break;
        }            
           
        switch (this._verticalSide) {
            case Sys.Extended.UI.VerticalSide.Middle :
                y = Math.max(0, Math.floor(y + height / 2.0 - element.offsetHeight / 2.0 - this._verticalOffset));
                break;
            case Sys.Extended.UI.VerticalSide.Bottom :
                y = Math.max(0, y + height - element.offsetHeight - this._verticalOffset);
                break;
            case Sys.Extended.UI.VerticalSide.Top :
            default :
                y += this._verticalOffset;
                break;
        }
        
        if (this._animate && this._animation) {
            this._animation.stop();
            this._animation.set_horizontal(x);
            this._animation.set_vertical(y);
            this._animation.play();
        } else {
            element.style.left = x + 'px';
            element.style.top = y + 'px';
        }
        
        this.raiseRepositioned(Sys.EventArgs.Empty);
    },
    
    get_HorizontalOffset : function() {
        /// <value type="Number" integer="true">
        /// Distance to the horizontal edge of the browser in pixels from the same side of the target control. The default is 0 pixels.
        /// </value>
        return this._horizontalOffset;
    },
    set_HorizontalOffset : function(value) {
        if (this._horizontalOffset != value) {
            this._horizontalOffset = value;
            this._reposition();
            this.raisePropertyChanged('HorizontalOffset');
        }
    },
    
    get_HorizontalSide : function() {
        /// <value type="Sys.Extended.UI.HorizontalSide" integer="true">
        /// Horizontal side of the browser to anchor the control against.  The default is the Left side.
        /// </value>
        return this._horizontalSide;
    },
    set_HorizontalSide : function(value) {
        if (this._horizontalSide != value) {
            this._horizontalSide = value;
            this._reposition();
            this.raisePropertyChanged('HorizontalSide');
        }
    },
    
    get_VerticalOffset : function() {
        /// <value type="Number" integer="true">
        /// Distance to the vertical edge of the browser in pixels from the same side of the target control. The default is 0 pixels.
        /// </value>
        return this._verticalOffset;
    },
    set_VerticalOffset : function(value) {
        if (this._verticalOffset != value) {
            this._verticalOffset = value;
            this._reposition();
            this.raisePropertyChanged('VerticalOffset');
        }
    },
    
    get_VerticalSide : function() {
        /// <value type="Sys.Extended.UI.VerticalSide" integer="true">
        /// Vertical side of the browser to anchor the control against.  The default is the Top side.
        /// </value>
        return this._verticalSide;
    },
    set_VerticalSide : function(value) {
        if (this._verticalSide != value) {
            this._verticalSide = value;
            this._reposition();
            this.raisePropertyChanged('VerticalSide');
        }
    },
    
    get_ScrollEffectDuration : function() {
        /// <value type="Number">
        /// Length in seconds for the scrolling effect to last when the target control is repositioned. The default is .1 seconds.
        /// </value>
        return this._scrollEffectDuration;
    },
    set_ScrollEffectDuration : function(value) {
        if (this._scrollEffectDuration != value) {
            this._scrollEffectDuration = value;
            if (this._animation) {
                this._animation.set_duration(value); 
            }
            this.raisePropertyChanged('ScrollEffectDuration');
        }
    },
    
    get_useAnimation : function() {
        /// <value type="Boolean">
        /// Whether or not to animate the element into position. (note:
        /// this value should always be true in IE6).
        /// </value>
        return this._animate;
    },
    set_useAnimation : function(value) {
        value |= (Sys.Browser.agent == Sys.Browser.InternetExplorer && Sys.Browser.version < 7);
        if (this._animate != value) {
            this._animate = value;
            this.raisePropertyChanged('useAnimation');
        }
    },
    
    add_repositioning : function(handler) {
        /// <summary>
        /// Add an event handler for the repositioning event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('repositioning', handler);
    },
    remove_repositioning : function(handler) {
        /// <summary>
        /// Remove an event handler from the repositioning event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('repositioning', handler);
    },
    raiseRepositioning : function(eventArgs) {
        /// <summary>
        /// Raise the repositioning event
        /// </summary>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="false">
        /// Event arguments for the repositioning event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('repositioning');
        if (handler) {
            handler(this, eventArgs);
        }
    },
    
    add_repositioned : function(handler) {
        /// <summary>
        /// Add an event handler for the repositioned event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('repositioned', handler);
    },
    remove_repositioned : function(handler) {
        /// <summary>
        /// Remove an event handler from the repositioned event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('repositioned', handler);
    },
    raiseRepositioned : function(eventArgs) {
        /// <summary>
        /// Raise the repositioned event
        /// </summary>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="false">
        /// Event arguments for the repositioned event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('repositioned');
        if (handler) {
            handler(this, eventArgs);
        }
    }
}
Sys.Extended.UI.AlwaysVisibleControlBehavior.registerClass('Sys.Extended.UI.AlwaysVisibleControlBehavior', Sys.Extended.UI.BehaviorBase);
Sys.registerComponent(Sys.Extended.UI.AlwaysVisibleControlBehavior, { name: "alwaysVisible" });

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedAnimations", "ExtendedBase"], execute);
}
else {
    execute();
}

})();
6   �& h�( @ �Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��������������������������������������������������Q��Q�������������������������������������������������Q��Q�����������!�!����������������������������������Q��Q����������!�!�!�!�!�!������������������������������Q��Q�������!�!�!�!�!�!�!�!�!�!��������������������������Q��Q�������!�!�!�!����!�!�!�!�!�!����������������������Q��Q�������!�!����������!�!�!�!�!�!������������������Q��Q����������������������!�!�!�!�!�!��������������Q��Q�������������������������!�!�!�!�!�!����������Q��Q����������������������������!�!�!�!����������Q��Q�������������������������������!�!�������Q��Q���������������������������������������Q�D$�~B"�}@�|=�{;�z8�y5�x3�w1�w/
�v.��Q����������������������������������������Q�vň�_�t�I�c�4�Q�"�A��7��7��7�#y6�M:,�w/
��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��ן�}Ɏ�e�z�N�f�5�Q��@��7�CY5�nYJ�cN?�w1��{b��ޯ�������ԛ�wʼn�_�u�H�a�+�J�OI3��|o��xj��x3��$��j�������������ј�q���U�l�anR��������������y5��$���$��s���������߰�����ް�ˏ�hxZ�ϼ������춙�����z8��$�������$��|����������q��ް���h^J�ή��eO?�eO?�ذ����������{;������������$�����������������q���q�����������й��ʰ��Ũ�¡��|=��� �������������������������� S�Q�ѱ���ʰ�ʧ��}@���Ʀ�������������������������0^�r���D��Q��й�ҭ��~B"���ɪ��������������������������1`���r��� S����ٳ��D$��������7ɪ�����������������������������1`�0_�������޷��F&�ɪ���������������������������������������������G(�ɪ��ɪ��ɪ��ɪ��Ʀ�� ��������|���s���j��{b��u[��oT��kP��������������?��?��?��?��?��?��?��?��?��?��?��?�����������������������������������(  �Q��Q��Q��Q��Q��Q��Q��Q��Q��������������������Q��Q����֏���R�S����������Q��Q������b�c���J�K���Q��Q��������������m�m��Q��Q�������������������Q��Q�������������������Q�z8�y6�x4�x2
�w0�v/	�v.��Q��Q��Q��Q��Q��Q��Q��Q��ߦ�oƁ�@�]�@�]�@�]����z8��$�x^�@�]����ߦ�oƁ�@�]�������z8��$���$��h�����@�]�����מ����������w1���������s��������@�]�:~A�������s�ج��x3�����}����������������*Y�ո��y5��������������������6`���6`�z7��$����ť���������������������6`����{:�ɪ��ť��ť��������~���s���h��w^��pV������������!�!�!��!��!����������������6   �& h�( @ �hL�eJ{�Z;ÃN-ȅP/Ǝ^A��fK\�bF�sYJ�x^Ҭ�~����������¿���u��cHƔgKE��m`�������������������������dH�eIE��r?��z��������ط���O)��P,�׼����������_BٛoUß�
��t��Ĺ�����������������2��B&������������~i��dG���n?���������������������R;��dL�����������ļ���dG��}[[ˤ����������������������[<��gH������������������lR��yWiΫ����������������������Z7��b?���������������oU��yXy˩����������������������]/��tO����������������kR�†cWˢ������������������������������������������˿���fJ�ʊdКw��������������������բ��Ѡ�������������������{d��hKW���������������������������������������������������šw�Ⳓ�����������������m9��f4�����������ì���fJ��rX������������������������������������������������������������������������˷��Ǫ�����������������������Ͷ���y\��tZ������������������������������������������������������������������������������£���������������в��ε����}���������������������������������������������������������������������������������ַ��̤��ݲ��翩��̾������������������������������������������ʶ��dz��¯������������������������y���q��zj��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������(  �qW��nV��g؏cI��Q.��tZ�î��������������t^��P,��w]x��x�������������������Y8�S0E�vY�������������������������S0��tS�������������L$��������������S1�����������������������c���������������������hK��`D ����������������������������|c���������yL���������nN�������������������������������ͪ��߿��¢����x���������������������������������������y����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������6   �& h�( @ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������uc��sa��p]��lY��hU�|cP�x_L�t[G�pVC�lS?�jO<�gM9�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������uc��s`��p]��lZ��hU�|dQ�x_K�sZG�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ�ġ���ǰ��ǰ��ǰ��ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ�ġ���ġ���ǰ��ǰ��ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ��ǰ�ġ����ǰ��ġ���ǰ��ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ�ġ����ǰ��ǰ��ǰ��ġ���ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ���ǰ��ǰ��ǰ��ǰ��ǰ���ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ������������������������������������������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ��ǰ������������������������������������������������������������������������������������������������������������������������������������������������������(  ���������������������������������������������������������������������������������������������������������������uc��s`��p]��lZ��hU������������������������������������������������������������������������uc��sa��p^�������������������������������������������������������������������������������������������������������������������������������������������ǰ��ǰ��ǰ�ġ���ǰ��ǰ������������������������������������ǰ��ǰ�ġ���ġ���ǰ������������������������������������ǰ��ǰ���ǰ���ǰ������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ������������������������������������ǰ��ǰ��ǰ��ǰ��ǰ��ǰ����������������������������������������������������������������������������6   �& h�( @ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������F�R��������������������������������������������������������������������������������������F�R�X�c�I�R��ʿ�����������������������������������������������������������������F�R�o�|�i�v�Y�d�C�M��ʿ�����������������������������������������������������������g�r��ٕ��ڗ�q�~�d�p�V�a�@�J��ʿ������������������������������������������������������И��͕��Ì���yц�l�x�C�N�Q�[�Z�d�����������������������������������������������������������w�����ڍ�û�U�_�����������������������������������������������������������������w�������}֋�V�`�����������������������������������������������������������������w�������}֋�V�`������������������������������������������������������������������Š�����}֋�V�`������������������������������������������������������������������Š�����}֋�V�`������������������������������������������������������������������ʒ�������d�m����������������������������������������������������������������������������И��̔��Ǝ�}���v�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������(  ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������F�R����������������������������������������F�R�X�c�C�M��ʿ��������������������������g�r��ٕ�i�v�V�a�@�J��ʿ���������������������И��͕��Ì�q�~�C�N�Q�[�Z�d��������������������������w���yц�S�]��������������������������������{�����Y�b������������������������������������{���m�y�P�Z��������������������������������������������������������������������������������������������������������������������������������������������������������������������������*GIF89a���������������ض��������������������������������������������������!�	 ,GA(P��Zh0�	^�xa"�
"R�q„� D|� �,�� AD"8р��D�@@;%GIF89a������������ض�������������������������������������������������!�	 ,BA(P,����F0aB�@��h� @� p�@(`�8;�GIF89a��,��<��<��������������������������������������!� ,@ @�G��P$C�0;CGIF89a��.�1��8��8��<ݡS����Ǝ���!�, 
 @ ��*4�0aÅ@�@�;AGIF89a��1�<��8��9��<ݡS�����Ǝ���!�,0��	$XȰ�Ç#J�Hq!��;�GIF89a
��dg�eh�mp�or�os�ps�sv�qt�tw�ux�x{�x{�x|�{~�|������������������������������������’�Ó�ƒ�Ǔ�Ĕ�ŕ�Ɩ�Ǘ�˗�Ș�ə�˛�͙�̜�͝�Ξ�ϟ�Р�ѡ�ӣ�֦�ק�٩�ڪ�۫�ܬ�꺽켿����������!��,
�M@�`�D
+X�p���2fЀ���t�ظC�F�5�X�€�	S�\�D� @�A��͛9D�@q��@�
����0 �4h�#
 H��jMJ ��6nx
�Ul�
D@"
�3�Ҙ�v�$" 00a�
.\��A�@�1AC��;jGIF89a����WWXVVW�����������.a�9j�Ev�[�������;t�F}�L��N�������C~�K�����������N��s�ꃤӾ�������������R����������Q��w��w��w��|�鐼���������[��u�눴㉰۟���������ν�����������a��b�憼�������������ev���������VWX���j�����������������삼������������������������������������������������hmmyzz��������������������������������������������������������������������������������������������������}}}lllhhhYYYWWWVVVSSSIII333%%%"""���!��,�S	H����(\ȰaC�	Jt�ᔋS&*��pH�6�1��D����B�D	s�L0@1U�
8��PdE5q�Pp�ЦB!-���C�4iμ8P4b�"`��p�#�/VL0���
Fn$��d�0T-Pɑ.\)#��PХ;�b"6X$$�AN�71����re���4Y����r�PJ�#�!���G�;�9*U�#F�FIR
�o7��L2�i�&M���t��CI/D*��S�.U�t	�)H}NG(��yB�8zD�*T�=��iQB
�?(R(O���|��~f��4��>(�Th�bxІ;�GIF89a�b����������������������������������@8@����������������`�����@@@��������������� ( ������0P���������������������@h������0X���0X�vvu��333@`�p��UTTPx� H���������8?7������P�Ќ�����PHP`e^��̿�����kpj�������   ���0`��������������������!�b,��b������	.\������Z"^������H5X]������+`������_������])a������[NQ?<E�;%I�ɂ`TJL&0Y0�%@���a1:�UY�2$=��a[[�4�eK�-�|�P�*8�@�H�#�BCE�%8�����Ȳr�K(9��h��Pj٩%KO�"2�� ABh	�4�,O�He��-.�@��'
8$� a��.X@|�ҡ��^N(`xp�,3� 0ra�X(���]`@��_����(f�A�_?֋@�,��5�-��M;;gGIF89a� 8``p�0@pP`�0Hp��❧�����0P�@P�������0H�Pp����I`�Ph����p����������������ش�� 0`:Iv~��s��`x���ɥ��~�����\l�IX�^j�������0P�[e����CPvXo����@X���݋��OZ}���`x��������������!�,�@�pH,ގ���cBބ���rB�3��e�پ6�`�ۄsd`>
�x͡���	<H�B3344
�/3
B�43	�"B3
-!B$3,%*B#� B2�)+10�2E�DA;GIF89a����������������������������������������������333���!�,�`$�di����lۊ�+��l��J�|�㑘
B,�@���h:���0'8	.*���%W�0$9(�Z=P�1N����u�t��G~0
�
y��0�����0��h��0
�����0	�����0��'��!;].ajax__twitter {
    width:300px;
    background-color:Gray;   
    color:White;
    font-size: 12px;
    font-family: "lucida grande", lucida, tahoma, helvetica, arial, sans-serif;	  
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    border-radius: 5px;
}

.ajax__twitter_itemlist {
    width: 100%;
    list-style-type:none;
    margin: 0px;
    padding: 0px;
    list-style-position:inside;
    text-indent: 0px;
}

.ajax__twitter_itemlist li {
    border-bottom: 1px dotted white;   
    padding: 10px;
    margin: 0px;
    background-color:Black;   
	clear:both;	
}

.ajax__twitter_itemlist li  div {
	display: block;
	margin-left:35px;
}

.ajax__twitter_itemlist li  div a {
	color:#4AED05;
	text-decoration: none !important;
}

.ajax__twitter_itemlist li  div a:hover {
  text-decoration: underline !important;
}
    
.ajax__twitter_itemlist li img {
    width: 30px;
    height: 30px;
	float: left;
	margin-right: 5px;
	
}

.ajax__twitter_header {
	padding:10px;
	position:relative;
	min-height:34px;
}
    
.ajax__twitter_header img {
    float:left;
	margin-right:5px;
	width: 34px;
    height: 34px;
}    

.ajax__twitter_header h4 {
    font-size: 18px;
    font-weight: normal;   
	padding:0px;
	margin:0px;
}

.ajax__twitter_header h3 {
    font-size: 11px;
	font-weight: normal;   
	padding:0px;
	margin:0px;
}

.ajax__twitter_createat {
    color: #4AED05;
	font-size: 10px;	
}

.ajax__twitter_footer {
	height:36px;
}

.ajax__twitter_footer  img {
	margin-right:10px;
	margin-top:6px;
    float: right;
}N.ajax__dropdown_arrow {position:absolute;height:100%;overflow:hidden;}
.ajax__dropdown_panel {background:white;border:1px solid #868686;}
.ajax__dropdown_frame {border:1px solid #2353B2;overflow:hidden;font-size:1px;text-align:right;position:absolute;cursor:pointer;}
.ajax__dropdown_frame_line {overflow:hidden;font-size:1px;position:absolute;cursor:pointer;}
.ajax__dropdown_arrow_image {background:url(drop-arrow.gif) no-repeat 50% 50%;}
.ajax__dropdown_arrow_wrapper {position:absolute;top:50%;left:50%;}
.ajax__dropdown_arrow_wrapper img {position:relative;top:-50%;left:-50%;}
�.ajax__calendar_container {padding:4px;cursor:default;width:170px;font-size:11px;text-align:center;font-family:tahoma,verdana,helvetica;}
.ajax__calendar_body {height:139px;width:170px;position:relative;overflow:hidden;margin:auto;}
.ajax__calendar_days, .ajax__calendar_months, .ajax__calendar_years {top:0px;left:0px;height:139px;width:170px;position:absolute;text-align:center;margin:auto;}
.ajax__calendar_container TABLE {padding:0px;margin:0px;font-size:11px;}
.ajax__calendar_container TD {padding:0px;margin:0px;font-size:11px;}
.ajax__calendar_header {height:20px;width:100%;}
.ajax__calendar_prev {cursor:pointer;width:15px;height:15px;float:left;background-repeat:no-repeat;background-position:50% 50%;background-image:url(<%=WebResource("Calendar.arrow-left.gif")%>);}
.ajax__calendar_next {cursor:pointer;width:15px;height:15px;float:right;background-repeat:no-repeat;background-position:50% 50%;background-image:url(<%=WebResource("Calendar.arrow-right.gif")%>);}
.ajax__calendar_title {cursor:pointer;font-weight:bold; margin-left:15px; margin-right:15px;}
.ajax__calendar_footer {height:15px;}
.ajax__calendar_today {cursor:pointer;padding-top:3px;}
.ajax__calendar_dayname {height:17px;width:17px;text-align:right;padding:0 2px;}
.ajax__calendar_day {height:17px;width:18px;text-align:right;padding:0 2px;cursor:pointer;}
.ajax__calendar_month {height:44px;width:40px;text-align:center;cursor:pointer;overflow:hidden;}
.ajax__calendar_year {height:44px;width:40px;text-align:center;cursor:pointer;overflow:hidden;}

.ajax__calendar .ajax__calendar_container {border:1px solid #646464;background-color:#ffffff;color:#000000;}
.ajax__calendar .ajax__calendar_footer {border-top:1px solid #f5f5f5;}
.ajax__calendar .ajax__calendar_dayname {border-bottom:1px solid #f5f5f5;}
.ajax__calendar .ajax__calendar_day {border:1px solid #ffffff;}
.ajax__calendar .ajax__calendar_month {border:1px solid #ffffff;}
.ajax__calendar .ajax__calendar_year {border:1px solid #ffffff;}

.ajax__calendar .ajax__calendar_active .ajax__calendar_day {background-color:#edf9ff;border-color:#0066cc;color:#0066cc;}
.ajax__calendar .ajax__calendar_active .ajax__calendar_month {background-color:#edf9ff;border-color:#0066cc;color:#0066cc;}
.ajax__calendar .ajax__calendar_active .ajax__calendar_year {background-color:#edf9ff;border-color:#0066cc;color:#0066cc;}

.ajax__calendar .ajax__calendar_today .ajax__calendar_day {border-color:#0066cc;}
.ajax__calendar .ajax__calendar_today .ajax__calendar_month {border-color:#0066cc;}
.ajax__calendar .ajax__calendar_today .ajax__calendar_year {border-color:#0066cc;}

.ajax__calendar .ajax__calendar_other .ajax__calendar_day {background-color:#ffffff;border-color:#ffffff;color:#646464;}
.ajax__calendar .ajax__calendar_other .ajax__calendar_year {background-color:#ffffff;border-color:#ffffff;color:#646464;}

.ajax__calendar .ajax__calendar_hover .ajax__calendar_day {background-color:#edf9ff;border-color:#daf2fc;color:#0066cc;}
.ajax__calendar .ajax__calendar_hover .ajax__calendar_month {background-color:#edf9ff;border-color:#daf2fc;color:#0066cc;}
.ajax__calendar .ajax__calendar_hover .ajax__calendar_year {background-color:#edf9ff;border-color:#daf2fc;color:#0066cc;}

.ajax__calendar .ajax__calendar_hover .ajax__calendar_title {color:#0066cc;}
.ajax__calendar .ajax__calendar_hover .ajax__calendar_today {color:#0066cc;}

/* styles for invalid dates as defined by startDate and endDate*/
.ajax__calendar .ajax__calendar_invalid .ajax__calendar_day {background-color:#ffffff;border-color:#ffffff; color:#646464; text-decoration:line-through; cursor:default;}
.ajax__calendar .ajax__calendar_invalid .ajax__calendar_month {background-color:#ffffff;border-color:#ffffff; color:#646464; text-decoration:line-through; cursor:default;}
.ajax__calendar .ajax__calendar_invalid .ajax__calendar_year {background-color:#ffffff;border-color:#ffffff; color:#646464; text-decoration:line-through; cursor:default;}
.ajax__calendar .ajax__calendar_invalid .ajax__calendar_today  {visibility:hidden; cursor:default;}]�PNG


IHDR#"Յ`�	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�F	�IDATxڬ�kl\��g�m{c��x��N��I &�@K�H�"!@m!%��T���Z�4��	���j��hi� �G(N@�R� �$�c�ر�Ǯ���~�]�zcҪ�JGs�j���sf��R�*Q�3�%�*�晔r��F������SȪ�U�?�W��뺪��J)࿃	A�m��B0
� ­a
����QU���G� ��t��-[b۶mkt]���Oo��v������&S���FFFT-}Y΄@��;ҏ>����lv�p*�#g�U�Yc�ky��O��߳gϱ�8!�������֬Y�0L��<�~�Gno�[?}�7L�g
�&c��$�H���5��w�����'g�G�{�����3���@�:v옒RbÆ
W`��9�1�|�͛n��k���y�'�F���/�|�+�A����Ι��1kI�L�^}~�-w~��˯��{�����z��wզM����y�؅Cc�����Ѷ�{=x��O����3��׬�"iZ2���$��A��3g�&{�/^�-럺�h�mw��'��?��G�هj���e5/g��"��d�+��g�]sǷn���{�x�l�
�Xd�~�a���I�1�͟�J	��3���pS��n\��6~��?=�jwww/�B�%'Hp@�y�q�£0;;;o=���'��z��"��)J�1N�H	�LS�4i�R������"L�r�=�g�ckWW�pww��P"���۶�����/l,}�m��L��l}T�-M�����&�3�CV���H�;>q�3@
��&I�t��|���wnQv]j�Ν;G�{�#A"{!�+9��f�����v��op.�D��lJ�[�;�7޹��Д���œo�p�RB�ўѴ�W��=Q������md�ʕ+��
%�{�gB��|�������X*b{^ڰ1u27�&CB�9@:ڳI<vw�PP�S�̴��`$\�S��,MgL��8o^ڸ���sqooo)��Հ0ښ5k�^nW�%UB�3�3	�D�B�>�d2
b:�aq�R��&m.�ISQӀ�u8#�8cB)F�E�B�����,��0T�������|��wN���D�1�k�R�l��좔��>�dH��)_)�U�34�#�+IH�A��_)+w���k[b�i�0��>����|ߏs�l��)x�ʝ�LʵY�6.��NG(���l^.������8�)��qGFf���6:b��}1�r�9*��\���_�L�QTٖª�/��R���\R"�(�.c���q��[��wT���]ͳg��d/�^�m��欣��1ζ70��n�<E�	�H�Q.����?/g�\.7�c��h�Y4n-���[�1��F��T[��̮�"�p�/>�S��}��%_��%���h��D�{�B�[h�Z@���Mx��O�X�5��ZYEF1�i��%�-wqcF���wAJ���?��_�I�x�I�V�X��X,�5iғ�\.W
/v�"l!y�ԩ��
��ud$8
��"���Ҭĩ)E}gg˒fJ�X�n���θ�HO��b��xG�s674666L��
� ��>|x��}�[ܞ���d$@zL�R'?����=�;~zO�Q�HL�;�CG��|��P†d$@Ɇ83K�*
��R�Z��K�p���<�����ٻ�
HP^	��Il�0�t=�n�Q����{b�u#�eB�>tw�)�Q�@jy+��(�����h��q�����;t��	�o?����T�՗��d�̴A�A	J$#k�Ls@�C
���.4�5a ���ۗ>:>===���V���a���{Þq������mr�D�\�J�ۀ��PNʝd�"/���� �I('�ep[!M��ޙ������y3�ڗ$5�j޸f�����>����}#�]��6e�s��q	�`D�p�l!��b�y��?;��ѩ~�q>�`f���Z
�
H)�gepp��r��o���O>���˛V[t7��O�P\\��Hp�*
ì�ʶzo��3?����g��3���
<.�ĜުVz]]]B��ɓ�������oioM\��u���R�I/�`�BI����P�L�8�ro�'��3C!��+�P�¬Z�
RJ�%�lhq	�X:�\�[ �yCC��^7Ǧmg��SB���2'��"(ef1�d>�ҥK����h�B��H੪YDT�RJ�`0?��*!�]H��$��L&3On��Z9���2#x�C�V���8w�Uw�h��I�RW�r۶��U0=�4k��_#oEXI.2Ʋ�y a�9q`�V����M��`8�s�Zg�8�j��\����E_���(0w��	<IEND�B`�)// (c) 2010 CodePlex Foundation
Type.registerNamespace('Sys.Extended.UI.Seadragon');
Type.registerNamespace('Seadragon');

Seadragon.Spring = Sys.Extended.UI.Seadragon.Spring = function(initialValue, config) {
	this._currentValue = typeof (initialValue) == "number" ? initialValue : 0;
	this._startValue = this._currentValue;
	this._targetValue = this._currentValue;
	this.config = config;

	this._currentTime = new Date().getTime(); // always work in milliseconds
	this._startTime = this._currentTime;
	this._targetTime = this._currentTime;
}
Sys.Extended.UI.Seadragon.Spring.prototype = {
	_transform: function(x) {
		var s = this.config.springStiffness;
		return (1.0 - Math.exp(-x * s)) / (1.0 - Math.exp(-s));
	},
	getCurrent: function() {
		return this._currentValue;
	},

	getTarget: function() {
		return this._targetValue;
	},

	resetTo: function(target) {
		this._targetValue = target;
		this._targetTime = this._currentTime;
		this._startValue = this._targetValue;
		this._startTime = this._targetTime;
	},

	springTo: function(target) {
		this._startValue = this._currentValue;
		this._startTime = this._currentTime;
		this._targetValue = target;
		this._targetTime = this._startTime + 1000 * this.config.animationTime;
	},

	shiftBy: function(delta) {
		this._startValue += delta;
		this._targetValue += delta;
	},

	update: function() {
		this._currentTime = new Date().getTime();
		this._currentValue = (this._currentTime >= this._targetTime) ? this._targetValue :
                this._startValue + (this._targetValue - this._startValue) *
                this._transform((this._currentTime - this._startTime) / (this._targetTime - this._startTime));
	}
}
Sys.Extended.UI.Seadragon.Spring.registerClass('Sys.Extended.UI.Seadragon.Spring', null, Sys.IDisposable);
// (c) 2010 CodePlex Foundation
Type.registerNamespace("Sys.Extended.UI.Seadragon");Sys.Extended.UI.Seadragon.Profiler=function(){var a=this;a._midUpdate=false;a._numUpdates=0;a._lastBeginTime=null;a._lastEndTime=null;a._minUpdateTime=Infinity;a._avgUpdateTime=0;a._maxUpdateTime=0;a._minIdleTime=Infinity;a._avgIdleTime=0;a._maxIdleTime=0};Sys.Extended.UI.Seadragon.Profiler.prototype={getAvgUpdateTime:function(){return this._avgUpdateTime},getMinUpdateTime:function(){return this._minUpdateTime},getMaxUpdateTime:function(){return this._maxUpdateTime},getAvgIdleTime:function(){return this._avgIdleTime},getMinIdleTime:function(){return this._minIdleTime},getMaxIdleTime:function(){return this._maxIdleTime},isMidUpdate:function(){return this._midUpdate},getNumUpdates:function(){return this._numUpdates},beginUpdate:function(){var a=this;a._midUpdate&&a.endUpdate();a._midUpdate=true;a._lastBeginTime=(new Date).getTime();if(a._numUpdates<1)return;var b=a._lastBeginTime-a._lastEndTime;a._avgIdleTime=(a._avgIdleTime*(a._numUpdates-1)+b)/a._numUpdates;if(b<a._minIdleTime)a._minIdleTime=b;if(b>a._maxIdleTime)a._maxIdleTime=b},endUpdate:function(){var a=this;if(!a._midUpdate)return;a._lastEndTime=(new Date).getTime();a._midUpdate=false;var b=a._lastEndTime-a._lastBeginTime;a._numUpdates++;a._avgUpdateTime=(a._avgUpdateTime*(a._numUpdates-1)+b)/a._numUpdates;if(b<a._minUpdateTime)a._minUpdateTime=b;if(b>a._maxUpdateTime)a._maxUpdateTime=b},clearProfile:function(){var a=this;a._midUpdate=false;a._numUpdates=0;a._lastBeginTime=null;a._lastEndTime=null;a._minUpdateTime=Infinity;a._avgUpdateTime=0;a._maxUpdateTime=0;a._minIdleTime=Infinity;a._avgIdleTime=0;a._maxIdleTime=0}};Sys.Extended.UI.Seadragon.Profiler.registerClass("Sys.Extended.UI.Seadragon.Profiler",null,Sys.IDisposable);�K// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />

(function() {
var scriptName = "ExtendedPagedList";

function execute() {

Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.PagingBulletedListBehavior = function(element) {
    /// <summary>
    /// The PagingBulletedListBehavior provides sorting and paging of a bulleted list
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// DOM element the behavior is associated with
    /// </param>
    Sys.Extended.UI.PagingBulletedListBehavior.initializeBase(this, [element]);
    
    
    
    this._indexSizeValue =  1;
    this._separatorValue = ' - ';
    
    this._heightValue = null;
    this._maxItemPerPage = null;
    this._clientSortValue = false;
    this._selectIndexCssClassValue = null;
    this._unselectIndexCssClassValue = null;
    

    
    this._tabValue = new Array();
    this._tabValueObject =  new Array();
    this._tabIndex =  new Array();
    this._divContent = null;
    this._divContentIndex = null;
    this._divContentUl = null;
    this._prevIndexSelected = null;
    this._indexSelected = 0;
    
    this._clickIndex = null;
    
}
Sys.Extended.UI.PagingBulletedListBehavior.prototype = {
    initialize : function() {
        /// <summary>
        /// Initialize the behavior
        /// </summary>
        Sys.Extended.UI.PagingBulletedListBehavior.callBaseMethod(this, 'initialize');
    
        var clientState = this.get_ClientState();
        if (clientState){
            var stateItems = clientState.split(";");
            if (stateItems.length) {
               this._indexSelected = stateItems[0];
               if (stateItems[1] == "null")
                this._indexSizeValue = null;
               else
                this._indexSizeValue = stateItems[1];
               if (stateItems[2] == "null")
                this._maxItemPerPage = null;
               else
                this._maxItemPerPage = stateItems[2];
               if (stateItems[3] == "true"){
                 this._clientSortValue = true; 
               }else{
                 this._clientSortValue = false;
               }            
            }
        }    
    
        var e = this.get_element();
        this._divContent = document.createElement('div');
        e.parentNode.insertBefore(this._divContent, e);

        var liElements = e.childNodes;

        this._clickIndex = Function.createDelegate(this, this._onIndexClick);

        var inner;
        var index;

        this._divContentIndex = document.createElement('DIV');
        this._divContentIndex.style.marginBottom = '5px';
        this._divContent.appendChild(this._divContentIndex);

        for (var i = 0 ; i < liElements.length; i++) {
            if (liElements[i].nodeName == 'LI') {
	            if ((liElements[i].firstChild) && (liElements[i].firstChild.innerHTML)) {
	                inner = liElements[i].firstChild.innerHTML;
	            } else {
	                inner = liElements[i].innerHTML;
	            }
	            this._tabValueObject[this._tabValueObject.length] = {text : inner, obj : liElements[i], index : i};
	         }
        }
        
        if(this._clientSortValue) {
            this._tabValueObject.sort(this.liElementSortText);
        }
        
        this._generateIndexAndTabForView();
        
        this._removeChilds(e.childNodes);
        this._divContentUl = document.createElement('DIV');
        
        this._changeHeightDivContent();
       
        this._divContentUl.appendChild(e);
        this._divContent.appendChild(this._divContentUl);
        
        this._updateIndexAndView(this._indexSelected);
    },
    
    _changeHeightDivContent : function() {
        /// <summary>
        /// Change the height of the list
        /// </summary>

        if (this._heightValue) {
            this._divContentUl.style.overflow = 'scroll';
            this._divContentUl.style.height = (this._heightValue) + 'px';
        } else {
            this._divContentUl.style.overflow = '';
            this._divContentUl.style.height = '';
        }
    },
    
    _createAHrefIndex : function(indexText, indexNumber) {
        /// <summary>
        /// Create an index and display it above the list
        /// </summary>
        /// <param name="indexText" type="String">
        /// Text of the index
        /// </param>
        /// <param name="indexNumber" type="Number" integer="true">
        /// Index
        /// </param>
        /// <returns type="Sys.UI.DomElement" domElement="true">
        /// Seperator element appended after the new index (so it can be removed later if last)
        /// </returns>

        var spanSeparator;
        var aIndex;
        aIndex = document.createElement('a');
        aIndex.href = '';
        if (this._unselectIndexCssClassValue) Sys.UI.DomElement.addCssClass(aIndex, this._unselectIndexCssClassValue);
        aIndex.innerHTML = indexText;
        aIndex.tag = indexNumber;
        $addHandler(aIndex, 'click',this._clickIndex);
        
        this._tabIndex[this._tabIndex.length] = aIndex;
        this._divContentIndex.appendChild(aIndex);
        
        spanSeparator = document.createElement('SPAN');
        spanSeparator.innerHTML = '\uFEFF' + this._separatorValue + '\uFEFF';
        this._divContentIndex.appendChild(spanSeparator);
        
        return spanSeparator;
    },
    
    liElementSortText : function(x, y) {
        /// <summary>
        /// Sort function to compare two strings
        /// </summary>
        /// <param name="x" type="Object">
        /// Object (of the form {text, index})
        /// </param>
        /// <param name="y" type="Object">
        /// Object (of the form {text, index})
        /// </param>
        /// <returns type="Number" integer="true">
        /// -1 if the first is less than the second, 0 if they are equal, 1 if the first is greater than the second
        /// </returns>

        if (x.text.toLowerCase() == y.text.toLowerCase()) {
            return 0;
        } else {
            if (x.text.toLowerCase() < y.text.toLowerCase()) {
                return -1;
            } else {
                return 1;
            }
        }
     },
     
    liElementSortIndex : function(x, y) {
        /// <summary>
        /// Sort function to compare two indices
        /// </summary>
        /// <param name="x" type="Object">
        /// Object (of the form {text, index})
        /// </param>
        /// <param name="y" type="Object">
        /// Object (of the form {text, index})
        /// </param>
        /// <returns type="Number" integer="true">
        /// -1 if the first is less than the second, 0 if they are equal, 1 if the first is greater than the second
        /// </returns>

        return x.index - y.index;
     },
    
    _generateIndexAndTabForView : function() {
        /// <summary>
        /// Create the indices
        /// </summary>

        this._deleteTabIndexAndTabValue();
        this._tabValue = new Array();
        this._tabIndex = new Array();
        var lastSpanSeparator;
        
        this._removeChilds(this._divContentIndex.childNodes);
        if(this._maxItemPerPage) {
            if (this._maxItemPerPage > 0) {
                var j = -1;
                for(var i = 0; i < this._tabValueObject.length; i++) {
                    if((i % this._maxItemPerPage) == 0) {
                        j++;
                        index = this._tabValueObject[i].text;
                        this._tabValue[j] = new Array();
                        lastSpanSeparator = this._createAHrefIndex(index, j);
                    }
                    this._tabValue[j][this._tabValue[j].length] = this._tabValueObject[i].obj;
                }
            }
        } else {
            if (this._indexSizeValue > 0) {
                var currentIndex = '';
                var j = -1;
                for(var i = 0; i < this._tabValueObject.length; i++) {
                    index = this._tabValueObject[i].text.substr(0, this._indexSizeValue).toUpperCase();
                    if (currentIndex != index) {
                        j++;
                        this._tabValue[j] = new Array();
                        lastSpanSeparator = this._createAHrefIndex(index, j);
                        currentIndex = index;
                    }
                    this._tabValue[j][this._tabValue[j].length] = this._tabValueObject[i].obj;
                }
            }
        }
        
	    if (lastSpanSeparator) {
	        this._divContentIndex.removeChild(lastSpanSeparator);        
	    }
    },
    
    _deleteTabIndexAndTabValue : function() {
        /// <summary>
        /// Delete the indices
        /// </summary>

        if (this._clickIndex) {
            for(var i = 0; i < this._tabIndex.length; i++) {
                var aIndex = this._tabIndex[i];
                if(aIndex) {
                    $removeHandler(aIndex, 'click', this._clickIndex);
                }
            }
            this._changeHandler = null;
        }
        delete this._tabIndex;
        for(var i = 0; i < this._tabValue.length; i++) {
            delete this._tabValue[i];
        }
        delete this._tabValue;   
    },
    
    dispose : function() {
        /// <summary>
        /// Dispose the behavior
        /// </summary>
        this._deleteTabIndexAndTabValue();
        delete this._tabValueObject;
        Sys.Extended.UI.PagingBulletedListBehavior.callBaseMethod(this, 'dispose');
    },

    _removeChilds : function(eChilds) {
        /// <summary>
        /// Remove the children from their parent
        /// </summary>
        /// <param name="eChilds" type="Array" elementType="Sys.UI.DomElement" elementDomElement="true">
        /// Children to remove
        /// </param>
        for(var i = 0; eChilds.length; i++) {
            eChilds[0].parentNode.removeChild(eChilds[0]);
        }
    },
    
    _renderHtml : function(index) {
        /// <summary>
        /// Display the elements for the given index
        /// </summary>
        /// <param name="index" type="Number" integer="true">
        /// Index
        /// </param>

        var e = this.get_element();
        
        this._removeChilds(e.childNodes);
        for(var i = 0; i<this._tabValue[index].length; i++) {
            e.appendChild(this._tabValue[index][i]);
        }
        this._divContentUl.scrollTop = 0;
    },
    
    _selectIndex : function(index) {
        /// <summary>
        /// Select the first index
        /// </summary>

	    if (this._tabIndex.length > 0) {
	        if (this._unselectIndexCssClassValue) Sys.UI.DomElement.removeCssClass(this._tabIndex[index], this._unselectIndexCssClassValue);
            if (this._selectIndexCssClassValue) Sys.UI.DomElement.addCssClass(this._tabIndex[index], this._selectIndexCssClassValue);
            this._prevIndexSelected = this._tabIndex[index];
            
            this.raiseIndexChanged(this._tabIndex[index]);
        }
    },
    
    _onIndexClick : function(evt) {
        /// <summary>
        /// Handle click events raised when the index is changed
        /// </summary>
        /// <param name="evt" type="Sys.UI.DomEvent">
        /// Event info
        /// </param>

        var e = this.get_element();        
        var aIndex = evt.target;
        
        if (this._selectIndexCssClassValue) Sys.UI.DomElement.removeCssClass(this._prevIndexSelected, this._selectIndexCssClassValue);
        if (this._unselectIndexCssClassValue) Sys.UI.DomElement.addCssClass(this._prevIndexSelected, this._unselectIndexCssClassValue);
        if (this._unselectIndexCssClassValue) Sys.UI.DomElement.removeCssClass(aIndex, this._unselectIndexCssClassValue);
        if (this._selectIndexCssClassValue) Sys.UI.DomElement.addCssClass(aIndex, this._selectIndexCssClassValue);
        this._prevIndexSelected = aIndex;

        this._renderHtml(aIndex.tag);
        
        this.raiseIndexChanged(aIndex);
            
        evt.preventDefault();
    },

    add_indexChanged : function(handler) {
        /// <summary>
        /// Add a handler to the indexChanged event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        this.get_events().addHandler('indexChanged', handler);
    },
    remove_indexChanged : function(handler) {
        /// <summary>
        /// Remove a handler from the indexChanged event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        this.get_events().removeHandler('indexChanged', handler);
    },
    raiseIndexChanged : function(eventArgs) {
        /// <summary>
        /// Raise the indexChanged event
        /// </summary>
        /// <param name="eventArgs" type="Sys.EventArgs">
        /// Event Arguments
        /// </param>
        
        this._indexSelected = eventArgs.tag;
        
        var handler = this.get_events().getHandler('indexChanged');
        if (handler) {
            if (!eventArgs) {
                eventArgs = Sys.EventArgs.Empty;
            }
            handler(this, eventArgs);
        }
        this.set_ClientState(eventArgs.tag+";"+this.get_IndexSize()+";"+this.get_MaxItemPerPage()+";"+this.get_ClientSort());
    },
    
    get_tabIndex : function() {
        /// <value type="Array" elementType="Sys.UI.DomElement" elementDomElement="true">
        /// DOM elements of the indices
        /// </value>
        return this._tabIndex;
    },
    
    get_tabValue : function() {
        /// <value type="Array" elementType="Sys.UI.DomElement" elementDomElement="true">
        /// DOM elements of the items to display for each index
        /// </value>
        return this._tabValue;
    },

    _updateIndexAndView : function(index) {
        /// <summary>
        /// Regenerate the tables of indices and display
        /// </summary>

        this._generateIndexAndTabForView()
        if (this._tabIndex.length > 0) {
            if (index < this._tabIndex.length) {
                this._renderHtml(this._tabIndex[index].tag);
                this._selectIndex(index);
            } else {
                this._renderHtml(this._tabIndex[0].tag);
                this._selectIndex(0);
            }
        }
    },
    
    get_Height : function() {
        /// <value type="Number" integer="true">
        /// Height of the bulleted list
        /// </value>
        return this._heightValue;
    },
    set_Height : function(value) {
        if (this._heightValue != value) {
            this._heightValue = value;
            if (this.get_isInitialized()) {
                this._changeHeightDivContent();
            }
            this.raisePropertyChanged('Height');
        }
    },
    
    get_IndexSize : function() {
        /// <value type="Number" integer="true">
        /// Number of characters in the index headings (ignored if MaxItemPerPage is set)
        /// </value>
        return this._indexSizeValue;
    },
    set_IndexSize : function(value) {
        if (this._indexSizeValue != value) {
            this.set_ClientState("0;"+value+";"+this.get_MaxItemPerPage()+";"+this.get_ClientSort());

            this._indexSizeValue = value;
            if (this.get_isInitialized()) {
                this._updateIndexAndView(0);
            }
            this.raisePropertyChanged('IndexSize');
        }
    },
    
    get_MaxItemPerPage : function() {
        /// <value type="Number" integer="true">
        /// Maximum number of items per page (ignores the IndexSize property)
        /// </value>
        return this._maxItemPerPage;
    },
    set_MaxItemPerPage : function(value) {
        if(this._maxItemPerPage != value) {
            this.set_ClientState("0;"+this.get_IndexSize()+";"+value+";"+this.get_ClientSort());


            this._maxItemPerPage = value;
            if (this.get_isInitialized()) {
                this._updateIndexAndView(0);
            }

            this.raisePropertyChanged('MaxItemPerPage');
        }
    },
    
    get_Separator : function() {
        /// <value type="String">
        /// Separator text to be placed between indices
        /// </value>
        return this._separatorValue;
    },
    set_Separator : function(value) {
        if (this._separatorValue != value) {
            if (value) {
                this._separatorValue = value;
            } else {
                this._separatorValue = '';
            }    
            if (this.get_isInitialized()) {
                this._updateIndexAndView(0);
            }
            this.raisePropertyChanged('Separator');
        }
    },
    
    get_ClientSort : function() {
        /// <value type="Boolean">
        /// Whether or not the items should be sorted client-side
        /// </value>
        return this._clientSortValue;
    },
    set_ClientSort : function(value) {
        if (this._clientSortValue != value) {
            this.set_ClientState("0;"+this.get_IndexSize()+";"+this.get_MaxItemPerPage()+";"+value);


            this._clientSortValue = value;
            if (this.get_isInitialized()) {
                if (this._clientSortValue)
                    this._tabValueObject.sort(this.liElementSortText);
                else
                    this._tabValueObject.sort(this.liElementSortIndex);
                this._updateIndexAndView(0);
            }    
            this.raisePropertyChanged('ClientSort');
        }
    },
    
    get_SelectIndexCssClass : function() {
        /// <value type="String">
        /// CSS class for the selected index.
        /// </value>
        return this._selectIndexCssClassValue;
    },
    set_SelectIndexCssClass : function(value) {
        if (this._selectIndexCssClassValue != value) {
            this._selectIndexCssClassValue = value;
            this.raisePropertyChanged('SelectIndexCssClass');
        }
    },
    
    get_UnselectIndexCssClass : function() {
        /// <value type="String">
        /// CSS class for indices that aren't selected
        /// </value>
        return this._unselectIndexCssClassValue;
    },
    set_UnselectIndexCssClass : function(value) {
        if (this._unselectIndexCssClassValue != value) {
            this._unselectIndexCssClassValue = value;
            this.raisePropertyChanged('UnselectIndexCssClass');
        }
    }
}
Sys.Extended.UI.PagingBulletedListBehavior.registerClass('Sys.Extended.UI.PagingBulletedListBehavior', Sys.Extended.UI.BehaviorBase);
Sys.registerComponent(Sys.Extended.UI.PagingBulletedListBehavior, { name: "pagedList" });


} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedBase"], execute);
}
else {
    execute();
}

})();
R(// (c) 2010 CodePlex Foundation
(function(){var b="ExtendedUpDown";function a(){var e="currentChanged",d="click",b=false,c=true,a=null;Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.NumericUpDownBehavior=function(c){var b=this;Sys.Extended.UI.NumericUpDownBehavior.initializeBase(b,[c]);b._currentValue=a;b._widthValue=a;b._targetButtonUpIDValue=a;b._targetButtonDownIDValue=a;b._serviceUpPathValue=location.pathname;b._serviceUpMethodValue=a;b._serviceDownPathValue=location.pathname;b._serviceDownMethodValue=a;b._refValuesValue=a;b._tagValue=a;b._elementTextBox=a;b._step=1;b._min=-Number.MAX_VALUE;b._max=Number.MAX_VALUE;b._bUp=a;b._bDown=a;b._stepPrecision=0;b._valuePrecision=0;b._clickUpHandler=a;b._clickDownHandler=a;b._changeHandler=a};Sys.Extended.UI.NumericUpDownBehavior.prototype={initialize:function(){var p="Tahoma, Arial, sans-serif",o="Webdings",n="outset 1px",f="0",j="middle",i="24px",m="relative",h="px",e=this;Sys.Extended.UI.NumericUpDownBehavior.callBaseMethod(e,"initialize");$common.prepareHiddenElementForATDeviceUpdate();var g=e.get_element();e._elementTextBox=g;if(e._refValuesValue||e._serviceUpMethodValue||e._serviceDownMethodValue)e._elementTextBox.readOnly=c;else e._elementTextBox.readOnly=b;e.readValue();e._changeHandler=Function.createDelegate(e,e._onChange);$addHandler(g,"blur",e._changeHandler);if(!e._targetButtonUpIDValue||!e._targetButtonDownIDValue){e._widthValue=Math.max(e._widthValue,24);g.style.width=e._widthValue-24+h;g.style.textAlign="center";var k=document.createElement("DIV");k.style.position=m;k.style.width=e._widthValue+h;k.style.fontSize=g.clientHeight+h;k.style.height=g.clientHeight+h;k.style.paddingRight=i;if(!(Sys.Browser.agent==Sys.Browser.Firefox||Sys.Browser.agent==Sys.Browser.Safari))k.style.display="inline";else k.style.display="inline-block";g.parentNode.insertBefore(k,g);var l=document.createElement("TABLE"),t=document.createElement("TBODY"),u=document.createElement("TR"),v=document.createElement("TR"),q=document.createElement("TD"),s=document.createElement("TD"),r=document.createElement("TD");q.rowSpan="2";q.style.verticalAlign=j;s.style.verticalAlign=j;r.style.verticalAlign=j;u.appendChild(q);u.appendChild(s);v.appendChild(r);t.appendChild(u);t.appendChild(v);l.appendChild(t);k.appendChild(l);g.parentNode.removeChild(g);q.appendChild(g);l.style.borderCollapse="collapse";l.cellSpacing=f;l.cellPadding=f;l.style.display="inline";l.style.position=m;q.style.padding=f;s.style.padding=f;r.style.padding=f;q.style.margin=f;s.style.margin=f;r.style.margin=f}if(!e._targetButtonUpIDValue){e._bUp=document.createElement("input");e._bUp.type="button";e._bUp.id=g.id+"_bUp";e._bUp.style.border=n;if(Sys.Browser.agent==Sys.Browser.InternetExplorer){e._bUp.style.fontFamily=o;e._bUp.style.fontSize="9pt";e._bUp.value="5"}else{e._bUp.style.fontFamily=p;e._bUp.style.fontSize="5pt";e._bUp.value="▲";e._bUp.style.fontWeight="bold";e._bUp.style.lineHeight="3pt"}e._bUp.style.height="12px";e._bUp.style.width=i;e._bUp.style.overflow="hidden";e._bUp.style.lineHeight="1em";s.appendChild(e._bUp)}if(!e._targetButtonDownIDValue){e._bDown=document.createElement("input");e._bDown.type="button";e._bDown.id=g.id+"_bDown";e._bDown.style.border=n;if(Sys.Browser.agent==Sys.Browser.InternetExplorer){e._bDown.value="6";e._bDown.style.fontFamily=o;e._bDown.style.fontSize="9pt"}else{e._bDown.value="▼";e._bDown.style.fontFamily=p;e._bDown.style.fontSize="5pt";e._bDown.style.fontWeight="bold"}e._bDown.style.height="12px";e._bDown.style.lineHeight="3pt";e._bDown.style.width=i;e._bDown.style.overflow="hidden";r.appendChild(e._bDown)}if(e._bUp==a)e._bUp=document.getElementById(e._targetButtonUpIDValue);if(e._bUp){e._clickUpHandler=Function.createDelegate(e,e._clickUp);$addHandler(e._bUp,d,e._clickUpHandler)}if(e._bDown==a)e._bDown=document.getElementById(e._targetButtonDownIDValue);if(e._bDown){e._clickDownHandler=Function.createDelegate(e,e._clickDown);$addHandler(e._bDown,d,e._clickDownHandler)}},dispose:function(){var b=this;if(b._changeHandler){$removeHandler(b.get_element(),"blur",b._changeHandler);b._changeHandler=a}if(b._clickUpHandler)if(b._bUp){$removeHandler(b._bUp,d,b._clickUpHandler);b._clickUpHandler=a}if(b._clickDownHandler)if(b._bDown){$removeHandler(b._bDown,d,b._clickDownHandler);b._clickDownHandler=a}Sys.Extended.UI.NumericUpDownBehavior.callBaseMethod(b,"dispose")},add_currentChanged:function(a){this.get_events().addHandler(e,a)},remove_currentChanged:function(a){this.get_events().removeHandler(e,a)},raiseCurrentChanged:function(a){var b=this.get_events().getHandler(e);if(b){if(!a)a=Sys.EventArgs.Empty;b(this,a)}},_onChange:function(){var a=this;a.readValue();if(a._refValuesValue){a.setCurrentToTextBox(a._refValuesValue[a._currentValue]);if(a._elementTextBox)a._elementTextBox.readOnly=c}else{a.setCurrentToTextBox(a._currentValue);if(a._elementTextBox)a._elementTextBox.readOnly=a._serviceUpMethodValue||a._serviceDownMethodValue}},readValue:function(){var a=this;if(a._elementTextBox){var c=a._elementTextBox.value;if(!a._refValuesValue){if(!c)a._currentValue=a._min;else try{a._currentValue=parseFloat(c)}catch(e){a._currentValue=a._min}if(isNaN(a._currentValue))a._currentValue=a._min;a.setCurrentToTextBox(a._currentValue);a._valuePrecision=a._computePrecision(a._currentValue)}else{if(!c)a._currentValue=0;else{for(var d=0,b=0;b<a._refValuesValue.length;b++)if(c.toLowerCase()==a._refValuesValue[b].toLowerCase())d=b;a._currentValue=d}a.setCurrentToTextBox(a._refValuesValue[a._currentValue])}}},setCurrentToTextBox:function(e){var a=this;if(a._elementTextBox){a._elementTextBox.value=e;a.raiseCurrentChanged(e);if(document.createEvent){var d=document.createEvent("HTMLEvents");d.initEvent("change",c,b);a._elementTextBox.dispatchEvent(d)}else document.createEventObject&&a._elementTextBox.fireEvent("onchange")}},_incrementValue:function(b){var a=this,c=parseFloat((a._currentValue+b).toFixed(Math.max(a._stepPrecision,a._valuePrecision)));if(b>0)a._currentValue=Math.max(Math.min(c,a._max),a._min);else a._currentValue=Math.min(Math.max(c,a._min),a._max)},_computePrecision:function(b){if(b==Number.Nan)return this._min;var c=b.toString();if(c){var d=/\.(\d*)$/,a=c.match(d);if(a&&a.length==2&&a[1])return a[1].length}return this._min},get_Width:function(){return this._widthValue},set_Width:function(a){if(this._widthValue!=a){this._widthValue=a;this.raisePropertyChanged("Width")}},get_Tag:function(){return this._tagValue},set_Tag:function(a){if(this._tagValue!=a){this._tagValue=a;this.raisePropertyChanged("Tag")}},get_TargetButtonUpID:function(){return this._targetButtonUpIDValue},set_TargetButtonUpID:function(a){if(this._targetButtonUpIDValue!=a){this._targetButtonUpIDValue=a;this.raisePropertyChanged("TargetButtonUpID")}},get_TargetButtonDownID:function(){return this._targetButtonDownIDValue},set_TargetButtonDownID:function(a){if(this._targetButtonDownIDValue!=a){this._targetButtonDownIDValue=a;this.raisePropertyChanged("TargetButtonDownID")}},get_ServiceUpPath:function(){return this._serviceUpPathValue},set_ServiceUpPath:function(a){if(this._serviceUpPathValue!=a){this._serviceUpPathValue=a;this.raisePropertyChanged("ServiceUpPath")}},get_ServiceUpMethod:function(){return this._serviceUpMethodValue},set_ServiceUpMethod:function(b){var a=this;if(a._serviceUpMethodValue!=b){a._serviceUpMethodValue=b;a.raisePropertyChanged("ServiceUpMethod");if(a._elementTextBox)a._elementTextBox.readOnly=c}},get_ServiceDownPath:function(){return this._serviceDownPathValue},set_ServiceDownPath:function(a){if(this._serviceDownPathValue!=a){this._serviceDownPathValue=a;this.raisePropertyChanged("ServiceDownPath")}},get_ServiceDownMethod:function(){return this._serviceDownMethodValue},set_ServiceDownMethod:function(b){var a=this;if(a._serviceDownMethodValue!=b){a._serviceDownMethodValue=b;a.raisePropertyChanged("ServiceDownMethod");if(a._elementTextBox)a._elementTextBox.readOnly=c}},get_RefValues:function(){return this._refValuesValue?this._refValuesValue.join(";"):""},set_RefValues:function(e){var d=this;if(e!=""){d._refValuesValue=e.split(";");d._onChange();if(d._elementTextBox)d._elementTextBox.readOnly=c}else{d._refValuesValue=a;if(d._elementTextBox)d._elementTextBox.readOnly=b}d.raisePropertyChanged("RefValues")},get_Step:function(){return this._step},set_Step:function(b){var a=this;if(b!=a._step){a._step=b;a._stepPrecision=a._computePrecision(b);a.raisePropertyChanged("Step")}},get_Minimum:function(){return this._min},set_Minimum:function(a){if(a!=this._min){this._min=a;this.raisePropertyChanged("Minimum")}},get_Maximum:function(){return this._max},set_Maximum:function(a){if(a!=this._max){this._max=a;this.raisePropertyChanged("Maximum")}},_clickUp:function(c){var a=this;a.readValue();if(a._serviceUpPathValue&&a._serviceUpMethodValue){Sys.Net.WebServiceProxy.invoke(a._serviceUpPathValue,a._serviceUpMethodValue,b,{current:a._currentValue,tag:a._tagValue},Function.createDelegate(a,a._onMethodUpDownComplete));$common.updateFormToRefreshATDeviceBuffer()}else if(a._refValuesValue){if(a._currentValue+1<a._refValuesValue.length){a._currentValue=a._currentValue+1;a.setCurrentToTextBox(a._refValuesValue[a._currentValue])}}else{a._incrementValue(a._step);a.setCurrentToTextBox(a._currentValue)}c&&c.preventDefault();return b},_clickDown:function(c){var a=this;a.readValue();if(a._serviceDownPathValue&&a._serviceDownMethodValue){Sys.Net.WebServiceProxy.invoke(a._serviceDownPathValue,a._serviceDownMethodValue,b,{current:a._currentValue,tag:a._tagValue},Function.createDelegate(a,a._onMethodUpDownComplete));$common.updateFormToRefreshATDeviceBuffer()}else if(a._refValuesValue){if(a._currentValue-1>=0){a._currentValue=a._currentValue-1;a.setCurrentToTextBox(a._refValuesValue[a._currentValue])}}else{a._incrementValue(-a._step);a.setCurrentToTextBox(a._currentValue)}c&&c.preventDefault();return b},_onMethodUpDownComplete:function(a){this._currentValue=a;this.setCurrentToTextBox(this._currentValue)}};Sys.Extended.UI.NumericUpDownBehavior.registerClass("Sys.Extended.UI.NumericUpDownBehavior",Sys.Extended.UI.BehaviorBase);Sys.registerComponent(Sys.Extended.UI.NumericUpDownBehavior,{name:"upDown",parameters:["Minimum","Maximum","Width"]})}if(window.Sys&&Sys.loader)Sys.loader.registerScript(b,["ExtendedCommon","ExtendedBase","WebServices"],a);else a()})();�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveAlignment = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveAlignment.initializeBase(this, [element]);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveAlignment.prototype = {
    checkState : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveAlignment.callBaseMethod(this, "checkState")) return false;
        return this._designPanel._textAlignState(null);
    },
    
    callMethod : function() {
        if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveAlignment.callBaseMethod(this, "callMethod")) return false;
        var editor = this._designPanel;
        var editPanel = this._editPanel;
        editor._saveContent();
        editor.MSIE_justify("left", true);
        editor.onContentChanged();
        setTimeout(function(){editPanel.updateToolbar();},0);
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveAlignment.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveAlignment", Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton);

 Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyFull=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyFull.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyFull.prototype={checkState:function(){return!Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyFull.callBaseMethod(this,"checkState")?false:this._designPanel._textAlignState("justify")},callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyFull.callBaseMethod(this,"callMethod"))return false;this._designPanel._execCommand("JustifyFull")}};Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyFull.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyFull",Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton);/Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyCenter=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyCenter.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyCenter.prototype={checkState:function(){return!Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyCenter.callBaseMethod(this,"checkState")?false:this._designPanel._textAlignState("center")},callMethod:function(){if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyCenter.callBaseMethod(this,"callMethod"))return false;this._designPanel._execCommand("JustifyCenter")}};Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyCenter.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyCenter",Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton);"Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedBackColor=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedBackColor.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedBackColor.prototype={setColor:function(a){this._designPanel._execCommand("backcolor",false,a)}};Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedBackColor.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedBackColor",Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedColorButton);Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorButton=function(a){Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorButton.initializeBase(this,[a])};Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorButton.prototype={callMethod:function(){var a=this;if(!Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorButton.callBaseMethod(a,"callMethod"))return false;a.openPopup(Function.createDelegate(a,a._onopened));return true},_onopened:function(a){a.setColor=Function.createDelegate(this,this.setColor)},setColor:function(){this.closePopup()}};Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorButton.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorButton",Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModePopupImageButton);VType.registerNamespace("Sys.Extended.UI.HTMLEditor");Sys.Extended.UI.HTMLEditor.Toolbar=function(b){var a=this;Sys.Extended.UI.HTMLEditor.Toolbar.initializeBase(a,[b]);a._loaded=false;a._cachedButtonIds=null;a._cachedEditPanel=null;a._buttons=null;a._alwaysVisible=false;a._app_onload$delegate=Function.createDelegate(a,a._app_onload)};Sys.Extended.UI.HTMLEditor.Toolbar.prototype={get_alwaysVisible:function(){return this._alwaysVisible},set_alwaysVisible:function(a){this._alwaysVisible=a;this.get_isInitialized()&&this.raisePropertyChanged("alwaysVisible")},set_activeEditPanel:function(c){var a=this;if(!a._loaded){a._cachedEditPanel=c;return}for(var b=0;b<a.get_buttons().length;b++)a.get_buttons()[b].set_activeEditPanel(c)},disable:function(){var a=this;if(a.get_isInitialized()){if(a._alwaysVisible)return;for(var b=0;b<a.get_buttons().length;b++)a.get_buttons()[b].set_activeEditPanel(null)}},get_buttons:function(){if(this._buttons==null)this._buttons=[];return this._buttons},set_buttons:function(a){this.get_buttons().push(a)},get_buttonIds:function(){},set_buttonIds:function(c){if(!this.get_isInitialized()){this._cachedButtonIds=c;return}for(var b=c.split(";"),a=0;a<b.length;a++)b[a].length>0&&this.set_buttons($find(b[a]))},initialize:function(){Sys.Extended.UI.HTMLEditor.Toolbar.callBaseMethod(this,"initialize");Sys.Application.add_load(this._app_onload$delegate)},dispose:function(){this._loaded=false;Sys.Application.remove_load(this._app_onload$delegate);Sys.Extended.UI.HTMLEditor.Toolbar.callBaseMethod(this,"dispose")},_app_onload:function(){var b=null,a=this;if(a._cachedButtonIds!=b){a.set_buttonIds(a._cachedButtonIds);a._cachedButtonIds=b}a._loaded=true;if(a._cachedEditPanel!=b){a.set_activeEditPanel(a._cachedEditPanel);a._cachedEditPanel=b}}};Sys.Extended.UI.HTMLEditor.Toolbar.registerClass("Sys.Extended.UI.HTMLEditor.Toolbar",Sys.UI.Control);�Type.registerNamespace("Sys.Extended.UI.HTMLEditor");

Sys.Extended.UI.HTMLEditor.Toolbar = function(element) {
    Sys.Extended.UI.HTMLEditor.Toolbar.initializeBase(this, [element]);
    
    this._loaded = false;
    this._cachedButtonIds = null;
    this._cachedEditPanel = null;
    this._buttons = null;
    this._alwaysVisible = false;
    this._app_onload$delegate = Function.createDelegate(this, this._app_onload);
}

Sys.Extended.UI.HTMLEditor.Toolbar.prototype = {

    get_alwaysVisible : function() {
        return this._alwaysVisible;
    },
    set_alwaysVisible : function(value) {
        this._alwaysVisible = value;
        if (this.get_isInitialized()) {
            this.raisePropertyChanged("alwaysVisible");
        }
    },

    set_activeEditPanel : function(value) {
        if(!this._loaded) {
            this._cachedEditPanel = value;
            return;
        }
        for(var i=0; i < this.get_buttons().length; i++) {
            this.get_buttons()[i].set_activeEditPanel(value);
        }
    },
    
    disable : function() {
        if (this.get_isInitialized()) {
            if (this._alwaysVisible) {
                return;
            }
            for(var i=0; i < this.get_buttons().length; i++) {
                this.get_buttons()[i].set_activeEditPanel(null);
            }
        }
    },
    
    get_buttons : function() { 
        if (this._buttons == null) {
            this._buttons = [];
        }
        return this._buttons; 
    },
    set_buttons : function(value) { 
        this.get_buttons().push(value); 
    },
    
    get_buttonIds : function() { 
    },
    set_buttonIds : function(value) { 
        if (!this.get_isInitialized()) {
            this._cachedButtonIds = value;
            return;
        }
        var arr = value.split(";");
        for(var i=0; i < arr.length; i++) {
            if(arr[i].length > 0) {
                this.set_buttons($find(arr[i]));
            }
        }
    },
    
    initialize : function() {
        Sys.Extended.UI.HTMLEditor.Toolbar.callBaseMethod(this, "initialize");
        Sys.Application.add_load(this._app_onload$delegate);
    },
    
    dispose : function() {
        this._loaded = false;
        Sys.Application.remove_load(this._app_onload$delegate);
        Sys.Extended.UI.HTMLEditor.Toolbar.callBaseMethod(this, "dispose");
    },

    _app_onload : function(sender, e) {
        if (this._cachedButtonIds != null) {
            this.set_buttonIds(this._cachedButtonIds);
            this._cachedButtonIds = null;
        }
        
        this._loaded = true;
        if(this._cachedEditPanel != null) {
            this.set_activeEditPanel(this._cachedEditPanel);
            this._cachedEditPanel = null;
        }
    }
}

Sys.Extended.UI.HTMLEditor.Toolbar.registerClass("Sys.Extended.UI.HTMLEditor.Toolbar", Sys.UI.Control);
�Type.registerNamespace("Sys.Extended.UI.HTMLEditor.Popups");

Sys.Extended.UI.HTMLEditor.Popups.PopupBoxButton = function(element) {
    Sys.Extended.UI.HTMLEditor.Popups.PopupBoxButton.initializeBase(this, [element]);

    this._designPanel = null;
}

Sys.Extended.UI.HTMLEditor.Popups.PopupBoxButton.prototype = {
}

Sys.Extended.UI.HTMLEditor.Popups.PopupBoxButton.registerClass("Sys.Extended.UI.HTMLEditor.Popups.PopupBoxButton", Sys.Extended.UI.HTMLEditor.Popups.PopupCommonButton);

�
// (c) 2010 CodePlex Foundation
(function(){function a(){var a=-2.1987072e12;Type._registerScript("Date.UmAlQuraCalendar.js",["MicrosoftAjaxGlobalization.js"]);__cultureInfo.dateTimeFormat.Calendar.convert={_yearInfo:[[746,a],[1769,-2.1681216e12],[3794,-2.1374496e12],[3748,-2.1067776e12],[3402,-2.076192e12],[2710,-2.0456064e12],[1334,-2.0150208e12],[2741,-1.9844352e12],[3498,-1.9537632e12],[2980,-1.9230912e12],[2889,-1.8925056e12],[2707,-1.86192e12],[1323,-1.8313344e12],[2647,-1.8007488e12],[1206,-1.7700768e12],[2741,-1.7394912e12],[1450,-1.7088192e12],[3413,-1.6782336e12],[3370,-1.6475616e12],[2646,-1.616976e12],[1198,-1.5863904e12],[2397,-1.5558048e12],[748,-1.5251328e12],[1749,-1.4945472e12],[1706,-1.4638752e12],[1365,-1.4332896e12],[1195,-1.402704e12],[2395,-1.3721184e12],[698,-1.3414464e12],[1397,-1.3108608e12],[2994,-1.2801888e12],[1892,-1.2495168e12],[1865,-1.2189312e12],[1621,-1.1883456e12],[683,-1.15776e12],[1371,-1.1271744e12],[2778,-1.0965024e12],[1748,-1.0658304e12],[3785,-1.0352448e12],[3474,-1.0045728e12],[3365,-9.739872e11],[2637,-9.434016e11],[685,-9.12816e11],[1389,-8.822304e11],[2922,-8.515584e11],[2898,-8.208864e11],[2725,-7.903008e11],[2635,-7.597152e11],[1175,-7.291296e11],[2359,-6.98544e11],[694,-6.67872e11],[1397,-6.372864e11],[3434,-6.066144e11],[3410,-5.759424e11],[2710,-5.453568e11],[2349,-5.147712e11],[605,-4.841856e11],[1245,-4.536e11],[2778,-4.22928e11],[1492,-3.92256e11],[3497,-3.616704e11],[3410,-3.309984e11],[2730,-3.004128e11],[1238,-2.698272e11],[2486,-2.392416e11],[884,-2.085696e11],[1897,-1.77984e11],[1874,-1.47312e11],[1701,-1.167264e11],[1355,-8.61408e10],[2731,-5.55552e10],[1370,-2.48832e10],[2773,5.7024e9],[3538,3.63744e10],[3492,6.70464e10],[3401,9.7632e10],[2709,1.282176e11],[1325,1.588032e11],[2653,1.893888e11],[1370,2.200608e11],[2773,2.506464e11],[1706,2.813184e11],[1685,3.11904e11],[1323,3.424896e11],[2647,3.730752e11],[1198,4.037472e11],[2422,4.343328e11],[1388,4.650048e11],[2901,4.955904e11],[2730,5.262624e11],[2645,5.56848e11],[1197,5.874336e11],[2397,6.180192e11],[730,6.486912e11],[1497,6.792768e11],[3506,7.099488e11],[2980,7.406208e11],[2890,7.712064e11],[2645,8.01792e11],[693,8.323776e11],[1397,8.629632e11],[2922,8.936352e11],[3026,9.243072e11],[3012,9.549792e11],[2953,9.855648e11],[2709,1.0161504e12],[1325,1.046736e12],[1453,1.0773216e12],[2922,1.1079936e12],[1748,1.1386656e12],[3529,1.1692512e12],[3474,1.1999232e12],[2726,1.2305088e12],[2390,1.2610944e12],[686,1.29168e12],[1389,1.3222656e12],[874,1.3529376e12],[2901,1.3835232e12],[2730,1.4141952e12],[2381,1.4447808e12],[1181,1.4753664e12],[2397,1.505952e12],[698,1.536624e12],[1461,1.5672096e12],[1450,1.5978816e12],[3413,1.6284672e12],[2714,1.6591392e12],[2350,1.6897248e12],[622,1.7203104e12],[1373,1.750896e12],[2778,1.781568e12],[1748,1.81224e12],[1701,1.8428256e12],[0,1.8734112e12]],minDate:a,maxDate:1873411199999,toGregorian:function(h,g,i){var d=i-1,c=h-1318;if(c<0||c>=this._yearInfo.length)return null;var e=this._yearInfo[c],a=new Date(e[1]),b=e[0];a.setMinutes(a.getMinutes()+a.getTimezoneOffset());for(var f=0;f<g;f++){d+=29+(b&1);b=b>>1}a.setDate(a.getDate()+d);return a},fromGregorian:function(h){var b=this,c=h-h.getTimezoneOffset()*6e4;if(c<b.minDate||c>b.maxDate)return null;var a=0,g=1;while(c>b._yearInfo[++a][1]);if(c!==b._yearInfo[a][1])a--;var i=b._yearInfo[a],f=Math.floor((c-i[1])/8.64e7),d=i[0];a+=1318;var e=29+(d&1);while(f>=e){f-=e;d=d>>1;e=29+(d&1);g++}return[a,g-1,f+1]}}}if(window.Sys&&Sys.loader)Sys.loader.registerScript("UmAlQuraCalendar",null,a);else a()})();t`// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />

(function() {
var scriptName = "ExtendedCascadingDropDown";

function execute() {

Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.CascadingDropDownSelectionChangedEventArgs = function(oldValue, newValue) {
    /// <summary>
    /// Event arguments used when the selectionChanged event is raised
    /// </summary>
    /// <param name="oldValue" type="String" mayBeNull="true">
    /// Previous selection
    /// </param>
    /// <param name="newValue" type="String" mayBeNull="true">
    /// New selection
    /// </param>
    Sys.Extended.UI.CascadingDropDownSelectionChangedEventArgs.initializeBase(this);
    
    this._oldValue = oldValue;
    this._newValue = newValue;
}
Sys.Extended.UI.CascadingDropDownSelectionChangedEventArgs.prototype = {
    get_oldValue : function() {
        /// <value type="String" mayBeNull="true">
        /// Previous selection
        /// </value>
        return this._oldValue;
    },
    
    get_newValue : function() {
        /// <value type="String" mayBeNull="true">
        /// New selection
        /// </value>
        return this._newValue;
    }
}
Sys.Extended.UI.CascadingDropDownSelectionChangedEventArgs.registerClass('Sys.Extended.UI.CascadingDropDownSelectionChangedEventArgs', Sys.EventArgs);

Sys.Extended.UI.CascadingDropDownBehavior = function(e) {
    /// <summary>
    /// The CascadingDropDownBehavior is used to populate drop downs with values from a web service
    /// </summary>
    /// <param name="e" type="Sys.UI.DomElement" domElement="true">
    /// The DOM element the behavior is associated with
    /// </param>
    Sys.Extended.UI.CascadingDropDownBehavior.initializeBase(this, [e]);

    this._parentControlID = null;
    this._category = null;
    this._promptText = null;
    this._loadingText = null;
    this._promptValue = null;
    this._emptyValue = null;
    this._emptyText = null;

    this._servicePath = location.pathname;

    this._serviceMethod = null;
    
    this._contextKey = null;
    
    this._useContextKey = false;

    this._parentElement = null;
    this._changeHandler = null;
    this._parentChangeHandler = null;
    this._lastParentValues = null;
    this._selectedValue = null;
}
Sys.Extended.UI.CascadingDropDownBehavior.prototype = {
    initialize : function() {
        /// <summary>
        /// Initialize the behavior
        /// </summary>
        /// <returns />
        Sys.Extended.UI.CascadingDropDownBehavior.callBaseMethod(this, 'initialize');
        $common.prepareHiddenElementForATDeviceUpdate();

        var e = this.get_element();

        this._clearItems();

        e.CascadingDropDownCategory = this._category;

        this._changeHandler = Function.createDelegate(this, this._onChange);
        $addHandler(e, "change",this._changeHandler);
        
        if (this._parentControlID) {
            this._parentElement = $get(this._parentControlID);
                    
            if (!this._parentElement) {
                Sys.Debug.fail(String.format(Sys.Extended.UI.Resources.CascadingDropDown_NoParentElement, this._parentControlID));
            }
            
            if (this._parentElement) {
                e.CascadingDropDownParentControlID = this._parentControlID;
                this._parentChangeHandler = Function.createDelegate(this, this._onParentChange);
                
                $addHandler(this._parentElement, "change", this._parentChangeHandler);
                if (!this._parentElement.childDropDown) {
                    this._parentElement.childDropDown = new Array();
                }
                this._parentElement.childDropDown.push(this);
            }
        }

        this._onParentChange(null, true);
    },

    dispose : function() {
        /// <summary>
        /// Dispose the behavior
        /// </summary>
        /// <returns />

        var e = this.get_element();

        if (this._changeHandler) {            
            $removeHandler(e, "change", this._changeHandler);
            this._changeHandler = null;
        }

        if (this._parentChangeHandler) {
            if (this._parentElement) {                
                $removeHandler(this._parentElement, "change", this._parentChangeHandler);
            }
            this._parentChangeHandler = null;
        }

        Sys.Extended.UI.CascadingDropDownBehavior.callBaseMethod(this, 'dispose');
    },

    _clearItems : function() {
        /// <summary>
        /// Clear the items from the drop down
        /// </summary>
        /// <returns />

        var e = this.get_element();
        while (0 < e.options.length) {
            e.remove(0);
        }
    },

    _isPopulated : function() {
        /// <summary>
        /// Determine whether the drop down has any items
        /// </summary>
        /// <returns type="Boolean">
        /// Whether the drop down has any items
        /// </returns>

        var items = this.get_element().options.length;

        if (this._promptText) {
            return items > 1;
        } else {
            return items > 0;
        }
    },

    _setOptions : function(list, inInit, gettingList) {
        /// <summary>
        /// Set the contents of the DropDownList to the specified list
        /// </summary>
        /// <param name="list" mayBeNull="true" elementType="Object">
        /// Array of options (where each option has name and value properties)
        /// </param>
        /// <param name="inInit" type="Boolean" optional="true">
        /// Whether this is being called from the initialize method
        /// </param>
        /// <param name="gettingList" type="Boolean" optional="true">
        /// Whether we are fetching the list of options from the web service
        /// </param>
        /// <returns />

        if (!this.get_isInitialized()) {
            return;
        }

        var e = this.get_element();
        this._clearItems();

        var headerText;
        var headerValue = "";
        if (gettingList && this._loadingText) {
            headerText = this._loadingText;
            if ( this._selectedValue) {
                headerValue = this._selectedValue;
            }
        } else if (!gettingList && list && (0 == list.length) && (null != this._emptyText)) {
            headerText = this._emptyText;
            if (this._emptyValue) {
                headerValue = this._emptyValue;
            }
        } else if (this._promptText) {
            headerText = this._promptText;
            if (this._promptValue) {
                headerValue = this._promptValue;
            }
        }
        var optionElement; 
        if (headerText) {
            optionElement = new Option(headerText, headerValue);
            e.options[e.options.length] = optionElement;
        }

        var selectedValueOption = null,
            defaultIndex = -1;

        if (list) {
            for (i = 0 ; i < list.length ; i++) {
                var item = list[i], 
                    listItemName = item.name,
                    listItemValue = item.value,
                    listItemOptionTitle = item.optionTitle;
                
                if (item.isDefaultValue) {
                    defaultIndex = i;
                    if (this._promptText) {
                        defaultIndex++;
                    }
                }

                optionElement = new Option(listItemName, listItemValue);
                if (listItemValue == this._selectedValue) {
                    selectedValueOption = optionElement;
                }
                if (listItemOptionTitle) {
                    optionElement.setAttribute('title', listItemOptionTitle);
                }

                e.options[e.options.length] = optionElement;
            }
            if (selectedValueOption) {
                selectedValueOption.selected = true;
            }
        }
        
        if (selectedValueOption) {
            this.set_SelectedValue(e.options[e.selectedIndex].value, e.options[e.selectedIndex].text);
        } else if (!selectedValueOption && defaultIndex != -1) {
            e.options[defaultIndex].selected = true;
            this.set_SelectedValue(e.options[defaultIndex].value, e.options[defaultIndex].text);
        } else if (!inInit && !selectedValueOption && !gettingList && !this._promptText && (e.options.length > 0)) {
            this.set_SelectedValue(e.options[0].value, e.options[0].text);
        } else if (!inInit && !selectedValueOption && !gettingList) {
            this.set_SelectedValue('', '');
        }

        if (e.childDropDown && !gettingList) {
            for(i = 0; i < e.childDropDown.length; i++) {
                e.childDropDown[i]._onParentChange();
            }
        }
        else {
            if (list && (Sys.Browser.agent !== Sys.Browser.Safari) && (Sys.Browser.agent !== Sys.Browser.Opera)) {
                if (document.createEvent) {
                    var onchangeEvent = document.createEvent('HTMLEvents');
                    onchangeEvent.initEvent('change', true, false);
                    this.get_element().dispatchEvent(onchangeEvent);
                } else if( document.createEventObject ) {
                    this.get_element().fireEvent('onchange');
                }
            }
        }

        if (this._loadingText || this._promptText || this._emptyText) {
            e.disabled = !list || (0 == list.length);
        }

        this.raisePopulated(Sys.EventArgs.Empty);
    },

    _onChange : function() {
        /// <summary>
        /// Handler for the drop down's change event
        /// </summary>
        /// <returns />

        if (!this._isPopulated()) {
            return;
        }

        var e = this.get_element();
        
        if ((-1 != e.selectedIndex) && !(this._promptText && (0 == e.selectedIndex))) {
            this.set_SelectedValue(e.options[e.selectedIndex].value, e.options[e.selectedIndex].text, e.options[e.selectedIndex].title);
        } else {
            this.set_SelectedValue('', '');
        }
    },

    _onParentChange : function(evt, inInit) {
        /// <summary>
        /// Handler for the parent drop down's change event
        /// </summary>
        /// <param name="evt" type="Object">
        /// Set by the browser when called as an event handler (unused here)
        /// </param>
        /// <param name="inInit" type="Boolean">
        /// Whether this is being called from the initialize method
        /// </param>
        /// <returns />

        var e = this.get_element();

        var knownCategoryValues = '';
        var parentControlID = this._parentControlID;
        while (parentControlID) {
            var parentElement = $get(parentControlID);
            if (parentElement && (-1 != parentElement.selectedIndex)){
                var selectedValue = parentElement.options[parentElement.selectedIndex].value;
                
                if (selectedValue && selectedValue != "") {
                    knownCategoryValues = parentElement.CascadingDropDownCategory + ':' + selectedValue + ';' + knownCategoryValues;
                    parentControlID = parentElement.CascadingDropDownParentControlID;
                    continue;
                }
            } 
            break;
        }
        
        if (knownCategoryValues != '' && this._lastParentValues == knownCategoryValues) {
            return;
        }
        
        this._lastParentValues = knownCategoryValues;
        
        if (knownCategoryValues == '' && this._parentControlID) {
            this._setOptions(null, inInit);
            return;
        }

        this._setOptions(null, inInit, true);

        if (this._servicePath && this._serviceMethod) {
            var eventArgs = new Sys.CancelEventArgs();
            this.raisePopulating(eventArgs);
            if (eventArgs.get_cancel()) {
                return;
            }
            
            var params = { knownCategoryValues:knownCategoryValues, category:this._category };
            if (this._useContextKey) {
                params.contextKey = this._contextKey;
            }
        
            Sys.Net.WebServiceProxy.invoke(this._servicePath, this._serviceMethod, false, params,
                Function.createDelegate(this, this._onMethodComplete), Function.createDelegate(this, this._onMethodError));
            $common.updateFormToRefreshATDeviceBuffer();
        }
    },

    _onMethodComplete : function(result, userContext, methodName) {
        this._setOptions(result);
    },

    _onMethodError : function(webServiceError, userContext, methodName) {
        if (webServiceError.get_timedOut()) {
            this._setOptions( [ this._makeNameValueObject(Sys.Extended.UI.Resources.CascadingDropDown_MethodTimeout) ] );
        } else {
            this._setOptions( [ this._makeNameValueObject(String.format(Sys.Extended.UI.Resources.CascadingDropDown_MethodError, webServiceError.get_statusCode())) ] );
        }
    },

    _makeNameValueObject : function(message) {
        /// <summary>
        /// Create an object with name and value properties set to the provided message
        /// </summary>
        /// <param name="message" type="String">
        /// Message
        /// </param>
        /// <returns type="Object">
        /// Object with name and value properties set to the message
        /// </returns>

        return { 'name': message, 'value': message };
    },

    get_ParentControlID : function() {
        /// <value type="String">
        /// ID of the parent drop down in a hierarchy of drop downs
        /// </value>
       return this._parentControlID;
    },
    set_ParentControlID : function(value) {
        if (this._parentControlID != value) {
            this._parentControlID = value;
            this.raisePropertyChanged('ParentControlID');
        }
    },

    get_Category : function() {
        /// <value type="String">
        /// Category of this drop down
        /// </value>
        return this._category;
    },
    set_Category : function(value) {
        if (this._category != value) {
            this._category = value;
            this.raisePropertyChanged('Category');
        }
    },

    get_PromptText : function() {
        /// <value type="String">
        /// Prompt text displayed as the first entry in the drop down
        /// </value>
        return this._promptText;
    },
    set_PromptText : function(value) {
        if (this._promptText != value) {
            this._promptText = value;
            this.raisePropertyChanged('PromptText');
        }
    },

    get_PromptValue : function() {
        /// <value type="String">
        /// Value for the option displayed by a DropDownList showing the PromptText
        /// </value>
        return this._promptValue;
    },
    set_PromptValue : function(value) {
        if (this._promptValue != value) {
            this._promptValue = value;
            this.raisePropertyChanged('PromptValue');
        }
    },

    get_EmptyText : function() {
        /// <value type="String">
        /// Text for the option displayed when the list is empty
        /// </value>
        return this._emptyText;
    },
    set_EmptyText : function(value) {
        if (this._emptyText != value) {
            this._emptyText = value;
            this.raisePropertyChanged('EmptyText');
        }
    },

    get_EmptyValue : function() {
        /// <value type="String">
        /// Value for the option displayed when the list is empty
        /// </value>
        return this._emptyValue;
    },
    set_EmptyValue : function(value) {
        if (this._emptyValue != value) {
            this._emptyValue = value;
            this.raisePropertyChanged('EmptyValue');
        }
    },

    get_LoadingText : function() {
        /// <value type="String">
        /// Loading text to to be displayed when getting the drop down's values from the web service
        /// </value>
        return this._loadingText;
    },
    set_LoadingText : function(value) {
        if (this._loadingText != value) {
            this._loadingText = value;
            this.raisePropertyChanged('LoadingText');
        }
    },

    get_SelectedValue : function() {
         /// <value type="String">
         /// Selected value of the drop down
         /// </value>
        return this._selectedValue;
    },
    set_SelectedValue : function(value, text, title) {
        if (this._selectedValue != value) {
            if (!text) {
                var i = value.indexOf(':::');
                if (-1 != i) {
                    text = value.slice(i + 3);
                    value = value.slice(0, i);

                    i = text.indexOf(':::');
                    if (-1 != i) {
                        title = text.slice(i + 3);
                        text = text.slice(0, i);
                    }
                }
            }
            var oldValue = this._selectedValue;
            this._selectedValue = value;
            this.raisePropertyChanged('SelectedValue');
            this.raiseSelectionChanged(new Sys.Extended.UI.CascadingDropDownSelectionChangedEventArgs(oldValue, value));
        }
        Sys.Extended.UI.CascadingDropDownBehavior.callBaseMethod(this, 'set_ClientState', [ this._selectedValue+':::' + text+':::' + (title ? (':::' + title) : '') ]);
    },

    get_ServicePath : function() {
        /// <value type="String" mayBeNull="true">
        /// Path to the web service
        /// </value>
        return this._servicePath;
    },
    set_ServicePath : function(value) {
        if (this._servicePath != value) {
            this._servicePath = value;
            this.raisePropertyChanged('ServicePath');
        }
    },

    get_ServiceMethod : function() {
        /// <value type="String">
        /// Name of the method to invoke on the web service
        /// </value>
        return this._serviceMethod;
    },
    set_ServiceMethod : function(value) {
        if (this._serviceMethod != value) {
            this._serviceMethod = value;
            this.raisePropertyChanged('ServiceMethod');
        }
    },
    
    get_contextKey : function() {
        /// <value type="String" mayBeNull="true">
        /// User/page specific context provided to an optional overload of the
        /// web method described by ServiceMethod/ServicePath.  If the context
        /// key is used, it should have the same signature with an additional
        /// parameter named contextKey of type string.
        /// </value>
        return this._contextKey;
    },
    set_contextKey : function(value) {
        if (this._contextKey != value) {
            this._contextKey = value;
            this.set_useContextKey(true);
            this.raisePropertyChanged('contextKey');
        }
    },
    
    get_useContextKey : function() {
        /// <value type="Boolean">
        /// Whether or not the ContextKey property should be used.  This will be
        /// automatically enabled if the ContextKey property is ever set
        /// (on either the client or the server).  If the context key is used,
        /// it should have the same signature with an additional parameter
        /// named contextKey of type string.
        /// </value>
        return this._useContextKey;
    },
    set_useContextKey : function(value) {
        if (this._useContextKey != value) {
            this._useContextKey = value;
            this.raisePropertyChanged('useContextKey');
        }
    },
    
    add_selectionChanged : function(handler) {
        /// <summary>
        /// Add an event handler for the selectionChanged event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('selectionChanged', handler);
    },
    remove_selectionChanged : function(handler) {
        /// <summary>
        /// Remove an event handler from the selectionChanged event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('selectionChanged', handler);
    },
    raiseSelectionChanged : function(eventArgs) {
        /// <summary>
        /// Raise the selectionChanged event
        /// </summary>
        /// <param name="eventArgs" type="Sys.Extended.UI.CascadingDropDownSelectionChangedEventArgs" mayBeNull="false">
        /// Event arguments for the selectionChanged event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('selectionChanged');
        if (handler) {
            handler(this, eventArgs);
        }
    },
    
    add_populating : function(handler) {
        /// <summary>
        /// Add an event handler for the populating event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('populating', handler);
    },
    remove_populating : function(handler) {
        /// <summary>
        /// Remove an event handler from the populating event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('populating', handler);
    },
    raisePopulating : function(eventArgs) {
        /// <summary>
        /// Raise the populating event
        /// </summary>
        /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
        /// Event arguments for the populating event
        /// </param>
        /// <returns />
        /// <remarks>
        /// The populating event can be used to provide custom data to
        /// CascadingDropDown instead of using a web service.  Just cancel the
        /// event (using the CancelEventArgs) and pass your own data to the
        /// _setOptions method.
        /// </remarks>
        
        var handler = this.get_events().getHandler('populating');
        if (handler) {
            handler(this, eventArgs);
        }
    },
    
    add_populated : function(handler) {
        /// <summary>
        /// Add an event handler for the populated event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('populated', handler);
    },
    remove_populated : function(handler) {
        /// <summary>
        /// Remove an event handler from the populated event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('populated', handler);
    },
    raisePopulated : function(eventArgs) {
        /// <summary>
        /// Raise the populated event
        /// </summary>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="false">
        /// Event arguments for the populated event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('populated');
        if (handler) {
            handler(this, eventArgs);
        }
    }
}
Sys.Extended.UI.CascadingDropDownBehavior.registerClass('Sys.Extended.UI.CascadingDropDownBehavior', Sys.Extended.UI.BehaviorBase);
Sys.registerComponent(Sys.Extended.UI.CascadingDropDownBehavior, { name: "cascadingDropDown" });

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedBase", "ExtendedCommon", "WebServices"], execute);
}
else {
    execute();
}

})();
��// (c) 2010 CodePlex Foundation



/// <reference name="MicrosoftAjax.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />
/// <reference path="../Compat/Timer/Timer.js" />
/// <reference path="../Animation/Animations.js" />
/// <reference path="../Animation/AnimationBehavior.js" />
/// <reference path="../PopupExtender/PopupBehavior.js" />

(function() {
var scriptName = "ExtendedAutoComplete";

function execute() {

Type.registerNamespace('Sys.Extended.UI');

Sys.Extended.UI.AutoCompleteBehavior = function(element) {
    /// <summary>
    /// This behavior can be attached to a textbox to enable auto-complete/auto-suggest scenarios.
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" DomElement="true" mayBeNull="false">
    /// DOM Element the behavior is associated with
    /// </param>
    /// <returns />
    Sys.Extended.UI.AutoCompleteBehavior.initializeBase(this, [element]);
    
    this._servicePath = null;
    
    this._serviceMethod = null;
    
    this._contextKey = null;
    
    this._useContextKey = false;
    this._minimumPrefixLength = 3;
    this._completionSetCount = 10;
    this._completionInterval = 1000;        
    this._completionListElementID = null;
    this._completionListElement = null;
    this._textColor = 'windowtext';
    this._textBackground = 'window';
    this._popupBehavior = null;
    this._popupBehaviorHiddenHandler = null;
    this._onShowJson = null;
    this._onHideJson = null;
    this._timer = null;
    this._cache = null;
    this._currentPrefix = null;
    this._selectIndex = -1;
    this._focusHandler = null;
    this._blurHandler = null;
    this._bodyClickHandler = null;
    this._completionListBlurHandler = null;        
    this._keyDownHandler = null;
    this._mouseDownHandler = null;
    this._mouseUpHandler = null;
    this._mouseOverHandler = null;
    this._tickHandler = null;
    this._enableCaching = true;
    this._flyoutHasFocus = false;
    this._textBoxHasFocus = false;
    this._completionListCssClass = null;
    this._completionListItemCssClass = null;
    this._highlightedItemCssClass = null;
    this._delimiterCharacters = null;
    this._firstRowSelected = false;
    this._showOnlyCurrentWordInCompletionListItem = false;
    this._webRequest = null;  
    
}
Sys.Extended.UI.AutoCompleteBehavior.prototype = {
    initialize: function() {
        /// <summary>
        /// Initializes the autocomplete behavior.
        /// </summary>
        /// <returns />
        Sys.Extended.UI.AutoCompleteBehavior.callBaseMethod(this, 'initialize');
        $common.prepareHiddenElementForATDeviceUpdate();

        this._popupBehaviorHiddenHandler = Function.createDelegate(this, this._popupHidden);
        this._tickHandler = Function.createDelegate(this, this._onTimerTick);
        this._focusHandler = Function.createDelegate(this, this._onGotFocus);
        this._blurHandler = Function.createDelegate(this, this._onLostFocus);
        this._keyDownHandler = Function.createDelegate(this, this._onKeyDown);
        this._mouseDownHandler = Function.createDelegate(this, this._onListMouseDown);
        this._mouseUpHandler = Function.createDelegate(this, this._onListMouseUp);
        this._mouseOverHandler = Function.createDelegate(this, this._onListMouseOver);
        this._completionListBlurHandler = Function.createDelegate(this, this._onCompletionListBlur);
        this._bodyClickHandler = Function.createDelegate(this, this._onCompletionListBlur);


        this._timer = new Sys.Timer();
        this.initializeTimer(this._timer);

        var element = this.get_element();
        this.initializeTextBox(element);

        if (this._completionListElementID !== null)
            this._completionListElement = $get(this._completionListElementID);
        if (this._completionListElement == null) {
            this._completionListElement = document.createElement('ul');
            this._completionListElement.id = this.get_id() + '_completionListElem';

            if (Sys.Browser.agent === Sys.Browser.Safari) {
                document.body.appendChild(this._completionListElement);
            } else {
                element.parentNode.insertBefore(this._completionListElement, element.nextSibling);
            }
        }
        this.initializeCompletionList(this._completionListElement);

        this._popupBehavior = $create(Sys.Extended.UI.PopupBehavior,
                { 'id': this.get_id() + 'PopupBehavior', 'parentElement': element, "positioningMode": Sys.Extended.UI.PositioningMode.BottomLeft }, null, null, this._completionListElement);
        this._popupBehavior.add_hidden(this._popupBehaviorHiddenHandler);

        if (this._onShowJson) {
            this._popupBehavior.set_onShow(this._onShowJson);
        }
        if (this._onHideJson) {
            this._popupBehavior.set_onHide(this._onHideJson);
        }
    },

    dispose: function() {
        /// <summary>
        /// Disposes the autocomplete behavior
        /// </summary>
        /// <returns />

        this._onShowJson = null;
        this._onHideJson = null;
        if (this._popupBehavior) {
            if (this._popupBehaviorHiddenHandler) {
                this._popupBehavior.remove_hidden(this._popupBehaviorHiddenHandler);
            }
            this._popupBehavior.dispose();
            this._popupBehavior = null;
        }
        if (this._timer) {
            this._timer.dispose();
            this._timer = null;
        }

        var element = this.get_element();
        if (element) {
            $removeHandler(element, "focus", this._focusHandler);
            $removeHandler(element, "blur", this._blurHandler);
            $removeHandler(element, "keydown", this._keyDownHandler);
            $removeHandler(this._completionListElement, 'blur', this._completionListBlurHandler);
            $removeHandler(this._completionListElement, 'mousedown', this._mouseDownHandler);
            $removeHandler(this._completionListElement, 'mouseup', this._mouseUpHandler);
            $removeHandler(this._completionListElement, 'mouseover', this._mouseOverHandler);
        }
        if (this._bodyClickHandler) {
            $removeHandler(document.body, 'click', this._bodyClickHandler);
            this._bodyClickHandler = null;
        }

        this._popupBehaviorHiddenHandler = null;
        this._tickHandler = null;
        this._focusHandler = null;
        this._blurHandler = null;
        this._keyDownHandler = null;
        this._completionListBlurHandler = null;
        this._mouseDownHandler = null;
        this._mouseUpHandler = null;
        this._mouseOverHandler = null;

        Sys.Extended.UI.AutoCompleteBehavior.callBaseMethod(this, 'dispose');
    },

    initializeTimer: function(timer) {
        /// <summary>
        /// Initializes the timer
        /// </summary>
        /// <param name="timer" type="Sys.UI.Timer" DomElement="false" mayBeNull="false" />
        /// <returns />
        timer.set_interval(this._completionInterval);
        timer.add_tick(this._tickHandler);
    },

    initializeTextBox: function(element) {
        /// <summary>
        /// Initializes the textbox
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" DomElement="true" mayBeNull="false" />
        /// <returns />    
        element.autocomplete = "off";
        $addHandler(element, "focus", this._focusHandler);
        $addHandler(element, "blur", this._blurHandler);
        $addHandler(element, "keydown", this._keyDownHandler);
    },

    initializeCompletionList: function(element) {
        /// <summary>
        /// Initializes the autocomplete list element
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" DomElement="true" mayBeNull="false" />
        /// <returns />        


        if (this._completionListCssClass) {
            Sys.UI.DomElement.addCssClass(element, this._completionListCssClass);
        } else {
            var completionListStyle = element.style;
            completionListStyle.textAlign = 'left';
            completionListStyle.visibility = 'hidden';
            completionListStyle.cursor = 'default';
            completionListStyle.listStyle = 'none';
            completionListStyle.padding = '0px';
            completionListStyle.margin = '0px! important';
            if (Sys.Browser.agent === Sys.Browser.Safari) {
                completionListStyle.border = 'solid 1px gray';
                completionListStyle.backgroundColor = 'white';
                completionListStyle.color = 'black';
            } else {
                completionListStyle.border = 'solid 1px buttonshadow';
                completionListStyle.backgroundColor = this._textBackground;
                completionListStyle.color = this._textColor;
            }
        }
        $addHandler(element, "mousedown", this._mouseDownHandler);
        $addHandler(element, "mouseup", this._mouseUpHandler);
        $addHandler(element, "mouseover", this._mouseOverHandler);
        $addHandler(element, "blur", this._completionListBlurHandler);
        $addHandler(document.body, 'click', this._bodyClickHandler);
    },

    _currentCompletionWord: function() {
        var element = this.get_element();
        var elementValue = element.value;
        var word = elementValue;

        if (this.get_isMultiWord()) {
            var startIndex = this._getCurrentWordStartIndex();
            var endIndex = this._getCurrentWordEndIndex(startIndex);

            if (endIndex <= startIndex) {
                word = elementValue.substring(startIndex);
            } else {
                word = elementValue.substring(startIndex, endIndex);
            }
        }

        return word;
    },

    _getCursorIndex: function() {
        return this.get_element().selectionStart;
    },

    _getCurrentWordStartIndex: function() {
        var element = this.get_element();
        var elementText = element.value.substring(0, this._getCursorIndex());

        var index = 0;
        var lastIndex = -1;

        for (var i = 0; i < this._delimiterCharacters.length; ++i) {
            var curIndex = elementText.lastIndexOf(this._delimiterCharacters.charAt(i));
            if (curIndex > lastIndex) {
                lastIndex = curIndex;
            }
        }

        index = lastIndex;
        if (index >= this._getCursorIndex()) {
            index = 0;
        }

        return index < 0 ? 0 : index + 1;
    },

    _getCurrentWordEndIndex: function(wordStartIndex) {
        var element = this.get_element();
        var elementText = element.value.substring(wordStartIndex);
        var index = 0;

        for (var i = 0; i < this._delimiterCharacters.length; ++i) {
            var curIndex = elementText.indexOf(this._delimiterCharacters.charAt(i));
            if (curIndex > 0 && (curIndex < index || index == 0)) {
                index = curIndex;
            }
        }

        return index <= 0 ? element.value.length : index + wordStartIndex;
    },

    get_isMultiWord: function() {
        /// <value type="Boolean" mayBeNull="false">
        /// Whether the behavior is currently in multi-word mode
        /// </value>
        return (this._delimiterCharacters != null) && (this._delimiterCharacters != '');
    },

    _getTextWithInsertedWord: function(wordToInsert) {
        var text = wordToInsert;
        var replaceIndex = 0;
        var element = this.get_element();
        var originalText = element.value;

        if (this.get_isMultiWord()) {
            var startIndex = this._getCurrentWordStartIndex();
            var endIndex = this._getCurrentWordEndIndex(startIndex);
            var prefix = '';
            var suffix = '';

            if (startIndex > 0) {
                prefix = originalText.substring(0, startIndex);
            }
            if (endIndex > startIndex) {
                suffix = originalText.substring(endIndex);
            }

            text = prefix + wordToInsert + suffix;
        }

        return text;
    },

    _hideCompletionList: function() {
        /// <summary>
        /// Hides the autocomplete flyout list
        /// </summary>
        /// <returns />

        var eventArgs = new Sys.CancelEventArgs();
        this.raiseHiding(eventArgs);
        if (eventArgs.get_cancel()) {
            return;
        }

        this.hidePopup();
    },

    showPopup: function() {
        /// <summary>
        /// Show the completion list popup
        /// </summary>
        /// <remarks>
        /// If you cancel the showing event, you should still call
        /// showPopup to ensure consistency of the internal state
        /// </remarks>
        this._popupBehavior.show();
        this.raiseShown(Sys.EventArgs.Empty);
    },

    hidePopup: function() {
        /// <summary>
        /// Hide the completion list popup
        /// </summary>
        /// <remarks>
        /// If you cancel the hiding event, you should still
        /// call hidePopup to ensure consistency of the internal
        /// state
        /// </remarks>

        if (this._popupBehavior) {
            this._popupBehavior.hide();
        } else {
            this._popupHidden();
        }
    },

    _popupHidden: function() {
        /// <summary>
        /// Clean up the completion list popup after it has been hidden
        /// </summary>

        this._completionListElement.innerHTML = '';
        this._selectIndex = -1;
        this._flyoutHasFocus = false;

        this.raiseHidden(Sys.EventArgs.Empty);
    },

    _highlightItem: function(item) {
        /// <summary>
        /// Highlights the specified item
        /// </summary>
        /// <param name="item" type="Sys.UI.DomElement" DomElement="true" mayBeNull="false" />
        /// <returns />

        var children = this._completionListElement.childNodes;

        for (var i = 0; i < children.length; i++) {
            var child = children[i];
            if (child._highlighted) {
                if (this._completionListItemCssClass) {
                    Sys.UI.DomElement.removeCssClass(child, this._highlightedItemCssClass);
                    Sys.UI.DomElement.addCssClass(child, this._completionListItemCssClass);
                } else {
                    if (Sys.Browser.agent === Sys.Browser.Safari) {
                        child.style.backgroundColor = 'white';
                        child.style.color = 'black';
                    } else {
                        child.style.backgroundColor = this._textBackground;
                        child.style.color = this._textColor;
                    }
                }
                this.raiseItemOut(new Sys.Extended.UI.AutoCompleteItemEventArgs(child, child.firstChild.nodeValue, child._value));
            }
        }

        if (this._highlightedItemCssClass) {
            Sys.UI.DomElement.removeCssClass(item, this._completionListItemCssClass);
            Sys.UI.DomElement.addCssClass(item, this._highlightedItemCssClass);
        } else {
            if (Sys.Browser.agent === Sys.Browser.Safari) {
                item.style.backgroundColor = 'lemonchiffon';
            } else {
                item.style.backgroundColor = 'highlight';
                item.style.color = 'highlighttext';
            }

        }
        item._highlighted = true;
        this.raiseItemOver(new Sys.Extended.UI.AutoCompleteItemEventArgs(item, item.firstChild.nodeValue, item._value));
    },

    /// <summary>
    /// Handler for the blur event on the autocomplete flyout.
    /// </summary>
    /// <param name="ev" type="Sys.UI.DomEvent" DomElement="false" mayBeNull="false" />
    /// <returns />    
    _onCompletionListBlur: function(ev) {
        this._hideCompletionList();
    },

    _onListMouseDown: function(ev) {
        /// <summary>
        /// Handler for the mousedown event on the autocomplete flyout.
        /// </summary>
        /// <param name="ev" type="Sys.UI.DomEvent" DomElement="false" mayBeNull="false" />
        /// <returns />     
        if (ev.target !== this._completionListElement) {
            this._setText(ev.target);
            this._flyoutHasFocus = false;
        } else { // focus is still on the flyout and we do not want to hide it
            this._flyoutHasFocus = true;
        }
    },

    _onListMouseUp: function(ev) {
        /// <summary>
        /// Handler for the mouseup event on the autocomplete flyout.
        /// </summary>
        /// <param name="ev" type="Sys.UI.DomEvent" DomElement="false" mayBeNull="false" />
        /// <returns />      
        try { this.get_element().focus(); } catch (e) { }
    },

    _onListMouseOver: function(ev) {
        /// <summary>
        /// Handler for the mouseover event on the autocomplete flyout.
        /// </summary>
        /// <param name="ev" type="Sys.UI.DomEvent" DomElement="false" mayBeNull="false" />
        /// <returns />      
        var item = ev.target;
        if (item !== this._completionListElement) {
            var children = this._completionListElement.childNodes;
            for (var i = 0; i < children.length; ++i) {
                if (item === children[i]) {
                    this._highlightItem(item);
                    this._selectIndex = i;
                    break;
                }
            }
        }
    },

    _onGotFocus: function(ev) {
        /// <summary>
        /// Handler for textbox focus event.
        /// </summary>
        /// <param name="ev" type="Sys.UI.DomEvent" DomElement="false" mayBeNull="false" />
        /// <returns />      
        this._textBoxHasFocus = true;
        if (this._flyoutHasFocus) {
            this._hideCompletionList();
        }
        if ((this._minimumPrefixLength == 0) && (!this.get_element().value)) {
            this._timer.set_enabled(true);
        }
    },

    _onKeyDown: function(ev) {
        /// <summary>
        /// Handler for the textbox keydown event.
        /// </summary>
        /// <param name="ev" type="Sys.UI.DomEvent" DomElement="false" mayBeNull="false" />
        /// <returns />

        this._textBoxHasFocus = true;

        this._timer.set_enabled(false);
        var k = ev.keyCode ? ev.keyCode : ev.rawEvent.keyCode;
        if (k === Sys.UI.Key.esc) {
            this._hideCompletionList();
            ev.preventDefault();
        }
        else if (k === Sys.UI.Key.up) {
            if (this._selectIndex > 0) {
                this._selectIndex--;
                this._handleScroll(this._completionListElement.childNodes[this._selectIndex], this._selectIndex);
                this._highlightItem(this._completionListElement.childNodes[this._selectIndex]);
                ev.stopPropagation();
                ev.preventDefault();
            }
        }
        else if (k === Sys.UI.Key.down) {
            if (this._selectIndex < (this._completionListElement.childNodes.length - 1)) {
                this._selectIndex++;
                this._handleScroll(this._completionListElement.childNodes[this._selectIndex], this._selectIndex);
                this._highlightItem(this._completionListElement.childNodes[this._selectIndex]);
                ev.stopPropagation();
                ev.preventDefault();
            }
        }
        else if (k === Sys.UI.Key.enter) {
            if (this._selectIndex !== -1) {
                this._setText(this._completionListElement.childNodes[this._selectIndex]);
                ev.preventDefault();
            } else {
                this.hidePopup();
            }
        }
        else if (k === Sys.UI.Key.tab) {
            if (this._selectIndex !== -1) {
                this._setText(this._completionListElement.childNodes[this._selectIndex]);
            }
        }
        else {
            this._timer.set_enabled(true);
        }
    },

    _handleScroll: function(element, index) {
        /// <summary>
        /// Method to determine if an item is in view or not
        /// </summary>
        /// <returns />
        /// <param name="element" type="Sys.UI.DomElement" DomElement="true" mayBeNull="false" />
        /// <param name="index" type="Number" DomElement="false" mayBeNull="true" />        
        var flyout = this._completionListElement;
        var elemBounds = $common.getBounds(element);
        var numItems = this._completionListElement.childNodes.length;
        if (((elemBounds.height * index) - (flyout.clientHeight + flyout.scrollTop)) >= 0) {
            flyout.scrollTop += (((elemBounds.height * index) - (flyout.clientHeight + flyout.scrollTop)) + elemBounds.height);
        }
        if (((elemBounds.height * (numItems - (index + 1))) - (flyout.scrollHeight - flyout.scrollTop)) >= 0) {
            flyout.scrollTop -= (((elemBounds.height * (numItems - (index + 1))) - (flyout.scrollHeight - flyout.scrollTop)) + elemBounds.height);
        }

        if (flyout.scrollTop % elemBounds.height !== 0) {
            if (((elemBounds.height * (index + 1)) - (flyout.clientHeight + flyout.scrollTop)) >= 0) {
                flyout.scrollTop -= (flyout.scrollTop % elemBounds.height);
            } else { // an element is partially displayed on the top 
                flyout.scrollTop += (elemBounds.height - (flyout.scrollTop % elemBounds.height));
            }
        }

    },

    _handleFlyoutFocus: function() {
        /// <summary>
        /// Method to handle flyout focus if textbox loses focus.
        /// </summary>
        /// <returns />   
        if (!this._textBoxHasFocus) {
            if (!this._flyoutHasFocus) {
                if (this._webRequest) {
                    this._webRequest.get_executor().abort();
                    this._webRequest = null;
                }
                this._hideCompletionList();
            } else {
            }
        }
    },

    _onLostFocus: function() {
        /// <summary>
        /// Handler textbox blur event.
        /// </summary>
        /// <returns />      
        this._textBoxHasFocus = false;
        this._timer.set_enabled(false);
        /* the rest of the onblur handling will be done in
        this method after a minor delay to ensure we do not close the flyout 
        if a user clicks on its scroll bars for example */
        window.setTimeout(Function.createDelegate(this, this._handleFlyoutFocus), 500);
    },

    _onMethodComplete: function(result, context) {
        /// <summary>
        /// Handler invoked when the webservice call is completed.
        /// </summary>
        /// <param name="result" type="Object" DomElement="false" mayBeNull="true" />
        /// <param name="context" type="String" DomElement="false" mayBeNull="true" />        
        /// <returns /> 
        this._webRequest = null; // clear out our saved WebRequest object    
        this._update(context, result, /* cacheResults */true);
    },

    _onMethodFailed: function(err, response, context) {
        /// <summary>
        /// Handler invoked when the webservice call fails, currently a noop
        /// </summary>
        /// <param name="err" type="Object" DomElement="false" mayBeNull="true" />        
        /// <param name="result" type="Object" DomElement="false" mayBeNull="true" />
        /// <param name="context" type="String" DomElement="false" mayBeNull="true" />
        /// <returns />     
        this._webRequest = null;
    },

    _onTimerTick: function(sender, eventArgs) {
        /// <summary>
        /// Handler invoked when a timer tick occurs
        /// </summary>
        /// <param name="sender" type="Object" mayBeNull="true"/>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="true" />        
        /// <returns />

        this._timer.set_enabled(false);
        if (this._servicePath && this._serviceMethod) {
            var text = this._currentCompletionWord();

            if (text.trim().length < this._minimumPrefixLength) {
                this._currentPrefix = null;
                this._update('', null, /* cacheResults */false);
                return;
            }
            if ((this._currentPrefix !== text) || ((text == "") && (this._minimumPrefixLength == 0))) {
                this._currentPrefix = text;
                if ((text != "") && this._cache && this._cache[text]) {
                    this._update(text, this._cache[text], /* cacheResults */false);
                    return;
                }
                var eventArgs = new Sys.CancelEventArgs();
                this.raisePopulating(eventArgs);
                if (eventArgs.get_cancel()) {
                    return;
                }

                var params = { prefixText: this._currentPrefix, count: this._completionSetCount };
                if (this._useContextKey) {
                    params.contextKey = this._contextKey;
                }

                if (this._webRequest) {
                    this._webRequest.get_executor().abort();
                    this._webRequest = null;
                }
                this._webRequest = Sys.Net.WebServiceProxy.invoke(this.get_servicePath(), this.get_serviceMethod(), false, params,
                                            Function.createDelegate(this, this._onMethodComplete),
                                            Function.createDelegate(this, this._onMethodFailed),
                                            text);
                $common.updateFormToRefreshATDeviceBuffer();
            }
        }
    },

    _setText: function(item) {
        /// <summary>
        /// Method to set the selected autocomplete option on the textbox
        /// </summary>
        /// <param name="item" type="Sys.UI.DomElement" DomElement="true" mayBeNull="true">
        /// Item to select
        /// </param>
        /// <returns />

        var text = (item && item.firstChild) ? item.firstChild.nodeValue : null;
        this._timer.set_enabled(false);

        var element = this.get_element();
        var control = element.control;
        var newText = this._showOnlyCurrentWordInCompletionListItem ? this._getTextWithInsertedWord(text) : text;
        if (control && control.set_text) {
            control.set_text(newText);
        } else {
            element.value = newText;
        }
        $common.tryFireEvent(element, "change");

        this.raiseItemSelected(new Sys.Extended.UI.AutoCompleteItemEventArgs(item, text, item ? item._value : null));

        this._currentPrefix = this._currentCompletionWord();
        this._hideCompletionList();
    },

    _update: function(prefixText, completionItems, cacheResults) {
        /// <summary>
        /// Method to update the status of the autocomplete behavior
        /// </summary>
        /// <param name="prefixText" type="String" DomElement="false" mayBeNull="true" />
        /// <param name="completionItems" type="Object" DomElement="false" mayBeNull="true" />
        /// <param name="cacheResults" type="Object" DomElement="false" mayBeNull="true" />
        /// <returns />       
        if (cacheResults && this.get_enableCaching()) {
            if (!this._cache) {
                this._cache = {};
            }
            this._cache[prefixText] = completionItems;
        }

        if ((!this._textBoxHasFocus) || (prefixText != this._currentCompletionWord())) {
            this._hideCompletionList();
            return;
        }

        if (completionItems && completionItems.length) {
            this._completionListElement.innerHTML = '';
            this._selectIndex = -1;
            var _firstChild = null;
            var text = null;
            var value = null;

            for (var i = 0; i < completionItems.length; i++) {
                var itemElement = null;
                if (this._completionListElementID) {
                    itemElement = document.createElement('div');
                } else {
                    itemElement = document.createElement('li');
                }

                if (_firstChild == null) {
                    _firstChild = itemElement;
                }

                try {
                    var pair = Sys.Serialization.JavaScriptSerializer.deserialize('(' + completionItems[i] + ')');
                    if (pair && pair.First) {
                        text = pair.First;
                        value = pair.Second;
                    }
                    else {
                        text = completionItems[i];
                        value = text;
                    }
                } catch (ex) {
                    text = completionItems[i];
                    value = completionItems[i];
                }


                var optionText = this._showOnlyCurrentWordInCompletionListItem ? text : this._getTextWithInsertedWord(text);
                itemElement.appendChild(document.createTextNode(optionText));
                itemElement._value = value;
                itemElement.__item = '';

                if (this._completionListItemCssClass) {
                    Sys.UI.DomElement.addCssClass(itemElement, this._completionListItemCssClass);
                } else {
                    var itemElementStyle = itemElement.style;
                    itemElementStyle.padding = '0px';
                    itemElementStyle.textAlign = 'left';
                    itemElementStyle.textOverflow = 'ellipsis';
                    if (Sys.Browser.agent === Sys.Browser.Safari) {
                        itemElementStyle.backgroundColor = 'white';
                        itemElementStyle.color = 'black';
                    } else {
                        itemElementStyle.backgroundColor = this._textBackground;
                        itemElementStyle.color = this._textColor;
                    }
                }
                this._completionListElement.appendChild(itemElement);
            }
            var elementBounds = $common.getBounds(this.get_element());
            this._completionListElement.style.width = Math.max(1, elementBounds.width - 2) + 'px';
            this._completionListElement.scrollTop = 0;

            this.raisePopulated(Sys.EventArgs.Empty);

            var eventArgs = new Sys.CancelEventArgs();
            this.raiseShowing(eventArgs);
            if (!eventArgs.get_cancel()) {
                this.showPopup();
                if (this._firstRowSelected && (_firstChild != null)) {
                    this._highlightItem(_firstChild);
                    this._selectIndex = 0;
                }
            }
        } else {
            this._hideCompletionList();
        }
    },

    get_onShow: function() {
        /// <value type="String" mayBeNull="true">
        /// Generic OnShow Animation's JSON definition
        /// </value>
        return this._popupBehavior ? this._popupBehavior.get_onShow() : this._onShowJson;
    },
    set_onShow: function(value) {
        if (this._popupBehavior) {
            this._popupBehavior.set_onShow(value)
        } else {
            this._onShowJson = value;
        }
        this.raisePropertyChanged('onShow');
    },
    get_onShowBehavior: function() {
        /// <value type="Sys.Extended.UI.Animation.GenericAnimationBehavior">
        /// Generic OnShow Animation's behavior
        /// </value>
        return this._popupBehavior ? this._popupBehavior.get_onShowBehavior() : null;
    },
    onShow: function() {
        /// <summary>
        /// Play the OnShow animation
        /// </summary>
        /// <returns />
        if (this._popupBehavior) {
            this._popupBehavior.onShow();
        }
    },

    get_onHide: function() {
        /// <value type="String" mayBeNull="true">
        /// Generic OnHide Animation's JSON definition
        /// </value>
        return this._popupBehavior ? this._popupBehavior.get_onHide() : this._onHideJson;
    },
    set_onHide: function(value) {
        if (this._popupBehavior) {
            this._popupBehavior.set_onHide(value)
        } else {
            this._onHideJson = value;
        }
        this.raisePropertyChanged('onHide');
    },
    get_onHideBehavior: function() {
        /// <value type="Sys.Extended.UI.Animation.GenericAnimationBehavior">
        /// Generic OnHide Animation's behavior
        /// </value>
        return this._popupBehavior ? this._popupBehavior.get_onHideBehavior() : null;
    },
    onHide: function() {
        /// <summary>
        /// Play the OnHide animation
        /// </summary>
        /// <returns />
        if (this._popupBehavior) {
            this._popupBehavior.onHide();
        }
    },

    get_completionInterval: function() {
        /// <value type="Number" integer="true" maybeNull="true">
        /// Auto completion timer interval in milliseconds.
        /// </value>
        return this._completionInterval;
    },
    set_completionInterval: function(value) {
        if (this._completionInterval != value) {
            this._completionInterval = value;
            this.raisePropertyChanged('completionInterval');
        }
    },

    get_completionList: function() {
        /// <value type="Sys.UI.DomElement" domElement="true" maybeNull="true">
        /// List dom element.
        /// </value>
        return this._completionListElement;
    },
    set_completionList: function(value) {
        if (this._completionListElement != value) {
            this._completionListElement = value;
            this.raisePropertyChanged('completionList');
        }
    },

    get_completionSetCount: function() {
        /// <value type="Number" integer="true" maybeNull="true">
        /// Maximum completion set size.
        /// </value>
        return this._completionSetCount;
    },
    set_completionSetCount: function(value) {
        if (this._completionSetCount != value) {
            this._completionSetCount = value;
            this.raisePropertyChanged('completionSetCount');
        }
    },

    get_minimumPrefixLength: function() {
        /// <value type="Number" integer="true" maybeNull="true">
        /// Minimum text prefix length required to call the webservice.
        /// </value>
        return this._minimumPrefixLength;
    },
    set_minimumPrefixLength: function(value) {
        if (this._minimumPrefixLength != value) {
            this._minimumPrefixLength = value;
            this.raisePropertyChanged('minimumPrefixLength');
        }
    },

    get_serviceMethod: function() {
        /// <value type="String" maybeNull="false">
        /// Web service method.
        /// </value>
        return this._serviceMethod;
    },
    set_serviceMethod: function(value) {
        if (this._serviceMethod != value) {
            this._serviceMethod = value;
            this.raisePropertyChanged('serviceMethod');
        }
    },

    get_servicePath: function() {
        /// <value type="String" maybeNull="true">
        /// Web service url.
        /// </value>
        return this._servicePath;
    },
    set_servicePath: function(value) {
        if (this._servicePath != value) {
            this._servicePath = value;
            this.raisePropertyChanged('servicePath');
        }
    },

    get_contextKey: function() {
        /// <value type="String" mayBeNull="true">
        /// User/page specific context provided to an optional overload of the
        /// web method described by ServiceMethod/ServicePath.  If the context
        /// key is used, it should have the same signature with an additional
        /// parameter named contextKey of type string.
        /// </value>
        return this._contextKey;
    },
    set_contextKey: function(value) {
        if (this._contextKey != value) {
            this._contextKey = value;
            this.set_useContextKey(true);
            this.raisePropertyChanged('contextKey');
        }
    },

    get_useContextKey: function() {
        /// <value type="Boolean">
        /// Whether or not the ContextKey property should be used.  This will be
        /// automatically enabled if the ContextKey property is ever set
        /// (on either the client or the server).  If the context key is used,
        /// it should have the same signature with an additional parameter
        /// named contextKey of type string.
        /// </value>
        return this._useContextKey;
    },
    set_useContextKey: function(value) {
        if (this._useContextKey != value) {
            this._useContextKey = value;
            this.raisePropertyChanged('useContextKey');
        }
    },

    get_enableCaching: function() {
        /// <value type="Boolean" maybeNull="true">
        /// Get or sets whether suggestions retrieved from the webservice
        /// should be cached.
        /// </value>
        return this._enableCaching;
    },
    set_enableCaching: function(value) {
        if (this._enableCaching != value) {
            this._enableCaching = value;
            this.raisePropertyChanged('enableCaching');
        }
    },

    get_completionListElementID: function() {
        /// <value type="String" maybeNull="true">
        /// ID of the completion div element.
        /// </value>
        return this._completionListElementID;
    },
    set_completionListElementID: function(value) {
        if (this._completionListElementID != value) {
            this._completionListElementID = value;
            this.raisePropertyChanged('completionListElementID');
        }
    },

    get_completionListCssClass: function() {
        /// <value type="String" maybeNull="true">
        /// Css class name that will be used to style the completion list element.
        /// </value>
        return this._completionListCssClass;
    },
    set_completionListCssClass: function(value) {
        if (this._completionListCssClass != value) {
            this._completionListCssClass = value;
            this.raisePropertyChanged('completionListCssClass');
        }
    },

    get_completionListItemCssClass: function() {
        /// <value type="String" maybeNull="true">
        /// Css class name that will be used to style an item in the completion list.
        /// </value>
        return this._completionListItemCssClass;
    },
    set_completionListItemCssClass: function(value) {
        if (this._completionListItemCssClass != value) {
            this._completionListItemCssClass = value;
            this.raisePropertyChanged('completionListItemCssClass');
        }
    },

    get_highlightedItemCssClass: function() {
        /// <value type="String" maybeNull="true">
        /// Css class name that will be used to style a highlighted item in the list.
        /// </value>
        return this._highlightedItemCssClass;
    },
    set_highlightedItemCssClass: function(value) {
        if (this._highlightedItemCssClass != value) {
            this._highlightedItemCssClass = value;
            this.raisePropertyChanged('highlightedItemCssClass');
        }
    },

    get_delimiterCharacters: function() {
        /// <value type="String">
        /// Gets or sets the character(s) used to seperate words for autocomplete.
        /// </value>
        return this._delimiterCharacters;
    },
    set_delimiterCharacters: function(value) {
        if (this._delimiterCharacters != value) {
            this._delimiterCharacters = value;
            this.raisePropertyChanged('delimiterCharacters');
        }
    },

    get_firstRowSelected: function() {
        /// <value type="Boolean" maybeNull="true">
        /// Flag to determine if the first option in the flyout is selected or not. 
        /// </value>
        return this._firstRowSelected;
    },
    set_firstRowSelected: function(value) {
        if (this._firstRowSelected != value) {
            this._firstRowSelected = value;
            this.raisePropertyChanged('firstRowSelected');
        }
    },

    get_showOnlyCurrentWordInCompletionListItem: function() {
        /// <value type="Boolean">
        /// If Delimiter characters are specified and showOnlyCurrentWordInCompletionListItem is 
        /// set to true, then the completion list displays suggestions just for the current word, 
        /// otherwise, it displays the whole string that will show up in the TextBox if that
        /// item is selected, which is the current default.
        /// </value>
        return this._showOnlyCurrentWordInCompletionListItem;
    },
    set_showOnlyCurrentWordInCompletionListItem: function(value) {
        if (this._showOnlyCurrentWordInCompletionListItem != value) {
            this._showOnlyCurrentWordInCompletionListItem = value;
            this.raisePropertyChanged('showOnlyCurrentWordInCompletionListItem');
        }
    },

    add_populating: function(handler) {
        /// <summary>
        /// Add an event handler for the populating event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('populating', handler);
    },
    remove_populating: function(handler) {
        /// <summary>
        /// Remove an event handler from the populating event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('populating', handler);
    },
    raisePopulating: function(eventArgs) {
        /// <summary>
        /// Raise the populating event
        /// </summary>
        /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
        /// Event arguments for the populating event
        /// </param>
        /// <returns />
        /// <remarks>
        /// The populating event can be used to provide custom data to AutoComplete
        /// instead of using a web service.  Just cancel the event (using the
        /// CancelEventArgs) and pass your own data to the _update method.
        /// </remarks>

        var handler = this.get_events().getHandler('populating');
        if (handler) {
            handler(this, eventArgs);
        }
    },

    add_populated: function(handler) {
        /// <summary>
        /// Add an event handler for the populated event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('populated', handler);
    },
    remove_populated: function(handler) {
        /// <summary>
        /// Remove an event handler from the populated event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('populated', handler);
    },
    raisePopulated: function(eventArgs) {
        /// <summary>
        /// Raise the populated event
        /// </summary>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="false">
        /// Event arguments for the populated event
        /// </param>
        /// <returns />

        var handler = this.get_events().getHandler('populated');
        if (handler) {
            handler(this, eventArgs);
        }
    },

    add_showing: function(handler) {
        /// <summary>
        /// Add an event handler for the showing event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('showing', handler);
    },
    remove_showing: function(handler) {
        /// <summary>
        /// Remove an event handler from the showing event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('showing', handler);
    },
    raiseShowing: function(eventArgs) {
        /// <summary>
        /// Raise the showing event
        /// </summary>
        /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
        /// Event arguments for the showing event
        /// </param>
        /// <returns />

        var handler = this.get_events().getHandler('showing');
        if (handler) {
            handler(this, eventArgs);
        }
    },

    add_shown: function(handler) {
        /// <summary>
        /// Add an event handler for the shown event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('shown', handler);
    },
    remove_shown: function(handler) {
        /// <summary>
        /// Remove an event handler from the shown event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('shown', handler);
    },
    raiseShown: function(eventArgs) {
        /// <summary>
        /// Raise the shown event
        /// </summary>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="false">
        /// Event arguments for the shown event
        /// </param>
        /// <returns />

        var handler = this.get_events().getHandler('shown');
        if (handler) {
            handler(this, eventArgs);
        }
    },

    add_hiding: function(handler) {
        /// <summary>
        /// Add an event handler for the hiding event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('hiding', handler);
    },
    remove_hiding: function(handler) {
        /// <summary>
        /// Remove an event handler from the hiding event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('hiding', handler);
    },
    raiseHiding: function(eventArgs) {
        /// <summary>
        /// Raise the hiding event
        /// </summary>
        /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
        /// Event arguments for the hiding event
        /// </param>
        /// <returns />

        var handler = this.get_events().getHandler('hiding');
        if (handler) {
            handler(this, eventArgs);
        }
    },

    add_hidden: function(handler) {
        /// <summary>
        /// Add an event handler for the hidden event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('hidden', handler);
    },
    remove_hidden: function(handler) {
        /// <summary>
        /// Remove an event handler from the hidden event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('hidden', handler);
    },
    raiseHidden: function(eventArgs) {
        /// <summary>
        /// Raise the hidden event
        /// </summary>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="false">
        /// Event arguments for the hidden event
        /// </param>
        /// <returns />

        var handler = this.get_events().getHandler('hidden');
        if (handler) {
            handler(this, eventArgs);
        }
    },

    add_itemSelected: function(handler) {
        /// <summary>
        /// Add an event handler for the itemSelected event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('itemSelected', handler);
    },
    remove_itemSelected: function(handler) {
        /// <summary>
        /// Remove an event handler from the itemSelected event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('itemSelected', handler);
    },
    raiseItemSelected: function(eventArgs) {
        /// <summary>
        /// Raise the itemSelected event
        /// </summary>
        /// <param name="eventArgs" type="Sys.Extended.UI.AutoCompleteItemEventArgs" mayBeNull="false">
        /// Event arguments for the itemSelected event
        /// </param>
        /// <returns />

        var handler = this.get_events().getHandler('itemSelected');
        if (handler) {
            handler(this, eventArgs);
        }
    },

    add_itemOver: function(handler) {
        /// <summary>
        /// Add an event handler for the itemOver event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('itemOver', handler);
    },
    remove_itemOver: function(handler) {
        /// <summary>
        /// Remove an event handler from the itemOver event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('itemOver', handler);
    },
    raiseItemOver: function(eventArgs) {
        /// <summary>
        /// Raise the itemOver event
        /// </summary>
        /// <param name="eventArgs" type="Sys.Extended.UI.AutoCompleteItemEventArgs" mayBeNull="false">
        /// Event arguments for the itemOver event
        /// </param>
        /// <returns />

        var handler = this.get_events().getHandler('itemOver');
        if (handler) {
            handler(this, eventArgs);
        }
    },

    add_itemOut: function(handler) {
        /// <summary>
        /// Add an event handler for the itemOut event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('itemOut', handler);
    },
    remove_itemOut: function(handler) {
        /// <summary>
        /// Remove an event handler from the itemOut event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('itemOut', handler);
    },
    raiseItemOut: function(eventArgs) {
        /// <summary>
        /// Raise the itemOut event
        /// </summary>
        /// <param name="eventArgs" type="Sys.Extended.UI.AutoCompleteItemEventArgs" mayBeNull="false">
        /// Event arguments for the itemOut event
        /// </param>
        /// <returns />

        var handler = this.get_events().getHandler('itemOut');
        if (handler) {
            handler(this, eventArgs);
        }
    }
}
Sys.Extended.UI.AutoCompleteBehavior.registerClass('Sys.Extended.UI.AutoCompleteBehavior', Sys.Extended.UI.BehaviorBase);
Sys.registerComponent(Sys.Extended.UI.AutoCompleteBehavior, { name: "autoComplete" });
Sys.Extended.UI.AutoCompleteBehavior.descriptor = {
    properties: [   {name: 'completionInterval', type: Number},
                    {name: 'completionList', isDomElement: true},
                    {name: 'completionListElementID', type: String},
                    {name: 'completionSetCount', type: Number},
                    {name: 'minimumPrefixLength', type: Number},
                    {name: 'serviceMethod', type: String},
                    {name: 'servicePath', type: String},
                    {name: 'enableCaching', type: Boolean},
                    {name: 'showOnlyCurrentWordInCompletionListItem', type: Boolean} ]
}


Sys.Extended.UI.AutoCompleteItemEventArgs = function(item, text, value) {
    /// <summary>
    /// Event arguments used when the itemSelected event is raised
    /// </summary>
    /// <param name="item" type="Sys.UI.DomElement" DomElement="true" mayBeNull="true">
    /// Item
    /// </param>
    /// <param name="text" type="String" mayBeNull="true">
    /// Text of the item
    /// </param>
    /// <param name="value" type="String" mayBeNull="true" optional="true">
    /// Value of the item different from text if specifically returned by the webservice
    /// as autocomplete json text/value item(using AutoComplete.CreateAutoCompleteItem); otherwise same as text.
    /// </param>
    Sys.Extended.UI.AutoCompleteItemEventArgs.initializeBase(this);
    
    this._item = item;
    this._text = text;
    this._value = (value !== undefined) ? value : null;
}
Sys.Extended.UI.AutoCompleteItemEventArgs.prototype = {
    get_item : function() {
        /// <value type="Sys.UI.DomElement" DomElement="true" mayBeNull="true">
        /// Item
        /// </value>
        return this._item;
    },
    set_item : function(value) {
        this._item = value;
    },
    
    get_text : function() {
        /// <value type="String" maybeNull="true">
        /// Text of the item
        /// </value>
        return this._text;
    },
    set_text : function(value) {
        this._text = value;
    },
    
    get_value : function() {
        /// <value type="String" maybeNull="true">
        /// Value of the item different from text if specifically returned by the webservice
        /// as autocomplete json text/value item(using AutoComplete.CreateAutoCompleteItem); otherwise same as text.
        /// </value>
        return this._value;
    },
    set_value : function(value) {
        this._value = value;
    }
}
Sys.Extended.UI.AutoCompleteItemEventArgs.registerClass('Sys.Extended.UI.AutoCompleteItemEventArgs', Sys.EventArgs);

} // execute

if (window.Sys && Sys.loader) {
    Sys.loader.registerScript(scriptName, ["ExtendedTimer", "ExtendedAnimationBehavior", "ExtendedPopup"], execute);
}
else {
    execute();
}

})();
6   �& h�( @ ��������/��?��D��E��E��E��E��E��E��E��E��E��E��E��D��?��/��������/��g�����������������������������������������������g��/������@�������bI5�bI5�bJ4�dI5�`H6�eJ5�bI5�bH7�dI5�fH7�`I3�cI8�dI5�cH4������@������D���������������������������������������������������bI5������D������E����������������������������������������������bJ4������E������E�����������������������~���������~������������bH7������E������E�������������������v�������������������������������aI1������E����ooo�mmm�kkk�jjj�hhh�fff�ddd�ccc�```�___�\^^�Vgg�B���%�����������������������~������������~���������dI5������E�������������������������������������������������J��Ů����������������������������������������eI8������E�������������������������������������������^��ɲ������������������~�������~���~�������~������aH4������E��������������������������������������������_����������������v��������������������������������bI5������E���������������������������������������������_���Ů������������������������������������}������bJ4������E����������������������������������������������`���ɲ�����������������������������������������dI4������E�����������������������������������������������`���驋�몋�꫉�ꪋ�襆��|��n��b��W��}L��uA��r8��s7��q9��b0������E�����������������������������������������������b���請��ã��à���������������������������}���w���s���j��d��d1������D������������������������������������������������l���ꩍ�請�멌�몋�몋�馅��}��u��j��b��W��P��}F��v@��r:������@����������������������������������������������������k���a���`���_���_��^��^��]��]��\��\��I��$�����������g��/�����������������������������������������������������������������������������B�����D��?��/���������������������������������������������������������������������������������������������Vgg�����������������������������������������������������������������������������������������������������]__������������������������������������������������������������������������������������������������������```����������������������������������������������������������������������������������������������ccc�����������������������������������������������������������������������������������������������eee������������������������������������������������������������������������������������������������hhh�������������������������������������������������������������������������������������������������jjj��������������������������������������������������������������������������������������������������lll���������������������������������������������������������������������������������������������������ooo���������������������������������}}}�xxx�ttt�ttt�ttt�ttt�ttt�ttt�ttt�ttt�ttt�ttt�ttt�ttt�ttt�ttt�ttt�ttt�ttt�ttt����������������������������������������������������������������������������������������������������ttt����������������������������������������������������������������������������������������������������ttt����������������������������������������������������������������������������������������������������ttt���������������������������������}}}�xxx�ttt�ttt�ttt�ttt�ttt�ttt�ttt�ttt�ttt�ttt�ttt�ttt�ttt�ttt�ttt�ttt�ttt�ttt���������������(  ����$��Y��������������������������������������`����!��w����bI5�bI5�bJ4�`H6�eJ5�bI5�dI5�fH7�`I3�dI5�cH4����������������������������~������~����������bH7��������FYY�%�����������������������������������������aI1����������h������������������~���������~�������dI5����������v���Ů��������������������������������eI8���������}���ɲ���������������~�������~�������~����aH4���������~������������������������������������������bI5�������������Ů������������������������������}����bJ4�������������驋�몋�꫉�ꪋ��|��n��b��}L��uA��r8��q9��b0��������������ꩍ�請�멌�몋�馅��}��u��b��W��P��v@��r:�������������}���t���r���q���p���o���n���m���k���X��#��������`�������������������������������GXX���������������������������������������������������������s�����������������������������������������������������~���������������������������������������������������������������������������������������V����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSetPADPADP#G���
ڬ��׮��[�7����٬����H	�>�?�E�.�DN2�>%6�6|9(f�X@X�l��3pPuRy��@
7�/��k��*bindingPropertyNotSetcannotActivate0$commonNotAfterInit{elementNotFound� functionNotFound�invalidAttach(invalidAttributeNameP.invalidDataProviderType�&invalidFunctionName2invalidSelectedIndexValue\(invalidTypeNamespace�"misplacedTemplate�<mustSetInputElementsExplicitly(requiredUrimstringOrBoolean�&unresolvedReference� updateBeforeInit).Binding '{0}' must be set prior to initialize.ICould not activate element with id '{0}', the element could not be found.){0} '{1}' cannot be set after initialize.,An element with id '{0}' could not be found.2A function with the name '{0}' could not be found.FInvalid attribute '{0}', the type '{1}' is not a registered namespace.LInvalid attribute name '{0}'. Declared attribute names must be in lowercase.uValue must be a service URI, an instance of Sys.Net.WebServiceProxy, or class that implements Sys.Data.IDataProvider.E'{0}' must be of type Function or the name of a function as a String.EValue must be a Number or a String that can be converted to a Number.>Invalid type namespace declaration, '{0}' is not a valid type.CDataView item template must not be a child element of the DataView.CInput elements 'type' and 'name' attributes must be explicitly set.4A serviceUri must be set prior to calling fetchData.7Value must be the string "true", "false", or a Boolean.KSys.Binding could not find an element or component with the selector "{0}".*Update cannot be called before initialize./����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSetPADPADP��2cannotFindMarkupExtension:A markup extension with the name '{0}' could not be found.*����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSetPADPADPg��(�V���/VM�f�8
q3{X��.PRM_CannotRegisterTwice PRM_MissingPanel>PRM_ParserError�PRM_ServerError� PRM_TimeoutErrorl<The PageRequestManager cannot be initialized more than once.xCould not find UpdatePanel with ID '{0}'. If it is being updated dynamically then it must be inside another UpdatePanel.9The message received from the server could not be parsed.wAn unknown error occurred while processing the request on the server. The status code returned from the server was: {0}The server request timed out.����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSetBPADPADP����I>�J�ɗ+����]G��͎�9X���[�'���ƿ=��$�9�fh�ɂc�m���u�I�%F��N�̨�o� �ؼ��5����ߡ���e�š�3E�J3����t���'1]m�n�o�(1t��!"~%�~6(�t�(��!)�"/z�/��2މ�5\��;��>5��A�k.F�4�K��1L-ViL�/O�+�O�^�\u�]�UD`+��`��dq��d�6�e�en��qPzKte��u�L�wC�1�K��/
�z�y	�
#	�f��
"�s�RK"J	�����	��M���
9�=���	2j�g
j
���l�:g�308addHandlerCantBeUsedForError*appDuplicateComponentlargumentDomNode� argumentTypeName�&arrayParseBadFormatbadBaseUrl1wbadBaseUrl2�badBaseUrl3�badTypeName�*behaviorDuplicateName2boolTrueOrFalse�,cannotAbortBeforeStart�0cannotCallBeforeResponse�*cannotCallOnceStarted0cannotCallOutsideHandler><cannotSerializeObjectWithCycleu2cantAddNonFunctionhandler� cantAddWithoutId�0cantBeCalledAfterDispose(cantSetNameAfterInit:&circularParentChainBcomponentCantSetIdAfterAddedToApp�.componentCantSetIdTwice*controlAlreadyDefinedX(createComponentOnDom�createNoDom�elementNotFound(enumInvalidValueName4 enumReservedNameb&enumValueNotInteger�&eventHandlerInvalid�.eventHandlerNotFunction(8expectedDomElementOrSelectorE&expectedElementOrId{^historyCannotAddHistoryPointWithHistoryDisabled�4historyCannotEnableHistory�&historyMissingFrame&invalidExecutorTypeX	invalidHttpVerb�	 invalidNameSpace�	invalidTimeout�	"invokeCalledTwice&
methodNotFoundJ
,namespaceContainsClassl
4namespaceContainsNonObject�
notATypeName�
notAnInterface�
notObservablenullWebRequestG$observableConflict{$propertyNotAnArray�&propertyNotWritable�.propertyNullOrUndefined�"referenceNotFound<*scriptLoadFailedDebug\,scriptLoadFailedNoHead
 selectorNotFoundA
,setExecutorAfterActiveu
*stateFieldNameInvalid�
6stateMustBeStringDictionary�
2stringFormatBraceMismatch&stringFormatInvalidY&typeRegisteredTwicexundefinedEventJurlTooLongb webServiceFailed�jCan't add a handler for the error event using this method. Please set the window.onerror property instead.HTwo components with the same id '{0}' can't be added to the application.+Value must be a DOM element or a text node.*Value is not the name of an existing type.fValue must be a valid string representation for an array. It must start with a '[' and end with a ']'.Base URL does not contain ://.$Base URL does not contain another /.Cannot find last / in base URL.RValue is not the name of the type being registered or the name is a reserved word.jA behavior with name '{0}' already exists or it is the name of an existing property on the target element. Value must be 'true' or 'false'.+Cannot abort when executor has not started.0Cannot call {0} when responseAvailable is false.Cannot call {0} once started.5Cannot call {0} outside of a completed event handler.FCannot serialize object with cyclic reference within child properties.+Can't add a handler that is not a function..Can't add a component that doesn't have an id.Can't be called after dispose.CThe name property can't be set on this object after initialization.<The chain of control parents can't have circular references.\The id property of a component can't be set after it's been added to the Application object.;The id property of a component can't be set more than once.1A control is already associated with the element.EValue must be null for Components that are not Controls or Behaviors.2Value must not be null for Controls and Behaviors.,An element with id '{0}' could not be found.,'{0}' is not a valid name for an enum value.B'{0}' is a reserved name that can't be used as an enum value name.:An enumeration definition can only contain integer values.DHandler was not added through the Sys.UI.DomEvent.addHandler method.Handler must be a function.4'{0}' must be a DOM element or DOM element selector..Value must be a DOM element or DOM element id.BA history point can only be added if enableHistory is set to true..Cannot set enableHistory after initialization.�For the history feature to work in IE, the page must have an iFrame element with id '__historyFrame' pointed to a page that gets its title from the 'title' query string parameter and calls Sys.Application._onIFrameLoad() on the parent window. This can be done by setting EnableHistory to true on ScriptManager.>Could not create a valid Sys.Net.WebRequestExecutor from: {0}.2httpVerb cannot be set to an empty or null string.*Value is not a valid namespace identifier.,Value must be greater than or equal to zero."Cannot call invoke more than once. No method found with name '{0}'.9Object {0} already exists as a class, enum, or interface./Object {0} already exists and is not an object.Value is not a valid type name.Value is not a valid interface.+Instances of type '{0}' cannot be observed.2Cannot call executeRequest with a null webRequest.5Object already contains a member with the name '{0}'.'{0}' is not an Array property.!'{0}' is not a writable property.DCannot set the properties of '{0}' because it returned a null value.Component '{0}' was not found.�The script '{0}' failed to load. Check for:
 Inaccessible path.
 Script errors. (IE) Enable 'Display a notification about every script error' under advanced settings.8ScriptLoader requires pages to contain a <head> element.2An element with selector '{0}' could not be found./Cannot set executor after it has become active.6State field names must not contain any '=' characters.6The state object can only have null and string fields.AThe format string contains an unmatched opening or closing brace.The format string is invalid.�Type {0} has already been registered. The type may be defined multiple times or the script file that defines it may have already been loaded. A possible cause is a change of settings during a partial update.'{0}' is not an event.VThe history state must be small enough to not make the url larger than {0} characters.<The server method '{0}' failed with the following error: {1}�����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSet PADPADPpQD�΢m���v�k�2��ٍ����2��s4��n��� 5���,y��{�/A���A��b�*�vB�����l�L&Ky	�K:GC�Md:<?�@&3�P��qRnv�T��\��]d'�a�mfG�pY�|����0_G}����l�f;�R��5�{�actualValueargument$argumentDomElementGargumentIntegereargumentNull�$argumentOutOfRange�argumentType�*argumentTypeWithTypes"argumentUndefined<assertFailedX$assertFailedCallero"breakIntoDebugger�8cannotDeserializeEmptyString�8cannotDeserializeInvalidJson�>cannotSerializeNonFiniteNumbers enumInvalidValue4format^0formatBadFormatSpecifier�&formatInvalidString� invalidOperation�notImplemented&nullReferenceInPathLparamNameparameterCount�DrequiredScriptReferenceNotIncluded�&scriptAlreadyLoaded�0scriptDependencyNotFound� scriptLoadFailed�"servicePathNotSet*webServiceFailedNoMsgA6webServiceInvalidReturnTypeb$webServiceTimedOut�Actual value was {0}..Value does not fall within the expected range.Value must be a DOM element.Value must be an integer.Value cannot be null.8Specified argument was out of the range of valid values.0Object cannot be converted to the required type.7Object of type '{0}' cannot be converted to type '{1}'.Value cannot be undefined.Assertion Failed: {0}Assertion Failed: {0}
at {1}{0}

Break into debugger? Cannot deserialize empty string.?Cannot deserialize. The data does not correspond to valid JSON.$Cannot serialize non finite numbers.('{0}' is not a valid value for enum {1}.5One of the identified items was in an invalid format.Format specifier was invalid.)Input string was not in a correct format.>Operation is not valid due to the current state of the object.+The method or operation is not implemented.1Null reference while evaluating data path: '{0}'.Parameter name: {0}Parameter count mismatch.B'{0}' requires that you have included a script reference to '{1}'.�The script '{0}' has been referenced multiple times. If referencing Microsoft AJAX scripts explicitly, set the MicrosoftAjaxMode property of the ScriptManager to Explicit.HThe script '{0}' failed to load because it is dependent on script '{1}'.%The script '{0}' could not be loaded.-The path to the web service has not been set.The server method '{0}' failed.DThe server method '{0}' returned an invalid type. Expected type: {1}"The server method '{0}' timed out.�����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSetPADPADP���$]�'8"E_NoScriptManagerHSessionStateOutOfProcessNotSupportedPNA ScriptManager is required on the page to use ASP.NET AJAX Script Components.gThe AsyncFileUpload control only supports session state mode "InProc" when persisting files in session.J����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSetPADPADPU@���>�+v'p!?�w�#{/�b}�*batchLinkBeforeInsert.entityWithNoResourceSetKinvalidGuid� propertyNotFound*requiredUri{IThe source and target of a link must be inserted before the link is made._Entity does not have a resource set. Use createEntity() or set the defaultResourceSet property.|The provided value must be of the form 'dddddddd-dddd-dddd-dddd-dddddddddddd', where each d is a digit or a character A - F.OThe property '{0}' was not found or did not contain an associated metadata URI.4A serviceUri must be set prior to calling fetchData.4����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSetPADPADP#G���>�d��)4�lGu)Dd$commonNotAfterInitmustBeArray+,requiredMethodPropertyPrequiredUri�){0} '{1}' cannot be set after initialize.#The property '{0}' is not an Array.HThe '{0}' property must be set to a function to use the '{1}' operation.4A serviceUri must be set prior to calling fetchData.�����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSetPADPADP������P+&entityAlreadyExists requiredIdentity86Entity '{0}' already exists and cannot be added again.gThe entity must have an identity or a new identity must be creatable with the set getNewIdentityMethod.i����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSetPADPADP��x�g��(�V���/VM�f�w�g�8
q�3�X�{.PRM_CannotRegisterTwice PRM_MissingPanel>PRM_ParserError�,PRM_ParserErrorDetails�PRM_ServerError� PRM_TimeoutError. PRM_UnknownTokenM<The PageRequestManager cannot be initialized more than once.xCould not find UpdatePanel with ID '{0}'. If it is being updated dynamically then it must be inside another UpdatePanel.�The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.
Details: {0}Error parsing near '{0}'.wAn unknown error occurred while processing the request on the server. The status code returned from the server was: {0}The server request timed out.Unknown token: '{0}'.�@����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSet�PADPADP�M߉�;NJw���F�)[��3NɓM행�a����>����A�H���o#��=��4s�>�
��F�W^��"����|��;��q;i���(�20C�O}v�T2&�,oj�����,��@d�.~�������s�ɋ%��.���k�������#�Q�b�	���p��n��L���ůK��z��©��mEϘk�c��UFAа5���Wѥ���,��&6�j��"y����ո}����~�ڬ1�ۗ�Q܏R��5����#ފ<�_�ߨ�x�ĺ���X��{)��1���tWD�)���q��o/��
�y��r���C���D���l�uNJ���X�u�	�o�@�{B=(��,����N��#�
�o�
#,	zv�R_ 352,Jj���*���s?*��?㯔$U��(Y^
)�G!)\H|*7�M2��2.�3�!)3�!{3�{5�s79l)�:��2<� O<,;>�k>��?2{*?�41B���EV@�E��*G�MG�<{G���I��;K�L�G[N�yQ�WkR  U�7U|�Ui�U��U<^U�U�QiVD�?X1:�X۾?Y��[��
d׋�g��XhhmN�n��r�_sۙu��7z-��{]�~B
|}�
���p$�g�"�|�9�!#���!Rm(~�#j}]�5&pM!e"�"-%�#��b�%��&�� �.
�"��(�	"�%��#��%�#�#� 6Rrh }! � u#7#�!��&g%�Y$;=7I	�F%�6 ���4��<,R�"��%���'���#!�Z#�'� �"!��'`H3S>�!�<3���
��$�
�"(�$�$�$�$S h!�!x�	19� �:$0"/$v?�
:'�.:AlwaysVisible_ElementRequired8Animation_CannotNestSequenceC8Animation_ChildrenNotAllowed�2Animation_InvalidBaseTypeN,Animation_InvalidColor�<Animation_MissingAnimationName@Animation_NoDynamicPropertyFoundp2Animation_NoPropertyFound�0Animation_TargetNotFound!:Animation_UknownAnimationName�JAsyncFileUpload_ConfirmToSeeErrorPage9HAsyncFileUpload_InternalErrorMessage`FAsyncFileUpload_ServerResponseError�DAsyncFileUpload_UnhandledException�DAsyncFileUpload_UnknownServerError	@AsyncFileUpload_UploadingProblemCalendar_TodayF:CascadingDropDown_MethodErrorR>CascadingDropDown_MethodTimeoutfBCascadingDropDown_NoParentElementx8CollapsiblePanel_NoControlID�:Common_DateTime_InvalidFormat�>Common_DateTime_InvalidTimeSpan�:Common_InvalidBorderWidthUnit�2Common_InvalidPaddingUnit(,Common_UnitHasNoDigitsZ>DynamicPopulate_WebServiceErroreBDynamicPopulate_WebServiceTimeout�LExtenderBase_CannotSetClientStateField�ZExtenderBase_ControlNotRegisteredForCallbacks�FExtenderBase_InvalidClientStateTypeTExtenderBase_PageNotRegisteredForCallbacks?\HTMLEditor_toolbar_button_BackColorClear_titlepHHTMLEditor_toolbar_button_Bold_title�XHTMLEditor_toolbar_button_BulletedList_title�HHTMLEditor_toolbar_button_Copy_title�FHTMLEditor_toolbar_button_Cut_title�\HTMLEditor_toolbar_button_DecreaseIndent_title�THTMLEditor_toolbar_button_DesignMode_title�\HTMLEditor_toolbar_button_FixedBackColor_title�\HTMLEditor_toolbar_button_FixedForeColor_title�^HTMLEditor_toolbar_button_FontName_defaultValue�PHTMLEditor_toolbar_button_FontName_label�^HTMLEditor_toolbar_button_FontSize_defaultValue�PHTMLEditor_toolbar_button_FontSize_label\HTMLEditor_toolbar_button_ForeColorClear_titlePHTMLEditor_toolbar_button_HtmlMode_title \HTMLEditor_toolbar_button_IncreaseIndent_title+PHTMLEditor_toolbar_button_InsertHR_title<jHTMLEditor_toolbar_button_InsertLink_message_EmptyURLTTHTMLEditor_toolbar_button_InsertLink_titlejLHTMLEditor_toolbar_button_Italic_title�ZHTMLEditor_toolbar_button_JustifyCenter_title�VHTMLEditor_toolbar_button_JustifyFull_title�VHTMLEditor_toolbar_button_JustifyLeft_title�XHTMLEditor_toolbar_button_JustifyRight_title�FHTMLEditor_toolbar_button_Ltr_title�VHTMLEditor_toolbar_button_OnPasteFromMSWord�THTMLEditor_toolbar_button_OnPastePlainText	VHTMLEditor_toolbar_button_OrderedList_title=	RHTMLEditor_toolbar_button_Paragraph_titleK	RHTMLEditor_toolbar_button_PasteText_title[	RHTMLEditor_toolbar_button_PasteWord_titlem	JHTMLEditor_toolbar_button_Paste_title�	VHTMLEditor_toolbar_button_PreviewMode_title�	HHTMLEditor_toolbar_button_Redo_title�	^HTMLEditor_toolbar_button_RemoveAlignment_title�	THTMLEditor_toolbar_button_RemoveLink_title�	XHTMLEditor_toolbar_button_RemoveStyles_title�	FHTMLEditor_toolbar_button_Rtl_title�	ZHTMLEditor_toolbar_button_StrikeThrough_title�	RHTMLEditor_toolbar_button_SubScript_title�	VHTMLEditor_toolbar_button_SuperScript_title	
RHTMLEditor_toolbar_button_Underline_title
HHTMLEditor_toolbar_button_Undo_title"
DHTMLEditor_toolbar_button_Use_verb(
jHTMLEditor_toolbar_popup_LinkProperties_button_Cancel1
bHTMLEditor_toolbar_popup_LinkProperties_button_OK9
hHTMLEditor_toolbar_popup_LinkProperties_field_Target=
xHTMLEditor_toolbar_popup_LinkProperties_field_Target_CurrentE
pHTMLEditor_toolbar_popup_LinkProperties_field_Target_NewU
vHTMLEditor_toolbar_popup_LinkProperties_field_Target_Parenta
pHTMLEditor_toolbar_popup_LinkProperties_field_Target_Topp
bHTMLEditor_toolbar_popup_LinkProperties_field_URL|
0ListSearch_DefaultPrompt�
PMultiHandleSlider_CssHeightWidthRequired�
XPasswordStrength_DefaultStrengthDescriptions�
HPasswordStrength_GetHelpRequirementsMbPasswordStrength_InvalidStrengthDescriptionStylespXPasswordStrength_InvalidStrengthDescriptions�NPasswordStrength_InvalidWeightingRatios�HPasswordStrength_RemainingCharacters-FPasswordStrength_RemainingLowerCaseBFPasswordStrength_RemainingMixedCasebBPasswordStrength_RemainingNumbersyBPasswordStrength_RemainingSymbols�FPasswordStrength_RemainingUpperCase�4PasswordStrength_Satisfied�>PasswordStrength_StrengthPrompt�<PopupControl_NoDefaultProperty�:PopupExtender_NoParentElement$
&RTE_BackgroundColorH
RTE_BarColorZ
RTE_Bolde
RTE_Borderk
RTE_BorderColors
RTE_Cancel�
RTE_CellColor�
RTE_CellPadding�
RTE_CellSpacing�
&RTE_ClearFormatting�
RTE_Columns�
RTE_Copy�
RTE_Create�
RTE_Cut�
RTE_Font�
RTE_FontColor�
RTE_Heading�
RTE_Hyperlink�
RTE_Indent0RTE_InsertHorizontalRule
RTE_InsertImage%RTE_InsertTable3$RTE_InserttexthereARTE_ItalicS"RTE_JustifyCenter[RTE_JustifyFullkRTE_JustifyLefty RTE_JustifyRight�RTE_LabelColor�RTE_Labels�RTE_Legend�RTE_Normal�RTE_OK�RTE_OrderedList�RTE_Outdent�RTE_Paragraph�RTE_Paste�RTE_PreviewHTML�RTE_Redo�RTE_Rows�RTE_SizeRTE_UnderlineRTE_Undo"RTE_UnorderedListRTE_Values)RTE_ViewEditor1RTE_ViewSource>RTE_ViewValuesK(Rating_CallbackErrorXZReorderList_DropWatcherBehavior_CallbackError�NReorderList_DropWatcherBehavior_NoChild�ZResizableControlBehavior_CannotChangeProperty�NResizableControlBehavior_InvalidHandler�FShared_BrowserSecurityPreventsPaste;*Slider_NoSizeProvided�@Tabs_ActiveTabArgumentOutOfRange $Tabs_OwnerExpectedQFTabs_PropertySetAfterInitializationvHTabs_PropertySetBeforeInitialization�HValidatorCallout_DefaultErrorMessage�ASys.Extended.UI.AlwaysVisibleControlBehavior must have an elementoSys.Extended.UI.Animation.SequenceAnimation cannot be nested inside Sys.Extended.UI.Animation.ParallelAnimation�Sys.Extended.UI.Animation.createAnimation cannot add child animations to type "{0}" that does not derive from Sys.Extended.UI.Animation.ParentAnimationySys.Extended.UI.Animation.registerAnimation can only register types that inherit from Sys.Extended.UI.Animation.AnimationHColor must be a 7-character hex representation (e.g. #246ACF), not "{0}"[Sys.Extended.UI.Animation.createAnimation requires an object with an AnimationName property[Sys.Extended.UI.Animation.createAnimation found no property corresponding to "{0}" or "{1}"RSys.Extended.UI.Animation.createAnimation found no property corresponding to "{0}"�Sys.Extended.UI.Animation.Animation.set_animationTarget requires the ID of a Sys.UI.DomElement or Sys.UI.Control.  No element or control could be found corresponding to "{0}"eSys.Extended.UI.Animation.createAnimation could not find an Animation corresponding to the name "{0}"%Do you want to see the response page?{The AsyncFileUpload control has encountered an error with the uploader in this page. Please refresh the page and try again.Server Response ErrorUnhandled ExceptionUnknown Server error%The requested file uploading problem.
Today: {0}[Method error {0}][Method timeout]#Failed to find parent element "{0}"Failed to find element "{0}"Invalid format$"{0}" is not a valid TimeSpan format5A unit type of "{0}"' is invalid for parseBorderWidth0A unit type of "{0}" is invalid for parsePadding	No digitsWeb Service call failed: {0}Web service call timed out6clientStateField can only be set before initialization2This Control has not been registered for callbacks2saveClientState must return a value of type String/This Page has not been registered for callbacksClear background colorBold
Bulleted ListCopyCutDecrease IndentDesign modeBackground colorForeground colordefaultFontdefaultSizeClear foreground color	HTML textIncrease IndentInsert horizontal ruleURL can not be emptyInsert/Edit URL linkItalicJustify CenterJustifyJustify Left
Justify RightLeft to right direction2Pasting from MS Word is switched on. Just now: {0}0Plain text pasting is switched on. Just now: {0}Ordered ListMake ParagraphPaste Plain Text!Paste from MS Word (with cleanup)PastePreviewRedoRemove AlignmentRemove Link
Remove stylesRight to left directionStrike through
Sub scriptSuper script	UnderlineUndoUse {0}CancelOKTargetCurrent window
New window
Parent window
Top windowURLType to searchRYou must specify a CSS width and height for all handle styles as well as the rail.fNonExistent;Very Weak;Weak;Poor;Almost OK;Barely Acceptable;Average;Good;Strong;Excellent;Unbreakable!!Get help on password requirementsSText Strength description style classes must match the number of text descriptions.6Invalid number of text strength descriptions specified.Strength Weighting ratios must have 4 elements{0} more characters{0} more lower case charactersMixed case characters{0} more numbers{0} symbol characters{0} more upper case charactersNothing more required
Strength: =No default property supported for control "{0}" of type "{1}""Couldn't find parent element "{0}"Background Color	Bar ColorBoldBorderBorder ColorCancel
Cell ColorCell PaddingCell SpacingClear FormattingColumnsCopyCreateCutFont
Font ColorHeading	HyperlinkIndentInsert Horizontal RuleInsert ImageInsert TableInsert text hereItalicJustify CenterJustify FullJustify Left
Justify RightLabel ColorLabelsLegendNormalOKOrdered ListOutdent	ParagraphPastePreview HTMLRedoRowsSize	UnderlineUndoUnordered ListValuesView EditorView SourceView Values+An unhandled exception has occurred:\r\n{0}-Reorder failed, see details below.\r\n\r\n{0}*Could not find child of list with id "{0}"Changes to {0} not supported;{0} handler not a function, function name, or function text�Your browser security settings don't permit the automatic execution of paste operations. Please use the keyboard shortcut Ctrl+V instead.WPlease set valid values for the height and width attributes in the slider's CSS classes/Argument is not a member of the tabs collection#owner must be set before initialize*{0} cannot be changed after initialization+{0} cannot be changed before initializationThis control is invalid�����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSetPADPADPKA�	�#��e4��vP�-w�(invalidBatchResponseoperationFailedC"operationTimedOute*serviceVersionTooHigh�*uriNotOpenDataService�AThe batch operation failed due to an invalid response from '{0}'. The data operation '{0}' failed.#The data operation '{0}' timed out.fThe URI '{0}' points to an ADO.NET Data Service of a higher version than is supported by this library.8The URI '{0}' does not point to an ADO.NET Data Service.BSJBv4.0.30319l��#~���#Strings�G��#USTC#GUIDdC�#BlobW_�	�%3��MwK8z�

,�U�G�N5w
��
.kN
~
�
����� �5�eKk�{�����N�K���K��"  �K
5 p O � �
� � �
� � K� K� O !�!K$!�Y!9!m!�{!��!�!�!K�!��!��!�!"�!"�!"�!)"�!7"C"�!O"�!V"�h"�t"O 
�"�"K�"K�"�!�"�!�" R#N4$�!�$�$�$N"9%$%"R%$%�%
�&
�&
X'
�(
|)a*n*�*� +�
�,�,�,�9-��/�/0060�1�33
5�5�&5�/6�!x7K�7$8�b>�!p>
?�!�?�$4EK�EK�F
8H�!EH;I5NK
�W�W�W�Z�Z�ZK�Z��]�j^��^�_w?`NeK�gEh3&�i�ikknrK#s�ps��s�s
�v�v�y�z�Yz��9!*��u�.������7��
m��v

������2�W�k�K<�KN�Kf�K4�KF�K&Kd�i
t���K�NȢK���!(�3yK
O���K
��N
��
��,d�K2�
���K��
n��,*��u�����x�$��$��$��$��$��$6JoS�S�������
�$�F4e�$~�$�0����&Fu�$����$�N

,
f
uN���
�

"9�
�
�N�NN%Zs"�$%
��!��$��$6nZ����
�*y�
�����
	
/	
o	
�	�	�	�
:
k
F
[
3X'�g
��
��
��
��
�
�
�
KK/�J�sf��&*�i_����
��

&#
�i
:
�
g�
�
�!I3R3����$(��s��
d��!��/�����$'?
\
��K�F�����K�K�9�WOK�����
'�v4�_KpK}K�K��$
�w��k��&�J�
i�,z��O &��i�KK$�U�
qN
���	�>!W�Zs!���k�
�,IkVkq�3�3
�
f���s,�P�sq�
��v
��v�����K*u�*/u�*?u�*^u�~k*�u��k*�u�*�u��*�u�*u�.A��Z.���.����. ��:OC���0� �
n X 
y X 
� X � k� �s'!0B!�!X!�!�!�$�!�!k"�8"�
T"e"��"��"K�"K #K$�W�$�W%S%�o%�{%��%K&��&�'�'�0'�!(�@(�
�(
�(�(K/�(�(�))L)�~)�
�)�v
�)�v
�)�v
�)�)*�
*@*�!W*�!`*�!j*�z*��*��*�"+�@+�
r+N
�+
�+�,(,�2r,
�2�,
�2�,
�2�,
��,�-�!1-?-�.��K!?Y

v?
�3��
5��6�7�;�.<�b.=�y.@���B���C��!F���<j��@}��D��)�H�<�L��JP<�u1$��PT%��P\%��P`)����5*���h4����l5��p5�97�)�===AG0�K?=J7`?=M:l?=REw?=UP�?=X[�?=\f�?=^q�?=`x�?=b~�?=d��?=f��?=h��?=j��?=l�?=n�
?=p�?=r�"?=t�3�Ev��Q�=y�f�9y�{�I}���l����M����Q����h�	��Q���9�,��@�,1�3/�=�5<�L�:L�H�<Y��=�c���?z��@���A���C��P<�E�P�K�P �R �P=�W��9�]���]��^��=�b&�9�c8�9�cG�h�cY�Y�xa=��~=���=���=���=���a��%���;�p��P�9��j�9��y�9����9����9����9��������.e����������=��=�9��Z�E��t?E���?i���?=����9����9����l��
	�"�'	�9�9	�9�F	�9�Q	�L�[	�h	�r	�x	�L�	�@	�	����	<�	��	�& �	�M%�	?E(
�*#/�,
�=#0<
�9#0O
�9&0j
�.+0
+1�
�9+5�
�9/5�
�=65�
�29<�
�99=�
�m<=AARqCS3
FXQuG[n�hG_��9Gb��9Nb��9Qb��yXb��=Xd��L\m���\o��T^u1^x��X^z,�`_�>�_��M�=_�f�l_�x	�l_�k�l_�<�l_�u�l_��l_���l_���l_���l_���l_���l_���l_���l_���l_���l_���l_���l_���l_�
�l_�
�l_�&
�l_���l_�r	�l_�+
�l_�<
�l_�,�l_�M
�l_�T
�l_�i
�l_�q
�l_�~
�l_��
�Q_��
�}d��
?�d��
�Ed��
�6d���
�=d��hd��<d�&=oN�0=rO�7=wPF9xQX9{Qo1}Q��:}S��I}T��(~W����\��h�a
�>�w �x-�|>�h��`�B��z�h��k�L��~
�H���1��������<���`����=����E����h����=���9��3�Q��=����M�h��\���o�����9������9���h���p�7���T�\���]�����_���j�=�m2�F�m
�nJ�J�r
�s[�9�w{�N�w��x����|��=����R����=�������=�����'�h��>�V��_�9��x�l����L����L����y����E���������9���������h�@�Z�U�9�V0�9�V<�h�VN�h�s�g�D��r�4��}�`����=�������<���`���^�
���9���b���E��E
�6�f
�P
�d�9
�m�E���=��=	��e���=$9��'=��'?���'A��I'D
�
)H(�y*T@�y*WR�z+Zk�y+[|�<+]��Q1���~1�
1����1���.=1���L4���44���L4��<4��1<���h<��E<� '�==�-�<@�7=D$A�9G'��QJ'[�hJ)nP`Jo�P�Jq�9Mw��=Qw��EQw�&�=V���hX���QX���pX��=]�$=`�X9a�8�hc�U��c�k�hg���yi���9i����l���q		��Iq
	��9t	��lw	��hy"	�9y%	��L~%	�~'	�.�T~)	:�`~+	DH~-	V��~.	y�9~/	��E�/	��h�6	���=�A	���A	���=�B	����B	���D	�I�H	%�h�M	?�L��	I����	[�=��	r����	�����	��l��	��y��	�
��	��=��	�9��	�h��	'���
I���

�
\�}�
r�4�
f�L�
{�y�
����!
����$
����%
��9�*
 ��=�*
��9�-

�l�-
�=�d
+�y�q
@
��
_���
m�<��
z1��
�����
������
����
����
��9��
��=��
�=��
�9��
"����
.=�QD�9�R��LR&
�T[�hVs�pi��=��=���9	���I���h���������h�,��0���0�?�0�K��0�V`0�`�h0�x��0��h0��h0(��Q0F"=4V"=5X�&=6ZO'=8`�'=;g"==m=,=@n_-=Dp�-=Hr�-=Jt�-=LvQ��"yQ�#yQ�#yQ�5#�#��#��#y�$"�$'&�&�#&�1&�S*3�+��+��+��+��+��+��+��/��/��/��/��/�%0�03y83�B3�R3�[3�k3~}3~%0�5�P5�a5ym5�v5�'6�<6��+�T6��6��6��7�83�+��8��87�:��=��=�2>yV�:>�V�B>�V�D>�V�G>�V�I>�1K>�1R>�1\>��>Y
^M�
^M5�O��O��O=�O9?�F?�T?y�?��?��?�0@�\@�6g@�6x@�6�@�0@�\@�6�@0@�\@�6�@0@�\@�6�@.6A.0@�\@�0@�\@�0@�\@�0@�\@�0@�\@�0@�\@�0@�\@�0@�\@�0@�\@�0@�\@�0@�\@�0@�\@�0@�\@�cC�qC��Cy2>yV�
D�V�D�V�D�!D�0D�:D�DD��=��=�S��E��E��E@�E��Ey�EE�E�NH�]HyzHy�Hy�H�DD�JI�2>yV��J�V��J��J�DK�KK��/�rK�P5�m5�KK�rK��xK	2>yV��K&	V��K&	V��K&	V��K&	V��K&	S��K�2>yV��KB
V��KB
V��KB
2>yV��KG
V��KG
V��KG
>N_
�P�
�P��P��P��P� Q�8Q�YQ�yQy�Qy�Q��Q��Q�%R�HR�.S�
.S�
.S�
.S�
�S��S��S�
�S�=��=�2>yV��K�
V��K�
V��K�
V��K�
V��K�
2>yV��T�
V��T�
V��T�
V��T�
V�EH�
2>yV��T�
V��T�
V��T�
V�U�
V�
U�
V�U�
V�'U�
2>yV��T�
V�4U�
2>yV�CU�
V�OU�
2>yV��T�
V��K�
V��K�
�+�[U�2>yV�:>�
V��W�
V��W�
V��W�
V��W�
V��W�
DK��W�
�W�
:>�
&�X32>yV��TV�XV�"XV�*X2>yV�8XV�>XV�EXKX�SX�\X�iX�uX��X�2>yV��K!V��K!V�nY!V�wY!2>yV��T&V��Y&V��Y&2>yV��T+V��Y+V�nY+V�wY+V��Y+V��K+V��K+V��K+V��K+V��Y+P5�m5��YD�/��Zl�Zq�Zv�Zqd[��[��[��[�2>yV��\�V��\�2>yV�X�V��\�V��\�V��\�2>yV��K�V��\�V��K�2>yV��K�V��K�V��Y�V�wY�V��Y�V�nY��\�]�]�2>yV�;]�V�F]�Q�O]�Q�_]�Q�x]y�]!�]&&�A�&�_��_��_�`r�/�2>yV��`�V��`�V��`�V��`�V��`�V��`�2>yV�mK�V��`�2>yV�a�V�
a�V� a�V�7a�V�Oa�V�aa�pa�{a��ay�ay5�8b��b��c��c��c�d�
-d��gU�gZh�h� h_-h�;h�Shd]h�ihi�hi6Um�6em�6�m�6�m�6�m�6�m�6�m�6�m�6�m�2>yV��m_V��m_2>yV��mZ�m@	nyny�m@cn�S��pyS��py�p<�pAhq�����qecC��Cy2>yV��qyV��qyV��qyS��q�
r�9r��r��H��r��r��r�P5��r��r��r�s�2s�?s�^s��s��s��s�.S�
�vP�vy�y�2>yV��y�V��y�V��y�V��y�V��y�!�y�!�y�&z�2>yV��K�V��K�V��K�V��K��|��|��|��|��|�c�q�{�2>yV�;]*V�F]*J��rK�V��`��aF��Z�5l����=��Q����Q�Հ�1��r1��1O��4s�����H��b��q��������&�?�&�A�&��&��-��2>yV��K_V��K_�=��=�����y����S�2>yV��K�V��K�V��K�V��K���v�+�����)��B��W��p�����1���1���2>yV��Y�V�wY�V��Y�V�nY�V��K�V��K�2>yV�ō�
V��R�
Q���y6��2��!B�M�#�/-2>yV���sV���s�Wx�Wx:>xÙ�2>yV��T�V����V����&��\����������������ě�қ�ޛ������������"��8��R��`��n�������Q�y��Q����Q����pa�xK	�T ��s ���P5��r�S*x ��	��Q�t��Q����Q�����qeI�a#Z��i��x����a#��a#�/�����!��&����~#���#���#���#�r���#&�A2>yV�<��#V�F��#��#�v&?$2>yV�e�D$V�l�D$V�q�D$�WI$�WI$:>I$y�����V����V����=��=����$йB
��1������ú%3!�R%2>yV��m%X���E�c�yn�}%Q����Q�Ľ�2>yV�6]�%V�<��%1L���H�%X��i��%p��%DK��E���2>yV�\��%V�s��%�=��=�2>yV��T3&V�E�3&V�^�3&V�w�3&2>yV��K8&V���8&V���8&V���8&�W=&�W=&:>=&��d�B&�������+��+��+��+��+��+����&#��9��������#����&J��&������2>yV�r��&V��K�&V��Y�&V�wY�&V��Y�&V�nY�&V��K�&V��K�&��'���2>yV���9'V���9'V���9'!���������2>yV���$V�nY�$V��Y�$V�wY�$V��Y�$�=��=��������P���(���P�Q�N��Q�V��Q�d��Q�t��Q����Q�����/�11�����y��y�r������!����11�����1��2�22>yV���1V��y�1V� ��1V��y�1V�$��1V��y�1V�*��1V��y�1V�1��1��26�(2N�(2e�(2x�(22>yV�F]+2V�;]+2Q����Q����Q����Q�����������������������(��7��F��0��2;�	P��a��o��������������2���2���#���%��5��:	��	��%42>yV���*4V���*4�=��=���s c�y������c�y2>yV���}%V�6}%�mB&n�}%Q���Q�!��Q�3��Q�K��Q�a��Q����Q����Q����Q����Q����Q���Q�;��Q�P��Q�e��Q�x��Q����Q����Q����Q����Q����Q���yQ��yQ���7Q�2��Q�K��Q�`��Q�t��Q����Q����Q����Q����Q����Q����Q����#�B&�r�m5B&P5�\�r���!�&�!�&��!�&�!�'��!�'�!�&�!�'��3,��y�yP,��o��`,����`,��yr-�3,�3,���3,���3,���� �o#��!��#��!��#��!��#�N"��#�`"�	�#��"�$�#�$�P#�$��#�)$�#�@$�#�T$k%��#,�%��$8
$&�%�
$*�%>
�*�F%F�*�F%M�*�d%W�+�n%a�,�z%l|-��%y�-��%�0.��%��.��%�t0��%�2��%�h2��%��2��#��2�;&��2�F&�!3�Y&�)3�v&�23��&� Y3��&�"3��&�#�3�$�$�3��&�$�3��&�$�3�G'�%+4�l'�&84��'�&E4��'�&R4�H(&_4��(&l4��(&y4�<)&�4��)'�4��)!(�4��)'(�4��#;)�4��&�+;5��#�,C5��#�,��#G,�Z*M.�|*U/��*`2K5��#�3�
�*j3�
�*�3��*�3��*v3�
�*{4�+�4�(+�4�
7+�5�O+�5�_+�6S5��#�6]5��#�7f5��#�7p5��#�85��#�9�5��#�;�5�	�+�=�5�	,�=�5�	,�>6�',�>6�	7+�>&6�=,�>46�O,�>Z6��*j>d6�f,�>�6�r,�>�6��,�>7��,�?.7��,�@i7�O+�Ak7�_+�Bp7��,�B�7��,�D�7�-�D�7�%-�D88�S-�D�8�e-�E�8�w-�E�8�(+�F�8��-�G�8��-�I�8��-�I�8�-.�I�8�	d.�J�8��.�J�8��.�K�8��#�K
9��#�L9�)0�Lh9�;0Lp9�D0	Ly9�M0M�9�]0M�9�r0�M�9��0�M�9��0�N�9��0�N�9��0�N:��0�O_:��0�Og:��0vO�:�1�P�:��,�Q;�1&R0;�1-SJ;��#�TT;�	�1PT`;��1�T�;��1�T�;��1�U�;��1�U�;��1�U�;��1�V�;��1�V�;�2�V	<�2�W<�.2�W1<�<2�WD<�J2�XL<�c2VX�=�c2�Z�=�x2�[�=��2\\3>��2&`]>��#�aq>��#�ay>��,�a�>��#�b�>��2nb?��#�dD?��3�d�?��3�d�?��3�d�?��3�e�?��3�e�?��3�f�?��3�f�?�4�g�?�4�g�@�/4�g�@�F4�g}A�`4vg�A�j4vh�A�j4�i�A�s4�kB�1�k�B��,�l�C�1&m�C�S-�n@D��#�oPD�<5�q�D��#�s�D��#�s�D��5�s�D��5�s�D��5�t�D��5�t�D��5u�D�1�uPE��5�v�E��,�v#F�S-�wDF��5�x�Q��#�x�G��#�x�Q�m6�x�Q�x6�x�Q��6�y4R��6�ziR�	�6�{lR�	,�{�R��6�{�R��6�{�R�',�|�R��+�|�R�,�|�R�$�}S��6�}XS�7�}�S��,�~�S�7��S�+7�T�:7�(T�I7v�LT�U7��yT�1���T�k7���T��,���T��7��U��7���U��7��U��7��U�1&�
V��,��.V�8�EV�=8�HV�O8��V�-��V�%-���V�f8��;W�|8��_W��8'�lW��8+�{X��8<��X��8���X�9���X�!9���X�O,���X�19���X�H9���X�^9���X�t9���X��9B��X��9G��Y��9���Y��9L��Y��9U��Y��9v�Z�	:V�Z� :]�Z�4:b�)Z�H:h�3Z�]:m�=Z�(+��jZ��#��HZ��#��}Z��:���Z��:���Z�;�[�;��1[�,;��L[�9;��l[�F;��\��#�� \�c;��2\�x;��@\��;��R\��;��`\��;��r\��;���\��;���\�<���\�<���\�4<���\�L<���\��9��C]��#��K]��<��]]��<��k]��<��}]��<���]�
={��]�=���]�%={��]�1=���]�=={��]�J=���]�W={��]�f=���]�u=��	^��=��^��=��*^��=��>^��=��Q^��=��e^��,���^��#���^��#���_�|>���_�S-!�Td�%-.�`d�%-<��d��>K��d��>W�Hf��>^�h��>f��h�?y�\k��>���^�L
�;��^��
�;�th��O��h�\�O�$k���O�Ek�&�O��n�Z?���n��#���n�k?���n�}?��2o��?��Go��?��_o��?{�xo��?���o��?���o��?���o�@��!p�@@��)p�N@��2p��#��;p��#��bp��@{�pp�}?���p��?{��p��?���p��?��q��#��9q�@��yq�@@���q�N@���q��#���q��#���q��@{��q�}?��r��?{�9r��?�Sr��?�_r��#��qr�@���r�@@���r�N@���r��#���r��#���r��@{�s�}?��Ls��?{�qs��?$��s��?$��s��#���s�@���s�@@���s�N@���s��#��t��#��.t��@{�<t�}?���t��?{��t��?3��t��?3��t��#���t�@��5u�@@��=u�N@��Fu��#��Ou��#��pu�A=��u�!AC��u�1AI�v�AA��:v�PA{�av�YA���v�@���v�@@���v�N@���v��#���v��#��w��A{,w��A\`w�@��w�@@��w�N@��w��#��w��#��w��Abx�@�Ux�@@�]x�N@�fx��#�ox��#��x��A��x��A��x��A�y��An9y��A�`y��Ab�y�@��y�@@��y�N@��y��#��y��#�z��AbPz�!Bz�z�@�
	{�@@�
{�N@�
{��#�#{��#�D{��Ab�{�-BC�{�6BI�{�?Bb$|�NB�]|�YB��|�dB��|�qB��|�~Bb}��B�d}��B��}�@��}�@@��}�N@��}��#�~��#�$~��A�K~��A�p~�-BC�~�6BI�~�@��@@��N@�(��#�1��#�P��A�w��A���@���@@���N@����#� ���#� ���B�!P���B�!���@�!ɀ�@@�!р�N@�!ڀ��#�"���#�"���B�#,��
Cm#i��C�%���@�%́�@@�%ԁ�N@�%݁��#�&���#�&��C�'A��@�'���@@�'���N@�'����#�(����#�(���,C�)܂�7C�)��@�)U��@@�)]��N@�)f���#�*o���#�*���C�+Ƀ�WC�+��\C�+���C�+���C�+ ���C{,(���C�,1���C�-9���C�-B���#�.J���#�.\���#�/DŽ��#V2���C�4����#�4,���#�4���KD�8���]D�8���jD�8���wD�8����#�8����D�8���D�8���D�9?���D�9M���0�:_���D�:m��E�;��E�;���	u=<���	�=	<���9E=���CE=Ɇ��=�>܆��=�>���=�?���=�?���,�@s���#)A|���E�B����E0B���FJBއ�FPB��	"F�C��/F�C��<F{D(��JF�D1��XF�EM���*jEU���#WEs���#�G����#aH���#gJ0��fFpM[��	tF{Oc��	�F{Ok���#�Oz���F{O����F�O����F}P���
G�Plj�G�Qى�#G�Q��1G}R	��DG�R��WG�S%��fG�S3��uG�TE���G�TS���G�Ue���G�Us���#�V����5�V ���,�V*���H�WH���H�X`���H�X����H�X���H�XL��I�X|��I�X���*I�X��gI�Y���I�ZQ���I{[Y���I�[b���I{\j��J�\s��J{]{��7J�]����#�^����#�^����J�^���	�J�^���	�J�^Ð�	�J�^Ȑ��5�^���s4�^����#	^���<5�_���@�a��QK�a��[K�b���dK�b���#�c!���,�c5���#�d=���#�dE���,�dY���#�ea���#�eu���#�e}���,�e����#�f����,�f����#�g����#�gʓ��#�h��)0�h0��]0hK���A�hS���A�h\���#�iq���#�i����5�j����5�j����5k���1�k���5�l0���#�lE���#�lY��[K�ma��dK�ml���5�n@���#�nS���#	nt���A�p|���A�p����K�q����K	q����#�r��#Gr�Z*+	t�|*3	v��*A	z����KW{����#�|���KL
|���KR
|$��
L{}6��!L�}D��8L�~R��LL�~`��`L{o��tL�����L{�����L��Ɨ��L��ԗ��L�����L�����L�����M����#M����6M��0��QM��>��lM��P���M��^��HNd
�f��QNj
�o��ZN��w��iN�����xN������N������N������N������N������N������N������N��Ę��N��̘��N��՘�
O��ݘ�O�����A{���0O�����:O{����LO����^O����|O�����O��!���O��*���O��2���O��;���O��C��P��L��(P��T��;P��]���*j�a���#������,������,��T��NP������5��ؚ�eP�����vPq
�����Pq
�,���P|
����P����#�
���7S	�L��kS������#�
����7S	�O���#�
�`��7S	����kS�����#�
����7S	�n��7S	�����#�����~S�
�֢��S�
����#�����#�����#������#	�0���S�
�E���S��Y���S��i���,������S�����C����T��'��!T��5���<��G���<��U��7T��g��JT��u��]T�����nT�����T�
�����T�
����
={����=��ͤ�%={�ۤ�1=�����=������=�����=��#���=��7���,��X���#��`���#��h��=,������2&�ǥ�1�����,����qU��E��	�U��M��	�Uj�U��>V��]���Vv�f���,��z���#������,������#������#������#������@������C��Ȧ��#����X����#����;&�� ���#�T���&����l'�����'��&���'��3��H(�@���(�M���(�Z��<)�h���)�v���)!�����&������)'�����X������X������X��ҩ��X�����X������X��
���X�� ���X��4���X��G��
Y��[��Y��n��)Y������,�����#�����#�����,�����#�����,�� ���#��(���,��<���#��D���,��X���#��`���,��t���#��|���#������5������5������5����1�����5��0���#��D���#��P��)0������Y������Y��٬��YM����YW����Y��R���Y��Z��Z��|��)Z����@Zv����5������,�����1&�į�1-����#�����Z�� ��[{�]��[��d��-[��g���#��o���#)�x���E0����E����S[��&��r[��.���[��6���[��>��\��N���#��Z���#�����#������#����#G��Z*v��|*U���*������\������\�����[K�����dK������\������\��²��#��ʲ��#��Ҳ��#��ܲ�o#��	���]�����]��4���]�p��^{����^�����'^��ܳ�;^����Z^,���}^2�$���^8�ʴ��Z��д��^>���[��\��[{�����^D�ܶ��^����_K�4��#_R�����#��`���#m�p���_��x���_�����,C�����`�����#w�����#��̸�(`����1`�D��X`����j`�����`�����#�����`�����`�����#�����#�ȹ�[�й��a�ع��a����a����a����a{����a����a{��b����#�	���,�	0���#�
8��Cb�
@��Tb�
���eb����sb����S-����#�
����,�
��s4�.���#�6���#	?��<5�Y���b�a���b�j��1�����,�л�S-�1���#�D���#�L���,�`���#��
�b�h��	�b�p���#�x���b����#�����b�����#�����b�����#�����b�����b�����#�����b�¼��b�ɼ��#�Ѽ��b�ؼ��b�߼��#����b����b�����#�����b����b����#����b����b�!���#�)���b�0���b�7���#�?���b�F���b�M���#�U���b�\���b�c���#�k���b�r���#�z���b�����#�����b�����b�����#�����b�����b�����#�����b�����b�ý��#�˽��b�ҽ��b�ٽ��#����b����b����#�����b�����b����#�
���b����b����#�#���b�*���b�1���#�9���b�@���b�G���#�O���b�V���b�]���#�e���b�l���b�s���#�{���b�����b�����#�����b�����b�����#�����b�����b�����#�����b�ľ��b�˾��#�Ӿ��b�ھ��b����#����b����b�����#�����#�	��c���'c���1c}"��:c�+��Cc�3��Tc�<��ec�D��~c�M���c�U���c�^���2&����c�t���cv ��X!+���#�%3��rd�%E���#�&M���#�&U���#�&]��	�0�&o��	�D�&}��	�d�'���	�d�'���	�d�(���	�d�(���	�d�)��	�d�)��	�d�*��	�d�*���	e�+��	 e�+��	4e�,#��	Ae�,1��	]e�-?��	pe-M��	�e�._��	�e�.m��	u=/{��	�=
/����e0����e0��	�e+1"��	�e110��	�e�2B��	�e�2P��	f�3b��	#f�3p��	5f�4���	Hf�4���	[f�5���	nf�5���	�f�6���	�f�6����f7���f7X���f8����f8����#�9����#�9��zhs9L���hs:����hs;����hs<����h�=��i�=$��i�>D��7i�>W��Ri�?w��ji�?����i�@����i@����i�@���i�@ ���i�@3���i�AX���i�Ap��j�B���'j�B���>j�C���Qj�C���9ED���CED���dj�E��yj�E���j�F���j�F���j�G%���j�G.���jHB���j�Hx��]D�H����j�H��k�HC��,k�He��<k�Hm��Lk�Hv��\k�I���|k�I����k�I����k�J���k�K4���k�LL���k�M����k�N����,�O���1�P���5�P���l�P��� lvPD��S-�Q���s4�R����#�R����#�R*���#�R6���#	R?��<5�SX���#�U`���S�Uh��n�Uq���#�V���n{W���*n�W���7n{X���Dn�X����#Y����S�\���n�\���kn�]���vn�]����#^����n�a	���n�a���n�a���n�b+���n�b9���n�cK��o�cY��o�dk��,o�dy��?o�e���To�e���io�f���~o�f����o�g����o�g����o{h����o�h����o�i����o�i����o�j��p�j���#�k!���#�k��#Gk�Z*m�|*o��*+s��#Gt�Z*v�|*x��*+|)���p�};���p�}I���#�~Q���#�~Y���#�~s��qF~{��qL~���4qS���Gq����UqS���aqv����,��h��pq��|��~q&�����������,������#������,�����s4������#������#	����<5��!���,��5���#��=���#��H��1������qj����S-������#�����1������#q����#��+���C��3���C{�;���C��D���q��r���q������#�����r�����&r�����Gr��0��Yr��h���r������r������#������s��D��
L{�Q��!L��_��`L{�l��tL��z��8L�����LL�����M�����#M�����6M�����QM�����lM������M������KL
�����KR
����L{����L�����L��)���L��7���L��D���L��R���s��n���s��v��	�s��~��	t�����	�5�����	�5�����	#t�����	2t�����	At�����	Rt����	ct��&��	rt��?���t��O���t��W���t��`���t��|��1������t��P���,������5��8���,������,�����t��H���t�����u�����u����*u�����Au�����Lu��4��\u����du������u����fFp�����u�����u�����u�.���u�E���u�\��)$����[�����ev�����uvq
����vq
�����v>�X���vJ�����vX�����v_�0��wh����~qo����w�����-[������#����4wv���@wz�)��Lwv�?��Xwz�M��dw��_��uw��m���w�����w������a������a������w������w�����w{����w�����w���x�����a{����a����x��/��'x��=��:x{�O��Ex��]��Px��k��mx��y���x������x������x������x������#�����xN����ny�����#�����#�����#������y������y�����#��~��1z�����Ez�����tz������z������#�����z�����z�����z�����c{����c��(���z��:���z��H��
{��Z��{��h��{{�v��.{�����B{{����P{�����^{�����o{������{�����{�����{�����{������{�����{�����{��.��|��<���<��N���<��\���|��n���|��|��}�����}�����%}�����9}�����M}����\}����k}����~}������}{�
���}�����}{�&���}��4���}��B���}��P���}��b���}��p���}��~��~�����~�����&~�����9~�����E~����Q~����^~�����k~��	��y~�����~��0���~��D���~��R���~��`���,�����~��t���#��|���#������,������#�����������
������������������������5������,�����1-���S-�����#��/��1��^���,��w���#�����#����#G��Z*v�|*U��*�����#���#G�Z*v�|*U	��*�����#�
��#G
�Z*/�|*7��*D����L��%�W��%�e��/�r�/��`��#�h��#����#����A����A����A� ���z� ��l�� ��%�� ��/��!�/��"�����#d����%���#�'$��P'0
�vP)�
���-�
��#�.��J=�.���S�/��e�0�	����1�����2�
����3 ����4`����5��ԁ�6����6����7��+��7���,�8��ނ�9����:��1�;,�>��<L�b��=\�o�	?����@����BJ����D\�ƃD��҃*Eh��#�G7��#�Gw��#�G���#8J��=��K�G�?K8�}?�Kr��?{L���#�L��T�EM��_�{N��j��N��u�LO����RO�����P	����P����Q)����Q7��#�R?��#�RG��#�RV��,�R��܄�S����S�����T��
��T�� �dU��3�jU���=�V���=�V��=�W!��=�W5�F�{XC�W��XQ��,�Yr�h�qZ��y�wZ�����[�����[���,�\���#�]���,�]���#�^��)$^�[�_~�w�_��-[�_���#�_���P_��,��_���C{_���#�_���#�_���#)`���#�a���C�c��e�c$�{�dY��#�ea��S�et�n�f��~S�h�����i�����k�����l�����m��dž�o��Ն�r ���t �	‡�t" �	=,�uX �	,�u� �(+�u� �ԇ�v� ���w� �	��w� �	��x!�	�x0!�	+�yY!�	@�yt!�	W�z�!�	n��z�!�	���{�!�	���{�!�	���|$"��L{|_"��L�|h"��z�}p"��z�}y"�	ƈ{~�"�	Ԉ�~�"���"��#�"��6���"��6���"��F��"�
G��"�9E�
#�CE�#�����%#�
���3#����@#�&���N#�=�(�[#�����h#������#�R�.��#�b�4��#�r���#�����#�	��;�$�	��A�@$�	����k$�	ΉG��$�	�M��$�	�S�<%�	�Y�W%�	�Y�r%�8���|%�%-���%�i����%�-���&��,���&��,���&�1&��&��5��y'��*j�}'��2&��'���&��'���&��(�Պ&��(��&�	)��&�L)�~q&��)�.�&�*��-��*��-�� *��,���*��,���*�=�_�+�O�_�+�d�_�,+�u�_�@+���k�p+���k��+���k�$-������-��#���-��#���-�	e���-�	 e���-�	�e���-�	�e���-�	����.�	
���.�	u=�� .�	�=��..�!���@.�3���N.�	�e��`.�	�e��n.�	f���.�	#f���.�	5f���.�	Hf���.�	[f���.�	nf���.�	E����.�	g����.��#���.��#���.�͍��/����/����0/����>/�5���L/�D���a/�S���o/�e���}/�w����/������/������/������/������/�Ύ���/�����/�����/��{�0����0�)���/0�?���=0�U���O0�q���]0�����o0�����}0������0������0�ɏ���0�֏���0��#���0��#���0��a���0��a���0�Ð���0�ِ��1��{�1����(1��{�61�%���D1�7�{�R1�H���`1�Y�{�n1�k���|1�}�{��1������1���{��1������1�Ñ���1�֑���1�����1������1����2�+���2��9��X2�1c���2�:c��3��#��H3�ے��i3����3������3��,���3��#���3��#����#G��Z*���|*���*A	��3��#���3�W�1�4�j�1�4�����]4��,��|4��,���5������5�fFp��5��3��6�����16�œ��I6��0��j6��0���6�����6�����6������6�
����6����7�*���-7�=���M7�S���`7�i����7�}����7������7������7�Д���7�����7������7�����7�C���8�U���%8�r���F8�����N8�����o8�����w8�ؕ���8�����8�
����8�'����8�L����8�Z���9��5��"9�h���59�ے��V9����9�t����9������9������9�Ԗ���9��F��9�9E�:�����W:����_:�1�8�z:�>�C��:�K����:�Z����:���O��:������:�����
;�����;�Ɨ��.;�ח��K;��U�T;�@Zv��;����$<��[�p<��,���=�S-���=�1���>��#���>��#���>�1��s?��#����#G��Z*v��|*U���*��{?��#���?��#���?��#���?�ә���?�}?���?��?{��?��C���?��#��@��#��@��#����#G��Z*}��|*����*��"@����*@����3@�6���;@�I���D@��#�L@��#�[@����m@����{@�����@�����@�	�S��@�	n��@�~S��@����	�@����	�@����
�@�	�A{�@�	ǚ��@����A��A�
A�֚\
*A��#�
9A�	%��KA�$�ZA�	1��lA�\��yA�e���A��� �A�؜ �A��� B�� B���:B�0��CB�A��KB�R��TB�c��jB�v��sB�����B�����B�����B�ϝ��B����B����B����B�8���B�W��C�h��C�y��$C����-C����CC�Ȟ�LC���bC���kC�!���C�2���C�C���C�\���C�u���C�����C�����C�����C�ǟ� �C��� D����!D���!(D��,�"�L�NP�#M�'��#�T��#�#�U���O #V���O $hV�ʡ%�V�ס&�X��,�'�X��#�(�X��J�(�X��#�(�X�1�(�X��,�)Y��#�*Y��#�*,Y��a�+4Y��K�+<Y��K	+EY��#,ZY���-gY���-zY����.�Y�n��.�Y���/�Y���/�Y�+�0�Y��0�Y��$81`Z�:�Y 1�Z�J�a 3�Z�t�g 5�Z�[{50[��#�68[��#�6@[�)$6p[�[�7�]��#�7�]��#�7�]�T$7|^��#�8�^����8�^����8�^��s�9�^�t�9�^��5�:�^��5�:�^��6�;�^��6�;�^�Ӣ} <_��� <&_���=F_���=Y_��;�>y_��;�>�_�<�?�_�<�?�_��;�@�_��;�@�_��� A`�&�� A+`�7��BK`�N��B^`�e��C~`�{��C�`����D�`����D�`����E�`����E�`�1�F�a�ˣ�G@b�ݣ&ISc��&Jxc�1&Kd�S-�Lkd���� Mtd��#�N|d��*jN�d��#�N��#GN�Z*vP�|*UQ��*�T�d��#�U�d��� #U�e�Ԥ+#Xg��6#[,g��=#\�g��F#^�g�5�N#`�g�5�W#dh��,�i h��#�j(h��,�jCh��#�kKh��,�k_h��#�lgh��#�lrh�W�1l�h�j�1m�h�)0�n�h�	���ni�	œ�ni�	���o0i�	���oHi�	�0�pii�	�0�p�i�	Z�q�i�	)Z�q�i�	��r�i�	��r�i�	���s�i�	
��s�i�	��t�i�	*��tj�	=��uj�	S��u j�	i��v-j�	}��v;j�	Д�wHj�	��wVj�	L��xcj�	Z��xqj�	�5�y~j�	h��y�j�	ے�z�j�	�z�j�	t��{�j�	���{�j�	���|�j�	Ԗ�|�j��F}�j�
G}�j�9E~�j�CE~�j��0�k��D�k�ݥf#�+k��l#�Fk���l#�dk�s4���k��2&��k�S-��l�1��lm�����m����,t��5���v��,���v�1&�w�1-�Dw��#	�Mw�<5��gw�W={�uw�f=���w�^����w�n����w�~�{��w������w������w������w��#���w��#���w��#���w�����x��C��x��#��x��#��;x�2���Cx�@���Lx��A��Tx��A��]x�N���ex�^���nx�ʧ�#��x�ܧ�#��x�����x�����x�"��#��x�0��#��x�>����x�N����x�^����x�s���y�����y�����y�����,y�è��:y�֨��Hy����Vy����#�hy�
��#�vy�"��#��y�8��#��y�N��#��y�b��#��y�v��#��y����#��y���{��y������y�ȩ{�z�ߩ��z���{� z�
���.z�$��#�@z�5��#�Nz�F��#�`z�X��#�nz�j�{�}z������z����#��z����#��z������z�ͪ���z�ު���z�����z�����z����{�Ñ��{�֑��+{�(���={�C���K{�^���]{�w���k{�����}{������{������{�Ы���{�����{�����{���#��{��s���{�����{�/��#�
|��*j����5����S-��P���9L�s���9U�����#�����)$�����0��#����#�����#�����*j����#��(���,�����,��?��J���Q��S���r��\������n���������#�������#�C������Q������_��ʮ��m�����{���������������,������A������V���ń�g���ӄ�x�����������������������ү��!��߯��/����#�=�����#�K�����]��&���k��:���}��N������b������x���������#������$�Dž���$�Յ�ǰ
$���ڰ������������������p��,���~��D������\������w�����������������̇�ȱ��އ������������$�����D�����Z���,��p���>������L������^��ղ��l�����z����������$����!�$����4������K���Ĉ�b���ֈ�x�������$�����$�����{�������@��ȳ������#������5������#��(��3���0��E���<���5�����,��h��S-������#������#������#N$������������������}?�����?{�����C�����#��*���,��T��(���`��B���r��R������b������u������������������������Α�з��ܑ��������������#�����*j����2&����#��&��T��8��!T��F��`���X��z���f��T�$�n���T�$�w�����$������$����
={����=�����%={����1=������=��Ӓ��=�����=������=����������͸��*�����8������F��
���T�����b��0��$�p��@��$�~��P������^������l������}������Ӣ} ������ �Ǔ�����ٓ��������,��4���#��<���#��D����%�K��غ%�S���%�\��
���d��%���m��@�v����J���L��c�����y�$%������h�����v4����v�����-%��û4%���ڻ@%����#�ș��#�ԙ��#�ܙ�*�{��?�����T�W%��g�]%��z�{"�����0����d%>����j%L��¼�#_��ۼ�#m����	{����	����9�
0���#�
8���#�
@���#�%
Q��t��
Y�����
���F�%���	"F����	tF{���	�F{���fFpٛ����%���#����,�Z��ܽ�l����z�������������#�����#�����z�����z�ќ�{�{�������B{{$��P{�b��+7�u��:7�����{�����{����
{�Ý�{�ם�^{���o{�����{����{�%���{�8���{�L���{�_��|�s�����% {�����% ���{�%!���.{�%!������"���ƾ�"���5�#��.�&#����,�$��;&%��پ&&���
&'F��e-�(P��w-�(x�����)����#�*��#G*�Z*&,�|*%&.��*A	2����#�3���@�4���
{�4���'��4��:��4�����5 �����5.���}{6<���}�6J���}{7X���}�7f�����8t��ƿ�8���ڿ�9�����9����=�:����=�:Ţ��=�;آ��=�;���,�<
���#�=���#�=$��
��=6��!��=D���,�>X���#�?`���,�?t���#�@|��1�@����#�A����,�A����#�B����#�B����#�Bģ��#�Bͣ��#�Bܣ���C��}?�C���?{D#���C�D0���#�DR����#Dd�����#Dr��9E{E���CE�E���
��F�����F���.��G���:��GƤ�_�{HԤ�j��H���#�I���#�I���#G&I��o�P&L���#	L��~S	M0����\&NM���Sd&P[��
��Qc��!��Ql�����Rt����R}���#�S���4w{S���@w�S���Lw{Tƥ�Xw�Tԥ�:x{U��Ex�U���w{V���w�V����W�����W,��
�r&X:�� �x&XH���wYV��x�Yd��Px�Zr��mx�Z���3��[���L��[���e��\���y��\���ǚ�]Ʀ����]Ԧ��x�^���x�^�����_������_����{`�����`(���z�a+����&a9�����&aG���w�bU���w�bc����cq��5��c��N��d���f��d���~��#e������#e����x�fͧ��x�fۧ��0�g���D�g������h
�����h�����i-�����i;����jM����j[��&��km��:��k{��N��l���g��l����#�m���x�m���'x�mʨ��a{nب��a�n���a�o����a�o��dw�p��uw�p&���w�q8���w�qF���,�rZ���#�sb���#�sl���#�tu���#�t���#�u����#�v����#�x���	�+�z��	,�z��	��{��	&��{��	���|8��	���|F��	R�.}]��	b�4}k��	r�~���	��~���	�0����	�D����	=�(�ʪ�	������	
�����	�F���	
G���	9E�7��	CE�E������t������������&����	,�����	7+��ƫ�=,��ԫ�O,�����	�*j���	f,��V��r,������,������&�����&����,��(���,��z��s4�����O+�����_+�������������,��ڭ��,��ܭ�1&����.�&����2&�Į���&�T��-�����%-����S-����e-��.��w-��7��i���?��8���G��(+��P���-��Z���-��b���-��j��-.��s��	d.��{���.������.������#�����N������g�������������#�����[��h����X����w�����o#�����#������#��������������)������<��	���P���,��������t���#��|���#�����o#��³��#�&�׳�Q�{���a���D��B{{�\��P{�����q���ȴ�~������$8��������������b���#��l�����&�������&�������&�������&�ж���&���{����������������������&������8������F������V�����h��(���v��<������P������d�����������������Ʒ���v�ܷ���z���4wv���@wz���Lwv�$��Xwz�2������D������R��9E{�`��CE��n��
{�����{������#������#������#����#G��Z*v��|*U���*������`�����j`�����X`����Z��&����f�'�����#������,��ع��#�����,�����#�����u�v�Y���#��a���#��i��}�
'�x��[{����#�����#'�+��n&'�4���S-'�<�����E�����M���#��U���#V�k���#>'����	#�{����	;������	S�{����	j���ļ�	��{�Ӽ�	������	������	������	������	����!��	���3��	���A��5���O��D���d��S���r��e������+������F������a�����������������ҽ�������	������	������	�����	/�����	G���*��	\���8��q���F������T���=��g���=��{���=������=�����7������N���¾�e���Ծ�{������e�����e����f����#f��"��5f��4��Hf��B��[f��T��nf��b������t����������������������%������9���¿��,����M�E'�����#������������������A�����A�� ��ZN��(��iN��1��N���9��^���B������J������S���N��[���N��d���#��l���#��t����S1����o#���������]���Z��`��[{�@���^D������Y1�4����`1����)$���#_R������h1�����vt1���8Y�1�t��'������5��1����C�����T���H��l�������#�1����$8��T����l����'��,��C��9���#�A���#�o��;����P����h�{���������	��{��	���������1�����1D�����1t���z�|���z�����F���
G���9E���CE����0�	����D�	���Ӣ} 
����� 
������1�����1��"��"��?��5��\��
=��i��
?��v��Q�����Y�����b����j������������������1�$����T��%�����8��1���E�	������s4�4��T��1|��O+���_+����l�����}��4���2&���.�&���ݣ&|����&������D���,�u���,� ������ ������ `��S-�!����#�"����#	"���<5�#����#�%���	���1%���	���1%����*j&���#�&	����2&$���#�&,���2&G���#�&O�����1&R�����1&[���F�#'c��
G�#'l��9E�#(t��CE�#(}����2)����#�)����#"2)����}�#+����}�#+����}�#,����}�#,����#�-����#"2-����r�2/	���r�20��N��21/��`��22B��u��23U�����24h�����25{�����26������27������28������29������2:���Gr�2;���Yr�2<��r�2=��&r�2>&��
��2?9����2@L�����AZ��	��Ah��-��2B���io�B���~o�B������2C;��B��CM��S��C[��v��2Dh�����D������2D���At�D���Rt�D������2E������2E�����F
�����F����G����G'��3�{H5��E��HC��W��IK��l��IT��W��2Jb��@��2Jp�����Kx�����K������L������L������2M������2M������2M������N�����N���%��O���8��O���K��P���_��P��s��Q������Q������Q����*jR����#�R������2R<�����T���5	3Tl����3V������X�����Y���Au3Z����&3_��� �,3a��� �53d8���,�hP��2�A3i$��C�M3m���Z�Z3oM��n�`3p���{�`3q����`3r`����`3s4����g3t�����o3v(��fFpx����u�z����u�{����u�|����y3}x�����~�����������������������������Z*������n��)��3�|��)��3���:��3�d��.�&����I�����T��3���	a�����	o�����	}��������3������3�n��	��{�������3�������:��'���B��:���K���-��S��-.��g������{���9L�����9U�����,������#��%���#��-���,��A���#��I���,��]���#��e������s���������5������D��������������������������������������������;��)�����;��/���I��D���[��U������4<�����L<������9G����#���������������������0������H�����m��,������C������Z�����q��������������������2������R������e��7������N������e������{������=�����=�����=�����=�����,������#������#/4����	�A{���	ǚ�����S64�@���S=4����l��1��w��1���~SD4�����������K4�����R4����Z4�t���c4�����j4�����D4�����������r4���������r4�(�����7�	
���:�C���H�	c�w4�Q�	����S�	����V�	����]�֚\�e��A|4�m��#�4���������$����	%��4���	1�����\���0�e���C��#�4�Y���P&�a�F�%�i��S��v�<F{���a�{���p������{�������������������������������������
�����/���-�K���;�g���M����[�����m�����{������������������)�����G�����i������������������#���
�����
�����
�����v���#����#����{�!�,���/�H�{�=�e���K�����]�����k����9�y����9���������������
�{���&�����B�����j���������������������	����������%�����3����E�!���S�0��9�a�D��9�o�X��9�}�r��9�������������*�����<�������������
���8� �{�F�?���T�^�{�b�}���p�����x��������#�����#�����,�����#�����,�����#����1�����,����#�	��#�
	�l��9	�{��9&	����94	���:B	����T	����b	����t	�����	���{�	�����	��9G�	��#�
��#�
��#�.
�3��@
�I��N
�_��`
�s��n
����	|
����	�
����
�
����
�
���{�
�����
���{�
�����
�
��
�
� ��
�
�3���H���t��$����2�]��D�o��R����d����r�������������������������������
���� ����3�:�G�:��9�<�[�����#���d����x������������
�܄�
���&
����8
����F
���X
���f
���x
����
����
����
� �� �
�2�� �
���!�
���!�
��;�"�
����"����"�5��#�D��#3�S��$A�e��$P�D��%���&:'u���-:(����=:,��+�P&1�M�1�#M�1)�	?��21�	J��2:�U�P&3H�lM�3[��M�3o�	�5�4w�	h��4���s�5���5�5z��,�5���&6����&7���#�86���#�8>��5h8ٸ��#�9���fj9|��#�E:'|��&�</|��&N<8|�l��<�|�}?�<�|��?{=*}��#�=G}��&�@O}��'N@W}��'�@`}�l��@�}�}?�@@~��?{A�~��#�EA�~��&�C�~�(NC�~�l��C,�}?�Ct��?{D����#�D����#�D���b,D���#�E$��{-El���#�Ft���-�F=���#�HE���-�H���#�J���-�J����������&z����������!��!��!���$�&�0��!�5�5�<�<�H���O�!�!�Z���c�i���x�{�H�Z���5�����������!�����������������������������������������������!�������������!��Z!�!�0�!��Z��� �0�������!�!�!�'�����/�5���;�������������������������G������������N�\�\�a�������g�n�}���}���}�}���}�}���}�}�����������!���!����������������������������������!��;���0�0�����������0������0������(�-�~�(�-�~�����
����������(�-�(�-�����(�-�(�-�����(�-�(�-�����(�-�(�-�����������������������AB�%�T�BE�����������A�%�T�A�@�T�������������������A3��������������������:�C���P�/�a�o�x������������������0������������������������������������������/�������������/���;����������������������!���������5�G��G�������������������������������������������������������������������G������G������!������G��������������������������!�����������H����i���x���������������������������������(�0�0�=�Q�0�=�Q�g���5�������������������(�}��}���!����������������������������������/���;�������������������������Ed����������������������������������������������������������������������������������������/���;�����������������������������������������5���������������5��������������������#����/���;�����*���:�C�P��������������������������������������������������G������4����������B�K�����G�����������P���Y���_�_�������������������������������f�j������������������������������������������������������������q���������������5�������������5�������������5�v�����v������������������$����������������������������������u��������������������'�?���F�N��!��P��!�`�������������������������������c�n�n�{���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������5�G��G������������������������������������������������������!��������5����������������5����������������� ���������������������������������������������������������������������������������}��}���(���&z�����������������������������G������{���5���������������������1�������?�M����?�M�\��������������������������������������������������/���;���������}��!�&����������������������������������������������������������������}���}���������������������������������������������������������������������������c�c�t�����������������������������������������������������������o�����������������������������0�����������0���������������������������������������������5�G��G���������������������������������������������������{��������������������������������������������������������������������������������������������������������������������������������������Y�������� �����������������������������������5�������������������(�������!���!��������������������������������������������������������������������������(�}����������}��������}������}��$� ���������������������������������������������	�������������/���;���������)�/�����6�8�������������������������������������������������������������������������:�?�J���V������B�����a���?���?���o��s��������������������:����������������K���������������������������������������}���}����,�,������������������n������������������������ ��������������������������������������� ��0�������������������������������������������������������������������������������n���������������������������������G��������������������������G����*3E�*3E�c�����������u$��j�������'������?�?��-�,�-�,�-�,	(,(%4)-849U9%;%S]T]U]V]W]b,b(j�)%4�jnr�v��KUK%O-O�g�g4g)g-g8�%�����%�-����������������)9'�)9'�)�'�)�'�)7(�)�()�())))r))�))�)!)*'Q�,�Q�,�Ye-�Yw-��]S	Y%-�Y-���A\�%��a����~Sr4�������r4�����3��������Sw4�n���������#�!�#��#V�#�)�#�1�#�9�#�A�#�I�#�Q�#�Y�#P:i�#X:y�#V��#���#���#���#_:��#���#���#���#���#���#f:��#���#��#���#��o#��d;ymP!�;!�';!�0;��7;!�B;�?I;S;��#,�~S_;�#v;!;~;	�#���#yI�TS;1l�;9I1��I��&!7(�;��#�	�A�A�f�;��#�i���i��A�?�;��#���#;!��;!��;$�	$�Q�#�Y�#�a�#)	)$@$!�'3<9�S:<��C��nB<	T$�TN<��A{���R4��S�i]P!sT<)�CP!�^<q~B�Y��Y�Wm<Y�Wm<�#��$"��$'	�#�S;!9'�<1�S�<)��A��<II��&��#�<	~S�<	P�F%F)-B<�%>y6�m�<��%��?��d%WA`�<�z%l��%��F%M��%���%���%��mP�g���&�����~ =��#�����\���$����A����A{��#��~S���Y=��t=�n%a�P��%��
P!�A�A�=!�?�=!$�!0{!=P!L���%y��A�A��=A��h��#V!0�>!�#
>�&��#&��&��Y&��;&�!�&�!�&��1&�!�&��F&��G'�1�A{1��R4��&�1�# >�#��S*3v&�q�A���#���#��&��#��#�i�#)$�#�A�#�i�?��S?A��na i
�A`E'��*jq�f)?A2?i;099?��#�i�,�i8�i�,�A�,�i�*�9LK?�`	q�Svi-[���#���#V�~S���#��dx?A:x{A�#��~S���V�#�	�#��#���D�i�@%il�;)��iD0	��#���#���S>@�l�D@A	���A{�#Q@A`a@�D	vN	���#i@A`q@�c	�i1���#�i�,�A1&i�s�����i�5�)�#x@�#�i�	�9�#�!�	P!�?�=��	WAA
]AA%�eAA/
kAIu�vQ?
�<��BV��2&�~S�Y�#���A\!}?0;�#��S>@�A{��#�a~BCi~SV�~S	����&��@�a���&�QK���Fyl���n�C�9E�
G�{
a a�#	�~S�Ci�#��~S���S>@��A{y�#�D��#�D��#�Y�#�a�#�YCE�~SIEi�#��nV�~BCa%PE�~SVE��#�im6�ix6��B�E�V�E����E��#�i$���B��E�S�En�E��#G����#�iƾ���@���E�Z*���	i1&i�,���#V��#x?�QK���#�)��)�NF��TF)�P!�!��:^F)A�OeFitv1�A\��#V�#�i�#���#)��#�A�?�;A�
H�HA�HA�HA�Hi��
1Hn�E$�ACH,%��	�#kH��#���#�Y�#��#q�#��#��#�!�#�4�
�4�@�)�
�)l�v<�#�D�#�y�#�L�#�T�#G\~S�E��#�9�A\)ǚ�L
1HL�A�Md%��Ml�p�l�@Nd\��TZ*�E�tv�V�V!$NA/Ni\��t�#��?��N|�ACH�%��A[�A}?�NA�#�Ad�9m�A`�N9��N��#���?��S�E!�OI�#VQ�
O�Z*O��O��#��n�E�%�"O��A{��#���ACH�%���~S����1t���E<
1Ht��i��O��#���#�	��O�~S���#G���O��A�O�%���dx?�\����P����E�~S���#G���O<~S�Ei�Bt��D
1H��#��dx?��A�O�%���~S��\��yslP��#rP��A�O�%�����E�~S�E�\����#�PD~S�E��#�P!�?�A�A�#�A��A�A�y}?�y�?{�?QWCQ!����?{y�#Q!;Q��O�-FQ��#TQ��#�A�uQA�zQ	�1�P���#��#q��#)��#�iq���#���#���#�i��i��)��V)�{dZ*�V)��V)��V��V�na �#W����+�):CW�RMW�^�)rSW��E~S�ETZW�ACH%�����{vW��S?�����#�$�#���#�$�S>@$�A{a<5��~SVi�B\i�I\		�#�	�#�,�#�9#b\�FL]	�#��#)��#�,�A{4�S>@!	2t�iu�9�#�9;P�9���9d�9P�A�fU^A�\^)	�S?)	�b^)	��g^A�f�^)��V)��^1	�v1	�vA	�^A�f�^1	v!�#�^!�Y	�#)��#�iOi	"F��dK�q	�#�q	��y	�#�A�fa�	�#��~S�
��S6a��#�4�#�i�9�b<�#��	�#X:��#�9����2&�1���,��qU�����*v�X��#�<�#�1�ScdD�#G�qd!�P��P<~S�<�Y=!�'�;!�(�d!�(�d!))�d!r)�d!�)�d!�)�dD�#��	�#�T�#�T�S>@T�A{i�v��S�h����h��A{�	�#���#ii~q&L�#�T�#�\�#�d�#���#��o#����i�	�S?�	na q�#�iq���^8i�#��	�#��	4�ii~S�iid�i�	^���Y��	�#��	��	[�a~SjQ�#��	�j�	�Kj�	��QXj�	�#��	j�����	�v-j��^D�5v�	cAj��Jj
�S���#�i�	��\�#G�����#�j��#���#��5�	
�#����
�#���BbpQ�#��
��#�QXjpA�!
�#�)
`{p)
j�p1
��p9
l�vARMW�����#��#�l�#�)�At4�#���#������j��j��j�CEI
���]D���j����w��k���wY
�A{lZ*�VQ
�SxY
�A\A�A.hQ
�S-%�7{�l��a
�#��ax�f%xa
���k-xA��h�~@xq
�FxIk�	����#���6�a��y
�A�����Wx��?\xY�#�A��]���O YdK�Y�{�������x�
�A��
�#�t�#�	�#||�#���#��A{!�d�#G%�9*,��
D�Y[K�~S�	U��	`B�A`{����\&ir���i��D%���������
�����iu�i��l�#�t�#�t~S�l�l~S���#���
�#G�I��
[��c��m��Z*"�tZ*�V)$[�A����A��zQ��#�|�#�|~S�A�Ԋ�
�#��
�ފ)��V|�A{|�����ACH�%����S>@!�@��
�A{!�#��
�A\!�vG��
�#G!N�a	�#�3i	/F�Q�#��	�#~��#�	�#v;xN��#�!�#���#c���#�)�#��~Sl��
�Ss��
nz��
�#�������#���
���@�9#�N	�#��������#���#���#���#x?��#�P�A�M�%��M��p���@N�\����#��~S���Y=���E��S�E��ACH�%����p���@N~S�E��A\�~S�1�#������#��#rP�/����A�~B���
�A\�@�L�j��	�A\Ay��#��#��#ەWC���#����1�{9�#����	�A{	�)f�)�A��{)0�))�)<���#�a�w�Q�~�i���q	Q��y+����#G�I����ACH%���Z�Q�@�yi���#G�r��#G�x�y~/�)��8���?�)����#GQ�$�#G	WC�,
1H��O,n�E<
1H<n�EL
1HLn�E���w9Li�9��9��A��A�A�\���E\~S�)�?{���A�Od%�����d\������\�A�Ol%��l\��q
F��91����wA~@xq
��q
�Ę� ʘ�Fј�nm�W�)g�V�o��z����q
����ט� h�  {�1 �wA= �A�ݘq
N V��#���#���#�q� I� �!� h�� ���  I�#���  ,��!�!�A.�N�3!#���A.���p�h!�I� �&Ix!��!����!���l���\�#��#��!����EQX�Q��,�#�L�#�<�#�9�#��!�	�#�!�!�A�c"���#��)$I�#�I	"�2��Sw4�n��~Sr4��������I���Idž�IՆ�I���#��#��
�#~�)�#)1�#�	�#�Q�L{Q����9�A{9�S����"�Q�L�Q�z�Q�z�Yƈ{YԈ�����#��6������
���&���=�(���������R�.�b�4�r����Q�#�A�,�Q�,�9�"���1&9�"ˢQ�2&Y#�Y#�Y1#Ң9���9��R49d٢qF#�QP#�!	Lu��X#�Qc#-'�[K�Qt#�i��O��#����#����S��|Z*�V9�A\��@�9~S&'9������Q�#���#��˫��#�3�9E{��F{	�#a ���R�t�#�t�S>@t�A{A��p���#���#���?{��#����ı9�#��������R4�ǚ����	�e������0����#�9�#7���#��l��9�#B�I$M�I'$T�Q8$�QK$�Qh$�I�$Z�Y�$�Y�$�A�$2?Y�$�Y�$�Y�$���`��dK�I�A�a����)����a%��a*%��)%CW)*%CW��#m�Z*�V�P�Q:x{QEx�Q��q=%�q���qN����#��	�#p�	�?z�	�#��[�����M%�Q��i[K���#��T$ic%�q�#�q�%e�i�%q�%���%�C�������i�%&��#��#���%��&���*&���7&��K&�QY&������a��a�2��iTN<i�SvA�ȶ9k&K?��0�a�D�t~S�T~S�$~S�T���t���Et���E��#�i����#���#����#���&���&���C'߿�}?��C'߿�}?���?���?���&���'����'��C'߿�}?���?���&���'����#���A�O�%����#�E�\����A�O�%����#���#�E�\���	(��#�#�5(&��P(+�Qe(�Q�(���#U�~S���#��������#V��#�A�(#�inV��#�A�V�T����A\�~S���ACH�HN��~Sa ��#��#�~S���#�	�b�	8)���#���#V�.�&��%V�#���#	��#�a��a&��a���a���aR�.ab�4ar�a��a�0�a=�(a���a
��a�Fa
Ga9EaCEif)�
�)��~BCi�)�&���
�������i1&a�2&�RMW�[�	
�@���)��
�S���o#���#��#����E��#V��#��!
�#V)
�#��D	(��#z�#�$�#�Ao�i��1*o�9
�A\A
:>u���z�����Q
�*P�Y
�*�I
BE'��*V�a
�*�I
�*a
�v,�#���#���#�i
�#B<y�#\��	�*ja��c��	�#\��	+�	-Bk�	�@vI	l���	+jq
�A��	1+���J+����?���W+
�A���N�8Y�1�b+��
�+��
�+ �A	�+<��
�#���#��	�#)��+	i8��1iE�	t�#�i
x�il��i
�+�i
�#�i}���F��4�#��
�#���#��AAt�ARt���+�),�),���#��
�#���A.���@��A�O%��\���������
�90�A/6�	�B��#�~S�!	#t��dK�!	�t�A\u�!	�t���#��
{,���ǚ�A	�,<��I����,���
�S���
�S���
n����,���#�A	-"��#��
�#�!!-��
�@0�����~S��A{�S>@����QP#5������=��A�O$%���
�#G�8-M�$\��!	�,��
Q-����A.�������
�Al�D@�.N���������A{&
h�Y	�#X��
�#���#�L�#�T�#�\�#�����<9~S�!�i�~BC	�#�	~SV	TN<	�Sv	�h,�#�5.��
A.�,~S�,�Y=|����|���������|����7H|L�||���������H	�|�����|���� |$�(�,�0�8|<�@�D�H�P|T�X�\�`�d�
h�
p|t�||���|�����|����������
�|�������|����|���$|(�,�4|8�<�@�D0H�L�
P5T:X?�|���|�������|�����|����������
�|�������| |$�(�,�0�4�
<|@�H|L�P�T�X�\�
�|���|270|4�8�<~�|���������|�������|�� $$Oh|l��|�������|����������
�|������,|0�4��( �+ �: �� �� ��  	|$	�8	|<	�@	�X	T$\	�$�	|�	�%�	�%�	|�	��	|�	��	|�	��	��	��	�
�
�
0l
|p
�t
�x
�|
��
�
�
�
�
�&�
|�
��
��
|�
��
��
��
��
K'�
M(�
T(�
&)�
.D1<|@�D�H�L�P�
T�
X�&\0x||��02�?2�V2�m2|�(|,�8�4<�4@�4D5H%5LX5P�5T�5X�5\6`C6d~6h�6l�6p�6t"7xM7|l7��7��7����7��7��7�	8�:8�i8��8��8�9�?9�d9��9��9.��.�M�.r�.�B.C.:�.�.�wG.�D�.�.".l.�.�.6.|.�.�.,.}.�.	.2	.y	.�	.�	.,
.t
.�
.�
. .a.�.�.B.t.�.�.
.I
.�
.�
..P.�.�..a.�.�.?.n.�.�.%.].�.�.+.V.�.�.�..!.C.e.�.�.�.�.(.K.s.�.�.�.".L.{.�.�..1.`.�.�.�...d.�.�.�..R.�.�.�.&.`.�.�..P.�.�..e.�.�. .e.�.�...x.�..>.�.�.+.�.�. .\ .� .� .!.K!.�!.�!.".@".m".�".�".
#.@#.|#.�#.�#./$.v$.�$.%.9%.l%.�%.�%.4&.j&.�&.'.<'.r'.�'.
(.=(.p(.�(.).,).^).�).�).*.F*.�*.�*."+.j+.�+.�+.,.p,.�,.�,.-.D-.m-.�-.�-.&..m..�..�..,/.c/.�/.�/.
0.>0.x0.�0.�0.&1.d1.�1.�1.2.<2.o2.�2.�2.3.K3.�3.�3.�3.-4.h4.�4.�4.5.45.~5.�5.6.F6.x6.�6.�6.7.J7.z7.�7.�7.8.48.h8.�8.�8.�8.+9.[9.�9.�9.�9.*:.]:.�:.�:.;.k;.�;.<.8<.m<.�<.�<.%=.W=.�=.�=.">.W>.�>.�>.?.E?.�?.�?.&@.q@.�@.�@.A.WA.�A.�A.B.?B.|B.�B.EC.sC.�C.�C.D.OD.�D.�D.E.LE.�E.�E.CF.�F.�F.%G.mG.�G.�G.H.TH.�H.�H.�H.'I.`I.�I.J.[J.�J.�J.K.hK.�K.�K."L.jL.�L.�L.*M.hM.�M.�M.#N.~N.�N.�N.:O.�O.�O.�O.9P.�P.�P.�P.-Q.xQ.�Q.R.TR.�R.�R.�R.@S.�S.�S.T.0T._T.�T.�T.U.5U.nU.�U.�U.#V.bV.�V.�V.W.fW.�W.�W.8X.sX.�X.�X.@Y.�Y.�Y.*Z.iZ.�Z.[.O[.�[.�[.\.J\.|\.�\.�\.].G].r].�].�].^.0^.\^.�^.�^.�^.,_.b_.�_.�_.L`.�`.�`.
a.Ra.�a.�a."b.Sb.�b.�b.0c.xc.�c.�c.6d.yd.�d.�d."e.de.�e.�e.f.Zf.�f.�f.g.Ug.�g.�g.h.Th.�h.�h.i.<i.pi.�i.�i.-j.~j.�j.�j.'k.+tk.3�?.;�k.C�k.K�?.[�k.[�k.[l.k l.k<l.s�.{�?.��;.��;.��.�Sl.�bl.�7ml.�l.�l.!m.[m.�m.�m.�m.=n.#{n.#�n.#'o.#yo.#�o.#(p.�p.�p.�p.3q.fq.�q.�q.r.Jr.~r.�r.�r.#s.Zs.�s.�s.t.St.�t.�t.
u.Ou.�u.�u.v.@v.#}v.#�v.#�v.##w.#ew.#�w.	x.Kx.nx.�x.�x.�x.8y.wy.�y.z.:z.sz.�z.{.={.k{.�{.�{.6|.�|.�|.}.M}.�}.�}.~.I~.~.�~..f.�.�.G�.��.р.�.L�.|�.���.�.�.@�.t�.��.���x��;��x��;r4> �; �; �;#k}>�s�?��@��@���>/�?��?��?{�;
�@#/�?#{�;#��?#��@C��AC{�;C��?C/�?c/�?c�9Bc��?c{�;�{�;���B���?���?�/�?�{�;��C�/�?�/�?���?�{�;���C�S@��X@��?/�?�8D{�;#��D#{�;#/�?)�C�)�>�@)[�?C��>C�	�;C{�;C��?Is�@cC�Gc��?c��?c{�;i[�?i�@�/�I��?��C���>�@�/�?���K��tL�/K�/7K���L���J�/]K�k�K��C��xA�s�?��>�A�s�?��C��xA��>�A	�C�	xA	s�?	�>�A)s�?)xA)�C�)�>�Ai�>�Ci[�;i�Ci�C��s�?��C���>�C�xA��C���>�C�s�?�xAIxAIs�Di�	�?i�?i�	X@i�	X@��;cK[Q���Q��C���>�F�SwG��	X@��?��
�F��?�S@�k�Q�/]K��tR���K���R��$IR���Q�/�?�/7K�s�?�S@��C���?��X@�;�G	S@	�?#��?)�C�)�uH)�	X@)SwG)wIC��UC��TCkMUC��TI;}>I�@I�C�I�>&JIs�?c��Vc�GVc��Vi�><Jis�?i�@i�C������C��kJ��@��>SJ���W�{�;���?�/�?��>�J��C���@�s�?��C���@��>�J�[�?��>�L����;}>�r7���C��s�?{�;��?��?�\X/�?	s�?	�C�!��#��X#��?#{�;#/�?#��?)�C�)�@A��C/�?C��?C��?C�.YC{�;I�C�I�@a��c��?c/�?c{�;c��Yi�C�i�@�����Z���?���?�/�?�{�;��C���@�����fZ���?�/�?�{�;���?��M��C�����{�;���Z���?���?�/�?�S@��>@M��?�sLM��C���$[�{�;���?�/�?�sLM��?��>RM�S@��C�	{�;	��[	��?	/�?#	{�;#	��?#	/�?#	��[�	k}>#
/�?#
k$]#
/o\#
��\#
��?#
��\C
�^C
�$�]C
��]C
��?,a#k}>C��KC��aC��aC/7KC/�?Ck�KC�=ac�fcc��?c{�;c��?c/�?�/�?���?�{�;���?���c��2d�KQd�
�$e�
��d�
/o\�
k�K�
��K�
�te�
k}>#+�C��eC��?C{�;C��?C/�?c{�;c�fc��?c��?c/�?�{�;���?��|f���?�/�?���?���f�{�;���?�/�?���?��4g���?�{�;�/�?��X@�{�;���?�/�?���g��?��g{�;��?/�?#{�;#�bh#��?#/�?�K'i�/�?��Ni �X@Ck}>cjgi��X@��X@@�X@�/�?�kGk���?���jc��?c{�;���?�/�?���l���?�{�;�{�;�/�?��=m���?�/�?���m�{�;���?��>7S�����C��s�?��C���>PS�s�?���{�;�)n��?/�?	�C�	�>cS	s�?#��?#��?#��n#{�;#/�?)�>qS)s�?)�C�C��?C�oC{�;C��?C/�?I�C�I��SI�>�SI{�Si�>�Ti�Ti�C���>@M�S@��?��C��sLM��?�sLM�S@��C���>RM��X@��C���C���C��s>V	�C�)[�?)�C�I�C�i�C���������!��)�	X@A��Is�?IxAa��is�?ixA����[�;�xA�����������!��)�>�[)s�?)�@)�C�A��I�	X@I�	X@I�	�?I�?a��c��oc�qoc
/�oc
/�oc�+pc��K����s�?�xA�KQd�k`q��Y]��C���q	�C�	�]#�$�s#��s#ks#��s#��q#
/-r#
/^r#
/�r#
/�r#
/�r)[�?)�C�C�2wC/�?C�vwI�C�I��]i�@i�C���>�]�[�;��C���>�]�[�?��C��s�?��C��s�?��C�	s�?I�^I{�^i{(_i_�_�{=_�/�?�k�|���?��|�/]|�{P_�_�jt}j�}#/�?#�+#k�}#�g~#��~c��c���c{�;cksc�$.�c
/�c��?c�f�c
/-ri{o_i�;���?�{�;�/�?��=����?���_��?��	X@���?�����{�;���?�/�?���_��?��	X@��7`��?��	X@�/�?�{�;������?���?��	X@��?���`�}�#���#{�;#��?#/�?#/̃C�O�I�X@I�?cK[Qis�?i�C�i;}>i���k}>������������/]|�s�?��C���
F�/F��/�?��j��s�?��C���
F��,b��C����?����{�;��х������@��C��X@	�C�	�@#/]|#/o\#ks#�2�#/F�#���#�$̋#��#/�?)�?)�>@M)sLM)S@)�C�I�>RMIS@I�?I�C�IsLMc��?c�!���X@��ŏ���?�k����K�)�/ې���h�k�K/�?/��/]K	�?	�C�	S@	sLM#�S�#/�?#{�;#��?)sLM)�C�)S@)�?C/�?C{�;C��?C��?C�ǒIsLMIS@I�?I�C�c/�?c��?c{�;c�%�isLMiS@i�?i�C��/�?���?���?��Ɠ�{�;��?��C��S@�sLM��
�F��0���?��C��sLM�S@��
�F�k}>��	�?��?��	X@��	X@��
�F�jY��
�Fk}> �
�F#jgi)[�?)�>�h)�@)�C�@�
�FI�	X@i�C�i�>�hi�?�r���{�h�xA�s�?�C���{�;���? �X@#�	�;��š��*��/�?��m��k�K�
/-r��
���8���/��
/x��
/���{ל�k�����K �w� ��? {�; ��? /�?# {�;# ��?# ��?# /�?# �۟c K[Q� ,a� +C�� ;��� �(�� �z�� #�� �U�� 3��� CB�� CB�� KU�� �a�� �$��� ���� 
/�� 
/�� 
/I�� ��K� ks� �E�� 
/��� ���� �$ئ� ���� 
/-r� 
/��c!���c!�p�c!/�?c!k��c!�x�c!/F��!�Ԫ�!/�?�!���!�t��!k�K�!/�?�!�6��!��?�!/
��!{�;�!�j�!{�;�!��?�!��?�!�߬�!s�?�!r7��!;�K�!�>ok�!�C��!�A��!/�?�!��?�!��?�!{�;�!;}>�!�C��!{{k�!��;"���	"�C�	"s�?	"��;	"{�k)"�@)"��;)"�C�)"{3lC"��C"/�?C"/٭C"/
�C"/̃C"{�;C"��?C"+̭I"��;I"�@I"�C�I"{slc"/�?c"/��c"{�;c"��?c"��c"/̃c"/x��"k}>�"jgi�"s�?�"+�#K1�##KQdc#r^��#K���#,a$�˱C$�9�C$��?C${�;C$��?C$/�?c${�;c$���c$/�?c$��?c$��?�$��?�$��?�$/�?�$����${�;@%��`%��c%{�;c%/дc%�$��c%�<�c%��?c%/�Ic%/�?c%���%���%��?�%���%k}>�%���%jgi�%��#&{�;#&�׶#&/�?#&��?#&��?C&�+�C&��?C&{�;C&��?c&/�?c&��?c&���c&��?c&{�;�&�$��&/
��&+̭�&�9��&�u��&���&/�?�&��?�&{�;�&���&���&k�K�&��?�&/�?�&�U��&���&KQd'��#'�l�#'�0�#'���#'�ٺ#'�&�#'���#'�ӻ#'�(�#'�|�#'�Լ#'�*�#'�|�#'�ս#'�+�#'��#'�վ#'{�;#'��?#'�.�#'�ݹ�'��?�'����'�|��'�=��'/�?�'/F��'ks�'���'��?�'/�?�'����'{�;�'�-��'/�?�'{�;#(���C(KQd�(���(����(kX��(����(��?�(�$ ��(/7K�(/�?�(k�K�(�$���(����(�R��(��K�(���C)�@�C)���C)/o\C)C��C)k�KC)���)����)ks�)����)/�?�)�<��){�?�)���)�;��)&��)����)��;)*�@)*�>�p)*{�p)*�C�I*�@I*�>�pI*�C�I*{�pc*�u�c*k�Kc*/]Kc*/�?c*�3�i*�@i*�C�i*{�pi*�>q�*kb��*��?�*�(��*�>q�*�@�*�C��*{q�*{:q�*�>Mq�*�@�*�C��*����*/�?�*��?�*{�;�*��?�*�>cS�*s�?�*�C��*/�?�*{�;�*��?�*��?�*�<��*�C��*s�t�*�>�t+{�;+���+��?+/�?	+s�t	+�C�	+�>�t#+��?#+�
�#+{�;#+/�?#+��?)+�C�)+s�t)+�>�tI+[�?I+�C�I+�>�ti+�>�ti+�C�i+[�;�++��+[�;�+�C��+�>u�+Kj��+�C��+�>�u�+�u�+
/��+����+
/?��+����+����+
/r��+k�K�+r7��+���+s�?�+�C��+�>�u�+���+����+��u�+�>�S�+{�u�+�C�,��	,�C�	,sLM	,�>?v!,��#,��#,/F�#,/�?),�>�v),�Qv),�C�),{�vA,��I,s�?I,�>�vI,zI�a,��c,,ai,zI�i,�>�vi,s�?�,zI��,�>�v�,s�?�,/F��,{ ��,�C��,/�?�,�$���,����,ks�,/o\�,/]|�,�}��,�>�v�,s�?�,zI��,{�;�,/�?�,����,��?�,��?�,�>�v�,s�?�,zI��,��>�,�>w�,sLM�,�C�	-�C�	-�>%w	-sLM)-zI�)-�>�x)-s�?)-�@C-k}>I-s�?I-�@I-zI�I-�>�xc-
/-rc-�q�c-��Kc-�[�c-���c-k��c-
/D�c-
/��i-�@i-�>�xi-zI�i-s�?�-c'���-k'��-���-�?�-�@�-s�?�-{�x.���.�0�./�?.�r�.ks	.y	.��y	.xA	.{�y).xA).{+z).�jz).yC.k}>I.�{I.xAI.yI.{�zc.jgii.�Ti.{�.�?�.��?�.{�;�.����.��?�.�@�.��{�.�;�./�?�.{�;�.��?�.��?�.����.��{�.xA�.�;�.�;�.�?	/�?#/k`q)/�?I/�?i/�?�/�?�/�;�/[�?�/�;�/����/ks�/��K�/����/�j��//�?�//7K�//F��//]Kc0�$��c0��c0�5�c0�(��c0/�?c0����0�C��0�>�|�0�?�0�C��0�>�|�0�s��0�C��0�>�|�0���0��?�0�>�|�0�C�1��?	1�C�	1�>})1�C�)1�>}C1��I1�?I1�>-}I1�C�c1��i1�>?}i1�?i1�C��1r7��1�>M}�1�C��1;�K�1�j��1����1�C��1�>b}�1�C��1��2��?2�S�2{�;2��?2/�?	2�?	2�C>�	2�	X@	2S@	2�X@#2��?#2���#2{�;#2��?#2/�?)2SX@)2��;)2�E�)2{��)2�	X@)2sLMC2���C2�
�C2/�?C2�Q�C2k�Kc2/7Kc2k�Kc2/�?c2�$�c2/Kc2/]Kc2�{�c2���c2�8�c2��K�2,a�2r7��2;}>�2�>ok�2�C��2���2�@�2�b��2�;�2{*��2{k��2����2�;�2�@3��3��3�R�3k�}	3[�?	3�;	3�@	3{��)3�;)3xA)3{��C3k}>I3�;I3xAI3{.�c3���c3��c3/�?c3�U�c3ksi3�;i3{m�i3xA�3�@�3�Y]�3{���3�;�3��?�3/�?�3{�;�3���3��?�3�;�3�@�3�@�3{��3{�;�3��?�3/�?�3���3��?�3{��3[�;�3�@�3�;�3��?�3{�;�3��?�3/�?�3����3[�?�3�;�3�@�3{��4�4/�?4{�;4��?4�$�	4SwG	4�	X@#4C�#4��#4��#4�C#4ks#4/�?)4�X@I4��I4�	X@I4�?I4sLMc4�Xc4��c4CAc4��c4/�?c4/o\c4k`qi4�?i4�	X@i4sLMi4���4��4k��4���4�>�4/�?�4S@�4��4sLM�4�;�4{�;�4��4��?�4���4s�?�4;'��4��4���4s�?�4��4��5��#5��C5��c5���5���5�C��5�@�5���5�C��5�u��5���5�C��5s�?�5���5�C��5s�?�5���5#~�6��	6�C�	6s�?)6[�?)6�C�I6�@I6�C�i6�C�i6�p��6�C��6�@�6s�?�6�C��6;}>�6����6�C��6�C��6[�;	7s�?	7�C�)7{��)7�>�)7�C�)7[�;�7s���7s��	8�>
�	8�C>�)8�C�)8�X@)8�?I8�@I8�C�a8��i8s�?i8�C��8���8�C��8s�?�8���8��8�C��8�@�8���8�C��8� ��8���8s�?�8�C��8��	9�C�	9[�?)9�C�)9��)9s�?I9��I9�C�I9s�?i9��i9�C�i9s�?�9�C��9���9s�?�9;}>�9�C��9s�?�9;}>�9�C��9s�?�9�C��9s�?�9;}>	:�C�	:s�?):�C�):s�?I:�_�I:�C�i:�C�i:�_��:[�?�:�C��:�
h��:�C��:;}>�:s�?�:[�?�:�C��:�>?��:�	��:�C�	;�C�	;�?);�?);�C�I;�?I;�C�i;�C�i;�?�;�@�;s���;�C��;�>��	<�?)<�?I<�?�<���<�C��<� ��<���<�C�	=�C�	=�G�)=�C�)=�G�I={��I=�C�I=�>��I=s��i=�C�i={��i=�>�i=s�?�={{��=�C��=�>1��=�E��=�?�=S@�=�C��=�>@M�=sLM�=�>RM�=sLM�=S@�=�?�=�C��=�>؞�=�C��=�@	>{0�	>���	>�C�	>�>�)>�>i�)>�C�)>[�?I?{I?{b�I?�0�i?���i?{ڣi?�@�?�@�?�H��?{~��?����?{2��?�@�?�C��?�>��?[�?�?{���?�@�?s�?�?���?{��?�C��?�>A�	@�C�	@�>\�)@�>o�)@�C��B[�;�B�C��B�>�t�Br7��B���B�C��Bs�?�B�>�u	Cr7�	C�C�	C�>��	Cs�?	C��)C�C�)C�>�S)C�˧)C{��ICs�?IC�>J�IC�C�iC�>�viCs�?iCzI��C�>�v�CzI��Cs�?�CzI��Cs�?�C�>�v�CzI��C�>�v�Cs�?�C�>]��Cs�?�CzI�	D�C�	D�>��	D��	Ds�?)D��)DkJ)D�>Ω)D�C�ID�>�ID�C�IDsLMiD�>��iD�C�iD[�?�D�C��Ds�?�D;}>�D�>��D;}>�D�C��D�>��Ds�?�D�C��Ds�?�D�>/��D�>C��Ds�?�D�C�	E�>`�	E�W�	E�C�)E�>r�)E;}>)E�C�)Es�?IE�>��IE;}>IE�C�IEs�?iE�>��iE�C�iEs�?iE;}>�E[�?�E�C��E�>���E�C��E�>ƪ�E[�?�E���E�C��Es�?�E�C��Es�?F��	F�@	F�C�)F�@)F�C�IF�C�IF�@iF�C�iF�@�F�٫�F�C��F�٫�F�C��Fs�?�F�C��F�>��F�>��F�C��Fs�?	Gs�?	G�C�	G�>��)GS@)G�?IG�>ϬIG���IG�@IG�C��G�C��G[�?�G�@�G�>���G[�?�G�@�G�>���G[�?�G�@�G�C��G�@�G�>���G[�?�G�C�	H[�?	H�C�	H�>Į	H�@)HxA)HsخIHxAIHs�?iH�>�iH�?iH�C��HxA�Hs�?�H�C��H�>��H�?�H�?�H�C��H�>-��H�C��H�>@��H�?	I�?	I�>U�	I�C�)I�>j�)I�?)I�C�II�C�II�?II�>��iI�>��iI[�;iI�@iI�C��IxA�Is�?�I�@�I����I�>���IzI��Is�?�I�@�I�@�I�>���Is�?�IzI�	J�ޯ	JxA)J�ޯ)JxAIJ�>V�IJ�C�IJ�?iJ�	X@�J�>h��J�?�J�C�AK��aK���K���L[�;�L��L��Ls�?�Ls�?�L�	M�	Ms�?)M�)Ms�?IM�IMs�?iM�iMs�?�Ms�?�M��M��Ms�?�M��Ms�?�M��Ms�?	N�	Ns�?)N�)Ns�?INs�?IN�iN�iNs�?�Ns�?�N��N��N���Ns��NxAO�� O��@O��`O���O���O���Os�?�OxA�O���O�?�O�	X@�O�	�?�O�	X@�O���O�	X@�O�?�O�	�?�O�	X@P��	P[�;	P�C�	P�>�t	P�@ P��)P�>�)P���)P�@)P�C�@P��IPzI�IPs�?IP�@IP�>�`P��iPs�?iP�>SJiP�C�iP��iP�@�P���P�>�J�P�@�Ps�?�P�C��P���P�><J�Ps�?�P�C��P�@�P���P�@�P�>J��P�C��P� ��P���P�@�P�>\��Ps�?�PzI�Q��	Qs�?	Q�@	QzI�	Q�>l� Q��@Q��IQ�>{�IQ�C�IQS@`Q���Q���Q���Q[�?�Q�@�Q���Q[�?�Q���Q�@�Q[�?R��	RxA	R{�h	Rs�? R��)R�@)R[�?@R��IR[�?IR�@`R��iR�@iR[�?�R���RxA�Rsخ�R���RxA�Rs�?�RxA�Rs�?�R[�;�R�@	SxA	Ss�?)S�@)S���ISs�?IS�@iSs�?iS�@�SxA�S�T�S�T�SxA�SxA�Ss�IT�C�IT�>��IT�@iT�>��iT�C��T�C��T�>���T�@�T�C��T�>ʹIU3%��IU�>��IU�C�iU�C�iU[�;iU�>��U�>��U�C��U3%��U�>���U�C��U[�?�U�>��U�C��U[�;�U[�;�U�>&��U�C�	V�C�	V�>;�	V[�?)V[�?)V�>O�)V�C�IV�C�IV�>j�IV3%a�iV3%��iV�>��iV�C��V�C��V3%��V�>���V���V�>���V�C��V3%���V���V�C��V�wG�V�>��V���V�>��V�C��V��W��	W�wG	W�C�	W�>
�!W��)W�>"�)W�C�)W3%��AW��IW3%��IW�C�IW�>4�iW�C�iW�>G�iW�u��W�>_��W�C��W3%��W�>r��Ws�?�WzI��WzI��Ws�?�W�>|��W�>���WzI��Ws�?	XzI�	X�>�	Xs�?)X�>��)XzI�)Xs�?IXzI�IX�>��IXs�?iX�>��iXzI�iXs�?�X�C��X�>���X[�;�X����X�	X@�X��;�XSwG�X�X@	YSwG	Y��	Y�	X@	Y��;aY��iY�C�iY��iYs�?�Y�C��Ys���Y�)��Y[%X@�Y�C��Y[�;�Y�C��Y�C��Y[�?	Zs�?	Z�C�)Z[�;)Z�C�IZ[�;IZ�C�iZ[�?iZ�C��Zs�?�Z�C��Z�C��Zs�?�Z�C��Z�\��Z�C��Zs��	[�C�	[s��![��)[s��)[�C�A[��I[�C�I[���a[��i[�C�i[����[���[[�;�[�C��[s�?�[�C��[[%X@�[�?�[�X@�[�C�	\�X@	\�C�	\�?)\�?)\�C�)\�X@I\�?I\�X@I\�C�i\�X@i\�C�i\�?�\�?�\�C��\�X@�\�?�\�C��\�X@�\[�?�\�C��\�C��\�/�	]�C�	]sa�)]s~�)]�C�I]�/�I]�C�i]���i]�C��]s���]�@�]�C��]��	^s�?	^�C�)^�C�)^[�?I^�C�I^s�?I^;M�I^�>4�i^�X@i^�C�i^�>x�i^s�?i^�?�^�?�^�X@�^s�?�^;}>�^���^�C��^����^�C��^�>,�	_�C�	_�F�	_�>u�)_�@)_�C�I_�C�I_�@a_��i_�?i_S@i_�C�i_�>@Mi_sLM�_�C��_�?�_S@�_�>RM�_sLM�_�>���_[�?�_�C��_�>���_[�?�_�C��_[�;�_�C��_�>��	`���	`�C�	`�>��)`[�;)`�C�)`�>�I`s�?i`�C�i`��i`�@i`�>�i`{���`�C��`s�?�`�>��	a�C�	a�@)a�C�)a�u�Ia�@Ia�C�ia�C�ia����a3%���a�C��a[�?�a�C��a�>��ib�C�ib��ibs�?�bs�?�b�C��b�@�b[�?�b{���b�;�b{���b����b�@�b3���b�X@�b�;�b�@�b{���b� ��b3��	c�;	c�@	c{��	cs�?)c{��)c�;)c�@)c[�?)c3��Ic�;Ic�@Ic{��Ics�?Ic3��ic�	�;ic�;ic�@ic{��ics�?�c�	�;�c�;�cs�?�c�@�c{��c�;�cs�?�c�	�;�c�@�c{(��c�@�cs�?�c�;�c�	�;�c{?��c�	�;�c�;�c�j��cxA�c{X�	d�;	d���	d�	�;	dxA	d{���d���d�C��d���d�>���dr7��d�C��d�>���d�@�d�@�d�C��d�>��	e�C�	e�>��	e���)e�C�)e[�?)e�>�IeS@Ie�C�Ie�>@MIe�?IesLMie�>RMieS@ie�C�ie�?iesLM�es�?�e�C��e3%���e�C��e� ��e�C�	f[�?	f�C�)f�C�)f[�?If� �If�C��f���f���fK$@�f���fK$@�f{���f�C��f�>���fs��g��gK$@	g�C�	g{��	gs
�	g�>� g��!gK$@)g�>Q�)g�C�)g���)g{#�@g��AgK$@Ig{]�Ig�@Ig�>��Ig�C�agK$@ig[�?ig�><�ig{��ig�C��gK$@�g{O��g�>���g�C��g����g�>��g�C��g{���g�p��g{'��g�>���g�C��g[�;�g�C��g{���g�>)��g[�?	h{C�	h�>��	h�C�	h[�;)h�C�)h{��)h[�?)h�>��Ih�>�Ih{��Ih�C�Ih[�;ih�C�ih{��ih�>K�ih[�;�h{a��h�>���h�C��h�X@�h�>
��h�C>��h��;�h�C>��h�	X@�hSwG�h{���h�>`��h{~��h�C��h[�?�h�>��	i�>N�	i{��	i�C�	i[�?)i{h�)i�C�)i[�?)i�>��Ii�C�Ii{��Ii3%%�Ii�>.�ii�C�ii{K�ii�>��iis�?�i{���i�>cS�i�C��is�?�izI��is�?�i{
��i�>R��is�?�izI��i{\��i�>���is�?�izI��i{���i�>��	js�?	jzI�	j{��	j�>/�)j{<�)jzI�)js�?)j�>u�Ij�C�Ij�>��Ij;}>Ijs�?ij�@ij�C�ij�>���j�C��js�?�j�>���js�?�j�C��j�>���js�?�j�C��j#���j���j�>���js�?	ky	k�G�)k�G�)kyIk�W�ik�T�ks�?�k��;�kSwG�k�G��ky�k�T	l�T)lS@)l�?Il�?IlS@ilS@il�?	mS@	m�?)mS@)m�?im��;�m��;�m�?�msLM�m�C��mS@	n�C�	nsLM	n�?	nS@�n�wG�n�wG)o;�K)o�C�Io�C�Io;�Kio�C�iokJio��io#��o�C��o���okJ�o�C��o#��o�C��o{'���o�C�	p�C�)p�C�Ip�C�Ip#��ip�C�ip���p�C�	q�C�	q���	q�>E�)q�>g�)q�^�)q�C�Iq�C�Iq��Iq�>��iq�
��iqs�?iq�C�iq�>��iq;}>�qs�?�q�>6��q���q�C��q�>I��q���q�C��qkJ�qsLM�q�>��q�C��q[�?�q�C��q�>��	rs�?	r�>Z�	r�C�)rs�?)r�>v�)r�C�Ir�>��Irs�?Ir�C�ir�C�ir�>��ir[�;�r�C��r�>���r�>���r[�?�r�C��r�C��r[�?�r�>���r�>@M�rsLM�rS@�r�C��r�?	s�>RM	s�C�	ssLM	s�?	sS@)s�>\�)ss�?)szI�Is�>l�Iss�?IszI�iss�?iszI�is�>�v�s�>�v�ss�?�szI��s�>�v�ss�?�szI��ss�?�s�>�v�szI��s�>"��ss�?�szI�	ts�?	tzI�	t�>4�)t�>B�)tzI�)ts�?�u�(�;�u[�?�uU��u{a��u�_��u�?�uS@�u�@�u�X@�u�C��u�>���u�_��u�@	v�?	vS@)v�?)vS@Iv�@Iv[�?ivxAiv�T�v�T�vxA�vxA�vs���v����v�@�v�C��v�>��v����vxA	ws�?	w�@	w�>+�	wzI�)w�>A�)w�C�Iw[�?IwxAIw{U�iwxAiw���iw{���w[�?�w�@�wSwG�w��;	x��;	xSwG)x�?)x����xSwG�x��;�x[�?)ys�?iys�?�y�?�y}�	z�$�)z�?)z�	X@)zs�?)z�GkIz�	X@Iz�GkIzs�?Iz�?iz�_��z�?�zs�?�z�	X@�z;+b��z���zs�?�z�	X@�z�?�z;+b��z;+b��z�?�zs�?�z�	X@	{�?){��I{sI�i{s�?�{�	wG�{�?�{�Gk�{s�?�{[�?�{��|�� |��@|��`|���|���|���|�@�|[�;�|�C��|���|s�?�|�C��|�@�|���|�>���|�@�|�C��|;�K}��	}�C�	}s�?	}�@)}�C�)}kJ)}��)}�@I}�@I}�C�I}s�?i}�C�i}�@i}s�?�}�C��}�@�}�>�J�}[�?�}�C��};�K�}r7��}�>���}s�?�}�>��}�G��}�C��}�>&��}�C��}�G�	~�G�	~�>D�	~�C�)~s�?)~�C�)~�>b�)~��I~�>y�I~�TI~�C�i~zI�i~�@i~�>��i~s�?�~zI��~�>\��~�@�~s�?�~s�?�~�>l��~�@�~zI��~�C��~S@�~�>@M�~�?�~sLM�~�?�~�C��~�>RM�~sLM�~S@ɀ��ɀ�C�ɀ�@�����C���@	���	��C�	���	�s�?)���)�s�?)��C�)���I��C�I���I�s�?i���i��C�i�s�?���C�������s�?�������C���s�?Ɂ�C�Ɂs�?��C��s�?	��C�	�s�?)��C�)�s�?���@���C����C����@ɂs�?ɂ�C������C�	��C�	�;b�	�s�?)��C�)��@I��C�I�[�?i�sLMi��C����C���sLM��sLM���C�Ƀ�C�Ƀs�������C�	��;�	��C�)��C�)�s�?I��C�I�s�?i�s�?i��C����@���C����@���C�Ʉ�C�Ʉs�?Ʉ�
o���C���O	��C�	��x)��C�)�s�?I��C�I�s�?i��C�i��]��;}>��s�?���C���;}>��s�?���C�Ʌ[�?Ʌ�C��[�?��C�	��C�	��_�)��C�)��_�I��C�I�[�?i�[�?i��C����C���[�?��s�?���C�Ɇs�?Ɇ�C���C��;b��s�?	��C�	���	�s�?)�s�?)��C�)���I�;��I�s�?I��C�i��C�i������C���;���s�?���C�������s�?ɇ�C�ɇs�?��C��s�?	�s�?	��C�)��C�)�s�?I��C�I�s�?i�s�?i��C�������kJ���C��������C���s�?ɈsLMɈ�C�Ɉ�>���>����C��[�?	�S@	��?)�{T)�xA)��;I��?I���I��	X@I�sLMI�{}I��	X@i��?i�S@���;��xA��{��������	X@���?��sLM��{����	X@����`��������������������X@��X@���X@���X@��X@@��X@���X@���X@���X@��X@��� ���������������@��`���L���L���L���L��M�� M��@M��`M���M���M���M���M���Q�X@�T�X@�X���X���Y��Z�� Z��@Z��`Z���Z��[�� [��@[���i�����X@@�S$���S$���S$��S$��S$���S$���S$���S$��S$�@�S$�`�S$���S$�l��cb�cb��cbcbcbcb(cb,cbe;�;�;�;�;+<H<r<�<�<=4=_={=�=�=�=>>(>#?B?T?a?�?'@K@FAqA[CuCzC�C�D�D]EqE�E�E�E�E	FFpF{F�F%HVHpM�M$N�N�N'OzOP�PQQQ)Q/Q5QBQNQ2S�T�T�T5V�V�VW W6W�W�WEXVXP\>^O^v^�^�^�^�`�`�`ab`c�d�h�h�hi�i�i�i�i�i�i�ij6jQj_j|j�j�m#n�nqp�pYqMtht�t�w�w�w�w	x5xLxfx�x �8��ÃI�H�i�u�������І���������&�:�V�t���X���Ք��Z���Õ	�6�W�����0�I�b�����4�l������������ЫE�L�Z�i�x���X��e���!�&�,�a�j�����l������Ѷ����ݸѿ��:�R���7�T�r��������+�����
��(�l���l�r�x�~�,���5�A�K��������"�����\�O�q������������*�B���h�n�v�|����������������!�B�n�v�|������]����������+�@�H�T�\�b�u�����������������p��;��	
 
4O���64�7mJI�ih��h�
r�9r��r�S�mތ����D����D�@�m�r���������������9r�
r���
	
"*-9:?H I!J"M#P$S%V&Y'_(b)e*l+o,w-{.~/�0�1�2�3�6�7�9�:�;�=�?�G�H�I�J�Q�R�X�Z�b�h�j�m�w�y�{�}������
�
������������!�#�%�'�)�+�-�.�/�1�3�5�7�9�;�=�?�A�C�E�G�I�K�M�O�Q�V�i�~��������������������������������������������� .
:;Z[]a c#u%v&x'|+},�4�6�7�8�9�<�=�?�B�D�E�F�GJKLOQ"S%T,]-^.b3c4d5e7gWhkimkolqmrnupyx�z�~��������������������������������'�,�<�H�O�Q�Th$t$k�$$*+*.:*�*p�*+o+//./o+m!�@/�*pS/[/*160431:?1EP1^1g1q1�2h�2�2�2�2�4�4�4�4�4��4�4��4�56�6Er:y:/�:.//�:s�:�:y�:@/�:X;d<u<�<�<�<�=�=�=�=>>>�$>�+>�(?��?@�
@�@��@�@�@�@�@�@�@�@�@�@�@�@�@�@bAPkAVwA�A�@�@�A�@�@�h�@�@�A�ABt
BBh�@�@Bh�@�@Bh�%V�Bh�B��B�Bh�@�@�A�%V�@�@�A�@�@�B���@�@C�@�@��@�@�IC��@�@�F?D9?�D�D�D�D�MEaE^1oE>�E#$>�+>��Fw�F�F�F�*p�F�F�G�G��G�G�HH"HRJbJpJ�J�JK	K'K4K�@mK*1?1E�A6�6EmK�A +sdY
�M�M�M�M�M�M�MN%NhR�
mRxR�R�R�R�R�R�A�R�R�R��R�
S�S��*p�S�
�T�=�T�T�T�
�=�=$>�+>�m!��VIWp�@$*�,�8Y�@Y�LY�WY�cY�6�6E*1PZ^ZbfZpZ9[K[\*\>\T\j\,]�mK6]�h$D_R_�b_Z|_�_�_�"`j^f�_l9[`���&Z:`�`bb(b1b�b��b�b	cc	c	c	c	cc	cc	cc	cc	cc	cc	cc	cc	cc	c	c	cc	cc	cc	cc	cc	cc	cc	cc	cc	cc	cc	cc	cc	cc	cc	cc	ccEdKd�Pd]d���^1�f�fg#g-g=gNe8Fg>>TgDagOmg}g�g�g�g�gD�gD=lSljl~l�l��l��l�l��l��l��E#�l�l�m�m�m�D%m1m�=mIm�S�QnZn�S��np"p4pEpVpepvp�p�p�p�p�p�Y�q_�	_9?D�qG&�M�M�M�MN%NdY
�M�M�M�u,�u2�u�6�vvv(vAvUv8(wK[�x��x��x�xb�xyy�(b$y3y:ySy_yxRyy�y��z�z��z�$|4|�A|L|�P|Z|g|p|�|�|�=�~�~�~�~�~I>%0�?�G�P�Z�L�$�;���AB��z����2���ȄY�i�Є�������~$>�+>�ͅڅ��(wK[;�hH�D�S�m!�/ɋrԋx�~�����M4|*�4���:�G#�E#:�=��G��Є�F��L�#X��g��u��������������Ɍ��*p-gFg��>���mg}g�g�g�������(�5�B�Q�`�m��������bC�U�c�q�~���������ǒKd��
�4�g1.�8�A�P�b�r�������˜Ҙ��	�6�
�-��G#�E#M�`�bi��mt��������l�{��2�S��A
�k��s�7�" F�S�`�o���������Ơڠ����0�=�Q�i�Kb +s_��ԋx�~m !��u�6��:Ȣ� ,��<�<u<9	� :�M�_�f��*p*1�-�g1pZ.�8�A�P�b���	�6�
�-��G#�E#^1�r#E�x#S�x#>ĦЦݦ
�n��Ax�F��#T�j��#t������������#ά�#��#��#��$�7��#D��#R�e��#s�����������ɭۭ����#�u2��#�*p�*pٳ޳�!$��	��2�C�P�c�u�~�'$��������-$δ3$ݴ����)�@�Z�v�������˵9$ڵ���9$�W�϶���)�=�Q��*p�T��T�$"�%�=�=$>�+>�/�B�Q�`�%l�v�Ȣ� ���F%��L%
��8q%'��
w%6��#K����F�%�F�F�F,�:�4|�P|�:g|L|Z|p|�|�|�&�&��@L|M��I>��$>�+>�5��F��#�EN�\���}�V&�Sk&5���x�x3yy�����&y�:y����
�_y����$|���&�x�����#Sy^17�D�V�c�s�$y(bb�x�x/=��Є�F��L�#^1G��:��G#�E#��&�e�&/o+m!�@/�*pS/[/�$��(wh$5��@��h$��P|��0�&��&;��&M��&�������.�@���x��x�E��EL|�'�S3'���d�x����������������(�6�J�[�$>�+>�:�M�mg}g�g�g������B��AmRx�E��Rm�1h$��9[����!�9�H��1M��14|�G#�E#^1Ȣ� '	�1W�p�y���#�����1�*p�2�2���1�G�#�E�#�2I>�#�#!�.��3vp��3?�L�4U�e�4vs�
4������������4��������4��4�����-�?��*pN�X�b�p�M�f�������������<�������!��4�F�#U�:�M�$>�+>��A
��S�4�S�4%�J��4h���k��4s��V&�F�%�S�F���������&�>�R�h�������.�>������$��97�I�a�����������9���9����	��3�N��:�
:����$����������������������(�6�E�T� :��������	��������j�V&�M���z�V&%N6��u2�j���������'���������$#	

��
��! ��<��=67@89C��LMN��O		P�
 �
 Q!�
"�
"R#�
$�
$S%�
&�
&T'�
(�
(g)�
*�
*l+�
,�
,m-n-�
.�
.o/�
0�
0p1�
2�
2q3r3s5t7u7v9~;�==�?�?�A�A�C�C�E�G�G�I�I�K�K�M�O�Q�S�U�U�W�W�Y�[�[�]�_�a�a�c�e�e�g�i�i�k�m�m�o�o�q�q�s�s�u�uwwyy{{}}�
��������������� �0�7�8�9�:�<�;�?�E�F�G�J�P�R�Q�U�[�\�]�`�f�h�g�k�l�m�n�o�p�q�r�s�v�x�y�z�}�~������������������������������������������������������������������������������������	��
�
�������������!�!�#�#�%�'�)�+�-�-�/�/�1�1�3�3�5�5�7�7�9�9�;�;�=�=�?�?�A�ACEGIK
K
MMOOQQSSUUWW Y![&]%](_'_*a)a-c.e/g0i6k5k7m8mGoHqIsJsMuNuOwTyUyZ{Y{[}\}edg�f�i�h�k�j�m�l�n�o�q�p�r�s�t�u�v�w�y�x�z�{�}�|�~������������������������������������������������������������������������������������������������������������������������
����������� �#�(�)�*�+�,�6�5�7�8�9�:�>�?@ABCD	EF
GHITSUVYZ`_deg!f!i#h#j%k%o'p'r)q)z+{+�-�/�1�3�5�7�9�;�=�?�A�C�E�G�I�K�M�O�Q�S�U�W�Y�[�]�_�a�c�e�g�i�k�m�o�q�s�u�w�y�{�}��������������������������������������������������������������������������������������������	��
��
������������� �!�#�"�$�%�&�(�'�)�*�+�,�.�-�/�0�2�1�4�3�6�5�7�8�9�:�;�<�>�=�T�U�W�X�YZ]\^_ab	c	edf
g
ihjkmlonpqrstu�����!�#�%�'�'�)�)�+�-�-�/�/�1�1�3�3�5�5�7�7�9�9�;�;�=�=�?�?�A�C�E�E�G�G�I�I�K�K�M�M�O�Q�Q�S�U�W�Y�Y�[�[�]�]�_�_�a�acceeggii	kkm
m
ooqqssuwyy{{} �!�"�$�#�%�&�(�'�*�)�+�,�-�.�/�0�1�2�3�4�6�5�7�8�:�9�<�;�=�>�@�?�B�A�C�D�F�E�H�G�I�J�L�K�M�N�O�P�Q�R�T�S�U�V�`�_�a�b�d�c�|���������������������������������������������������������������������������������������������������������������			



!#%' ))+@-A-C/B/E1D1G3F3H5I5K7J7M9L9N;O;Q=P=S?R?WAVAXCYCZE[E]G\G^I_IaK`KbMcMeOdOfQgQhSiSkUjUmWlWnYoYq[p[t]u]w_v_xaya{czc}e|e~gg�i�i�k�k�m�m�o�o�q�q�s�s�u�u�w�y�y�{�{�}�}��������������������������������������������������������������������������������������������
���������������� ��"�!�$�#�%�&�'�(�)�*�,�+�.�-�0�/�2�1�4�3�?�E�G�F�I�J�L�K�N�M�O�P�T�^�_�a�`�b�c�degfhikjl	m	onq
p
rsutwvxy���������!�!�#�#�%�%�'�'�)�)�+�+�-�-�/�/�1�1�3�3�5�5�7�7�9�9�;�;�=�=�?�A�C�E�E�G�G�I�I�K�K�M�O�O�Q�Q�S�S�U�U�W�W�Y�Y�[�[�]�]�_�_�a�a�c�c�e�e�g�g�i�i�k�k�m�m�o�o�q�qssuuwwyy{	{}
}
����������������(�-�,�/�.�0�1�2�3�4�5�7�6�8�9�;�:�<�=�?�>�@�A�B�C�E�D�G�F�I�H�J�K�L�M�O�N�P�Q�S�R�T�U�V�W�Y�X�[�Z�\�]�^�_�`�a�c�b�d�e�f�g�i�h�k�j�l�m�s�r�z�{����������������������������������������������������������������������������	�	��
�
������������������!�#�%�'�'�)�)�+�+�-�-�/�/�1�1�3�3�5�5�7�7�9�9�;�;�=�=�?�?�A�A�C�C	E	G	I	I	K	K	M	M	O	O	Q	Q	S	S	U	U	W	W$	Y#	Y1	[6	]7	]9	_8	_;	a:	a<	c=	c?	e>	eC	gG	iI	kH	kK	mJ	mN	oM	oO	qP	qR	sQ	sT	uS	uV	wU	wX	yW	yZ	{Y	{\	}[	}]	^	`	�_	�a	�b	�c	�d	�e	�f	�g	�h	�i	�k	�j	�m	�l	�n	�o	�q	�p	�r	�s	�u	�t	�v	�w	�y	�x	�z	�{	�|	�}	�~	�	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	��	�
�
�
�
�



	





	
	"
'

&

(
)
-
.
/
0
2
1
3
4
6
5
7
8
:
9
;
<
=
!>
!@
#?
#A
%B
%C
'D
'E
)F
)G
+H
+I
-J
-K
/L
/N
1M
1O
3P
3Q
5R
5S
7T
7U
9V
9X
;W
;Z
=Y
=\
?[
?]
A^
A_
C`
Ce
Ed
Ef
Gg
Gi
Ih
Ij
Kk
Kl
Mm
Mo
On
Or
Qs
St
Uu
W�
Y�
Y�
[�
[�
]�
_�
_�
a�
c�
c�
e�
e�
g�
g�
i�
i�
k�
k�
m�
m�
o�
o�
q�
q�
s�
s�
u�
u�
w�
w�
y�
y�
{�
{�
}�
�
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
����������	�
����
�����������@�A�B�E�H�I�V�W�X�Y�Z�[�]�\�^�_�b�a�c�d�e�f�i�j�k�l�n�m�o�p�r�q�s�t�u�v�w�x�y�z�|�{�}�~������������������������	��
�
�������������������!�!�#�#�%�%�'�)�)�+�+�-�-�/�/�1�1�3�3�5�5�7�7�9�9�;�;�=�=�?�?�A�A�C�C�E�E�G�G�I�I�K�K�M�M�O�O�Q�Q�S�S�U�UWWYY[	[]
]_
_aacceeggiikkmmooqq s!s"u#u$w%w*y)y+{,{.}-}/01�2�3�4�6�5�8�7�9�:�=�<�>�?�@�A�F�G�H�I�J�K�L�M�N�O�P�[�\�a�b�c�h�i�LNRT	VX
Z\^`bd����!������SD#TJ#UN#VT#WV#b�zb�xb�|b�~j�j�j�	j�j�
j�j�j�j�j�j�j�B%F'df)+g�g�%g�g�'g�g�!g��g��g����-��-��!���*7�$1�&3�(5�"/�,9�.;�0=�2?�4A�6)�B+#+3;CKS[cks{����������������'/7?GOXaiq��� �3�3�3;X;�;�;=+=P=>X?o?,@5@lCnE�E)H:HMHgM�M�M�M�M�M�M�M�N�N�N�N�NVO_OhOqO�O�O�O�OP\PcP}P�P%V	WdWmW<X,^5^Zdjd�d�hmj���Ɇˊ��Q�Ô̔۔��'�/�<�I�Q�����Ֆޖ���Ɨ��+�7�D�P�]�r�����`�������Ŀο׿�#�/�2�H�^�g�q�z��������'�D�����m:��
@
���
$%�i
u�
��

�Z
7N.q.��.@�.P�.(H�.�I/�\J/�|{/���/(G�/h��/�:0(>?0�@i0xC�0(G�0�]�0�_1p}^1x��1P��18��1��2��$2�@I2�Un2k�2@��2��2P�3��63�W3P�~3���3(��3P��3 �4��>48�b4��4H��4@��4H��4��4@�5��<5��e5X;�5(=�5P�5�S6��#6��;6`6�U�6xz�6���6 �7��37`�W7h�|7��7p��7���7��7`�8�Q8�=~8Ȫ�8��8X<�8Pm9�oH9�ur9(|�9P~�9X��9H�:��J:бt:��:p��:�(	�:Hk	;�n	.;�q	O;0t	s;�x	�;z	�;{	�;�|	<P~	'<�	F<H�	l<�	�<�	�<Щ	�<0�	=�	*=H�	I=��	l=� 
�=8\
�=�`
�=�d
�=k
$>`o
F>�q
x>u
�>�y
�>�
	?�
3?�V?q?��?(b�?0��?p�@��Q@��|@���@`��@���@8�A��2A��MA��qA���A���Ah��APB�JB��dB�E�B�I�BHQ�BxTCPWAC�bkCf�C�g�C�j�C�l!D��<D�uD���D(��D(M�D�h�D��%E��RE��pE��EX��E��E�F@;F[F{F��Fp�F`�FG0BG�#fG�)�G�d�G�o�G���G�H�*H�XH�H� �H�#�HX0	I�8!Ix�?I8�^I�|I8��I8>�I6�I [�I�	J�4J04aJ�7�JX;�J`>�J�?�J�@)K�BKK�DjK�E�KPG�K�J�K��Kh�L��0LXYL�&~L�e�L���L8��L0�M��7M��fM��Mh��M���M�FNH]>N�rmNȇ�N���N���N ��N��*O��NO��uO���O���OP��OP�P@/P��QPȲ}P(��P8��P���P�> Q�D 2Q�O XQ�a |Q�� �Q��!�Q�"�QH#
R�#0R�#hR�"#�R@&#�R�-#�R�1##S83#GS5#rSp8#�S%�SH�%�S��%T��%;T��%QT��%�T@�%�T��%�T0�%�T0�%U�%7U��%\U�'zUp�'�UX�'�U(�'�U 
(�U�(V1(1V�e(\V�9)kV@U)�V��)�VP�)�V*�V�&*W.*.W�@*JW��*cWP�*�Wx�*�W��*�Wx�*X��*5X��*\X�*�X��*�X��*�X��*YP�*FYp�*xYH�*�Y�*�Y+�Y�+�Y�+Z�,Z&,>ZX;,oZ�>,�ZB,�Z0C,�Z�G,�Z�I,[M,$[�O,M[�Q,q[�S,�[U,�[XU,�[pj,�[�~,"\x�,A\�,^\8	.}\�/�\�/�\@W/�\8Y/)]�\/[]P~/�]��/�]��/�]�/^X�/5^`�0^^P�0x^ �0�^`�0�^��1�^2_H2:_2[_H2o_�!2�_�!2�_�#2�_�&2`�(2"`�)2I`+2f`H+2~`@82�`pK2�`�Q2�`�c2
an2?a�2zax�2�a'3�aؠ3�a8�3b��36b�Q4ab�4�b8�4�b �4�b�45�bh;5cA5;c0E5_cG5�c�T5�c�b5�c86�cPE6dP�6Ad��6jd7�dP7�d�07e�37e@477ex77bep97�e`<7�e�=7�ePQ7�ehe7f�g70fxo7Vf`�7{fx�7�f��7�f��7�f�;8gX90g�[9^g�]9�gXa9�gg9�g z9	h�90h��9_h�9�hȋ9�h��9�h��9i(�95i�9hi��9�i�9�i@�9�i��9j�9WjH
:�j�
:�j�:�jP:�j�:
kh::kH:akH:�k� :�kx":�k�":�kH>:'l �:Il�%;vl�B;�l�;�lH�;�l��;�l�7<m~<Kmx=rm�!=�m�5=�mP�=�m�=�m��='n��=Rn`�=�n��=�n��=�n��=ox�=Mo8�=�oX�=�o��=�o��=�oP�>p /?+p��?@pX�?_p��?�p�@�ppi@�pX�@q��@q��@*q��@Cq��@]qh�@|q(�@�q��@�q@�@�q��@rP�@7r8�@[r��@�r��@�r��@�rA�rh^D�r�Ds�D$s�ESs�Ejs�5G�sxZG�sh�G�s�@J�s�DJ1t@HJat�JJ�t�TJ�tXJ�t�hJu0�J0u(�JQu�Jxup�J�u�;K�u��K�u�Mv�aM:v�xMYv��M~v��M�v8�M�v��Mwh�M#w0�MEwh�Mvw��M�w@�M�wP�M�w�M�w��MxPN=x�N\x�NoxX�N�x��N�x@Q�xQ�xpQ%y�!QHy`&Q�y�(Q�yp+Q�y�R�y�Rz82RGzCR�z@XR�z�lR�z��R�z�S%{�SF{�S`{XS�{�S�{ S�{�/S�{�CS
|XIS+|�\SP|8pSs|��S�|��S�|T�|x'T�|0`T	}H*U+}.UY}1U�}3U�}^U�}�_U~�bU0~pUQ~0Uf~�Uz~��U�~��U�~8
Vx"VH�7Vs�8V�:V�;V�`>V��AV�xEV2��IVR��LVx�PNV��XOV���UVۀXV� hV��|V6���VZ���Vz���V���V؁�W��W6�
Wb�0W��HW���Wς@"W�@$W� 2W.���Wc�xlX����X���X�P�X���X>���Xb�H�X��@�X����Xф�X���X+���XR��Y�� >=SRTRURVRWR����������������������������������������.-54HGIGmlsr�����������j�����������������
�!"%z���9��9P�&P�&R�&Re'Rt'T�&T�'C�9E�9��9��9
�<
�<��E��E��E��E��E�F��E��F��F��L��L�&S�&S�,S�,S�,V�,V��W�F]�F]�&b�&b��E�vj�*t�*t�0t�0t�6t�6t�{t�{t��w�=��c��k��k��o��o��K��K�����̖�����(���E�Q��җ�ۗ������������}��}�������	Ţ�����������B��D��B�ED�EB�FD�FB�ED�E�Z��Z��`��`��f��f��l��l��}��}��������������`��`��f��f�������������������	;���E��E��E��E��������F��F�������������������C�C�I�I����hhh<Module>AjaxControlToolkit.dllExtenderControlBaseDesigner`1AjaxControlToolkit.DesignPageMethodDesignerActionListFilterTypeDescriptionProvider`1ExtenderPropertyRenameDescProvToggleButtonExtenderDesignerAjaxControlToolkitSlideShowDesignerGetSlidesResizableControlDesignerIWebControlAccessorAjaxControlToolkit.MaskedEditValidatorCompatibilityIBaseValidatorAccessorIBaseCompareValidatorAccessorIControlResolverIClientStateManagerScriptControlBaseCommonButtonAjaxControlToolkit.HTMLEditor.ToolbarButtonImageButtonDesignModeImageButtonEditorToggleButtonStrikeThroughPopupAjaxControlToolkit.HTMLEditor.PopupsPopupStyleAttachedPopupAttachedTemplatePopupBaseColorsPopupExtenderControlBaseAnimationExtenderControlBaseDynamicPopulateExtenderControlBaseHoverMenuExtenderGravatarRatingScriptObjectBuilderResourceEntryReferencedAssembliesvsCMElementvsCMAccessvsCMFunctionvsCMTypeRefCodeTypeRefCodeElementsFileCodeModel2CodeElement2CodeClass2CodeFunction2CodeParameter2CodeAttribute2DTE2UndoContextDocumentProjectItemVSWebProjectItemClientScriptResourceAttributeCommonToolkitScriptsAsyncFileUploadStateAsyncFileUploadEventArgsValidatorCalloutExtenderOverlayCollectionEditorReorderListItemPagingBulletedListExtenderNoBotMultiHandleInnerRailStyleSelectButtonSelectButtonStyleSelectOptionRemoveAlignmentMethodButtonPasteTextDesignModeSelectButtonFontNameCutBackColorClearPopupCommonButtonPopupBoxButtonPopupBGIButtonRegisteredFieldHoverMenuPopupPositionHoverExtenderDesignerResolveControlEventHandlerUtilityBalloonPopupStyleHorizontalSideAccordionExtenderTwitterDefaultProfileStatusTemplateDefaultProfileLayoutTemplateDefaultSearchStatusTemplateDefaultSearchLayoutTemplateDefaultEmptyDataTemplateSanitizerProviderCollectionAjaxControlToolkit.SanitizerPopupExtenderDesignerPopupControlExtenderPopupControlPopupPositionMaskedEditTypeMaskedEditUserDateFormatMaskedEditUserTimeFormatMaskedEditInputDirectionMaskedEditShowSymbolMaskedEditDesignerBaseValidatorRemoveLinkForeColorClearHTMLEditorAjaxControlToolkit.HTMLEditorGravatarDefaultImageBehaviorRequiredPropertyAttributeExtenderVisiblePropertyAttributeExtenderPropertiesTypeDescriptorExtenderPropertiesProxyComboBoxAutoCompleteModeBalloonPopupSizeAnimationExtenderAlwaysVisibleControlDesignerTabStripPlacementOnDemandModeBoxCornersSubScriptRemoveStylesPasteWordPasteItalicBoxButtonDesignModeBoxButtonToolbarToolbarInstanceHtmlEditorExtenderDesignerHtmlEditorExtenderButtonCollectionEditorPageMethodSignatureAttributeConfirmButtonDesignerDateTimeScriptsComboBoxRenderModeComboBoxItemInsertLocationBalloonPopupDesignerGetDynamicContentVerticalSideValidatorCalloutPositionTwitterStatusTextBoxWatermarkExtenderDesignerSliderOrientationReorderListDesignerTemplateItemReorderListDesignerRegionReorderListDesignerActionListReorderListViewTypeConverterDraggableListItemExtenderDisplayPositionStrengthIndicatorTypesNoBotStateNoBotDesignerMultiHandleSliderTargetJustifyLeftDesignModePopupImageButtonSelectorSelectorStyleColorSelectorForeColorSelectorDecreaseIndentHtmlEditorExtenderButtonBoldUnderlineSubscriptSuperscriptJustifyRightJustifyCenterJustifyFullInsertOrderedListInsertUnorderedListUndoRedoCreateLinkDeleteSelectAllUnSelectUnLinkBackgroundColorSelectorCopyFontNameSelectorFontSizeSelectorIndentInsertHorizontalRuleOutdentRemoveFormatHorizontalSeparatorGravatarServicePathConverterTypedControlIDConverter`1ComponentReferenceAttributeDropShadowDesignerTimerScriptCalendarExtenderAsyncFileUploadConstantsErrorsStatusMessagesUploaderStyleEnumPersistedStoreTypeEnumAsyncFileUploadStyleUpdatePanelAnimationDesignerReorderListItemEventArgsReorderListItemReorderEventArgsReorderListCommandEventArgsDropWatcherExtenderNumericUpDownDesignerGetNextValueGetPreviousValueMutuallyExclusiveCheckBoxExtenderMultiHandleSliderDesignerHtmlEditorExtenderHorizontalSeparatorStyleBulletedListModePanelPreviewPanelDesignPanelEventHandlerClientCssResourceAttributeDragPanelExtenderDragDropScriptsCalendarDefaultViewAccordionTwitterDesignerSliderExtenderSeadragonUrlEditorSeadragonControlControlAnchorProviderSanitizerSectionReorderHandleAlignmentRatingExtenderModalPopupExtenderOkCancelPopupButtonInsertHRFixedColorButtonFixedBackColorExecCommandEmulationDynamicPopulateDesignerDropDownDesignerCollapsiblePanelExpandDirectionAutoCompleteDesignerGetCompletionListAnimationJavaScriptConverterAnimationAccordionExtenderDesignerTwitterAPIToolkitScriptManagerScriptEntryRedirectScriptReferenceRoundedCornersExtenderPasswordStrengthExtenderDesignerListSearchPromptPositionListSearchExtenderSuperScriptGravatarDesignerRequiredScriptAttributeProfilePropertyBindingCollectionBoxSideComboBoxColorPickerExtenderCollapsiblePanelDesignerCalendarPositionTwitterModeSlideShowExtenderResizableControlExtenderModeButtonDesignModeBackColorSelectorEventsContentChangedEventHandlerEditPanelDesignPanelHoverMenuDesignerFilterModesFilteredTextBoxDesignerExtenderControlMethodAttributeElementReferenceAttributeCascadingDropDownDesignerGetDropDownContentsAutoSizeScriptCombineAttributeReorderListItemCollectionReorderListItemEnumeratorMaskedEditValidatorMaskedEditCommonFontSizeFixedForeColorResolveControlEventArgsComboBoxDesignerActionListAsyncFileUploadDesignerAccordionDesignerValidatorCalloutDesignerTabPanelDesignerTabPanelBulletedListItemPopupControlDesignerPagingBulletedListDesignerValidatorHelperRtlPreviewModeLtrEditorEditorStyleHoverExtenderClientPropertyNameAttributeSlideSeadragonSanitizerReorderListInsertLocationMaskedEditExtenderOkCancelAttachedTemplatePopupLinkPropertiesActiveModeTypeEnumsExtenderControlPropertyAttributeConfirmButtonExtenderComboBoxButtonBalloonPopupExtenderAfuPersistedStoreManagerInstanceInitializerAlwaysVisibleControlExtenderAccordionContentPanelTextBoxWatermarkExtenderSeadragonDesignerReorderListItemLayoutTypeRatingRatingEventHandlerRatingEventArgsRatingDirectionPopupExtenderNoBotExtenderModalPopupRepositionModeIncreaseIndentColorButtonForeColorEditPanelInstanceHtmlEditorExtenderButtonCollectionFilterTypesExtenderControlEventAttributeDropShadowExtenderThreadingScriptsCalendarDesignerAnimationScriptsAccordionCommandEventArgsTabPanelCollectionNoBotEventArgsMultiHandleSliderExtenderParagraphScriptUserControlProfilePropertyBindingComboBoxDesignerAnimationExtenderDesignerUpdatePanelAnimationExtenderRatingDesignerActionListResources_NET4AjaxControlToolkit.PropertiesPositioningModeNumericUpDownExtenderMutuallyExclusiveCheckBoxDesignerModalPopupDesignerMaskedEditTypeConvertHtmlModeDesignerWithMapPathEditorDesignerDragPanelDesignerComboBoxItemInsertEventArgsComboBoxStyleCascadingDropDownNameValueBalloonPopupPositionAutoCompleteExtenderTwitterUserTabContainerDesignerTabContainerDesignerActionListDesignerPanelTabContainerTabContainerStyleSliderDesignerSeadragonOverlaySeadragonFixedOverlaySeadragonScalableOverlaySeadragonOverlayPlacementSeadragonRectSeadragonPointRepeatDirectionReorderListDraggableListItemInfoListSearchQueryPatternDynamicPopulateExtenderDropDownExtenderAccordionPaneCollectionAccordionPaneEnumeratorAccordionItemTypeAccordionItemEventArgsToggleButtonExtenderSanitizerProviderRoundedCornersDesignerPasswordStrengthListSearchDesignerOrderedListInsertLinkHtmlPanelFilteredTextBoxExtenderColorPickerDesignerCollapsiblePanelExtenderCascadingDropDownAccordionPaneTSystem.Web.Extensions.DesignSystem.Web.UI.DesignExtenderControlDesignerSystemSystem.ComponentModelIExtenderProviderSystem.DesignSystem.ComponentModel.DesignDesignerActionListTypeDescriptionProviderICustomTypeDescriptorIComponentmscorlibMulticastDelegateSystem.Web.ExtensionsSystem.Web.UIScriptControlSystem.WebINamingContainerIPostBackDataHandlerICallbackEventHandlerSystem.Web.UI.WebControlsStyleExtenderControlEnumObjectValueTypeAttributeEventArgsCollectionEditorWebControlIDataItemContainerCompositeControlITemplateSystem.ConfigurationSystem.Configuration.ProviderProviderCollectionExpandableObjectConverterSystem.Web.UI.Design.WebControlsDataBoundControlDesignerTemplatedEditableDesignerRegionTypeConverterControlDesignerStringConverterControlIDConverterCommandEventArgsCompositeControlDesignerUrlEditorPanelConfigurationSectionSystem.Web.Script.SerializationJavaScriptConverterScriptManagerScriptReferenceSystem.CollectionsCollectionBaseListControlIScriptControlIPostBackEventHandlerSystem.Collections.GenericIList`1ICollection`1IEnumerable`1IEnumerableIEnumerator`1IDisposableIEnumeratorList`1ControlCollectionUserControlListControlDesignerCancelEventArgsCompositeDataBoundControlIRepeatInfoUserIListICollectionProviderBaseDisableDesignerFeaturesUnknownDisableDesignerFeaturesYesDisableDesignerFeaturesNoExtenderControlDictionaryKeyDesignerActionListCollectionget_ActionLists_actionLists_renameProvider.cctor.ctor_disableDesignerFeaturesget_DesignerFeaturesEnabledget_ExtenderControlget_ExtenderPropertyNameCanExtendDisposeGetExtenderInitializeIDictionaryPreFilterAttributesPreFilterPropertiesActionListsDesignerFeaturesEnabledExtenderPropertyNameSystem.ReflectionMethodInfo_signature_attributeDesignerActionItemCollectionGetSortedActionItemsAddPageMethodEnsureServiceSSystem.Windows.FormsDialogResultShowMessageMessageBoxButtonsFindClassFindMethodsFindMethodTypeCreateCodeTypeRefNameAreSameTypeCreatePageMethodPageMethodNeedsRepairRepairPageMethodLoadFileCodeModelUnloadWebProjectItem_target_baseDescriptor_baseProvider_extendedget_Targetget_BaseDescriptorget_FilterExtendedPropertiesset_FilterExtendedPropertiesGetTypeDescriptorGetExtendedTypeDescriptorPropertyDescriptorProcessPropertyPropertyDescriptorCollectionSystem.ComponentModel.ICustomTypeDescriptor.GetPropertiesGetPropertiesFilterPropertiesAttributeCollectionSystem.ComponentModel.ICustomTypeDescriptor.GetAttributesGetAttributesSystem.ComponentModel.ICustomTypeDescriptor.GetClassNameGetClassNameSystem.ComponentModel.ICustomTypeDescriptor.GetComponentNameGetComponentNameSystem.ComponentModel.ICustomTypeDescriptor.GetConverterGetConverterEventDescriptorSystem.ComponentModel.ICustomTypeDescriptor.GetDefaultEventGetDefaultEventSystem.ComponentModel.ICustomTypeDescriptor.GetDefaultPropertyGetDefaultPropertySystem.ComponentModel.ICustomTypeDescriptor.GetEditorGetEditorEventDescriptorCollectionSystem.ComponentModel.ICustomTypeDescriptor.GetEventsGetEventsSystem.ComponentModel.ICustomTypeDescriptor.GetPropertyOwnerGetPropertyOwnerTargetBaseDescriptorFilterExtendedProperties_ownerInvokeIAsyncResultAsyncCallbackBeginInvokeEndInvokeHtmlTextWriterTagget_TagKeyTagKeyget_RenderUpLevelEnsureIDGetControlRenderIDRenderUpLevelget_CutoffYearGetDateElementOrderCutoffYearControlResolveControlget_SupportsClientStateLoadClientStateSaveClientStateSupportsClientState_scriptManager_enableClientState_cachedClientStateFieldID_callbackArgument_tagName_tagKey_renderingScriptget_ScriptPathset_ScriptPathget_ClientControlTypeget_IsRenderingScriptget_ScriptManagerget_ClientStateFieldIDget_TagNameEnsureScriptManagerFindControlOnLoadOnPreRenderSystem.Collections.SpecializedNameValueCollectionLoadPostDataRaisePostDataChangedEventScriptDescriptorGetScriptDescriptorsGetScriptReferencesScriptComponentDescriptorDescribeComponentGetCallbackResultRaiseCallbackEventSystem.Web.UI.IPostBackDataHandler.LoadPostDataSystem.Web.UI.IPostBackDataHandler.RaisePostDataChangedEventSystem.Web.UI.ICallbackEventHandler.GetCallbackResultSystem.Web.UI.ICallbackEventHandler.RaiseCallbackEventAjaxControlToolkit.IClientStateManager.get_SupportsClientStateAjaxControlToolkit.IClientStateManager.LoadClientStateAjaxControlToolkit.IClientStateManager.SaveClientStateScriptPathClientControlTypeIsRenderingScriptClientStateFieldIDTagNameAjaxControlToolkit.IClientStateManager.SupportsClientStateSystem.Collections.ObjectModelCollection`1_activeModes_exportedControls_wasPreRender_IgnoreTab_designerSystem.ResourcesResourceManager_rmget_IsDesignPageget_Pageset_Pageget_ActiveModesget_ExportedControlsget_PreservePlaceset_PreservePlaceget_CssClassget_IgnoreTabset_IgnoreTabget_ActiveModesIdsShouldSerializeActiveModesIdsGetFromResourceOnInitHtmlTextWriterRenderCreateChildsIsDesignActiveModesExportedControlsPreservePlaceCssClassIgnoreTabActiveModesIdsget_BaseImageButtonTypeget_NormalSrcset_NormalSrcShouldSerializeNormalSrcget_HoverSrcset_HoverSrcShouldSerializeHoverSrcget_DownSrcset_DownSrcShouldSerializeDownSrcget_ActiveSrcset_ActiveSrcShouldSerializeActiveSrcRegisterButtonImagesInternalRegisterButtonImagesgetImagePathAddAttributesToRenderBaseImageButtonTypeNormalSrcHoverSrcDownSrcActiveSrcGetExistingPopupSystem.Web.UI.HtmlControlsHtmlGenericControl_iframe_savedCSS_initialContent_cssPath_autoDimensions_registeredFields_registeredHandlersget_isDesignget_AutoDimensionsset_AutoDimensionsget_InitialContentset_InitialContentget_CssPathset_CssPathget_RegisteredFieldsget_RegisteredFieldsIdsget_RegisteredHandlersget_RegisteredHandlersIdsGetButtonGetFieldCreateControlStyleisDesignAutoDimensionsInitialContentCssPathRegisteredFieldsRegisteredFieldsIdsRegisteredHandlersRegisteredHandlersIds_popupStateBagCssStyleCollectionIUrlResolutionServiceFillStyleAttributes_contentTemplate_contentDiv_content_containerCSSClassget_ContainerCSSClassset_ContainerCSSClassget_ContentTemplateset_ContentTemplateget_ContentCreateChildControlsContainerCSSClassContentTemplateContent_colorsDictionary`2_findControlHelperCache_loadedClientStateValuesget_SkinIDset_SkinIDResolveControlIDadd_ResolveControlIDremove_ResolveControlIDget_AllowScriptPath_isDisposedget_Enabledset_EnabledEnsureScriptsFindControlHelperget_TargetControlget_BehaviorIDset_BehaviorIDGetClientIDGetClientStateFieldIDPage_PreLoadHiddenFieldCreateClientStateFieldLoadClientStateValuesEventHandlerClientStateValuesLoadedadd_ClientStateValuesLoadedremove_ClientStateValuesLoadedOnResolveControlIDScriptBehaviorDescriptorRenderInnerScriptRenderScriptAttributesSaveClientStateValuesShouldSerializeBehaviorIDSerializePropertyForceSerializationProps_clientState_profileBindingsget_ProfileBindingsShouldSerializeProfileBindingsget_ClientStateset_ClientStateset_ClientStateFieldIDget_EnableClientStateset_EnableClientStateShouldSerializeClientStateFieldIDSuppressUnusedParameterWarningCheckIfValidEnsureValidGetPropertyValueVSetPropertyValueGetPropertyStringValueSetPropertyStringValueGetPropertyIntValueSetPropertyIntValueGetPropertyBoolValueSetPropertyBoolValueSkinIDAllowScriptPathEnabledTargetControlBehaviorIDProfileBindingsClientStateEnableClientState_animationsget_Animationsset_AnimationsTrimForDesignerShouldSerializeAnimationsGetAnimationSetAnimationResolveControlIDsAnimationsget_DynamicControlIDset_DynamicControlIDget_DynamicContextKeyset_DynamicContextKeyget_DynamicServicePathset_DynamicServicePathShouldSerializeServicePathget_DynamicServiceMethodset_DynamicServiceMethodget_CacheDynamicResultsset_CacheDynamicResultsDynamicControlIDDynamicContextKeyDynamicServicePathDynamicServiceMethodCacheDynamicResultsget_PopupControlIDset_PopupControlIDget_HoverCssClassset_HoverCssClassget_OffsetXset_OffsetXget_OffsetYset_OffsetYget_PopDelayset_PopDelayget_HoverDelayset_HoverDelayget_PopupPositionset_PopupPositionget_OnShowset_OnShow_onShowget_OnHideset_OnHide_onHidePopupControlIDHoverCssClassOffsetXOffsetYPopDelayHoverDelayPopupPositionOnShowOnHidevalue__DefaultGPGRX_cache_cssCache_syncIDictionary`2Converter`2get_CustomConverters_customConvertersGetCssReferencesRegisterCssReferencesExecuteCallbackMethodScriptReferencesFromResourceEntriesStack`1GetScriptReferencesInternalCustomConvertersResourcePathComponentTypeOrderget_AssemblyNameToScriptReferenceEqualsop_Equalityop_InequalityGetHashCodeAssemblyNameAssembly_EnvDTEget_EnvDTE_EnvDTE80get_EnvDTE80_VsWebSiteget_VsWebSiteEnvDTEEnvDTE80VsWebSiteget_ReferencedType_referencedTypeget_Referenceset_Reference_referencevsCMElementClassvsCMElementFunctionvsCMElementNamespaceget_ValueReferencedTypeReferenceValuevsCMAccessPublicvsCMFunctionFunctionvsCMTypeRefArrayvsCMTypeRefPointerget_TypeKindget_ElementTypeset_ElementTypeget_AsFullNameget_Rankset_RankTypeKindElementTypeAsFullNameRankget_CountGetEnumeratorCountget_CodeElementsget_Nameset_Nameget_FullNameget_Kindget_IsCodeTypeget_ChildrenNameFullNameKindIsCodeTypeChildrenAddFunctionget_Typeset_Typeget_Parametersget_Accessset_Accessget_IsSharedset_IsSharedget_AttributesAddParameterAddAttributeParametersAccessIsSharedAttributesget_ActiveDocumentget_UndoContextActiveDocumentget_IsOpenOpenCloseIsOpenget_ProjectItemget_Objectget_FileCodeModelFileCodeModelLoadUnload_resourcePath_componentType_loadOrderget_ComponentTypeset_ComponentTypeget_LoadOrderset_LoadOrderget_ResourcePathset_ResourcePathIsDefaultAttributeLoadOrderSuccessFailedUnknown_statusMessage_filename_filesize_stateget_StatusMessageget_FileNameget_FileSizeget_StateStatusMessageFileNameFileSizeStateget_WarningIconImageUrlset_WarningIconImageUrlget_CloseImageUrlset_CloseImageUrlset_CssClassget_HighlightCssClassset_HighlightCssClassUnitget_Widthset_WidthWarningIconImageUrlCloseImageUrlHighlightCssClassWidthCanSelectMultipleInstancesCreateNewItemTypesItemBaseName_dataItem_baseItem_tag_itemIndexListItemType_itemType_isAddItemget_ItemTypeset_ItemTypeget_DataItemset_DataItemget_ItemIndexset_ItemIndexget_IsAddItemOnBubbleEventget_DataItemIndexget_DisplayIndexItemTypeDataItemItemIndexIsAddItemDataItemIndexDisplayIndexget_IndexSizeset_IndexSizeNullable`1get_Heightset_Heightget_Separatorset_Separatorget_MaxItemPerPageset_MaxItemPerPageget_ClientSortset_ClientSortget_SelectIndexCssClassset_SelectIndexCssClassget_UnselectIndexCssClassset_UnselectIndexCssClassIndexSizeHeightSeparatorMaxItemPerPageClientSortSelectIndexCssClassUnselectIndexCssClassSortedList`2DateTime_pastAddresses_responseMinimumDelaySeconds_cutoffWindowSeconds_cutoffMaximumInstances_extenderIsValidGetCopyOfUserAddressCacheEmptyUserAddressCacheCheckResponseAndStoreStateget_ResponseTimeKeyget_SessionKeyKeyCreateSessionKeyEventHandler`1GenerateChallengeAndResponseadd_GenerateChallengeAndResponseremove_GenerateChallengeAndResponseget_ResponseMinimumDelaySecondsset_ResponseMinimumDelaySecondsget_CutoffWindowSecondsset_CutoffWindowSecondsget_CutoffMaximumInstancesset_CutoffMaximumInstancesResponseTimeKeySessionKeyKeyResponseMinimumDelaySecondsCutoffWindowSecondsCutoffMaximumInstancesAsIsSlidingDoors_optionsget_Optionsget_SelectWidthget_DefaultValueget_UseDefaultValueOptionsSelectWidthDefaultValueUseDefaultValue_value_textset_Valueget_Textset_TextText_name_controlget_Controlset_ControlCenterTopLeftBottomRightToolBoxItemTypeNameSetFocusOnLoadRectangleCloudCustomget_AutoSizeset_AutoSizeget_TransitionDurationset_TransitionDurationget_FadeTransitionsset_FadeTransitionsget_FramesPerSecondset_FramesPerSecondget_SelectedIndexset_SelectedIndexget_RequireOpenedPaneset_RequireOpenedPaneget_SuppressHeaderPostbacksset_SuppressHeaderPostbacksget_HeaderCssClassset_HeaderCssClassget_HeaderSelectedCssClassset_HeaderSelectedCssClassget_ContentCssClassset_ContentCssClassTransitionDurationFadeTransitionsFramesPerSecondSelectedIndexRequireOpenedPaneSuppressHeaderPostbacksHeaderCssClassHeaderSelectedCssClassContentCssClassListView_listViewget_Modeset_Modeget_ScreenNameset_ScreenNameget_Captionset_Captionget_Titleset_Titleget_ProfileImageUrlset_ProfileImageUrlget_Searchset_Searchget_IncludeRetweetsset_IncludeRetweetsget_IncludeRepliesset_IncludeRepliesset_Countget_CacheDurationset_CacheDurationget_IsLiveContentOnDesignModeset_IsLiveContentOnDesignModeget_StatusTemplateset_StatusTemplateget_AlternatingStatusTemplateset_AlternatingStatusTemplateget_EmptyDataTemplateset_EmptyDataTemplateget_LayoutTemplateset_LayoutTemplateControlPropertiesValidPrepareTemplatesGetProfileGetSearchAgoActivateLinks<Mode>k__BackingField<ScreenName>k__BackingField<Caption>k__BackingField<Title>k__BackingField<ProfileImageUrl>k__BackingField<Search>k__BackingField<IncludeRetweets>k__BackingField<IncludeReplies>k__BackingField<Count>k__BackingField<CacheDuration>k__BackingField<IsLiveContentOnDesignMode>k__BackingField<StatusTemplate>k__BackingField<AlternatingStatusTemplate>k__BackingField<EmptyDataTemplate>k__BackingField<LayoutTemplate>k__BackingFieldModeScreenNameCaptionTitleProfileImageUrlSearchIncludeRetweetsIncludeRepliesCacheDurationIsLiveContentOnDesignModeStatusTemplateAlternatingStatusTemplateEmptyDataTemplateLayoutTemplate_twitterSystem.Web.UI.ITemplate.InstantiateInInstantiateInctlStatus_DataBindAddget_ItemItem_shouldClose_closeString_proxyForCurrentPopup_pagePreRenderHandlerGetProxyForCurrentPopupCancelCommitPage_PreRenderget_ExtenderControlIDset_ExtenderControlIDget_CommitPropertyset_CommitPropertyget_CommitScriptset_CommitScriptget_Positionset_PositionExtenderControlIDCommitPropertyCommitScriptPositionNoneDateNumberTimeDayMonthYearDayYearMonthMonthDayYearMonthYearDayYearDayMonthYearMonthDayTwentyFourHourLeftToRightRightToLeft_scriptManagerCheckedRegisterValidatorDeclarationAjaxControlToolkit.MaskedEditValidatorCompatibility.IBaseValidatorAccessor.get_RenderUpLevelAjaxControlToolkit.MaskedEditValidatorCompatibility.IWebControlAccessor.get_TagKeyAjaxControlToolkit.MaskedEditValidatorCompatibility.IBaseValidatorAccessor.EnsureIDAjaxControlToolkit.MaskedEditValidatorCompatibility.IBaseValidatorAccessor.GetControlRenderIDAjaxControlToolkit.MaskedEditValidatorCompatibility.IBaseValidatorAccessor.RenderUpLevelAjaxControlToolkit.MaskedEditValidatorCompatibility.IWebControlAccessor.TagKeyMysteryManIdenticonMonsterIdWavatarRetroYesNoITypeDescriptorContextSystem.GlobalizationCultureInfoConvertTo_propsToHideAppendSuggestSuggestAppendSmallMediumLarge_onLoad_onClick_onMouseOver_onMouseOut_onHoverOver_onHoverOutget_OnLoadset_OnLoadget_OnClickset_OnClickget_OnMouseOverset_OnMouseOverget_OnMouseOutset_OnMouseOutget_OnHoverOverset_OnHoverOverget_OnHoverOutset_OnHoverOutOnClickOnMouseOverOnMouseOutOnHoverOverOnHoverOutTopRightBottomRightAlwaysOnceTopLeftBottomLeftAll_buttonsget_AlwaysVisibleset_AlwaysVisibleget_Buttonsset_Buttonsget_ButtonIdsShouldSerializeButtonIdsget_ButtonImagesFolderset_ButtonImagesFolderLocalResolveUrlAlwaysVisibleButtonsButtonIdsButtonImagesFolderextSystem.TextStringBuildersbHtmlEditorExtenderTextBoxtargetTextBoxsbButtonsget_UsePreviewControlDesignerRegionCollectionGetDesignTimeHtmlGetPersistenceContentget_VisibleUsePreviewControlVisibleget_FriendlyName_friendlyNameget_ServicePathProperty_servicePathPropertyget_ServiceMethodProperty_serviceMethodPropertyget_UseContextKeyProperty_useContextKeyPropertyget_IncludeContextParameterFriendlyNameServicePathPropertyServiceMethodPropertyUseContextKeyPropertyIncludeContextParameterInlineBlockPrependOrdinalTextOrdinalValueMiddleget_CreatedAtset_CreatedAtget_Userset_User<CreatedAt>k__BackingField<Text>k__BackingField<User>k__BackingFieldCreatedAtUserHorizontalVertical_designtimeHTML_designtimeHTML_TemplateDefaultTemplateIndexTemplateGroupCollection_templateGroupsTemplateItemsget_CurrentObjectget_CurrentTemplateget_CurrentTemplateDescriptorget_CurrentViewset_CurrentViewget_CurrentViewNameget_CurrentViewControlTemplateget_ReorderListTemplateDefinitionget_TemplateDefinitionget_TemplateGroupsEditableDesignerRegionBuildRegionGetEditableDesignerRegionContentGetEmptyDesignTimeHtmlExceptionGetErrorDesignTimeHtmlSetEditableDesignerRegionContentCurrentObjectCurrentTemplateCurrentTemplateDescriptorCurrentViewCurrentViewNameCurrentViewControlTemplateTemplateGroupsSupportsDataBinding_templateget_Templateset_Template_object_propget_PropertyDescriptorTemplateget_Viewset_ViewViewStandardValuesCollectionGetStandardValuesGetStandardValuesExclusiveGetStandardValuesSupportedget_Handleset_HandleHandleRightSideAboveRightAboveLeftLeftSideBelowRightBelowLeftBarIndicatorValidInvalidBadResponseInvalidResponseTooSoonInvalidAddressTooActiveInvalidBadSessionInvalidUnknown_controlID_handleCssClass_decimals_offsetget_ControlIDset_ControlIDget_HandleCssClassset_HandleCssClassget_Decimalsset_Decimalsget_Offsetset_OffsetControlIDHandleCssClassDecimalsOffset_autoCloseget_RelatedPopupset_RelatedPopupget_AutoCloseset_AutoCloseRelatedPopupAutoClose_fixedColorButtonIdget_FixedColorButtonIdset_FixedColorButtonIdFixedColorButtonIdget_CommandNameget_TooltipCommandNameTooltipget_Emailset_Emailget_Sizeset_Sizeget_DefaultImageset_DefaultImageget_DefaultImageBehaviorset_DefaultImageBehaviorget_Ratingset_RatingGetUrlGetHash<Email>k__BackingField<Size>k__BackingField<DefaultImage>k__BackingField<DefaultImageBehavior>k__BackingField<Rating>k__BackingFieldEmailSizeDefaultImageDefaultImageBehaviorFilterControlget_Formatset_Formatget_TodaysDateFormatset_TodaysDateFormatget_DaysModeTitleFormatset_DaysModeTitleFormatget_ClearTimeset_ClearTimeget_EnabledOnClientset_EnabledOnClientget_Animatedset_AnimatedFirstDayOfWeekget_FirstDayOfWeekset_FirstDayOfWeekget_PopupButtonIDset_PopupButtonIDget_SelectedDateset_SelectedDateget_DefaultViewset_DefaultViewget_OnClientShowingset_OnClientShowingget_OnClientShownset_OnClientShownget_OnClientHidingset_OnClientHidingget_OnClientHiddenset_OnClientHiddenget_OnClientDateSelectionChangedset_OnClientDateSelectionChangedget_StartDateset_StartDateget_EndDateset_EndDateFormatTodaysDateFormatDaysModeTitleFormatClearTimeEnabledOnClientAnimatedPopupButtonIDSelectedDateDefaultViewOnClientShowingOnClientShownOnClientHidingOnClientHiddenOnClientDateSelectionChangedStartDateEndDateHttpPostedFilepostedFilepersistStorageTypelastErrorfailedValidationcontrolStylehiddenFieldIDinnerTBIDHtmlInputFileinputFilepersistFileUploadedCompleteadd_UploadedCompleteremove_UploadedCompleteUploadedFileErroradd_UploadedFileErrorremove_UploadedFileErrorget_OnClientUploadStartedset_OnClientUploadStartedget_OnClientUploadCompleteset_OnClientUploadCompleteget_OnClientUploadErrorset_OnClientUploadErrorget_IsDesignModeget_CurrentFileget_FileBytesget_ThrobberIDset_ThrobberIDSystem.DrawingColorget_CompleteBackColorset_CompleteBackColorget_UploadingBackColorset_UploadingBackColorget_ErrorBackColorset_ErrorBackColorget_FailedValidationset_FailedValidationget_PersistedStoreTypeset_PersistedStoreTypeget_UploaderStyleset_UploaderStyleget_PostedFileget_HasFileget_ContentTypeSystem.IOStreamget_FileContentget_IsUploadingget_PersistFileset_PersistFileClearAllFilesFromPersistedStoreClearFileFromPersistedStoreSaveAsPopulatObjectPriorToRenderOnUploadedFileErrorOnUploadedCompleteReceivedFileGetBytesFromStreamGenerateHtmlInputHiddenControlGenerateHtmlInputFileControlOnClientUploadStartedOnClientUploadCompleteOnClientUploadErrorIsDesignModeCurrentFileFileBytesThrobberIDCompleteBackColorUploadingBackColorErrorBackColorFailedValidationPersistedStoreTypeUploaderStylePostedFileHasFileContentTypeFileContentIsUploadingPersistFileFileUploadIDKeyInternalErrorInvalidIFramefileUploadGUIDNoFilesFileNullNoFileNameInputStreamNullEmptyContentLengthUploadSuccessfulTraditionalModernSession_itemset_Item_oldIndex_newIndexget_OldIndexset_OldIndexget_NewIndexset_NewIndexOldIndexNewIndex_sourceget_Sourceset_SourceSourceget_DataTypeNameget_AcceptedDataTypesset_AcceptedDataTypesget_ArgReplaceStringset_ArgReplaceStringget_ArgSuccessStringset_ArgSuccessStringget_ArgErrorStringset_ArgErrorStringget_ArgContextStringset_ArgContextStringget_CallbackCssStyleset_CallbackCssStyleget_DataTypeset_DataTypeget_DragModeset_DragModeget_DropLayoutElementset_DropLayoutElementget_PostBackCodeset_PostBackCodeDataTypeNameAcceptedDataTypesArgReplaceStringArgSuccessStringArgErrorStringArgContextStringCallbackCssStyleDataTypeDragModeDropLayoutElementPostBackCodeget_Keyset_KeyKeyButtonWidthDefButtonHeightDefbuttonListsanitizerProviderget_SanitizerProviderset_SanitizerProviderget_ToolbarButtonsEnsureButtonsget_ToolbarDecodetrackedCreateButtonsRenderControlToolbarButtons_editPanelsetEditPanelget_DragHandleIDset_DragHandleIDDragHandleIDDaysMonthsYearsItemCountViewStateKeyItemCreatedadd_ItemCreatedremove_ItemCreatedItemDataBoundadd_ItemDataBoundremove_ItemDataBoundCommandEventHandlerItemCommandadd_ItemCommandremove_ItemCommand_panes_dataSource_headerTemplate_initialized_pagePreLoadFired_requiresDataBinding_throwOnDataPropertyChangeDataSourceView_currentView_currentViewIsFromDataSourceID_currentViewValidDataSourceSelectArguments_arguments_selectResultSystem.ThreadingEventWaitHandle_selectWaitget_AccordionExtenderget_Panesget_Controlsget_HeaderTemplateset_HeaderTemplateget_DataSourceset_DataSourceget_DataSourceIDset_DataSourceIDget_DataMemberset_DataMemberget_IsBoundUsingDataSourceIDget_RequiresDataBindingset_RequiresDataBindingget_SelectArgumentsOnPagePreLoadClearPanesConnectToDataSourceViewDataBindOnDataBindingCreateControlHierarchyCreateItemEnsureDataBoundGetDataCreateDataSourceSelectArgumentsDoSelectOnDataPropertyChangedOnDataSourceViewChangedOnItemCommandOnItemCreatedOnItemDataBoundPanesControlsHeaderTemplateDataSourceDataSourceIDDataMemberIsBoundUsingDataSourceIDRequiresDataBindingSelectArgumentsRenderEmptyDataGenerateDataGenerateFakeDataRenderLayoutPersistTemplate_values_valCounterSystem.Text.RegularExpressionsMatchFillStatusValueRenderEvalScriptsRenderStatusget_AllowResizeAllowResizeget_Minimumset_Minimumget_Maximumset_Maximumget_RailCssClassset_RailCssClassget_HandleImageUrlset_HandleImageUrlget_EnableHandleAnimationset_EnableHandleAnimationget_Stepsset_Stepsget_Orientationset_Orientationget_BoundControlIDset_BoundControlIDget_Lengthset_Lengthget_RaiseChangeOnlyOnMouseUpset_RaiseChangeOnlyOnMouseUpget_TooltipTextset_TooltipTextget_EnableKeyboardset_EnableKeyboardMinimumMaximumRailCssClassHandleImageUrlEnableHandleAnimationStepsOrientationBoundControlIDLengthRaiseChangeOnlyOnMouseUpTooltipTextEnableKeyboardget_FilterFilter_anchorget_Anchorset_AnchorAnchorNONETOP_LEFTTOP_RIGHTBOTTOM_RIGHTBOTTOM_LEFTConfigurationPropertydefaultProviderprovidersConfigurationPropertyCollectionpropertiesget_DefaultProviderset_DefaultProviderProviderSettingsCollectionget_Providersget_PropertiesDefaultProviderProvidersPropertiesget_IsServerControlget_AutoPostBackset_AutoPostBackget_CallbackIDset_CallbackIDget_Tagset_Tagget_RatingDirectionset_RatingDirectionget_MaxRatingset_MaxRatingget_StarCssClassset_StarCssClassget_ReadOnlyset_ReadOnlyget_FilledStarCssClassset_FilledStarCssClassget_EmptyStarCssClassset_EmptyStarCssClassget_WaitingStarCssClassset_WaitingStarCssClassIsServerControlAutoPostBackCallbackIDTagMaxRatingStarCssClassReadOnlyFilledStarCssClassEmptyStarCssClassWaitingStarCssClass_show_onHidden_onShown_onHiding_onShowingget_BackgroundCssClassset_BackgroundCssClassget_OkControlIDset_OkControlIDget_CancelControlIDset_CancelControlIDget_OnOkScriptset_OnOkScriptget_OnCancelScriptset_OnCancelScriptget_Xset_Xget_Yset_Yget_Dragset_Dragget_PopupDragHandleControlIDset_PopupDragHandleControlIDget_DropShadowset_DropShadowget_RepositionModeset_RepositionModeget_OnShownset_OnShownget_OnHiddenset_OnHiddenget_OnShowingset_OnShowingget_OnHidingset_OnHidingShowHideChangeVisibilityBackgroundCssClassOkControlIDCancelControlIDOnOkScriptOnCancelScriptYDragPopupDragHandleControlIDDropShadowRepositionModeOnShownOnHiddenOnShowingOnHiding_methodButton_colorDiv_defaultColorget_MethodButtonset_MethodButtonget_ColorDivset_ColorDivget_DefaultColorset_DefaultColorColorDivDefaultColorget_SupportedTypesJavaScriptSerializerSerializeDeserializeSupportedTypes_serializer_children_propertiesToStringSystem.XmlXmlNodeParseGetLineNumberSystem.Xml.LinqXDocumentQueryCombinedScriptsParamNameHiddenFieldParamNameWebResourceAttribute_webResourceAttributeCache_scriptCombineAttributeCacheScriptResourceAttribute_scriptResourceAttributeCacheRegexWebResourceRegexGetWebResourceAttributesGetScriptResourceAttributesGetScriptCombineAttributesget_CombineScriptsset_CombineScripts_combineScriptsUriget_CombineScriptsHandlerUrlset_CombineScriptsHandlerUrl_combineScriptsHandlerUrl_scriptEntries_combinedScriptUrl_disabledScriptReferences_uncombinableScriptReferencesCompositeScriptReferenceEventArgsOnResolveCompositeScriptReferenceScriptReferenceEventArgsOnResolveScriptReferenceHttpContextOutputCombinedScriptFileTextWriterWriteScriptsIsScriptCombinableSerializeScriptEntriesDeserializeScriptEntriesget_HiddenFieldNameQuoteStringAppendCharAsUnicodeCombineScriptsCombineScriptsHandlerUrlHiddenFieldNameCultureLoaded_loadedAssemblyGetScriptLoadAssemblyGetBaseUrlget_Radiusset_Radiusget_Cornersset_Cornersget_Colorset_Colorget_BorderColorset_BorderColorRadiusCornersBorderColorget_PromptTextset_PromptTextget_PromptCssClassset_PromptCssClassget_PromptPositionset_PromptPositionget_QueryTimeoutset_QueryTimeoutget_QueryPatternset_QueryPatternget_IsSortedset_IsSortedPromptTextPromptCssClassPromptPositionQueryTimeoutQueryPatternIsSorted_gravatar_order_extenderType_scriptNameget_ExtenderTypeget_ScriptNameExtenderTypeScriptNameCollectionChangedadd_CollectionChangedremove_CollectionChangedInsertOnCollectionChangedRemoveOnInsertCompleteOnSetCompleteOnRemoveCompleteOnClearComplete_textBoxControl_buttonControl_hiddenFieldControl_optionListControlTable_comboTableTableRow_comboTableRowTableCell_comboTableTextBoxCell_comboTableButtonCellEventItemInsertingEventItemInsertedset_ScriptManagerset_RenderModeget_RenderModeset_DropDownStyleget_DropDownStyleset_AutoCompleteModeget_AutoCompleteModeset_ItemInsertLocationget_ItemInsertLocationset_CaseSensitiveget_CaseSensitiveset_ListItemHoverCssClassget_ListItemHoverCssClassget_MaxLengthset_MaxLengthget_TabIndexset_TabIndexget_ForeColorset_ForeColorget_BackColorset_BackColorFontInfoget_FontBorderStyleget_BorderStyleset_BorderStyleget_BorderWidthset_BorderWidthget_TextBoxControlget_ButtonControlget_HiddenFieldControlget_OptionListControlget_ComboTableget_ComboTableRowget_ComboTableTextBoxCellget_ComboTableButtonCellSystem.Web.UI.IScriptControl.GetScriptReferencesSystem.Web.UI.IScriptControl.GetScriptDescriptorsAddContainerAttributesToRenderAddTableAttributesToRenderAddTextBoxAttributesToRenderAddButtonAttributesToRenderAddOptionListAttributesToRenderRenderContentsadd_ItemInsertingremove_ItemInsertingadd_ItemInsertedremove_ItemInsertedOnItemInsertingOnItemInsertedInsertItemGetInlineDisplayStyleRenderModeDropDownStyleAutoCompleteModeItemInsertLocationCaseSensitiveListItemHoverCssClassMaxLengthTabIndexBackColorFontBorderWidthTextBoxControlButtonControlHiddenFieldControlOptionListControlComboTableComboTableRowComboTableTextBoxCellComboTableButtonCellItemInsertingItemInsertedget_SampleControlIDset_SampleControlIDget_SelectedColorset_SelectedColorget_OnClientColorSelectionChangedset_OnClientColorSelectionChangedSampleControlIDSelectedColorOnClientColorSelectionChangedProfileget_SlideShowServiceMethodset_SlideShowServiceMethodget_SlideShowServicePathset_SlideShowServicePathget_ContextKeyset_ContextKeyget_UseContextKeyset_UseContextKeyget_NextButtonIDset_NextButtonIDget_PlayButtonIDset_PlayButtonIDget_PlayButtonTextset_PlayButtonTextget_StopButtonTextset_StopButtonTextget_PlayIntervalset_PlayIntervalget_ImageTitleLabelIDset_ImageTitleLabelIDget_ImageDescriptionLabelIDset_ImageDescriptionLabelIDget_PreviousButtonIDset_PreviousButtonIDget_Loopset_Loopget_AutoPlayset_AutoPlaySlideShowServiceMethodSlideShowServicePathContextKeyUseContextKeyNextButtonIDPlayButtonIDPlayButtonTextStopButtonTextPlayIntervalImageTitleLabelIDImageDescriptionLabelIDPreviousButtonIDLoopAutoPlayMaximumValueget_ResizableCssClassset_ResizableCssClassget_HandleOffsetXset_HandleOffsetXget_HandleOffsetYset_HandleOffsetYget_MinimumWidthset_MinimumWidthget_MinimumHeightset_MinimumHeightget_MaximumWidthset_MaximumWidthget_MaximumHeightset_MaximumHeightget_OnClientResizeset_OnClientResizeget_OnClientResizingset_OnClientResizingget_OnClientResizeBeginset_OnClientResizeBeginResizableCssClassHandleOffsetXHandleOffsetYMinimumWidthMinimumHeightMaximumWidthMaximumHeightOnClientResizeOnClientResizingOnClientResizeBeginget_ActiveModeset_ActiveModeShouldSerializeActiveModeActiveModeEventContentChanged_contentChangedModePanels_toolbarsadd_ContentChangedremove_ContentChangedOnRaiseContentChangedRaisePostBackEventget_SuppressTabInDesignModeset_SuppressTabInDesignModeget_NoUnicodeset_NoUnicodeget_NoScriptset_NoScriptget_InitialCleanUpset_InitialCleanUpget_HtmlPanelCssClassset_HtmlPanelCssClassget_DocumentCssPathset_DocumentCssPathget_ClientDocumentCssPathShouldSerializeClientDocumentCssPathget_DesignPanelCssPathset_DesignPanelCssPathget_ClientDesignPanelCssPathShouldSerializeClientDesignPanelCssPathget_ImagePath_1X1ShouldSerializeImagePath_1X1get_ImagePath_FlashShouldSerializeImagePath_Flashget_ImagePath_MediaShouldSerializeImagePath_Mediaget_ImagePath_AnchorShouldSerializeImagePath_Anchorget_ImagePath_PlaceholderShouldSerializeImagePath_Placeholderget_AutoFocusset_AutoFocusset_Contentget_OnClientActiveModeChangedset_OnClientActiveModeChangedget_OnClientBeforeActiveModeChangedset_OnClientBeforeActiveModeChangedget_ClientModePanelIdsShouldSerializeClientModePanelIdsget_Toolbarsset_Toolbarsget_ToolbarIdsShouldSerializeToolbarIdsEventHandlerListget_Eventsget_ContentChangedIdget_ContentIdget_ContentForceIdget_ActiveModeIdRefreshDesignerSetDesignergetClientCSSPathIEContentChangedSuppressTabInDesignModeNoUnicodeNoScriptInitialCleanUpHtmlPanelCssClassDocumentCssPathClientDocumentCssPathDesignPanelCssPathClientDesignPanelCssPathImagePath_1X1ImagePath_FlashImagePath_MediaImagePath_AnchorImagePath_PlaceholderAutoFocusOnClientActiveModeChangedOnClientBeforeActiveModeChangedClientModePanelIdsToolbarsToolbarIdsContentChangedIdContentIdContentForceIdActiveModeIdValidCharsInvalidChars_isScriptMethodget_IsScriptMethodIsScriptMethodFillLimitget_ExcludeScriptsset_ExcludeScripts_excludeScriptsget_IncludeScriptsset_IncludeScripts_includeScriptsExcludeScriptsIncludeScripts_parentget_ChildListIndexOfRemoveAtClearContainsCopyToget_IsReadOnlySystem.Collections.IEnumerable.GetEnumeratorChildListIsReadOnly_controlEnumget_CurrentSystem.Collections.IEnumerator.get_CurrentMoveNextResetCurrentSystem.Collections.IEnumerator.Current_IsValidEmpty_MessageTip_MessageInvalid_MessageEmpty_MessageMax_MessageMin_TextInvalid_TextEmpty_TextMax_TextMin_InitialValue_ValidationExpression_ClientValidationFunction_MaximumValue_MinimumValue_ControlExtender_CultureServerValidateEventArgsMaskedEditServerValidatoradd_MaskedEditServerValidatorremove_MaskedEditServerValidatorget_ControlCultureset_ControlCultureget_ErrorMessageset_ErrorMessageget_IsValidEmptyset_IsValidEmptyget_TooltipMessageset_TooltipMessageget_EmptyValueMessageset_EmptyValueMessageget_EmptyValueBlurredTextset_EmptyValueBlurredTextget_InvalidValueMessageset_InvalidValueMessageget_InvalidValueBlurredMessageset_InvalidValueBlurredMessageget_MaximumValueset_MaximumValueget_MaximumValueMessageset_MaximumValueMessageget_MaximumValueBlurredMessageset_MaximumValueBlurredMessageget_ClientValidationFunctionset_ClientValidationFunctionget_InitialValueset_InitialValueget_ValidationExpressionset_ValidationExpressionget_MinimumValueset_MinimumValueget_MinimumValueMessageset_MinimumValueMessageget_MinimumValueBlurredTextset_MinimumValueBlurredTextget_ControlExtenderset_ControlExtenderEvaluateIsValidControlCultureErrorMessageIsValidEmptyTooltipMessageEmptyValueMessageEmptyValueBlurredTextInvalidValueMessageInvalidValueBlurredMessageMaximumValueMessageMaximumValueBlurredMessageClientValidationFunctionInitialValueValidationExpressionMinimumValueMinimumValueMessageMinimumValueBlurredTextControlExtender_charEscape_CharsEditMask_charNumbersGetFirstMaskPositionGetLastMaskPositionGetValidMaskConvertMask_comboBoxget_AppendDataBoundItemsset_AppendDataBoundItemsDesignerActionPropertyItemGetPropertyItemSetComponentPropertyAppendDataBoundItemsget_AsyncFileUpload_accordion_active_headerControlget_HeaderTextset_HeaderTextScrollBarsget_ScrollBarsset_ScrollBarsget_OnClientClickset_OnClientClickget_OnDemandModeset_OnDemandModeget_OnClientPopulatingset_OnClientPopulatingget_OnClientPopulatedset_OnClientPopulatedget_Activeset_Activeget_UpdatePanelIDset_UpdatePanelIDUpdatePanelOnLoadRenderHeaderRenderBeginTagSetOwner<UpdatePanelID>k__BackingFieldHeaderTextOnClientClickOnClientPopulatingOnClientPopulatedActiveUpdatePanelIDValidatorFileNameValidatorIncludeScriptKeyValidatorStartupScriptDoBaseValidatorAddAttributesDoWebControlAddAttributesDoInitRegistrationDoValidatorArrayDeclarationDoPreRenderRegistrationAddExpandoAttribute_changingToolbar_editPanelCell_topToolbarRow_bottomToolbarRow_bottomToolbar_topToolbarget_TopToolbarPreservePlaceset_TopToolbarPreservePlaceget_EditPanelget_BottomToolbarget_TopToolbarFillBottomToolbarFillTopToolbarTopToolbarPreservePlaceBottomToolbarTopToolbarget_HoverScriptset_HoverScriptget_UnhoverDelayset_UnhoverDelayget_UnhoverScriptset_UnhoverScriptHoverScriptUnhoverDelayUnhoverScript_propertyNameget_PropertyNamePropertyNameimagePathnamedescriptionget_ImagePathset_ImagePathget_Descriptionset_DescriptionImagePathDescription_controls_overlaysArrayList_controlsDescriptor_overlaysDescriptorget_AnimationTimeset_AnimationTimeget_ShowNavigationControlset_ShowNavigationControlget_BlendTimeset_BlendTimeget_AlwaysBlendset_AlwaysBlendget_AutoHideControlsset_AutoHideControlsget_ImmediateRenderset_ImmediateRenderget_WrapHorizontalset_WrapHorizontalget_WrapVerticalset_WrapVerticalget_MinZoomDimensionset_MinZoomDimensionget_MaxZoomPixelRatioset_MaxZoomPixelRatioget_VisibilityRatioset_VisibilityRatioget_SpringStiffnessset_SpringStiffnessget_ImageLoaderLimitset_ImageLoaderLimitget_ClickTimeThresholdset_ClickTimeThresholdget_clickDistThresholdset_clickDistThresholdget_ZoomPerClickset_ZoomPerClickget_ZoomPerSecondset_ZoomPerSecondget_MaxImageCacheCountset_MaxImageCacheCountget_MinPixelRatioset_MinPixelRatioget_OnClientOpenset_OnClientOpenget_OnClientErrorset_OnClientErrorget_OnClientIgnoreset_OnClientIgnoreget_OnClientAnimationStartset_OnClientAnimationStartget_OnClientAnimationEndset_OnClientAnimationEndget_OnClientAnimationset_OnClientAnimationget_MouseNavEnabledset_MouseNavEnabledget_SourceUrlset_SourceUrlget_ControlsCollectionCreateControlCollectionget_OverlaysCollectionAnimationTimeShowNavigationControlBlendTimeAlwaysBlendAutoHideControlsImmediateRenderWrapHorizontalWrapVerticalMinZoomDimensionMaxZoomPixelRatioVisibilityRatioSpringStiffnessImageLoaderLimitClickTimeThresholdclickDistThresholdZoomPerClickZoomPerSecondMaxImageCacheCountMinPixelRatioOnClientOpenOnClientErrorOnClientIgnoreOnClientAnimationStartOnClientAnimationEndOnClientAnimationMouseNavEnabledSourceUrlControlsCollectionOverlaysCollection_providers_providerGetProviderBeginningEndget_Maskset_Maskget_ClipboardTextset_ClipboardTextget_MaskTypeset_MaskTypeget_MessageValidatorTipset_MessageValidatorTipget_ErrorTooltipEnabledset_ErrorTooltipEnabledget_ErrorTooltipCssClassset_ErrorTooltipCssClassget_ClipboardEnabledset_ClipboardEnabledget_AutoCompleteset_AutoCompleteget_ClearTextOnInvalidset_ClearTextOnInvalidget_AutoCompleteValueset_AutoCompleteValueget_Filteredset_Filteredget_InputDirectionset_InputDirectionget_PromptCharacterset_PromptCharacterget_OnFocusCssClassset_OnFocusCssClassget_OnInvalidCssClassset_OnInvalidCssClassget_UserDateFormatset_UserDateFormatget_UserTimeFormatset_UserTimeFormatget_ClearMaskOnLostFocusset_ClearMaskOnLostFocusget_CultureNameset_CultureNameget_OverridePageCultureset_OverridePageCultureget_CultureDatePlaceholderset_CultureDatePlaceholderget_CultureTimePlaceholderset_CultureTimePlaceholderget_CultureDecimalPlaceholderset_CultureDecimalPlaceholderget_CultureThousandsPlaceholderset_CultureThousandsPlaceholderget_CultureDateFormatset_CultureDateFormatget_CultureCurrencySymbolPlaceholderset_CultureCurrencySymbolPlaceholderget_CultureAMPMPlaceholderset_CultureAMPMPlaceholderget_AcceptAMPMset_AcceptAMPMget_AcceptNegativeset_AcceptNegativeget_OnFocusCssNegativeset_OnFocusCssNegativeget_OnBlurCssNegativeset_OnBlurCssNegativeget_DisplayMoneyset_DisplayMoneyget_Centuryset_CenturyvalidateMaskTypeMaskClipboardTextMaskTypeMessageValidatorTipErrorTooltipEnabledErrorTooltipCssClassClipboardEnabledAutoCompleteClearTextOnInvalidAutoCompleteValueFilteredInputDirectionPromptCharacterOnFocusCssClassOnInvalidCssClassUserDateFormatUserTimeFormatClearMaskOnLostFocusCultureNameOverridePageCultureCultureDatePlaceholderCultureTimePlaceholderCultureDecimalPlaceholderCultureThousandsPlaceholderCultureDateFormatCultureCurrencySymbolPlaceholderCultureAMPMPlaceholderAcceptAMPMAcceptNegativeOnFocusCssNegativeOnBlurCssNegativeDisplayMoneyCentury_defaultTarget_urlHtmlSelectget_DefaultTargetset_DefaultTargetDefaultTargetDesignHtmlPreview_isScriptProperty_useJsonSerializationget_IsScriptPropertyget_UseJsonSerializationIsScriptPropertyUseJsonSerializationBaseScriptResourceNameBaseScriptResourceNameDebugRegisterDisplayModalPopupget_ConfirmTextset_ConfirmTextget_OnClientCancelset_OnClientCancelget_ConfirmOnFormSubmitset_ConfirmOnFormSubmitget_DisplayModalPopupIDset_DisplayModalPopupIDget_PostBackScriptset_PostBackScriptConfirmTextOnClientCancelConfirmOnFormSubmitDisplayModalPopupIDPostBackScriptget_BalloonPopupControlIDset_BalloonPopupControlIDget_BalloonStyleset_BalloonStyleget_DisplayOnMouseOverset_DisplayOnMouseOverget_DisplayOnFocusset_DisplayOnFocusget_DisplayOnClickset_DisplayOnClickget_BalloonSizeset_BalloonSizeget_UseShadowset_UseShadowget_CustomCssUrlset_CustomCssUrlget_CustomClassNameset_CustomClassName<Position>k__BackingField<BalloonStyle>k__BackingField<CustomCssUrl>k__BackingFieldBalloonPopupControlIDBalloonStyleDisplayOnMouseOverDisplayOnFocusDisplayOnClickBalloonSizeUseShadowCustomCssUrlCustomClassNameget_InstanceIdSeperatorextendedFileUploadGUIDpersistedStorageTypeget_PersistedStorageTypeset_PersistedStorageTypeget_ExtendedFileUploadGUIDset_ExtendedFileUploadGUIDGetFullIDClearAllFilesFromSessionRemoveFileFromSessionAddFileToSessionFileExistsGetFileNameGetContentTypeGetFileFromSessionGetAllFilesFromSessionGetCurrentContextInstancePersistedStorageTypeExtendedFileUploadGUIDinstanceget_HorizontalOffsetset_HorizontalOffsetget_HorizontalSideset_HorizontalSideget_VerticalOffsetset_VerticalOffsetget_VerticalSideset_VerticalSideget_ScrollEffectDurationset_ScrollEffectDurationget_UseAnimationset_UseAnimationHorizontalOffsetVerticalOffsetScrollEffectDurationUseAnimation_collapsed_dataIndex_typeget_Collapsedset_CollapsedSetDataItemPropertiesCollapsedstringWatermarkTextstringWatermarkCssClassget_WatermarkTextset_WatermarkTextget_WatermarkCssClassset_WatermarkCssClassWatermarkTextWatermarkCssClassEventChange_returnFromEvent_align_directionget_CurrentRatingset_CurrentRatingget_RatingAlignset_RatingAlignget_IDset_IDadd_Changedremove_ChangedOnChangedCurrentRatingRatingAlignIDChanged_callbackResultget_CallbackResultset_CallbackResultCallbackResultLeftToRightTopToBottomRightToLeftBottomToTopget_ParentElementIDset_ParentElementIDget_PositioningModeset_PositioningModeget_Reparentset_ReparentParentElementIDReparentget_ChallengeScriptset_ChallengeScriptChallengeScriptRepositionOnWindowResizeRepositionOnWindowScrollRepositionOnWindowResizeAndScrollNumbersUppercaseLettersLowercaseLetters_isScriptEventget_IsScriptEventIsScriptEventget_Opacityset_Opacityget_TrackPositionset_TrackPositionget_Roundedset_RoundedOpacityTrackPositionRounded_containerget_ContainerContainerAddAtchallengeScriptrequiredResponseget_RequiredResponseset_RequiredResponseRequiredResponseget_ShowInnerRailset_ShowInnerRailget_InnerRailStyleset_InnerRailStyleget_EnableInnerRangeDragset_EnableInnerRangeDragget_EnableRailClickset_EnableRailClickset_IsReadOnlyget_EnableMouseWheelset_EnableMouseWheelget_Incrementset_Incrementget_MultiHandleSliderTargetsset_MultiHandleSliderTargetsget_ShowHandleHoverStyleset_ShowHandleHoverStyleget_ShowHandleDragStyleset_ShowHandleDragStyleget_HandleAnimationDurationset_HandleAnimationDurationget_OnClientLoadset_OnClientLoadget_OnClientDragStartset_OnClientDragStartget_OnClientDragset_OnClientDragget_OnClientDragEndset_OnClientDragEndget_OnClientValueChangedset_OnClientValueChangedShowInnerRailInnerRailStyleEnableInnerRangeDragEnableRailClickEnableMouseWheelIncrementMultiHandleSliderTargetsShowHandleHoverStyleShowHandleDragStyleHandleAnimationDurationOnClientLoadOnClientDragStartOnClientDragOnClientDragEndOnClientValueChanged_controlStyleget_ControlStyleget_ControlStyleCreatedget_StyleRenderEndTagSaveViewStateAddDisplayInlineBlockIfNeededControlStyleControlStyleCreated_extenderPropertyName_profilePropertyNameset_ExtenderPropertyNameget_ProfilePropertyNameset_ProfilePropertyNameProfilePropertyNamePerformWebResourceSubstitution_updating_updatedget_OnUpdatingset_OnUpdatingget_OnUpdatedset_OnUpdatedReplaceStaticAnimationTargetsOnUpdatingOnUpdated_itemsget_StartRatingset_StartRatingget_RealOnlyset_RealOnlyAlignmentDirectionStartRatingRealOnlyresourceManresourceCultureget_ResourceManagerget_Cultureset_Cultureget_E_NoScriptManagerget_SessionStateOutOfProcessNotSupportedE_NoScriptManagerSessionStateOutOfProcessNotSupportedAbsoluteget_TargetButtonUpIDset_TargetButtonUpIDget_TargetButtonDownIDset_TargetButtonDownIDget_ServiceUpPathset_ServiceUpPathShouldSerializeServiceUpPathget_ServiceUpMethodset_ServiceUpMethodget_ServiceDownPathset_ServiceDownPathShouldSerializeServieDownPathget_ServiceDownMethodset_ServiceDownMethodget_Stepset_Stepget_RefValuesset_RefValuesTargetButtonUpIDTargetButtonDownIDServiceUpPathServiceUpMethodServiceDownPathServiceDownMethodStepRefValuesIContainerGetControlsIncludeControlMapPathget_EditorListItem_listItem_insertLocationset_InsertLocationget_InsertLocationInsertLocationDropDownListDropDownSimplevalueisDefaultValueoptionTitleAutoget_MinimumPrefixLengthset_MinimumPrefixLengthget_CompletionIntervalset_CompletionIntervalget_CompletionSetCountset_CompletionSetCountget_CompletionListElementIDset_CompletionListElementIDget_ServiceMethodset_ServiceMethodget_ServicePathset_ServicePathget_CompletionListCssClassset_CompletionListCssClassget_CompletionListItemCssClassset_CompletionListItemCssClassget_CompletionListHighlightedItemCssClassset_CompletionListHighlightedItemCssClassget_EnableCachingset_EnableCachingget_DelimiterCharactersset_DelimiterCharactersget_FirstRowSelectedset_FirstRowSelectedget_ShowOnlyCurrentWordInCompletionListItemset_ShowOnlyCurrentWordInCompletionListItemget_OnClientItemSelectedset_OnClientItemSelectedget_OnClientItemOverset_OnClientItemOverget_OnClientItemOutset_OnClientItemOutCreateAutoCompleteItemMinimumPrefixLengthCompletionIntervalCompletionSetCountCompletionListElementIDServiceMethodServicePathCompletionListCssClassCompletionListItemCssClassCompletionListHighlightedItemCssClassEnableCachingDelimiterCharactersFirstRowSelectedShowOnlyCurrentWordInCompletionListItemOnClientItemSelectedOnClientItemOverOnClientItemOutget_Idset_Idget_Locationset_Location<Id>k__BackingField<Name>k__BackingField<Description>k__BackingField<Location>k__BackingFieldIdLocationTabLinkActiveTabLinkClickRegionHtmlDesignTimeHtmlEmptyDesignTimeHtmlAddTabNameget_TabContainerset_CurrentTabIDGetTemplateContentGetTabContentIDesignerHostPersistTemplateContentDesignerRegionMouseEventArgsOnAddTabPanelGetUniqueNameOnRemoveTabPanelget_HideOverflowContentset_HideOverflowContentCurrentTabIDHideOverflowContentEventActiveTabChanged_activeTabIndex_cachedActiveTabIndex_autoPostBack_tabStripPlacement_useVerticalStripPlacement_verticalStripWidth_onDemandadd_ActiveTabChangedremove_ActiveTabChangedget_ActiveTabIndexForClientShouldSerializeActiveTabIndexForClientget_ActiveTabIndexset_ActiveTabIndexget_Tabsget_ActiveTabset_ActiveTabget_TabStripPlacementset_TabStripPlacementget_OnClientActiveTabChangedset_OnClientActiveTabChangedget_UniqueIDset_UniqueIDShouldSerializeUniqueIDget_UseVerticalStripPlacementset_UseVerticalStripPlacementget_VerticalStripWidthset_VerticalStripWidthget_OnDemandset_OnDemandOnActiveTabChangedAddParsedSubObjectAddedControlRemovedControlgetServerActiveTabIndexLoadControlStateSaveControlStateRenderSpannerForVerticalTabsGetSuffixTabStripPlacementCssEnsureActiveTabSystem.Web.UI.IPostBackEventHandler.RaisePostBackEventActiveTabChangedActiveTabIndexForClientActiveTabIndexTabsActiveTabOnClientActiveTabChangedUniqueIDUseVerticalStripPlacementVerticalStripWidthOnDemandget_Placementset_Placement<Placement>k__BackingFieldPlacementpointget_PointPointrectget_RectRectCENTERTOPRIGHTBOTTOMLEFT<Height>k__BackingField<Width>k__BackingField<X>k__BackingField<Y>k__BackingFieldArgReplaceArgContextArgSuccessArgErrorItemCommandKeyCancelCommandKeyEditCommandKeyDeleteCommandKeyUpdateCommandKeyInsertCommandKeyItemDataBoundKeyItemCreatedKeyItemReorderKeyKeysKeyadd_CancelCommandremove_CancelCommandadd_DeleteCommandremove_DeleteCommandadd_EditCommandremove_EditCommandadd_InsertCommandremove_InsertCommandadd_UpdateCommandremove_UpdateCommandadd_ItemReorderremove_ItemReorder_childList_dropTemplateControl_reorderTemplate_itemTemplate_editItemTemplate_insertItemTemplate_dragHandleTemplate_emptyListTemplate_draggableItems_dropWatcherExtenderitemsArray_layoutTypeget_AllowReorderset_AllowReorderIOrderedDictionaryget_BoundFieldValuesget_DataKeyFieldset_DataKeyFieldDataKeyCollectionget_DataKeysget_DataBindPendingget_DataKeysArrayget_DragHandleAlignmentset_DragHandleAlignmentget_DragHandleTemplateset_DragHandleTemplateget_EmptyListTemplateset_EmptyListTemplateget_EditItemIndexset_EditItemIndexget_EditItemTemplateset_EditItemTemplateget_InsertItemTemplateset_InsertItemTemplateget_ItemTemplateset_ItemTemplateget_Itemsget_LayoutTypeset_LayoutTypeget_PostBackOnReorderset_PostBackOnReorderget_SortOrderFieldset_SortOrderFieldget_ReorderTemplateset_ReorderTemplateget_ScriptResourceUrlget_ShowInsertItemset_ShowInsertItemCopyDictionaryClearChildrenCreateReorderAreaCreateInsertItemCreateDragHandleDoReorderSystem.DataDataTableDoReorderInternalExtractRowValuesGetDropTemplateControlGetNewItemSortValueHandleCancelHandleDeleteHandleEditHandleInsertHandleUpdateMoveChildrenOnItemReorderOnCancelCommandOnDeleteCommandOnEditCommandOnInsertCommandOnUpdateCommandPerformDataBindingPrepareRowValuesProcessReorderUpdateItemGetItemStyleget_HasFooterget_HasHeaderget_HasSeparatorsRepeatInfoRenderItemGetItemget_RepeatedItemCountParsePostBackCancelCommandDeleteCommandEditCommandInsertCommandUpdateCommandItemReorderAllowReorderBoundFieldValuesDataKeyFieldDataKeysDataBindPendingDataKeysArrayDragHandleAlignmentDragHandleTemplateEmptyListTemplateEditItemIndexEditItemTemplateInsertItemTemplateItemTemplateItemsLayoutTypePostBackOnReorderSortOrderFieldReorderTemplateScriptResourceUrlShowInsertItemHasFooterHasHeaderHasSeparatorsRepeatedItemCountHandleControlExtenderStartsWithget_ClearContentsDuringUpdateset_ClearContentsDuringUpdateget_PopulateTriggerControlIDset_PopulateTriggerControlIDget_UpdatingCssClassset_UpdatingCssClassget_CustomScriptset_CustomScriptClearContentsDuringUpdatePopulateTriggerControlIDUpdatingCssClassCustomScriptget_DropDownControlIDset_DropDownControlIDget_HighlightBorderColorset_HighlightBorderColorget_HighlightBackColorset_HighlightBackColorget_DropArrowBackColorset_DropArrowBackColorget_DropArrowImageUrlset_DropArrowImageUrlget_DropArrowWidthset_DropArrowWidthget_OnClientPopupset_OnClientPopupDropDownControlIDHighlightBorderColorHighlightBackColorDropArrowBackColorDropArrowImageUrlDropArrowWidthOnClientPopup_versionToRawIndexFromRawIndexArraySystem.Collections.IList.AddSystem.Collections.IList.ContainsSystem.Collections.IList.IndexOfSystem.Collections.IList.InsertSystem.Collections.IList.get_IsFixedSizeget_IsFixedSizeSystem.Collections.IList.RemoveSystem.Collections.IList.get_ItemSystem.Collections.IList.set_ItemSystem.Collections.ICollection.get_IsSynchronizedget_IsSynchronizedSystem.Collections.ICollection.get_SyncRootget_SyncRootSystem.Collections.IList.IsFixedSizeSystem.Collections.IList.ItemSystem.Collections.ICollection.IsSynchronizedSystem.Collections.ICollection.SyncRoot_collection_parentEnumeratorCheckVersionHeaderget_AccordionItemAccordionItemstringImageWidthstringImageHeightstringUncheckedImageUrlstringCheckedImageUrlstringDisabledUncheckedImageUrlstringDisabledCheckedImageUrlstringCheckedImageOverUrlstringUncheckedImageOverUrlstringUncheckedImageAlternateTextstringCheckedImageAlternateTextstringCheckedImageOverAlternateTextstringUncheckedImageOverAlternateTextget_ImageWidthset_ImageWidthget_ImageHeightset_ImageHeightget_UncheckedImageUrlset_UncheckedImageUrlget_CheckedImageUrlset_CheckedImageUrlget_DisabledUncheckedImageUrlset_DisabledUncheckedImageUrlget_DisabledCheckedImageUrlset_DisabledCheckedImageUrlget_CheckedImageOverUrlset_CheckedImageOverUrlget_UncheckedImageOverUrlset_UncheckedImageOverUrlget_UncheckedImageAlternateTextset_UncheckedImageAlternateTextget_CheckedImageAlternateTextset_CheckedImageAlternateTextget_CheckedImageOverAlternateTextset_CheckedImageOverAlternateTextget_UncheckedImageOverAlternateTextset_UncheckedImageOverAlternateTextImageWidthImageHeightUncheckedImageUrlCheckedImageUrlDisabledUncheckedImageUrlDisabledCheckedImageUrlCheckedImageOverUrlUncheckedImageOverUrlUncheckedImageAlternateTextCheckedImageAlternateTextCheckedImageOverAlternateTextUncheckedImageOverAlternateTextget_ApplicationNameset_ApplicationNameget_RequiresFullTrustGetSafeHtmlFragmentApplicationNameRequiresFullTrust_txtPasswordCssClass_barBorderCssClass_barIndicatorCssClass_strengthIndicatorType_displayPosition_prefixText_txtDisplayIndicators_strengthStylesTXT_INDICATORS_MIN_COUNTTXT_INDICATORS_MAX_COUNTTXT_INDICATOR_DELIMITER_preferredPasswordLength_minPasswordNumerics_minPasswordSymbols_requiresUpperLowerCase_minLowerCaseChars_minUpperCaseChars_helpHandleCssClass_helphandlePosition_helpStatusLabelID_calcWeightings_prefixTextDefaultget_PreferredPasswordLengthset_PreferredPasswordLengthget_MinimumNumericCharactersset_MinimumNumericCharactersget_HelpHandleCssClassset_HelpHandleCssClassget_HelpHandlePositionset_HelpHandlePositionget_HelpStatusLabelIDset_HelpStatusLabelIDget_MinimumSymbolCharactersset_MinimumSymbolCharactersget_RequiresUpperAndLowerCaseCharactersset_RequiresUpperAndLowerCaseCharactersget_TextCssClassset_TextCssClassget_BarBorderCssClassset_BarBorderCssClassget_BarIndicatorCssClassset_BarIndicatorCssClassget_PrefixTextset_PrefixTextget_DisplayPositionset_DisplayPositionget_StrengthIndicatorTypeset_StrengthIndicatorTypeget_CalculationWeightingsset_CalculationWeightingsget_TextStrengthDescriptionsset_TextStrengthDescriptionsget_StrengthStylesset_StrengthStylesget_MinimumLowerCaseCharactersset_MinimumLowerCaseCharactersget_MinimumUpperCaseCharactersset_MinimumUpperCaseCharactersget_TextStrengthDescriptionStylesset_TextStrengthDescriptionStylesPreferredPasswordLengthMinimumNumericCharactersHelpHandleCssClassHelpHandlePositionHelpStatusLabelIDMinimumSymbolCharactersRequiresUpperAndLowerCaseCharactersTextCssClassBarBorderCssClassBarIndicatorCssClassPrefixTextStrengthIndicatorTypeCalculationWeightingsTextStrengthDescriptionsStrengthStylesMinimumLowerCaseCharactersMinimumUpperCaseCharactersTextStrengthDescriptionStylesget_FilterTypeset_FilterTypeget_FilterModeset_FilterModeget_ValidCharsset_ValidCharsget_InvalidCharsset_InvalidCharsget_FilterIntervalset_FilterIntervalFilterTypeFilterModeFilterIntervalget_CollapseControlIDset_CollapseControlIDget_ExpandControlIDset_ExpandControlIDget_AutoCollapseset_AutoCollapseget_AutoExpandset_AutoExpandget_CollapsedSizeset_CollapsedSizeget_ExpandedSizeset_ExpandedSizeget_ScrollContentsset_ScrollContentsget_SuppressPostBackset_SuppressPostBackget_CollapsedTextset_CollapsedTextget_ExpandedTextset_ExpandedTextget_TextLabelIDset_TextLabelIDget_ExpandedImageset_ExpandedImageget_CollapsedImageset_CollapsedImageget_ImageControlIDset_ImageControlIDget_ExpandDirectionset_ExpandDirectionCollapsiblePanelExtender_ClientStateValuesLoadedCollapseControlIDExpandControlIDAutoCollapseAutoExpandCollapsedSizeExpandedSizeScrollContentsSuppressPostBackCollapsedTextExpandedTextTextLabelIDExpandedImageCollapsedImageImageControlIDExpandDirectionget_ParentControlIDset_ParentControlIDget_Categoryset_Categoryget_PromptValueset_PromptValueget_EmptyTextset_EmptyTextget_EmptyValueset_EmptyValueget_LoadingTextset_LoadingTextget_SelectedValueset_SelectedValueCascadingDropDown_ClientStateValuesLoadedStringDictionaryParseKnownCategoryValuesStringXmlDocumentQuerySimpleCascadingDropDownDocumentParentControlIDCategoryPromptValueEmptyTextEmptyValueLoadingTextSelectedValue_headerget_HeaderContainerget_Headerset_Headerget_ContentContainerHeaderContainerContentContainerextendeedisposingcontrolcomponentattributessignatureattributeserviceSystem.Runtime.InteropServicesOutAttributemessagebuttonsmodelclassModeltmodelTypetypemethodprojectItemtargetobjectTypebaseProppropseditorBaseTypepdownerobjectcontextKeycallbackresultcontrolIdclientStatetagenableClientStateidepostDataKeypostCollectiondescriptoreventArgumentwriterdesignertoolbarparentsubNamestatepopupurlResolversendertargetControlpropforceunusedthrowExceptionpropertyNamenullValueanimationcontrolResolverignoreStartingTypeReferencescallbackArgumententriestypeReferenceStackpathcomponentTypeorderobjobj1obj2referenceleftrightStrictbaseTyperesourceNamefullResourceNamestatusMessagefilenamefilesizebaseItemindexisAddItemdataItemitemTypesourceargsticksdatetexttwittercontainerproviderpagecontextculturedestinationTypepropsToHideParamArrayAttributeregionsfriendlyNameservicePathPropertyserviceMethodPropertyuseContextKeyPropertyregioncontentsupportsDataBindingtemplatedefinitionemailsizedefaultImageratingfileNamesendingControlIDstreamlastFileNameitemoldIndexnewIndexcecurrentoutputeditPaneluseDataSourcedataBinddatastatusesmatchstatusctlanchorshowprefixTextcountserializerdictionaryjsonnodeextenderControlsearchscreenNameincludeRetweetsincludeRepliesurlassemblyscriptEntriesoutputWriterscriptEntryallScriptsserializedScriptEntriesloadedbuildercscriptReferencesmscriptNameextenderTypeloadOrderbindingoldValuenewValuepathNisScriptMethodknownCategoryValuescategoryarrayarrayIndexbaseEnumdisplayNamevalidatorvalidatorAccessorwebControlwebControlAccessorvalidatorTypeattributeNameattributeValueencodeisScriptPropertyuseJsonSerializationfileUploaddataIndexisScriptEventcommandNamecommandArgchildserverControloriginalPathlocationdefaultValuetabpanelhostclientActiveTabIndexsavedStatewidthheightxydestdataSourcedataBindingreorderKeyhasDragHandledsvfieldValuesincludePrimaryKeyisAddOperationdropItememptyItemsuccessitemIndexkeyoldValuesnewValueskeysrowIndexrepeatIndexrepeatInfoeventNameitemIdpaneIndexhtmlFragmentdocumentdocumentHierarchyknownCategoryValuesDictionaryinputValidationRegexAssemblyTitleAttributeAssemblyConfigurationAttributeAssemblyProductAttributeAssemblyCopyrightAttributeAssemblyTrademarkAttributeAssemblyCultureAttributeSystem.Runtime.CompilerServicesDependencyAttributeLoadHintSystem.Security.PermissionsSecurityPermissionAttributeSecurityActionTagPrefixAttributeSystem.SecurityAllowPartiallyTrustedCallersAttributeComVisibleAttributeCLSCompliantAttributeSecurityRulesAttributeSecurityRuleSetSystem.Web.ScriptAjaxFrameworkAssemblyAttributeAssemblyVersionAttributeAssemblyFileVersionAttributeNeutralResourcesLanguageAttributeSystem.Runtime.VersioningTargetFrameworkAttributeSystem.DiagnosticsDebuggableAttributeDebuggingModesCompilationRelaxationsAttributeRuntimeCompatibilityAttributeAddRangeGetTypeBindingFlagsGetNestedTypesDelegateRuntimeTypeHandleGetTypeFromHandleIsSubclassOfMemberInfoGetCustomAttributeGetMethodComponentDesignerget_ComponentProvidePropertyAttributeTypeDescriptorAddAttributesGetServiceget_RootComponentISiteget_SiteIDictionaryServiceIServiceProviderGetValueget_InvariantCultureStringIFormatProviderget_TargetControlIDAddProviderRemoveProviderCategoryAttributeBrowsableAttributeTypeConverterAttributeTargetControlTypeAttributeget_Keysget_TargetControlTypeMakeGenericTypeCreatePropertyMemberDescriptorget_BrowsableIsNullOrEmptyIEventBindingServiceget_CurrentCultureDesignerActionMethodItemDesignerActionItemget_DeclaringTypeBooleanSetValueShowCodeget_RootComponentClassNameInt32Concatget_MessageEnvironmentget_NewLineget_StackTraceMessageBoxQueue`1EnqueueDequeueCompareOrdinalToArrayMethodBaseParameterInfoGetParametersget_ReturnTypeget_ParameterTypeReplaceget_IsArrayGetArrayRankGetElementTypeget_IsPointerSystem.Web.ServicesWebMethodAttributeSystem.Web.Script.ServicesScriptMethodAttributeStringComparisonCompareArgumentNullExceptionDisplayNameAttributeget_ViewStateEmptyget_ClientIDToLowerGetCurrentHttpExceptionget_NamingContainerRegisterHiddenFieldRegisterRequiresPostBackScriptControlDescriptorAddElementPropertyDefaultValueAttributeParseChildrenAttributePersistChildrenAttributeget_Contextget_DesignModeToLowerInvariantEditorBrowsableAttributeEditorBrowsableStateGetStringGetExecutingAssemblyset_ToolTipDesignerSerializationVisibilityAttributeDesignerSerializationVisibilityget_ParentNotSupportedExceptionget_BaseTypeClientScriptManagerget_ClientScriptGetWebResourceUrlHttpServerUtilityget_ServerFileExistsToolboxItemAttributeHtmlControlHtmlTextWriterStyleAddPropertyPersistenceModeAttributePersistenceModeTemplateInstanceAttributeTemplateInstanceMergablePropertyAttributeTableRowCollectionget_RowsTableCellCollectionget_CellsThemeableAttributeCombineInterlockedCompareExchangeInvalidOperationExceptionGCSuppressFinalizeContainsKeyadd_PreLoadVerifyRenderingInServerFormObsoleteAttributeShouldSerializeValueget_Visibilityget_PropertyTypeget_IsPrimitiveget_IsEnumColorTranslatorToHtmlget_ConverterConvertToStringUrlPropertyAttributeResolveClientUrlArgumentExceptionIDReferencePropertyAttributeDefaultPropertyAttributeget_CharsCharIsWhiteSpaceLastIndexOfSubstringTrimEndTryGetValueEditorAttributeToolboxBitmapAttributeDesignerAttribute<.cctor>b__0CS$<>9__CachedAnonymousMethodDelegate2CompilerGeneratedAttribute<.cctor>b__1CS$<>9__CachedAnonymousMethodDelegate3get_HasValueToUniversalTimeEnumeratorKeyValuePair`2AddEventAddComponentPropertyGetMethodsGetCallbackEventReferenceHtmlHeadHtmlLinkget_Hrefset_Hrefget_IsInAsyncPostBackRegisterClientScriptBlockDeserializeObjectMissingMethodExceptionConvertChangeTypeTargetInvocationExceptionget_InnerException<GetScriptReferencesInternal>b__5Comparison`1CS$<>9__CachedAnonymousMethodDelegate7<GetScriptReferencesInternal>b__6lrCS$<>9__CachedAnonymousMethodDelegate8CompareToPushMonitorEnterGetCustomAttributesSortExitPop<GetCssReferences>b__aCS$<>9__CachedAnonymousMethodDelegatec<GetCssReferences>b__bCS$<>9__CachedAnonymousMethodDelegatedStringComparerget_OrdinalIgnoreCaseIEqualityComparer`1ReadOnlyCollection`1StructLayoutAttributeLayoutKindget_Assemblyset_AssemblyIsInstanceOfTypeReferenceEqualsPropertyInfoGetPropertyAttributeUsageAttributeAttributeTargetsget_IsValidDescriptionAttributeRaiseBubbleEventDefaultEventAttributeLabelset_TargetControlIDEnsureChildControlsget_UtcNowget_MillisecondAddSecondsget_TicksSystem.Web.SessionStateHttpSessionStateget_Sessionget_IsPostBackop_LessThanHttpRequestget_Requestget_UserHostAddressAddTicksget_ValuesNullReferenceExceptionInt64LiteralControlVerticalAlignset_VerticalAlignHorizontalAlignset_HorizontalAlignSerializableAttributeNonSerializedAttributeRegisterStartupScriptNumberStylesTryParseBaseDataBoundControlset_AlternatingItemTemplateSystem.Web.CachingCacheget_CacheTimeSpanNoSlidingExpirationCacheDependencyget_Nowop_Subtractionget_TotalMinutesget_TotalHoursMathRoundDoubleget_TotalDaysRegexOptionsTemplateContainerAttributeadd_DataBindingListViewDataItemListViewItemImageset_ImageUrlPlaceHolderDefaultMemberAttributeadd_PreRenderRegisterDataItemAspNetHostingPermissionAttributeget_SupportsPartialRenderingget_RenderUplevel<>c__DisplayClass1<System.ComponentModel.ICustomTypeDescriptor.GetProperties>b__0sPredicate`1FindIndexGetGenericTypeDefinitionget_ReferencedControlTypeFlagsAttributeResolveUrlStringWriterControlDesignerStateget_DesignerStateset_SupportsDataBindingTemplateGroupAddTemplateDefinitionDesignerRegionget_ViewControlHybridDictionaryIControlDesignerAccessorSetDesignModeStateBaseDataBoundControlDesignerSystemColorsget_ControlTextDesignerRegionAttributeNameDataListTableItemStyleget_HeaderStyleControlPersisterCreatePlaceHolderDesignTimeHtmlControlParserParseTemplateDesignerTransactionCreateTransactionset_EnsureSize<set_View>b__0UpdateDesignTimeHtmlNotifyParentPropertyAttributeget_ToolTipToolboxDataAttributeHtmlTextWriterAttributeSystem.Security.CryptographyMD5CryptoServiceProviderEncodingget_ASCIIGetBytesHashAlgorithmComputeHashByteget_FilePathDateTimeKindSpecifyKindget_InputStreamget_Limeget_Whiteget_RedPathget_QueryStringHttpFileCollectionget_FilesNameObjectCollectionBaseEndsWithget_ContentLengthMemoryStreamSeekOriginSeekReadWriteHttpResponseget_Responseget_Outputget_IsEmptyset_DisabledHtmlInputControlget_RawUrlHtmlFormget_FormBindableAttribute<Decode>b__0bCS$<>9__CachedAnonymousMethodDelegate1FindRegisterOnSubmitStatementget_DefaultFocusPercentagePixelIListSourceget_IsViewStateEnabledremove_PreLoadClearChildViewStateremove_DataSourceViewChangedIDataSourceGetViewadd_DataSourceViewChangedset_ChildControlsCreatedset_CapacityEventResetModeDataSourceViewSelectCallbackSelectWaitHandleWaitOneget_EmptySetStringSplitOptionsSplitRandomNextAddMinutesMatchCollectionMatchesMatchEvaluatorConfigurationElementConfigurationPropertyAttributeUnitTypeRegisterConvertersXmlAttributeCollectionXmlNamedNodeMapXmlAttributeget_HasChildNodesXmlNodeListget_ChildNodesTrimStringReaderXmlTextReaderTextReaderXmlReaderget_PathXmlExceptionget_LineNumberHttpParseExceptionXmlElementget_DocumentElementget_ItemOfXmlNodeTypeget_NodeTypeget_IsEmptyElementSkipXElement<GetSearch>b__2Func`2CS$<>9__CachedAnonymousMethodDelegate5<GetSearch>b__3linkCS$<>9__CachedAnonymousMethodDelegate6<GetSearch>b__4XNameop_ImplicitXAttributeop_ExplicitHttpUtilityUrlEncodeAppendFormatXContainerDescendantsSystem.CoreSystem.LinqEnumerableFirstOrDefaultElementsWhereFirstElementToList<GetProfile>b__a<GetProfile>b__buParseExactget_ScriptScriptReferenceBaseset_Pathget_Paramsset_ContentTypeHttpCachePolicyHttpCacheabilitySetCacheabilityHttpCacheVaryByParamsget_VaryByParamsSetOmitVaryStarAddDaysSetExpiresSetValidUntilExpiresSetLastModifiedFromFileDependenciesget_OutputStreamHttpBrowserCapabilitiesget_BrowserSystem.Web.ConfigurationHttpCapabilitiesBaseIsBrowserget_MajorVersionget_HeadersToUpperInvariantAddHeaderSystem.IO.CompressionGZipStreamCompressionModeDeflateStreamStreamWriterUrlDecodeWriteLineIsMatchThreadget_CurrentThreadget_CurrentUICultureset_CurrentUICultureget_TypeNameget_ScriptResourceNameResourceSetGetResourceSetIDictionaryEnumeratorDictionaryEntryget_WebResourceget_IetfLanguageTagModuleget_ManifestModuleGuidget_ModuleVersionIdGetManifestResourceNamesGetManifestResourceStreamStreamReaderReadToEndget_InnerListSupportsEventValidationAttributeValidationPropertyAttributeBindingDirectionDataBindingHandlerAttributeControlValuePropertyAttributeListItemCollectionset_SelectedDataBoundControlRegisterScriptControlRegisterScriptDescriptorsset_CellPaddingset_CellSpacingAutoCompleteTypeset_AutoCompleteTypeGetValuesToInt32get_Cancelget_SelectedItemOnSelectedIndexChangedAddHandlerRemoveHandlerget_EnableClientScriptRegisterClientScriptResourceget_ControlToValidateRegisterExpandoAttributeGetCultureInfoNumberFormatInfoget_NumberFormatget_CurrencySymbolget_CurrencyDecimalSeparatorget_CurrencyGroupSeparatorDateTimeFormatInfoget_DateTimeFormatget_DateSeparatorget_ShortDatePatternToUpperget_TimeSeparatorget_AMDesignatorget_PMDesignatorDecimalop_GreaterThanOrEqualop_LessThanOrEqualget_IsBrowsableCloneTemplateBuilderset_VisibleUpdatePanelUpdatePanelUpdateModeset_UpdateModeadd_Loadget_ContentTemplateContainerAddStyleAttributeRenderChildrenget_SetFocusOnErrorValidatorDisplayget_DisplayPropertyConverterEnumToStringget_ValidationGroupget_AccessKeyget_InvariantInfoRegisterArrayDeclaration<>f__AnonymousType0`2<id>j__TPar<anchor>j__TPar<id>i__Fieldget_id<anchor>i__Fieldget_anchorDebuggerBrowsableAttributeDebuggerBrowsableStateDebuggerHiddenAttributeEqualityComparer`1get_Default<>f__AnonymousType1`3<point>j__TPar<placement>j__TPar<point>i__Fieldget_point<placement>i__Fieldget_placementplacement<>f__AnonymousType2`2<rect>j__TPar<rect>i__Fieldget_rectget_ApplicationPathWebConfigurationManagerGetSectionProvidersHelperInstantiateProvidersget_NumberDecimalSeparatorget_NumberGroupSeparatorRefreshPropertiesAttributeRefreshPropertiesButtonGetPostBackEventReferenceKeysCollectionSessionStateModeInvalidCastExceptionArgumentOutOfRangeExceptionget_CommandArgumentNonVisualControlAttributeget_IsTrackingViewStateIStateManagerTrackViewStateget_CssStyleCaptureGroupCollectionget_GroupsGroupSystem.CodeDom.CompilerGeneratedCodeAttributeDebuggerNonUserCodeAttributeComponentCollectionget_ComponentsReadOnlyCollectionBaseComparerIComparerIWebApplicationIProjectItemget_RootProjectItemget_PhysicalPathWebFormsRootDesignerget_RootDesignerget_DocumentUrlGetDirectoryNamePairget_Windowset_Selectableget_ControlDarkDesignerObjectPersistControlViewFlagsSetViewFlagsget_RegionCreateComponentIComponentChangeServiceOnComponentChangingOnComponentChangedMinDesignOnlyAttributeRegisterRequiresControlStateSecondOrderedDictionaryget_Urlget_AbsoluteUriget_PathAndQueryDataBinder<>4__this<>c__DisplayClass4CS$<>8__locals2w<DoReorder>b__0DataViewget_TableMaxDataRowDataColumnCollectionget_ColumnsDataColumnAcceptChanges<DoReorderInternal>b__6rowsAffectedexDataSourceViewOperationCallbackAbsHashtableget_IsValueTypeDBNullUpdateIBindableTemplateExtractValues<>c__DisplayClass9bSuccess<GetNewItemSortValue>b__8<>c__DisplayClassd<HandleDelete>b__brows<>c__DisplayClass11<HandleInsert>b__f<>c__DisplayClass15<HandleUpdate>b__13DynamicInvokeNotImplementedExceptionSelectNodesGetNamedItemHTMLEditor.Images.ed_preview_a.gifHTMLEditor.Images.ed_format_underline_n.gifHTMLEditor.Images.ed_format_sup_n.gifHTMLEditor.Images.ed_align_center_n.gifTabs.Tabs.jsSeadragon.Seadragon.DisplayRect.jsReorderList.DraggableListItemBehavior.debug.jsPagingBulletedList.PagingBulletedListBehavior.jsMultiHandleSlider.MultiHandleSliderBehavior.jsMicrosoftAjaxWebServices.debug.jsMicrosoftAjaxNetwork.debug.jsListSearch.ListSearchBehavior.debug.jsHTMLEditor.Toolbar_buttons.Paragraph.debug.jsHTMLEditor.Toolbar_buttons.OrderedList.jsHTMLEditor.Toolbar_buttons.OrderedList.debug.jsHTMLEditor.Toolbar_buttons.JustifyFull.debug.jsHTMLEditor.Toolbar_buttons.InsertLink.jsHTMLEditor.Toolbar_buttons.HtmlMode.debug.jsHTMLEditor.Toolbar_buttons.DesignModePopupImageButton.debug.jsHTMLEditor.Toolbar_buttons.Copy.debug.jsHTMLEditor.Toolbar_buttons.ColorButton.debug.jsHTMLEditor.Popups.OkCancelAttachedTemplatePopup.jsHTMLEditor.Popups.LinkProperties.jsDate.HijriCalendar.jsAccordion.AccordionBehavior.debug.jsAjaxControlToolkit.Slider.Slider.icoAjaxControlToolkit.PasswordStrength.PasswordStrength.icoAjaxControlToolkit.DragPanel.DragPanel.icoAjaxControlToolkit.ComboBox.ComboBox.icoValidatorCallout.close.gifTabs.tab-right-verticalleft.gifTabs.tab-bottom-active-right.gifTabs.tab-active-left-verticalright.gifMultiHandleSlider.Images.slider_v_rail_outer.gifHTMLEditor.Images.ed_redo_n.gifHTMLEditor.Images.ed_paste_n.gifHTMLEditor.Images.ed_pasteText_a.gifHTMLEditor.Images.ed_format_italic_n.gifHTMLEditor.Images.ed_color_bg_n.gifHTMLEditor.Images.ed_color_bg_clear_n.gifHTMLEditor.Images.ed_1x1.gifHTMLEditor.DesignPanel.cssComboBox.ComboBox.cssSeadragon.images.zoomin_rest.pngBalloonPopup.act_up_right.pngSeadragon.Seadragon.Point.debug.jsSeadragon.Seadragon.ImageLoader.debug.jsSeadragon.Seadragon.Drawer.debug.jsSeadragon.Seadragon.DisplayRect.debug.jsSeadragon.Seadragon.DeepZoom.jsHTMLEditor.Toolbar_buttons.DesignModeBoxButton.jsHTMLEditor.HTMLEditor.debug.jsHTMLEditor.EditPanel.jsHoverExtender.HoverBehavior.debug.jsAutoComplete.AutoCompleteBehavior.jsAsyncFileUpload.AsyncFileUpload.jsAjaxControlToolkit.MutuallyExclusiveCheckBox.MutuallyExclusiveCheckBox.icoTabs.tab-left-verticalright.gifHTMLEditor.Images.ed_undo_n.gifHTMLEditor.Images.ed_selector_n.gifHTMLEditor.Images.ed_pasteWord_a.gifHTMLEditor.Images.ed_design_n.gifHTMLEditor.Images.ed_align_justify_n.gifCalendar.arrow-right.gifTabs.Tabs_resource.cssBalloonPopup.BalloonPopup_resource.cssValidatorCallout.ValidatorCalloutBehavior.debug.jsResizableControl.ResizableControlBehavior.jsPopupExtender.PopupBehavior.debug.jsMutuallyExclusiveCheckBox.MutuallyExclusiveCheckBoxBehavior.debug.jsMicrosoftAjaxCore.jsMaskedEdit.MaskedEditValidator.jsHTMLEditor.Toolbar_buttons.Redo.debug.jsHTMLEditor.Toolbar_buttons.Paste.debug.jsHTMLEditor.Toolbar_buttons.FontName.jsHTMLEditor.Toolbar_buttons.FixedForeColor.jsHTMLEditor.Toolbar_buttons.CommonButton.jsHTMLEditor.Toolbar_buttons.ColorSelector.jsHTMLEditor.Popups.PopupCommonButton.debug.jsHTMLEditor.Popups.PopupBGIButton.debug.jsHTMLEditor.Popups.AttachedTemplatePopup.debug.jsDropShadow.DropShadowBehavior.debug.jsDropDown.DropDownBehavior.jsCompat.DragDrop.DragDropScripts.jsTabs.tab-active-verticalright.gifTabs.tab-active-verticalleft.gifHTMLEditor.Images.ed_unformat_n.gifHTMLEditor.Images.ed_link_a.gifHTMLEditor.Images.ed_indent_less_n.gifHTMLEditor.Images.ed_html_n.gifHTMLEditor.Images.ed_format_ltr_n.gifHTMLEditor.Images.ed_format_bold_n.gifHTMLEditor.Images.ed_flash.gifHTMLEditor.Images.ed_align_left_a.gifMultiHandleSlider.MultiHandleSlider_resource.cssSeadragon.images.fullpage_grouphover.pngBalloonPopup.act_up_left.pngSlideShow.SlideShowBehavior.jsSeadragon.Seadragon.TileSource.debug.jsSeadragon.Seadragon.Strings.jsSeadragon.Seadragon.ImageLoader.jsReorderList.DropWatcherBehavior.jsMicrosoftAjaxDataContext.jsHTMLEditor.Toolbar_buttons.Rtl.jsHTMLEditor.Toolbar_buttons.RemoveLink.jsHTMLEditor.Toolbar_buttons.PasteText.debug.jsHTMLEditor.Toolbar_buttons.Ltr.jsHTMLEditor.Toolbar_buttons.HorizontalSeparator.jsHTMLEditor.Toolbar_buttons.DesignModeSelectButton.jsHTMLEditor.Toolbar_buttons.DesignModeSelectButton.debug.jsHTMLEditor.Popups.Popup.debug.jsHTMLEditor.Popups.LinkProperties.debug.jsHTMLEditor.ExecCommandEmulation.jsHTMLEditor.Events.debug.jsHTMLEditor.Enums.jsFilteredTextBox.FilteredTextBoxBehavior.debug.jsConfirmButton.confirmButtonBehavior.debug.jsAjaxControlToolkit.RoundedCorners.RoundedCorners.icoAjaxControlToolkit.CollapsiblePanel.CollapsiblePanel.icoAjaxControlToolkit.Animation.Animation.icoAjaxControlToolkit.BalloonPopup.BalloonPopup.icoTabs.tab-hover-right-verticalright.gifTabs.tab-hover-left-verticalleft.gifTabs.tab-bottom-left.gifTabs.tab-bottom-hover-right.gifTabs.tab-bottom-active.gifHTMLEditor.Images.ed_list_num_n.gifHTMLEditor.Images.ed_format_underline_a.gifHTMLEditor.Images.ed_format_sup_a.gifHTMLEditor.Images.ed_align_center_a.gifSeadragon.Seadragon.Viewport.jsMutuallyExclusiveCheckBox.MutuallyExclusiveCheckBoxBehavior.jsMicrosoftAjaxTemplates.jsMicrosoftAjaxComponentModel.debug.jsHTMLEditor.Toolbar_buttons.PasteText.jsHTMLEditor.Toolbar_buttons.OkCancelPopupButton.jsHTMLEditor.Toolbar_buttons.JustifyRight.jsHTMLEditor.Toolbar_buttons.IncreaseIndent.debug.jsHTMLEditor.Toolbar_buttons.ImageButton.jsHTMLEditor.Toolbar_buttons.ForeColorSelector.jsHTMLEditor.Toolbar_buttons.DesignMode.debug.jsHTMLEditor.Toolbar_buttons.DecreaseIndent.debug.jsHTMLEditor.Popups.PopupBoxButton.jsHTMLEditor.Popups.Popup.jsHTMLEditor.Popups.OkCancelAttachedTemplatePopup.debug.jsHTMLEditor.Popups.BaseColorsPopup.jsHTMLEditor.DesignPanelEventHandler.jsDropDown.DropDownBehavior.debug.jsCommon.DateTime.jsCascadingDropDown.CascadingDropDownBehavior.jsBalloonPopup.BalloonPopupExtenderBehavior.jsAnimation.Animations.debug.jsAjaxControlToolkit.ValidatorCallout.ValidatorCallout.icoAjaxControlToolkit.SlideShow.SlideShow.icoAjaxControlToolkit.Rating.Rating.icoSlider.Images.slider_h_rail.gifHTMLEditor.Images.ed_unlink_n.gifHTMLEditor.Images.ed_rule_n.gifHTMLEditor.Images.ed_redo_a.gifHTMLEditor.Images.ed_paste_a.gifHTMLEditor.Images.ed_format_strike_n.gifHTMLEditor.Images.ed_format_italic_a.gifHTMLEditor.Images.ed_color_fg_clear_n.gifHTMLEditor.Images.ed_color_bg_clear_a.gifHTMLEditor.Images.ed_color_bg_a.gifMultiHandleSlider.MultiHandleSlider.cssSeadragon.Seadragon.Utils.debug.jsReorderList.DraggableListItemBehavior.jsMicrosoftAjax.jsMicrosoftAjax.debug.jsHTMLEditor.Toolbar_buttons.SubScript.jsHTMLEditor.Toolbar_buttons.PasteWord.debug.jsHTMLEditor.Toolbar_buttons.JustifyLeft.jsHTMLEditor.Toolbar_buttons.IncreaseIndent.jsHTMLEditor.Toolbar_buttons.EditorToggleButton.jsHTMLEditor.Popups.AttachedPopup.debug.jsHTMLEditor.ModePanel.jsHTMLEditor.EditPanel.debug.jsHoverExtender.HoverBehavior.jsDragPanel.FloatingBehavior.jsCommon.DateTime.debug.jsCommon.Common.jsCommon.Common.debug.jsColorPicker.ColorPickerBehavior.jsBalloonPopup.BalloonPopupExtenderBehavior.debug.jsAjaxControlToolkit.Tabs.Tabs.icoAjaxControlToolkit.DropShadow.DropShadow.icoTabs.tab-hover-right-verticalleft.gifMultiHandleSlider.Images.slider_h_handle_down.gifHTMLEditor.Images.ed_undo_a.gifHTMLEditor.Images.ed_selector_a.gifHTMLEditor.Images.ed_format_paragraph_n.gifHTMLEditor.Images.ed_design_a.gifHTMLEditor.Images.ed_cut_n.gifHTMLEditor.Images.ed_copy_n.gifHTMLEditor.Images.ed_align_justify_a.gifDropDown.drop-arrow.gifSlider.SliderBehavior_resource.jsSeadragon.Seadragon.Strings.debug.jsSeadragon.Seadragon.Config.jsReorderList.DropWatcherBehavior.debug.jsPopupControl.PopupControlBehavior.jsModalPopup.ModalPopupBehavior.jsMicrosoftAjaxSerialization.debug.jsMicrosoftAjaxComponentModel.jsHTMLEditor.Toolbar_buttons.Selector.debug.jsHTMLEditor.Toolbar_buttons.PasteWord.jsHTMLEditor.Toolbar_buttons.ModeButton.debug.jsHTMLEditor.Toolbar_buttons.FixedForeColor.debug.jsHTMLEditor.Toolbar_buttons.EditorToggleButton.debug.jsHTMLEditor.Toolbar_buttons.Cut.debug.jsExtenderBase.BaseScripts.debug.jsDragPanel.FloatingBehavior.debug.jsAjaxControlToolkit.ReorderList.ReorderList.icoAjaxControlToolkit.FilteredTextBox.FilteredTextBox.icoGravatar.Images.gravatar-R.jpgTabs.tab-active.gifSlider.Images.slider_v_rail.gifMultiHandleSlider.Images.slider_h_handle_hover.gifHTMLEditor.Images.ed_unformat_a.gifHTMLEditor.Images.ed_list_bullet_n.gifHTMLEditor.Images.ed_indent_less_a.gifHTMLEditor.Images.ed_html_a.gifHTMLEditor.Images.ed_format_sub_n.gifHTMLEditor.Images.ed_format_ltr_a.gifHTMLEditor.Images.ed_format_bold_a.gifBalloonPopup.Rectangle.sprite.gifHTMLEditor.Popups.AttachedTemplatePopup.cssHTMLEditor.Document.cssSeadragon.images.zoomin_hover.pngSeadragon.images.zoomin_grouphover.pngHtmlEditorExtender.Images.html-editor-buttons.pngSeadragon.Seadragon.Rect.debug.jsSeadragon.Seadragon.Profiler.debug.jsSeadragon.Seadragon.MouseTracker.jsPopupExtender.PopupBehavior.jsMultiHandleSlider.MultiHandleSliderBehavior.debug.jsMicrosoftAjaxWebForms.jsMicrosoftAjaxGlobalization.debug.jsHTMLEditor.Toolbar_buttons.Undo.jsHTMLEditor.Toolbar_buttons.OkCancelPopupButton.debug.jsHTMLEditor.Toolbar_buttons.Italic.jsHTMLEditor.Toolbar_buttons.Italic.debug.jsHTMLEditor.Toolbar_buttons.FixedColorButton.debug.jsHTMLEditor.Toolbar_buttons.BackColorSelector.debug.jsHTMLEditor.Popups.PopupBGIButton.jsHTMLEditor.Popups.BaseColorsPopup.debug.jsHTMLEditor.Popups.AttachedTemplatePopup.jsHTMLEditor.DesignPanel.debug.jsHtmlEditorExtender.HtmlEditorExtenderBehavior.debug.jsExtenderBase.BaseScripts.jsDynamicPopulate.DynamicPopulateBehavior.jsCompat.Timer.Timer.jsAlwaysVisibleControl.AlwaysVisibleControlBehavior.jsTabs.tab-hover-left-verticalright.gifTabs.tab-active-left.gifHTMLEditor.Images.ed_removealign_n.gifHTMLEditor.Images.ed_list_num_a.gifHTMLEditor.Images.ed_indent_more_n.gifHTMLEditor.Images.ed_forecolor_n.gifBalloonPopup.Cloud.sprite.gifTabs.Tabs.cssDropDown.DropDown_resource.cssSeadragon.images.zoomout_rest.pngSeadragon.images.home_hover.pngSeadragon.images.home_grouphover.pngSeadragon.images.fullpage_rest.pngTextboxWatermark.TextboxWatermark.debug.jsStart.debug.jsSeadragon.Seadragon.Utils.jsSeadragon.Seadragon.debug.jsSeadragon.Seadragon.Config.debug.jsSeadragon.Seadragon.Buttons.jsRoundedCorners.RoundedCornersBehavior.jsNoBot.NoBotBehavior.debug.jsMicrosoftAjaxTimer.debug.jsMicrosoftAjaxOpenData.jsListSearch.ListSearchBehavior.jsHTMLEditor.Toolbar_buttons.Underline.jsHTMLEditor.Toolbar_buttons.SuperScript.jsHTMLEditor.Toolbar_buttons.SuperScript.debug.jsHTMLEditor.Toolbar_buttons.RemoveLink.debug.jsHTMLEditor.Toolbar_buttons.InsertHR.jsHTMLEditor.Toolbar_buttons.InsertHR.debug.jsHTMLEditor.Toolbar_buttons.ForeColorClear.debug.jsHTMLEditor.Toolbar_buttons.FontSize.debug.jsHTMLEditor.Toolbar_buttons.DesignModeImageButton.jsHTMLEditor.Toolbar_buttons.DesignMode.jsHTMLEditor.Toolbar_buttons.ColorSelector.debug.jsHTMLEditor.PreviewPanel.jsHTMLEditor.HtmlPanel.jsDate.UmAlQuraCalendar.debug.jsCompat.Timer.Timer.debug.jsCalendar.CalendarBehavior.jsAnimation.Animations.jsAjaxControlToolkit.NoBot.NoBot.icoAjaxControlToolkit.AutoComplete.AutoComplete.icoTabs.tab-verticalright.gifTabs.tab-right-verticalright.gifTabs.tab-hover-left.gifHTMLEditor.Images.ed_unlink_a.gifHTMLEditor.Images.ed_rule_a.gifHTMLEditor.Images.ed_media.gifHTMLEditor.Images.ed_format_strike_a.gifHTMLEditor.Images.ed_color_fg_n.gifHTMLEditor.Images.ed_color_fg_clear_a.gifHTMLEditor.Images.ed_backcolor_n.gifCalendar.arrow-left.gifValidatorCallout.ValidatorCallout.cssSeadragon.images.zoomin_pressed.pngSeadragon.images.home_rest.pngSeadragon.Seadragon.Point.jsMicrosoftAjaxWebForms.debug.jsMicrosoftAjaxOpenData.debug.jsHTMLEditor.Toolbar_buttons.StrikeThrough.jsHTMLEditor.Toolbar_buttons.RemoveStyles.debug.jsHTMLEditor.Toolbar_buttons.PreviewMode.debug.jsHTMLEditor.Toolbar_buttons.JustifyCenter.debug.jsHTMLEditor.Toolbar_buttons.CommonButton.debug.jsHTMLEditor.Toolbar_buttons.BoxButton.jsHTMLEditor.Toolbar_buttons.BoxButton.debug.jsHTMLEditor.Toolbar_buttons.BackColorSelector.jsHTMLEditor.Popups.AttachedPopup.jsHTMLEditor.ExecCommandEmulation.debug.jsHTMLEditor.Enums.debug.jsFilteredTextBox.FilteredTextBoxBehavior.jsDate.HijriCalendar.debug.jsComboBox.ComboBox.debug.jsCollapsiblePanel.CollapsiblePanelBehavior.jsAjaxControlToolkit.NumericUpDown.NumericUpDown.icoValidatorCallout.alert-large.gifTabs.tab-bottom.gifMultiHandleSlider.Images.slider_h_rail.gifHTMLEditor.Images.ed_sep.gifHTMLEditor.Images.ed_format_paragraph_a.gifHTMLEditor.Images.ed_cut_a.gifHTMLEditor.Images.ed_copy_a.gifHTMLEditor.Images.ed_align_right_n.gifHTMLEditor.Images.design.gifComboBox.arrow-down.gifHtmlEditorExtender.HtmlEditorExtender.cssBalloonPopup.Cloud.BalloonPopup.cssTwitter.Twitter32.pngSeadragon.images.zoomout_grouphover.pngUpdatePanelAnimation.UpdatePanelAnimationBehavior.jsUpdatePanelAnimation.UpdatePanelAnimationBehavior.debug.jsToggleButton.ToggleButton.debug.jsSlideShow.SlideShowBehavior.debug.jsSlider.SliderBehavior.debug.jsSeadragon.Seadragon.TileSource.jsResizableControl.ResizableControlBehavior.debug.jsPopupControl.PopupControlBehavior.debug.jsPasswordStrength.PasswordStrengthExtenderBehavior.debug.jsMicrosoftAjaxTimer.jsMicrosoftAjaxNetwork.jsMicrosoftAjaxHistory.debug.jsHTMLEditor.Toolbar_buttons.SelectButton.jsHTMLEditor.Toolbar_buttons.Rtl.debug.jsHTMLEditor.Toolbar_buttons.Paste.jsHTMLEditor.Toolbar_buttons.MethodButton.jsHTMLEditor.ModePanel.debug.jsHTMLEditor.HtmlPanel.debug.jsHTMLEditor.HTMLEditor.jsHtmlEditorExtender.HtmlEditorExtenderBehavior.jsDynamicPopulate.DynamicPopulateBehavior.debug.jsCompat.DragDrop.DragDropScripts.debug.jsAjaxControlToolkit.PopupControl.PopupControl.icoAjaxControlToolkit.PagingBulletedList.PagingBulletedList.icoAjaxControlToolkit.HoverMenu.HoverMenu.icoTabs.tab-verticalleft.gifTabs.tab-active-right.gifMultiHandleSlider.Images.slider_v_rail.gifHTMLEditor.Images.ed_list_bullet_a.gifHTMLEditor.Images.ed_format_sub_a.gifSlider.Slider.cssBalloonPopup.Cloud.BalloonPopup_resource.cssSeadragon.images.home_pressed.pngBalloonPopup.act_down_right.pngAsyncFileUpload.images.fileupload.pngTextboxWatermark.TextboxWatermark.jsSeadragon.Seadragon.Rect.jsSeadragon.Seadragon.DeepZoom.debug.jsSeadragon.Seadragon.Buttons.debug.jsNumericUpDown.NumericUpDownBehavior.debug.jsMaskedEdit.MaskedEditBehavior.jsHTMLEditor.Toolbar_buttons.RemoveAlignment.jsHTMLEditor.Toolbar_buttons.PreviewMode.jsHTMLEditor.Toolbar_buttons.ModeButton.jsHTMLEditor.Toolbar_buttons.Ltr.debug.jsHTMLEditor.Toolbar_buttons.ImageButton.debug.jsHTMLEditor.Toolbar_buttons.FontSize.jsHTMLEditor.Toolbar_buttons.FixedColorButton.jsHTMLEditor.Toolbar_buttons.FixedBackColor.debug.jsHTMLEditor.Toolbar_buttons.Cut.jsHTMLEditor.Toolbar_buttons.BulletedList.debug.jsHTMLEditor.Toolbar_buttons.Bold.jsHTMLEditor.Toolbar_buttons.BackColorClear.jsHTMLEditor.Toolbar_buttons.BackColorClear.debug.jsHoverMenu.HoverMenuBehavior.jsAjaxControlToolkit.ResizableControl.ResizableControl.icoAjaxControlToolkit.MaskedEdit.MaskedEdit.icoAjaxControlToolkit.ColorPicker.ColorPicker.icoAjaxControlToolkit.CascadingDropDown.CascadingDropDown.icoAjaxControlToolkit.AlwaysVisibleControl.AlwaysVisible.icoTabs.tab.gifTabs.tab-hover-verticalright.gifTabs.tab-active-right-verticalright.gifTabs.tab-active-left-verticalleft.gifMultiHandleSlider.Images.slider_v_handle.gifHTMLEditor.Images.ed_removealign_a.gifHTMLEditor.Images.ed_indent_more_a.gifHTMLEditor.Images.ed_format_rtl_n.gifHTMLEditor.Images.ed_forecolor_a.gifHTMLEditor.Images.BgiButton.gifHtmlEditorExtender.html-editor-buttons_Designer.pngBalloonPopup.Rectangle.sprite.pngValidatorCallout.ValidatorCalloutBehavior.jsToggleButton.ToggleButton.jsSlider.SliderBehavior_resource.debug.jsSeadragon.Seadragon.Viewport.debug.jsSeadragon.Seadragon.Spring.jsSeadragon.Seadragon.jsPasswordStrength.PasswordStrengthExtenderBehavior.jsModalPopup.ModalPopupBehavior.debug.jsMicrosoftAjaxSerialization.jsMicrosoftAjaxHistory.jsMaskedEdit.MaskedEditValidator.debug.jsHTMLEditor.Toolbar_buttons.Undo.debug.jsHTMLEditor.Toolbar_buttons.SubScript.debug.jsHTMLEditor.Toolbar_buttons.RemoveStyles.jsHTMLEditor.Toolbar_buttons.JustifyRight.debug.jsHTMLEditor.Toolbar_buttons.ForeColorSelector.debug.jsHTMLEditor.Toolbar_buttons.ForeColorClear.jsHTMLEditor.Toolbar_buttons.ForeColor.debug.jsHTMLEditor.Toolbar_buttons.DesignModePopupImageButton.jsHTMLEditor.Toolbar_buttons.DesignModeImageButton.debug.jsHTMLEditor.Toolbar_buttons.Copy.jsHTMLEditor.Events.jsHTMLEditor.Editor.debug.jsHTMLEditor.DesignPanelEventHandler.debug.jsHoverMenu.HoverMenuBehavior.debug.jsComboBox.ComboBox.jsAccordion.AccordionBehavior.jsAjaxControlToolkit.HTMLEditor.Editor.icoAjaxControlToolkit.HtmlEditorExtender.html_editor_extender.icoGravatar.Images.gravatar-X.jpgGravatar.Images.gravatar-G.jpgTabs.tab-line.gifTabs.tab-hover.gifTabs.tab-hover-right.gifTabs.tab-bottom-hover.gifTabs.tab-bottom-hover-left.gifMultiHandleSlider.Images.slider_v_handle_down.gifMultiHandleSlider.Images.slider_h_handle.gifHTMLEditor.Images.preview.gifHTMLEditor.Images.html.gifHTMLEditor.Images.ed_preview_n.gifHTMLEditor.Images.ed_color_fg_a.gifHTMLEditor.Images.ed_backcolor_a.gifHTMLEditor.Editor.cssHtmlEditorExtender.HtmlEditorExtender_resource.cssTwitter.Twitter24.pngBalloonPopup.Cloud.sprite.pngStart.jsSeadragon.Seadragon.Drawer.jsRoundedCorners.RoundedCornersBehavior.debug.jsNoBot.NoBotBehavior.jsMicrosoftAjaxTemplates.debug.jsMicrosoftAjaxApplicationServices.jsMicrosoftAjaxApplicationServices.debug.jsMaskedEdit.MaskedEditBehavior.debug.jsHTMLEditor.Toolbar_buttons.StrikeThrough.debug.jsHTMLEditor.Toolbar_buttons.JustifyLeft.debug.jsHTMLEditor.Toolbar_buttons.HorizontalSeparator.debug.jsHTMLEditor.Toolbar_buttons.FontName.debug.jsHTMLEditor.Toolbar_buttons.Bold.debug.jsHTMLEditor.Popups.PopupCommonButton.jsExtendedControls.debug.jsDropShadow.DropShadowBehavior.jsConfirmButton.confirmButtonBehavior.jsCommon.Threading.debug.jsColorPicker.ColorPickerBehavior.debug.jsCollapsiblePanel.CollapsiblePanelBehavior.debug.jsCalendar.CalendarBehavior.debug.jsAsyncFileUpload.AsyncFileUpload.debug.jsAnimation.AnimationBehavior.jsAnimation.AnimationBehavior.debug.jsAjaxControlToolkit.ListSearch.ListSearch.icoAjaxControlToolkit.DynamicPopulate.DynamicPopulate.icoTabs.tab-left-verticalleft.gifSlider.Images.slider_v_handle.gifSlider.Images.slider_h_handle.gifMultiHandleSlider.Images.slider_h_rail_outer.gifHTMLEditor.Images.ed_pasteText_n.gifHTMLEditor.Images.ed_align_right_a.gifBalloonPopup.corners-type2.gifSlider.Slider_resource.cssHTMLEditor.HtmlPanel.cssBalloonPopup.Rectangle.BalloonPopup.cssBalloonPopup.act_down_left.pngTabs.Tabs.debug.jsSeadragon.Seadragon.MouseTracker.debug.jsRating.RatingBehavior.jsMicrosoftAjaxCore.debug.jsHTMLEditor.Toolbar_buttons.Selector.jsHTMLEditor.Toolbar_buttons.SelectButton.debug.jsHTMLEditor.Toolbar_buttons.Redo.jsHTMLEditor.Toolbar_buttons.DesignModeBoxButton.debug.jsHTMLEditor.Toolbar_buttons.DecreaseIndent.jsHTMLEditor.Toolbar_buttons.BulletedList.jsHTMLEditor.DesignPanel.jsCommon.Threading.jsAjaxControlToolkit.UpdatePanelAnimation.UpdatePanelAnimation.icoAjaxControlToolkit.MultiHandleSlider.MultiHandleSlider.icoAjaxControlToolkit.ConfirmButton.ConfirmButton.icoAjaxControlToolkit.Calendar.Calendar.icoGravatar.Images.gravatar-PG.jpgGravatar.Images.gravatar-anonymous.jpgValidatorCallout.alert-small.gifTabs.tab-bottom-right.gifHTMLEditor.Images.ed_placeHolder.gifHTMLEditor.Images.ed_pasteWord_n.gifColorPicker.ColorPicker.cssCalendar.Calendar.cssBalloonPopup.Rectangle.BalloonPopup_resource.cssBalloonPopup.BalloonPopup.cssSeadragon.images.zoomout_pressed.pngSeadragon.images.zoomout_hover.pngSeadragon.images.fullpage_hover.pngSlider.SliderBehavior.jsRating.RatingBehavior.debug.jsMicrosoftAjaxWebServices.jsMicrosoftAjaxGlobalization.jsMicrosoftAjaxDataContext.debug.jsHTMLEditor.Toolbar_buttons.Underline.debug.jsHTMLEditor.Toolbar_buttons.Paragraph.jsHTMLEditor.Toolbar_buttons.MethodButton.debug.jsHTMLEditor.Toolbar_buttons.InsertLink.debug.jsHTMLEditor.Toolbar_buttons.HtmlMode.jsHTMLEditor.Toolbar_buttons.ForeColor.jsHTMLEditor.PreviewPanel.debug.jsHTMLEditor.Editor.jsExtendedControls.jsAlwaysVisibleControl.AlwaysVisibleControlBehavior.debug.jsAjaxControlToolkit.ToggleButton.ToggleButton.icoAjaxControlToolkit.TextboxWatermark.TextboxWatermark.icoAjaxControlToolkit.DropDown.DropDown.icoAjaxControlToolkit.Accordion.Accordion.icoTabs.tab-right.gifTabs.tab-left.gifTabs.tab-hover-verticalleft.gifTabs.tab-bottom-active-left.gifTabs.tab-active-right-verticalleft.gifMultiHandleSlider.Images.slider_v_handle_hover.gifHTMLEditor.Images.ed_link_n.gifHTMLEditor.Images.ed_format_rtl_a.gifHTMLEditor.Images.ed_anchor.gifHTMLEditor.Images.ed_align_left_n.gifTwitter.Twitter_resource.cssDropDown.DropDown.cssCalendar.Calendar_resource.cssSeadragon.images.fullpage_pressed.pngSeadragon.Seadragon.Spring.debug.jsSeadragon.Seadragon.Profiler.jsPagingBulletedList.PagingBulletedListBehavior.debug.jsNumericUpDown.NumericUpDownBehavior.jsHTMLEditor.Toolbar_buttons.RemoveAlignment.debug.jsHTMLEditor.Toolbar_buttons.JustifyFull.jsHTMLEditor.Toolbar_buttons.JustifyCenter.jsHTMLEditor.Toolbar_buttons.FixedBackColor.jsHTMLEditor.Toolbar_buttons.ColorButton.jsHTMLEditor.Toolbar.jsHTMLEditor.Toolbar.debug.jsHTMLEditor.Popups.PopupBoxButton.debug.jsDate.UmAlQuraCalendar.jsCascadingDropDown.CascadingDropDownBehavior.debug.jsAutoComplete.AutoCompleteBehavior.debug.jsAjaxControlToolkit.ModalPopup.ModalPopup.icoScriptResources.Templates.Res.debug.resourcesScriptResources.Templates.Res.resourcesScriptResources.WebForms.Res.debug.resourcesScriptResources.Res.debug.resourcesScriptResources.Res.resourcesProperties.Resources.NET4.resourcesScriptResources.OpenData.Res.debug.resourcesScriptResources.DataContext.Res.debug.resourcesScriptResources.DataContext.Res.resourcesScriptResources.WebForms.Res.resourcesScriptResources.BaseScriptsResources.resourcesScriptResources.OpenData.Res.resources
InvokeExtender=ExtenderControlFeaturesPresent{0} ({1})TargetControlID'Add {0} page methodAddPageMethodPage Methods��Cannot create page method "{0}" because the extender is using web service "{1}" instead!EnvDTE._DTE��Cannot create page method "{0}" because {1} could not be acquired!��Cannot create page method "{0}" because no CodeBehind or CodeFile file was found!qWould you like to repair the existing page method "{0}"?1Repair "{0}" page method+Add "{0}" page methodCUnexpected error ({0}): {1}{2}{3})Ajax Control ToolkitWebMethodScriptMethodprojectItem5projectItem cannot be nullScriptPath_ClientStateG!clientStateField?ajax__htmleditor_toolbar_buttonPreservePlace;5HTMLEditor_toolbar_button__IScriptResources.BaseScriptsResources
_titleNormalSrcHoverSrcDownSrcActiveSrcqToolbar's ImageButton can be inside Toolbar control only_n_agif%HTMLEditor.Images..srcalt!ed_format_strike[,{name: ', clientID: }]%, callMethod: null3HTMLEditor_toolbar_popup__button__field_
iframescrollingnomarginHeight0marginWidthframebordertabindex-1id!registeredFields%registeredHandlersabsolute-2000pxMajax__htmleditor_attachedpopup_defaultWHTMLEditor.Popups.AttachedTemplatePopup.cssdiv	noneclasscontentDiv	10pxpointer!background-color#onclicksetColor("#")	100%font-size1px
bordercellspacing1cellpadding#000000
000000
003300
006600
009900
00CC00
00FF00
330000
333300
336600
339900
33CC00
33FF00
660000
663300
666600
669900
66CC00
66FF00
333333
000033
003333
006633
009933
00CC33
00FF33
330033
336633
339933
33CC33
33FF33
660033
663333
666633
669933
66CC33
66FF33
666666
000066
003366
006666
009966
00CC66
00FF66
330066
333366
336666
339966
33CC66
33FF66
660066
663366
669966
66CC66
66FF66
999999
000099
003399
006699
009999
00CC99
00FF99
330099
333399
336699
339999
33CC99
33FF99
660099
663399
666699
669999
66CC99
66FF99
CCCCCC
0000CC
0033CC
0066CC
0099CC
00CCCC
00FFCC
3300CC
3333CC
3366CC
3399CC
33CCCC
33FFCC
6600CC
6633CC
6666CC
6699CC
66CCCC
66FFCC
FFFFFF
0000FF
0033FF
0066FF
0099FF
00CCFF
00FFFF
3300FF
3333FF
3366FF
3399FF
33CCFF
33FFFF
6600FF
6633FF
6666FF
6699FF
66CCFF
66FFFF
FF0000
990000
993300
996600
999900
99CC00
99FF00
CC0000
CC3300
CC6600
CC9900
CCCC00
CCFF00
FF3300
FF6600
FF9900
FFCC00
FFFF00
990033
993333
996633
999933
99CC33
99FF33
CC0033
CC3333
CC6633
CC9933
CCCC33
CCFF33
FF0033
FF3333
FF6633
FF9933
FFCC33
FFFF33
990066
993366
996666
999966
99CC66
99FF66
CC0066
CC3366
CC6666
CC9966
CCCC66
CCFF66
FF0066
FF3366
FF6666
FF9966
FFCC66
FFFF66
990099
993399
996699
99CC99
99FF99
CC0099
CC3399
CC6699
CC9999
CCCC99
CCFF99
FF0099
FF3399
FF6699
FF9999
FFCC99
FFFF99
9900CC
9933CC
9966CC
9999CC
99CCCC
99FFCC
CC00CC
CC33CC
CC66CC
CC99CC
CCFFCC
FF00CC
FF33CC
FF66CC
FF99CC
FFCCCC
FFFFCC
FF00FF
9900FF
9933FF
9966FF
9999FF
99CCFF
99FFFF
CC00FF
CC33FF
CC66FF
CC99FF
CCCCFF
CCFFFF
FF33FF
FF66FF
FF99FF
FFCCFFEnabledaThis class does not allow setting of ScriptPath.BehaviorID{0}_ClientState%ClientStateFieldIDa{0} missing required {1} property value for {2}.AnimationTarget!DynamicControlID#DynamicContextKey%DynamicServicePath)DynamicServiceMethod'CacheDynamicResults9DynamicControlID must be setADynamicServiceMethod must be setPopupControlIDHoverCssClassOffsetXOffsetYPopDelayHoverDelayPosition
OnShow
OnHiderinstancedescriptor��ExtenderControlEventAttribute can only be applied to a property with a PropertyType of System.String._callbackTarget�This page is missing a HtmlHead control which is required for the CSS stylesheet link that is being added. Please add <head runat="server" />.	typetext/cssrelstylesheet+RegisterCssReferences�yif (window.__ExtendedControlCssLoaded == null || typeof window.__ExtendedControlCssLoaded == 'undefined') {    window.__ExtendedControlCssLoaded = new Array();}var controlCssLoaded = window.__ExtendedControlCssLoaded; var head = document.getElementsByTagName('HEAD')[0];if (head && !Array.contains(controlCssLoaded,'�')) {var linkElement = document.createElement('link');linkElement.type = 'text/css';linkElement.rel = 'stylesheet';linkElement.href = 'o';head.appendChild(linkElement);controlCssLoaded.push('	');}	name	argsstate:
resulterror9Circular reference detected.��EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a��EnvDTE80, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a��VsWebSite.Interop, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a%EnvDTE.vsCMElement�Failed to load type 'EnvDTE.vsCMElement' from assembly 'EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.#EnvDTE.vsCMAccess�Failed to load type 'EnvDTE.vsCMAccess' from assembly 'EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.'EnvDTE.vsCMFunction�	Failed to load type 'EnvDTE.vsCMFunction' from assembly 'EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.%EnvDTE.vsCMTypeRef�Failed to load type 'EnvDTE.vsCMTypeRef' from assembly 'EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.%EnvDTE.CodeTypeRef�Failed to load type 'EnvDTE.CodeTypeRef' from assembly 'EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.TypeKindElementTypeAsFullName	Rank'EnvDTE.CodeElements�	Failed to load type 'EnvDTE.CodeElements' from assembly 'EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.CountGetEnumerator/EnvDTE80.FileCodeModel2�Failed to load type 'EnvDTE80.FileCodeModel2' from assembly 'EnvDTE80, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.CodeElements+EnvDTE80.CodeElement2�Failed to load type 'EnvDTE80.CodeElement2' from assembly 'EnvDTE80, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.	NameFullName	KindIsCodeTypeChildren'EnvDTE80.CodeClass2�
Failed to load type 'EnvDTE80.CodeClass2' from assembly 'EnvDTE80, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.AddFunction-EnvDTE80.CodeFunction2�Failed to load type 'EnvDTE80.CodeFunction2' from assembly 'EnvDTE80, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.	TypeParameters
AccessIsSharedAttributesAddParameterAddAttribute/EnvDTE80.CodeParameter2�Failed to load type 'EnvDTE80.CodeParameter2' from assembly 'EnvDTE80, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'./EnvDTE80.CodeAttribute2�Failed to load type 'EnvDTE80.CodeAttribute2' from assembly 'EnvDTE80, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.EnvDTE80.DTE2�Failed to load type 'EnvDTE80.DTE2' from assembly 'EnvDTE80, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.ActiveDocumentUndoContext%EnvDTE.UndoContext�Failed to load type 'EnvDTE.UndoContext' from assembly 'EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
IsOpen	OpenCloseEnvDTE.Document�Failed to load type 'EnvDTE.Document' from assembly 'EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.ProjectItem%EnvDTE.ProjectItem�Failed to load type 'EnvDTE.ProjectItem' from assembly 'EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
ObjectFileCodeModel5VsWebSite.VSWebProjectItem�-Failed to load type 'VsWebSite.VSWebProjectItem' from assembly 'VsWebSite.Interop, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.	Load
UnloadbaseTyperesourceName!fullResourceName'WarningIconImageUrlAValidatorCallout.alert-large.gifCloseImageUrl5ValidatorCallout.close.gifCssClass#HighlightCssClassPopupPositionWidthINVALIDIItem type isn't valid for Add items.
{0}{1}	_rli{0}Insertvertical-align
middleIndexSize
HeightSeparator - MaxItemPerPageClientSort'SelectIndexCssClass+UnselectIndexCssClass_NoBotLabel_NoBotExtender	~{0}3NoBot_ResponseTimeKey_{0}/NoBot_SessionKeyKey_{0}1NoBot_SessionKey_{0}_{1}	nobr	spanIajax__htmleditor_toolbar_selectlablelabel
&nbsp;
selectKajax__htmleditor_toolbar_selectbutton<option value="">defaultValue</option>transparent
cursor	texted_removealigned_pasteText
ed_cut#ed_color_bg_clearAajax__htmleditor_popup_boxbuttonAajax__htmleditor_popup_bgibuttoncontrol/Control cannot be null!q(function() { var fn = function() { var control = $get('��'); if (control && control.focus) { control.focus(); } Sys.Application.remove_load(fn);};Sys.Application.add_load(fn);})();_SetFocusOnLoadAutoSize%TransitionDurationFadeTransitionsFramesPerSecond#RequireOpenedPane/SuppressHeaderPostbacksHeaderCssClass-HeaderSelectedCssClassContentCssClassajax__twitter9ScreenName must have a value1Search must have a valueA__TwitterProfile_{0}_{1}_{2}_{3}/__TwitterSearch_{0}_{1}-Less than a minute ago{0} minutes ago{0} hours ago{0} days ago��(((http|https)+\:\/\/)[&#95;.a-z0-9-]+\.[a-z0-9\/&#95;:@=.+?,##%&~-]*[^.|\'|\# |!|\(|?|,| |>|<|;|\)])'<a href="$1">$1</a>��<li>{0}<br /><span class="ajax__twitter_createat">{1}</span></li>)ajax__twitter_headerh3h4ul-ajax__twitter_itemlist
margin0pxItemPlaceholder+Twitter.Twitter24.png)ajax__twitter_footer��<li><img src="{0}" /><div>{1}<br /><span class="ajax__twitter_createat">{2}</span></div></li>;There are no matching tweets.provider]Provider must implement SanitizerProvider type$$CANCEL$$/_PopupControl_Proxy_ID_#ExtenderControlIDCommitPropertyCommitScripted_unlink#ed_color_fg_clear
OnLoadOnClickOnMouseOverOnMouseOutOnHoverOverOnHoverOuted_format_subed_unformated_pasteWorded_paste!ed_format_italicAlwaysVisible%ButtonImagesFolder\/3(\(S\([A-Za-z0-9_]+\)\)/)
hiddenCurrentViewTemplateIndex��<table cellspacing=0 cellpadding=0 border=0 style="display:inline-block">

                <tr>

                    <td nowrap align=center valign=middle style="color:{0}; background-color:{1}; ">{2}</td>

                </tr>

                <tr>

                    <td style="vertical-align:top;" {3}='0'>{4}</td>

                </tr>

          </table>�g

                <table cellspacing=0 cellpadding=0 border=0 style="display:inline-block;border:outset white 1px;">

                <tr>

                    <td nowrap align=center valign=middle style="background-color:{6}; "><span style="font:messagebox;color:{5}"><b>{8}</b> - {7}</span></td>

                </tr>               

                <tr>                

                <td>

                  <table cellspacing=0 cellpadding=2 border=0 style="margin:2px;border:solid 1px buttonface">

                    <tr style="font:messagebox;background-color:lightblue;color:black">

                      <td style="border:solid 1px buttonshadow">

                        &nbsp;{0}&nbsp;&nbsp;&nbsp;

                      </td>

                    </tr>

                    <tr style="{1}" height=100%>

                      <td style="{2}">

                        <div style="width:100%;height:100%" {3}='0'>{4}</div>

                      </td>

                    </tr>

                  </table>

                </td>

              </tr></table><br />Empty 
<br />EError rendering ReorderList:<br />ASetEditableDesignerRegionContentItemTemplate!EditItemTemplate%DragHandleTemplateReorderTemplate%InsertItemTemplate#EmptyListTemplate
handleed_align_leftrelatedPopupautoCloseed_selectorwidth	11px!fixedColorButtonMFixedColorButton control's ID expecteded_indent_less	Bold
ItalicUnderlineStrikeThroughStrike ThroughSubscriptSub ScriptSuperscriptSuper ScriptJustifyLeftJustify LeftJustifyRightJustify RightJustifyCenterJustify CenterJustifyFullJustify Full#insertOrderedList'Insert Ordered List'insertUnorderedList+Insert Unordered List	Undo	RedocreateLinkCreate Link
DeleteSelectAllSelect AllUnSelect
UnLinkBackColorBack Color	CopyCutPasteFontNameFont NameFontSizeFont SizeForeColorFore Color
Indent)InsertHorizontalRule-Insert Horizontal RuleOutdentRemoveFormatRemove Format'HorizontalSeparator?http://www.gravatar.com/avatar/?s=&d=mm&r=x2
Formatd!TodaysDateFormatMMMM d, yyyy'DaysModeTitleFormatMMMM, yyyyClearTimeEnabledOnClientAnimatedFirstDayOfWeekPopupButtonIDSelectedDateDefaultViewOnClientShowingOnClientShownOnClientHidingOnClientHidden9OnClientDateSelectionChangedStartDateEndDate+OnClientUploadStarted-OnClientUploadComplete'OnClientUploadErrorThrobberID#CompleteBackColor%UploadingBackColorErrorBackColor$
_ctl02
------error------<div id=''>
</div>KAsyncFileUpload.images.fileupload.pngbackground:url(��) no-repeat 100% 1px; height:24px; margin:0px; text-align:right;min-width:;width: !important;width:355px;style355px��opacity:0.0; -moz-opacity: 0.0; filter: alpha(opacity=00); font-size:14px;
width:Cmargin-top:-23px;text-align:left;aheight:17px; font-size:12px; font-family:Tahoma;aheight:23px; font-size:12px; font-family:Tahoma;pxpx;width:248px;3background-color:#00FF00;3background-color:#FF0000;#background-color:hiddenFieldinnerTBinputFilepostBackUrlformName#completeBackColorerrorBackColor%uploadingBackColorthrobber#AsyncFileUploadID��The ExtendedFileUpload control has encountered an error with the uploader in this page. Please refresh the page and try again.Ib3b89160-3224-476e-9076-70b500c816cfINo files are attached to the upload.;The file attached is invalid.UThe file attached has an invalid filename.IThe file attached could not be read.7The file attached is empty.?The file uploaded successfully.HTML_!ArgReplaceString!ArgSuccessStringArgErrorString!ArgContextString!CallbackCssStyle#DropLayoutElementPostbackCodeKey��font|div|span|br|strong|em|strike|sub|sup|center|blockquote|hr|ol|ul|li|br|s|p|b|i|u?style|size|color|face|align|dir\'\,\w\-#\s\:\;\&quot\;"
&apos;-(?:\&lt\;|\<)(\/?)((?:)(?:\s(?:	)="[']*")*)(?:\&gt\;|\>)
<$1$2>^\"\>\<\\K(?:\&lt\;|\<)(\/?)(a(?:(?:\shref\=\"[+]*\")|(?:\sstyle\=\"[+]*\"))*)(?:\&gt\;|\>)&amp;&�-<[^>]*expression[^>]*>%<[^>]*data\:[^>]*>%<[^>]*script[^>]*>%<[^>]*filter[^>]*>)<[^>]*behavior[^>]*><[^>]*url[^>]*>1<[^>]*javascript\:[^>]*>-<[^>]*position\:[^>]*>5HtmlEditorExtenderOnSubmitnull;Focused'ed_format_underline
ed_sep	13pxed_list_bulleteditPanelmarginheightmarginwidth#javascript:false;DragHandleID%_AccordionExtender��Can't bind to value that is not an IListSource or an IEnumerable.DataSourceIDDataMember_!ItemCount	autoaDataSource '{1}' for control '{0}' doesn't exist['{1}' is not a data source for control '{0}'.uDataSourceID and DataSource can't be set at the same time.UDataSourceView not found for control '{0}'{0}_Pane_{1}9Invalid data property changeGComponent must be a Twitter controlcomponent	<div

	9Please specify a screen name?Please specify a search keyword<div>9Twitter.Twitter_resource.cssg<link href="{0}" rel="stylesheet" type="text/css"/>+Twitter.Twitter32.png%ajaxcontroltoolkitUS 	<em>
</em> ��Lorem <a href='http://www.sample_ipsum_link.com'>ipsum</a> dolor sit amet, ��consectetur adipisicing elit, sed do eiusmod tempor incididunt ut{labore et dolore magna aliqua. Ut enim ad minim veniam, quis )nostrud exercitation!ullamco laboris ��nisi ut aliquip ex ea <a href='http://comodo_sample_link'>commodo</a> consequat��Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nullaExcepteur sint ��occaecat cupidatat non proident, sunt in culpa qui officia deserunt��<(asp:)\b([^>]*?)(ITEMPLACEHOLDER)([^>]*?)(>([^>]*?)</asp:PlaceHolder>|/>)(.*?)%(<%#) ?.*eval?.*%>"(.*?)"MinimumMaximumRailCssClassHandleImageUrlHandleCssClass+EnableHandleAnimationStepsOrientationDecimalsBoundControlID
Length1RaiseChangeOnlyOnMouseUpTooltipTextEnableKeyboard_DZI Files (*.dzi)|*.dzi|XML Files (*.xml)|*.xmldefaultProviderprovidersAutoPostbackCallbackIDTagRatingDirectionMaxRatingStarCssClassReadOnly%FilledStarCssClass#EmptyStarCssClass'WaitingStarCssClass%BackgroundCssClassOkControlIDCancelControlIDOnOkScriptOnCancelScriptXYstringDrag1PopupDragHandleControlID!stringDropShadowRepositionModeOnShownOnHiddenOnShowingOnHidingTargetControlKTargetControl property cannot be null	hide	show�U(function() {{var fn = function() {{Sys.Extended.UI.ModalPopupBehavior.invokeViaServer('{0}', {1}); Sys.Application.remove_load(fn);}};Sys.Application.add_load(fn);}})();false	trueed_rulecolorDivmethodButton#FFFF00ed_backcoloranimationAnimationName#AnimationChildrendictionaryobj��Cannot deserialize an Animation without an AnimationName property	nodeextenderControl<Animations></Animations>wInvalid Animation definition for TargetControlID="{0}": {1}��Animation on TargetControlID="{0}" uses property {1}.{2} that does not exist or cannot be set��Animation {0} for TargetControlID="{1}" can only have one child node.image	hrefghttp://search.twitter.com/search.atom?q={0}&rpp={1};{http://www.w3.org/2005/Atom}entry	linkpublishedcontentscreen_namedescription#profile_image_urlcreated_at9ddd MMM dd HH:mm:ss zzz yyyy	user��http://api.twitter.com/1/statuses/user_timeline.xml?screen_name={0}&count={1}&include_rts=1%&exclude_replies=1
status#ClearHiddenOnLoad�(function() {{var fn = function() {{$get("{0}").value = '';Sys.Application.remove_init(fn);}};Sys.Application.add_init(fn);}})();'{0}?{1}={2}&{3}={4}%20#_TSM_HiddenField_+_TSM_CombinedScripts_1application/x-javascriptIEAccept-Encoding	GZIP!Content-encoding	gzipDEFLATEdeflate��if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();�(function() {{var fn = function() {{$get("{0}").value += '{1}';Sys.Application.remove_load(fn);}};Sys.Application.add_load(fn);}})();wCombined script request includes uncombinable script "{0}".//START ��ToolkitScriptManager does not support <%= WebResource/ScriptResource(...) %> substitution as used by script file "{0}".
{0}={{.resources"{0}":"{1}"};
//END x}Assembly "{0}" contains multiple scripts with hash code "{1}".}Assembly "{0}" does not contain a script with hash code "{1}"._HiddenField\\\b\t\n\f\r\"\u
{0:x4}��<%\s*=\s*(?<resourceType>WebResource|ScriptResource)\("(?<resourceName>[^"]*)"\)\s*%>
RadiusCornersColorBorderColorpromptTextType to searchpromptCssClasspromptPositionQueryTimeoutQueryPatternIsSorteded_format_suped_align_centerIComponent must be a gravatar control3Gravatar.Images.gravatar-	.jpgy<div style='width:80px; height:80px;'><img src='{0}'/></div>RenderModeDropDownStyle!AutoCompleteMode%ItemInsertLocationCaseSensitive+ListItemHoverCssClassborder-right0px noneTextBox
ButtonHiddenFieldOptionListTabletextBoxControlbuttonControl%hiddenFieldControl#optionListControl#comboTableControl!autoCompleteModedropDownStyle;ajax__combobox_inputcontainer?ajax__combobox_textboxcontainer=ajax__combobox_buttoncontainerrelative5pxautocompleteoff/ajax__combobox_itemlist
inline
safarifirefox
-blockSampleControlIDSelectedColor;OnClientColorSelectionChanged-SlideShowServiceMethod)SlideShowServicePathContextKeyUseContextKeyNextButtonIDPlayButtonIDPlayButtonTextStopButtonTextPlayInterval#ImageTitleLabelID/ImageDescriptionLabelID!PreviousButtonID	LoopAutoPlay#ResizableCssClassHandleOffsetXHandleOffsetYMinimumWidthMinimumHeightMaximumWidthMaximumHeightOnClientResize!OnClientResizing'OnClientResizeBegincMaximum width must not be less than minimum widthgMaximum height must not be less than minimum height{0},{1}ActiveModeed_designcontentchanged	&lt;<	&gt;>
&quot;/SuppressTabInDesignModeIgnoreTabNoUnicodeNoScriptInitialCleanUp#HtmlPanelCssClassEajax__htmleditor_htmlpanel_defaultDocumentCssPathDocument%DesignPanelCssPathDesignPanel9HTMLEditor.Images.ed_1x1.gif=HTMLEditor.Images.ed_flash.gif=HTMLEditor.Images.ed_media.gif?HTMLEditor.Images.ed_anchor.gifIHTMLEditor.Images.ed_placeHolder.gifAutoFocusContent3OnClientActiveModeChanged?OnClientBeforeActiveModeChanged!_contentChanged__content__contentForce__activeMode_HTMLEditor.	.css+contentChangedElement'contentForceElementcontentElement#activeModeElementCMaskedEdit.MaskedEditValidator.jsIsMaskedEditValidEmptyMaximumValueMinimumValueInitialValue)ValidationExpression1ClientValidationFunctionTargetValidator#EmptyValueMessageEmptyValueText'MaximumValueMessage!MaximumValueText'MinimumValueMessage!MinimumValueText'InvalidValueMessage!InvalidValueText)InvalidValueCssClassCssBlurNegativeCssFocus!CssFocusNegativeTooltipMessage#FirstMaskPosition%evaluationfunction/MaskedEditValidatorNone!LastMaskPositionMoneyDecimalThousands3MaskedEditValidatorNumberDateSeparatorDateFormatCenturyTimeSeparatorAmPmSymbol7MaskedEditValidatorDateTime/MaskedEditValidatorDate/MaskedEditValidatorTime-MaskedEditSetCssClass(,'');5MaskedEditServerValidator_9L$CAN?9{0123456789ed_undo	70px#FF0000ed_forecolor)AppendDataBoundItems-Append DataBound ItemsCase SensitiveDropDown Style#AutoComplete Mode%Property not foundMComponent must be an Accordion controloverflowstyle="/style="overflow:scroll;
<span>#<div class="{0}">+AccordionPane Header -AccordionPane Content </span>HeaderTemplateContentTemplateHeaderTextScrollBarsOnClientClickOnDemandMode%OnClientPopulating#OnClientPopulated_onDemandPanel_updatePanel	_tabajax__tab_outerajax__tab_innerajax__tab_tab
__tab_blockajax__tab_panelheaderTabownerownerID#controltovalidatefocusOnErrorterrormessagedisplayisvalidFalseenabledvalidationGroupdisabledinline-block-ValidatorIncludeScript3document.getElementById("Page_Validators_DisposeScript�

document.getElementById('{0}').dispose = function() {{

    Array.remove(Page_Validators, document.getElementById('{0}'));

}}

%WebUIValidation.js�#

var Page_ValidationActive = false;

if (typeof(ValidatorOnLoad) == "function") {

    ValidatorOnLoad();

}



function ValidatorOnSubmit() {

    if (Page_ValidationActive) {

        return ValidatorCommonOnSubmit();

    }

    else {

        return true;

    }

}

#ValidatorOnSubmit��if (typeof(ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false) return false;ed_format_rtled_previewed_format_ltr/TopToolbarPreservePlace?ajax__htmleditor_editor_default;ajax__htmleditor_editor_base changingToolbarCajax__htmleditor_editor_containerseparateEajax__htmleditor_editor_toptoolbarCajax__htmleditor_editor_editpanelKajax__htmleditor_editor_bottomtoolbarFixedForeColorFixedBackColor5arial,helvetica,sans-serifArial;courier new,courier,monospaceCourier NewGgeorgia,times new roman,times,serifGeorgiaCtahoma,arial,helvetica,sans-serif
Tahoma7times new roman,times,serifTimes New RomanEverdana,arial,helvetica,sans-serifVerdana
impact
ImpactwingdingsWingDings8pt1 ( 8 pt)	10pt2 (10 pt)	12pt3 (12 pt)	14pt4 (14 pt)	18pt5 (18 pt)	24pt6 (24 pt)	36pt7 (36 pt)'border-bottom-width!border-top-width��expression(Sys.Extended.UI.HTMLEditor.Editor.MidleCellHeightForIE(this.parentNode.parentNode.parentNode,this.parentNode))hoverDelayHoverScriptUnhoverDelayUnhoverScriptAnimationTime+ShowNavigationControlBlendTimeAlwaysBlend!AutoHideControlsImmediateRenderWrapHorizontalWrapVertical!MinZoomDimension#MaxZoomPixelRatioVisibilityRatioSpringStiffness%ClickTimeThreshold%clickDistThresholdZoomPerClickZoomPerSecond%maxImageCacheCountMinPixelRatioOnClientOpenOnClientErrorOnClientIgnore-OnClientAnimationStart)OnClientAnimationEnd#OnClientAnimationMouseNavEnabledSourceUrl{ id = , anchor =  }, point = , placement = , rect = controlsoverlaysxmlPathprefixUrl)system.web/sanitizer	MaskKValidate Type and/or Mask is invalid!ClipboardText�Your browser security settings don't permit the automatic execution of paste operations. Please use the keyboard shortcut Ctrl+V instead.MaskType'MessageValidatorTip'ErrorTooltipEnabled)ErrorTooltipCssClass!ClipboardEnabledAutoComplete%ClearTextOnInvalid#AutoCompleteValueFilteredInputDirectionPromptCharOnFocusCssClassMaskedEditFocus#OnInvalidCssClassMaskedEditErrorUserDateFormatUserTimeFormat)ClearMaskOnLostfocusCultureName'OverridePageCulture-CultureDatePlaceholder-CultureTimePlaceholder3CultureDecimalPlaceholder7CultureThousandsPlaceholder#CultureDateFormatACultureCurrencySymbolPlaceholder-CultureAMPMPlaceholderAcceptAmPmAcceptNegative%OnFocusCssNegative/MaskedEditFocusNegative#OnBlurCssNegative-MaskedEditBlurNegativeDisplayMoney?The Century must have 4 digits.99/99/999999/9999/999999/99/9999/99/9999:99:9999:99'99/99/9999 99:99:99!99/99/9999 99:99'99/9999/99 99:99:99!99/9999/99 99:99'9999/99/99 99:99:99!9999/99/99 99:99#99/99/99 99:99:9999/99/99 99:99OKM ajax__htmleditor_popup_confirmbutton 
CancelK ajax__htmleditor_popup_confirmbutton_self2URL200px
Target105pxNew
_blankCurrent
Parent_parentTop	_topurl
targetdefaultTarget;ConfirmButtonExtenderOnSubmitYUnable to find specified ModalPopupExtender.��ConfirmButton and the ModalPopupExtender specified by its DisplayModalPopupID must specify the same TargetControlID.��Specified ModalPopupExtender must set at least OkControlID and/or CancelControlID.��Specified ModalPopupExtender may not set OnOkScript or OnCancelScript.)_CBE_MPE_PlaceholderConfirmTextOnClientCancel'ConfirmOnFormSubmit'DisplayModalPopupIDPostBackScript
button+BalloonPopupControlID%DisplayOnMouseOverDisplayOnFocusDisplayOnClickBalloonSizeUseShadowCustomClassName;Must pass CustomCssUrl value.AMust pass CustomClassName value.customCssUrlmediaallfileUploadcontrolIdpostedFile~!~!HorizontalOffsetHorizontalSideVerticalOffsetVerticalSide)ScrollEffectDurationUseAnimation��AlwaysVisibleControlExtender on '{0}' cannot have a negative VerticalOffset value��AlwaysVisibleControlExtender on '{0}' cannot have a negative HorizontalOffset value��AlwaysVisibleControlExtender on '{0}' must have a positive ScrollEffectDurationATextBoxWatermarkExtenderOnSubmitWatermarkText#WatermarkCssClassCurrentRatingYCurrentRating must be greater than MaxRatingGMaxRating must be greater than zero_RatingExtender%javascript:void(0))text-decoration:none_Atitle
_Star_float	leftParentElementIDPositioningModeReparentChallengeScripted_align_righted_indent_moreed_color_fgOpacityTrackPositionRoundedmTabPanelCollection can only contain TabPanel controls.ShowInnerRailInnerRailStyle)EnableInnerRangeDragEnableRailClickIsReadOnly!EnableMouseWheelIncrement1MultiHandleSliderTargets)ShowHandleHoverStyle'ShowHandleDragStyle/HandleAnimationDurationOnClientLoad#OnClientDragStartOnClientDragOnClientDragEnd)OnClientValueChanged'ed_format_paragraph
writerFireFoxMozilla-moz-inline-box+ComboBox.ComboBox.cssk(<%=)\s*(WebResource\(")(?<resourceName>.+)\s*("\)%>)<style></style>OnUpdatingOnUpdated+AnimationTargetScriptTargetScript$get('{0}')StartRatingInitial RatingMaximum RatingRealOnlyRead-onlyAlignmentSwitch AlignDirection!Switch DirectionRatingAlignYAjaxControlToolkit.Properties.Resources.NET4#E_NoScriptManagerISessionStateOutOfProcessNotSupported!TargetButtonUpID%TargetButtonDownIDServiceUpPathServiceUpMethodServiceDownPath#ServiceDownMethod	StepRefValuesESys.Extended.UI.maskededitextendered_htmled_format_bold~+HTMLEditor.Editor.css'MinimumPrefixLength%CompletionInterval%CompletionSetCount/CompletionListElementIDServiceMethodServicePath-CompletionListCssClass5CompletionListItemCssClassKCompletionListHighlightedItemCssClassEnableCaching'DelimiterCharacters!FirstRowSelectedOShowOnlyCurrentWordInCompletionListItem)OnClientItemSelected!OnClientItemOverOnClientItemOut5Can't find child tab '{0}'ActiveTabIndexregions	c{0}��<div style='float:left;padding:2px;color:{3}; background-color:{4};{5};height:20px;' {0}='{1}'>{2}</div>�<a style='padding:2px;border-top:thin white inset;border-left:thin white inset; border-right:thin white inset;' href='#'>{0}</a>{0}{border-left:thin white outset;border-right:thin white outset;	h{0}	t{0}��<div style="padding:2px;width:{7};height:{8}">

                <div style='text-align:center;color:{0}; background-color:{1};border-left:thin white outset; border-right:thin white outset;height:20px;'>{2}</div>

                <div style='color:{3}; background-color:{4};border-left:thin white outset; border-right:thin white outset;height:24px;text-align:left;'>{5}</div>

                <div style='clear:both;text-align:left;border-left:thin white outset; border-bottom:thin white outset; border-right:thin white outset;background-color:{10};height:{11}; padding:8px; overflow:{12};' {9}='0'>{6}</div>

            </div>visible�5<div style='display:inline-block;padding:2px;'>

                    <div style='color:{0}; background-color:{1};border-left:thin white outset; border-right:thin white outset;'>{2}</div>

                    <div style="text-align:center;border-left:thin white outset; border-bottom:thin white outset; border-right:thin white outset;" {3}='0'>

        <a href='#'>Add New Tab</a></div>

                </div>#addtab
region_content_header9TabPanels must have IDs set.!Add new TabPanel	TabsActiveTabRemove TabPanel'HideOverflowContentOnAddTabPanelAdd Tab Panel!OnRemoveTabPanel!Remove Tab PanelIHide overflow content at design-timevalue1OnClientActiveTabChangedqVerticalStripWidth must be set in pixels only, or Empty.aTabContainer cannot have children of type '{0}'.ajax__tab_xpTabState_bodyajax__tab_body!ajax__tab_headerrtlfloat:leftfloat:right)_headerSpannerHeight_verticalright_bottom!activeTabChanged#tabStripPlacement3useVerticalStripPlacementonDemandAllowReorder!BoundFieldValues	_rblDataKeyNameDataKeysArray'DragHandleAlignmentEditItemIndex#PostBackOnReorderSortOrderField?WebUtilControls.DragDropList.jsShowInsertItem{0}_{1}_~Arg~_'_~Arg~_'_~Success~_'_~Context~_'_~Error~__~Context~__dItemEx__drop{1}{0}__dih{0}Unknown valueitemType3{0} >= {1} AND {0} <= {2}	 ASC%Failed to reorder.5Couldn't find sort field '!' in bound data.visibility	_dat1px solid black
Update
INSERT
UPDATE	EDIT
DELETE
CANCEL��Can't reorder data source.  It is not a DataSource and does not implement IList.reorder!ed_align_justifyed_copy3ClearContentsDuringUpdate1PopulateTriggerControlIDmServiceMethod can not be set if a CustomScript is set.UpdatingCssCustomScriptmCustomScript can not be set if a ServiceMethod is set.UCustomScript or ServiceMethod must be set.#DropDownControlID)HighlightBorderColor%HighlightBackColor%DropArrowBackColor#DropArrowImageUrlDropArrowWidthOnClientPopup
parentAParent Accordion cannot be null.ANo AccordionPane at position {0}IExpected an array of AccordionPanes.array=Cannot copy into a null array.aArray is not large enough for the AccordionPanes��Enumeration can't continue because the collection has been modified.ImageWidthImageHeight#UncheckedImageUrlCheckedImageUrl3DisabledUncheckedImageUrl/DisabledCheckedImageUrl'CheckedImageOverUrl+UncheckedImageOverUrl7UncheckedImageAlternateText3CheckedImageAlternateText;CheckedImageOverAlternateText?UncheckedImageOverAlternateText/PreferredPasswordLength1MinimumNumericCharacters%HelpHandleCssClass%HelpHandlePosition#HelpStatusLabelID/MinimumSymbolCharactersGRequiresUpperAndLowerCaseCharactersTextCssClass#BarBorderCssClass)BarIndicatorCssClassPrefixTextStrength: DisplayPosition+StrengthIndicatorType+CalculationWeightings��There must be 4 Calculation Weighting items which must total 1001TextStrengthDescriptions�IInvalid property specification for TextStrengthDescriptions property. Must be a string delimited with '{0}', contain a minimum of {1} entries, and a maximum of {2}.StrengthStyles�-Invalid property specification for TextStrengthDescriptionStyles property. Must match the number of entries for the TextStrengthDescriptions property.5MinimumLowerCaseCharacters5MinimumUpperCaseCharactersed_redoed_list_numed_linkFilterTypeFilterModeValidCharsInvalidCharsFilterInterval��If FilterTypes.Custom is specified, please provide a value for ValidChars or InvalidChars#CollapseControlIDExpandControlIDAutoCollapseAutoExpandCollapseHeightExpandedSizeScrollContents!SuppressPostBackCollapsedCollapsedTextExpandedTextTextLabelIDExpandedImageCollapsedImageImageControlIDExpandDirection��If CollapsedText or ExpandedText is set, TextLabelID must also be set.ParentControlIDCategoryPromptTextPromptValueEmptyTextEmptyValueLoadingText:::'knownCategoryValues^[^/'\*]*$document#documentHierarchy;knownCategoryValuesDictionarycategory)inputValidationRegex7Invalid characters present./{0}[(@name and @value='{1}') or (@name='{1}' and not(@value))]defaultoptionTitle{0}_header{0}_content�O8�I�G�G/��!�j1�8V�6N5�z\V4��?_�
:�`�,�0���L���(�L���0�x�������H�L���D�l��t�����������������������h�����l���D���p���������������<ExtenderControlFeaturesPresent ����         ��(��(((��� ��� �0�		�	�
	����
����������	��� �� �� ��������   �  �� � �E �� � u �! � � �%E �% �(   ��
 �)�-	 ���) �1(�1  ( �5 ���1 �1 �1  �� I �9
 ���=
 ���� �A(��	�E�	�E�5���I �M �M
 �E�
 �E�5 �Q ��(�M
(�E�
(�E�5 �  ���(�
T�5��U	�E�(
 �E�(  1
(�E�(T �YT	 �]�a] ] ](]
�e�5�4 �4 �5 I �i�m �m �� �q
 ���=�5 �� � 00    (�5(�
 ���� ���� ��  �, �, ����(�,(��x�e������e����u��y�e��y�A�a4
�������������5�5�5��������������}����5��}��u��y� � ��	�����������  ��	�����(��	������	������	���� �� �� ��(��(�� �� ��(�� ��(�� ������ �� �� �� ��(�� �� ��(��(�� ��(�� ��(�� ���	 �� ��(�� � � �� ��(�(�� � �_rli���� �� ��	 ���1  �� I(�� ��	 ��(��
�����P�D �D���� 
	���� ����������	�E��
 �E��
(�E�� �Y�5 �5 �5�, ��
 �)���- �)��System.Web.UI.Design.WebControlToolboxItem, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a�<�@ �p �p(�p�� �( �(
 ������((�(�H �H �� �d(�d�M�h�M �l �l(�l�l�p�t�x�|������
 ����� ����������	�E@	 �E@
 �E@	(�E@�L���� ��  �� �)�� �� �� �� ������(��(��� ��<table cellspacing=0 cellpadding=0 border=0 style="display:inline-block">

                <tr>

                    <td nowrap align=center valign=middle style="color:{0}; background-color:{1}; ">{2}</td>

                </tr>

                <tr>

                    <td style="vertical-align:top;" {3}='0'>{4}</td>

                </tr>

          </table>�f

                <table cellspacing=0 cellpadding=0 border=0 style="display:inline-block;border:outset white 1px;">

                <tr>

                    <td nowrap align=center valign=middle style="background-color:{6}; "><span style="font:messagebox;color:{5}"><b>{8}</b> - {7}</span></td>

                </tr>               

                <tr>                

                <td>

                  <table cellspacing=0 cellpadding=2 border=0 style="margin:2px;border:solid 1px buttonface">

                    <tr style="font:messagebox;background-color:lightblue;color:black">

                      <td style="border:solid 1px buttonshadow">

                        &nbsp;{0}&nbsp;&nbsp;&nbsp;

                      </td>

                    </tr>

                    <tr style="{1}" height=100%>

                      <td style="{2}">

                        <div style="width:100%;height:100%" {3}='0'>{4}</div>

                      </td>

                    </tr>

                  </table>

                </td>

              </tr></table>���( �4 �� �� �� �� �� ��(�(�4(��(��� ]����$ �$ ���� ���<�@ T T(T �� �� x x
 ��x��(��(x �5 �� �� �$ �$
 ���� ���� �x �x(��(�$
(����(�x������	���� ���� ��  �� �� � � � � �� �� ������(��((��(�(�(�� �� ��(�� ��
 ����  �)�- �)�l�d �d �d �l(�d(�l�H �H ��x_!ItemCount	���\ ���\�� ���D�P�������� �D �P �� �� �� �X�,] �� �� �� �\���\(�D(�P(��(�� ��� ]�� �� ]� ��5 
 
 �  � (
(� ��	 �5�� �� ��(������ �� ��(��(������ �T �T(�T��� � � �� ��(�(����  �)�- �)
 ���
 �u���u�� �u������u
(�����	�����e
 ����	 �e�������5
(����	(�e ��� ��� �*_TSM_CombinedScripts_"_TSM_HiddenField_
�e���	
�e���t
�e���
�	�	��	�
��	�t�� � ��	����	���� � ��!�����%������������(� �� �� �� �� ��(���� �� �� �< �<(��(�<�� � �� �� ��  (�����i�)�-�1�5 �� � � �� �� �� �� � �   �9 �= �= �� � �) �- �1 �5 ���� ��(�(��(��(�((�9(�=(��(�(�i(�)(�-(�1(�5���� �� ��(���$�� �A �A(�A � �(� �)I�-�`	�E��y �D
 �E�� �E�� �E y�M
(�E��(�E�X�` �� �)�-	 ���)�p�4 �4 �� �� �� �� ��
 ����(���� ����	���I ���I �� �����I(��\9L$CAN?0123456789� �M  �(��|� �Q �Q �� �� �(�Q(��$WebUIValidation.js,ValidatorIncludeScript�"

var Page_ValidationActive = false;

if (typeof(ValidatorOnLoad) == "function") {

    ValidatorOnLoad();

}



function ValidatorOnSubmit() {

    if (Page_ValidationActive) {

        return ValidatorCommonOnSubmit();

    }

    else {

        return true;

    }

}


e,�Q
Q(�Q�Me�e,Q	Q�� �H ��(�H(��	����	����U  
 ����
 ���(
(����
(����`�d�� �p �p �| �| �t �t �x �x �� ��(�p(�|(�t(�x(���Y�� 6ExtenderBase.BaseScripts.jsBExtenderBase.BaseScripts.debug.js �� �� �< �< �� ����(��(�<(����$ �$ �$ �� �� ���� �!�(�$� �@ �@ � �(�@(��X �X �X(�XWatermarkText"WatermarkCssClass�8���]�H �] �] �H �H �@ �D(�](�H �D
 �)�D�-�T�p�t�, �, �,(�, �5 ��(�� �� ��
 �E�L �E�L(��
(�E�L1 �](1(�]��� ���I�����I�����a�5 ��(���e � �e �e(�e�� �<a style='padding:2px;border-top:thin white inset;border-left:thin white inset; border-right:thin white inset;' href='#'>{0}</a>{0}��<div style='float:left;padding:2px;color:{3}; background-color:{4};{5};height:20px;' {0}='{1}'>{2}</div>��<div style="padding:2px;width:{7};height:{8}">

                <div style='text-align:center;color:{0}; background-color:{1};border-left:thin white outset; border-right:thin white outset;height:20px;'>{2}</div>

                <div style='color:{3}; background-color:{4};border-left:thin white outset; border-right:thin white outset;height:24px;text-align:left;'>{5}</div>

                <div style='clear:both;text-align:left;border-left:thin white outset; border-bottom:thin white outset; border-right:thin white outset;background-color:{10};height:{11}; padding:8px; overflow:{12};' {9}='0'>{6}</div>

            </div>�4<div style='display:inline-block;padding:2px;'>

                    <div style='color:{0}; background-color:{1};border-left:thin white outset; border-right:thin white outset;'>{2}</div>

                    <div style="text-align:center;border-left:thin white outset; border-bottom:thin white outset; border-right:thin white outset;" {3}='0'>

        <a href='#'>Add New Tab</a></div>

                </div>#addtab � ] �����i���i] �m	��5(�� ��� �� �� �� �� �� �5 (��(��(�� �$ �$�$(�$�, �,(�,�( �((�( �0_~Arg~__~Context~__~Success~__~Error~_ ���0 ���( ���,��	���8�4 �q �� �u �U �� �� �� �� �x �8 �8������ �� �5 ����  �y ���� �q�� Q�5�5  �0 �0	�5�5 �, �0���q�� �0���q��  1��
 ���}�Q	 �������0���(���,(�q(��(�u(�U(��(��(�x(�8�8�< �| �� �� �� �� �� �� �� ��  
 ����(��(��( �P ��(��	 �,�XImageWidthImageHeight"UncheckedImageUrlCheckedImageUrl2DisabledUncheckedImageUrl.DisabledCheckedImageUrl&CheckedImageOverUrl*UncheckedImageOverUrl6UncheckedImageAlternateText2CheckedImageAlternateText:CheckedImageOverAlternateText>UncheckedImageOverAlternateTextTextCssClass"BarBorderCssClass(BarIndicatorCssClass*StrengthIndicatorTypeDisplayPositionPrefixText0TextStrengthDescriptionsStrengthStyles
;.PreferredPasswordLength0MinimumNumericCharacters.MinimumSymbolCharactersFRequiresUpperAndLowerCaseCharacters4MinimumLowerCaseCharacters4MinimumUpperCaseCharacters$HelpHandleCssClass$HelpHandlePosition"HelpStatusLabelID*CalculationWeightingsStrength:  �< �< �@ �@(�<(�@ �p �p �X �X(�p(�X �� ��(����������������� �� �� �� �퀠$��$RSA1�+���ȅF~�6t�ݒ��2�/�`k�`����7��_;�
�`R���R�JA���S�<��%�mm�r�H����{ȃԡ�^��B��8^�j�"� ^������c��GG�U��6�� ��	 ����� �
E�� �	��  
����� �
�EE �
�i�	�%�5	Extenders?:AjaxControlToolkit.Design.ExtenderPropertiesTypeDescriptor�5� E� �5 ��	 �����E�-!��5���-�EE� �
 
 �E��
�= �
�i9���=�����i���������
�	�
�Y���Y���������������� ���������� �a�a������������ 	���a���a�a�m
�a�������������a�������������� � ���H	SlideShowSlideShowServicePathSlideShowServiceMethod
UseContextKeyxsSystem.Web.UI.WebControls.WebControl, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a!�ExtenderBase.BaseScripts.js �Y ��� �����M�5�5�5���=
���=�}����
 ��
����,'AjaxControlToolkit.CommonToolkitScriptse5Sys.Extended.UI.HTMLEditor.ToolbarButton.CommonButton*HTMLEditor.Toolbar_buttons.CommonButton.js�E��E�5  �% �� �� ��
preservePlace$ajax__htmleditor_toolbar_button
BehavioractiveModesIdsc4Sys.Extended.UI.HTMLEditor.ToolbarButton.ImageButton)HTMLEditor.Toolbar_buttons.ImageButton.js����5� �� ��! ��
Appearance	normalSrc
hoverSrcdownSrc	activeSrcw>Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeImageButton3HTMLEditor.Toolbar_buttons.DesignModeImageButton.jsq;Sys.Extended.UI.HTMLEditor.ToolbarButton.EditorToggleButton0HTMLEditor.Toolbar_buttons.EditorToggleButton.jsg6Sys.Extended.UI.HTMLEditor.ToolbarButton.StrikeThrough+HTMLEditor.Toolbar_buttons.StrikeThrough.jsG'Sys.Extended.UI.HTMLEditor.Popups.PopupHTMLEditor.Popups.Popup.js�5�5T�����E�(X �� ����������
behaviorautoDimensionsinitialContentcssPathW/Sys.Extended.UI.HTMLEditor.Popups.AttachedPopup"HTMLEditor.Popups.AttachedPopup.jsg7Sys.Extended.UI.HTMLEditor.Popups.AttachedTemplatePopup*HTMLEditor.Popups.AttachedTemplatePopup.js�5�U+&ajax__htmleditor_attachedpopup_default �� ��[1Sys.Extended.UI.HTMLEditor.Popups.BaseColorsPopup$HTMLEditor.Popups.BaseColorsPopup.js �� �1 �� �5�-�1�5�U
������
�4�4�4�4

����	�e�5   �5�5���iI
�m�m�m�m	�q�=.)Replaced by a call to ScriptObjectBuilder ��	��
 ����
��u�����$Use GetPropertyValue<V> instead$Use SetPropertyValue<V> instead
id����WARNING: ProfileBindings are disabled for this Toolkit release pending technical issues.  We hope to re-enable this in an upcoming releaseytSystem.Web.UI.WebControls.HiddenField, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
Animations    �e ����	 �������5�5������	 �����System.ComponentModel.Design.MultilineStringEditor, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3auSystem.Drawing.Design.UITypeEditor, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a~ySystem.ComponentModel.MultilineStringConverter, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089/*AjaxControlToolkit.DynamicPopulateExtenderdynamicControlIDdynamicContextKeydynamicServicePath,'AjaxControlToolkit.ServicePathConverterdynamicServiceMethodcacheDynamicResultsE!Sys.Extended.UI.HoverMenuBehaviorHoverMenu.HoverMenuBehavior.js% AjaxControlToolkit.HoverExtender% AjaxControlToolkit.PopupExtender)$AjaxControlToolkit.AnimationExtenderidSystem.Web.UI.Control, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a��|System.Web.UI.Design.WebControlToolboxItem, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aA$AjaxControlToolkit.HoverMenuExtenderHoverMenu.HoverMenu.ico=8AjaxControlToolkit.HoverMenuDesigner, AjaxControlToolkit
�,popupElement3U)AjaxControlToolkit.HoverMenuPopupPositiononShow�onHide�y�������������e������e����e��y�y�u��y	�y ����y ����y 	 ���	 �5k����t�������d��E��5�y���yuh��`�5���������y����}�
���� ����� �m�5�!��5�!�!���������e	 ���
��%  �� .����e8��a�`���e��������������������������	��	�1�	����	�1��������� ��1�
 �1	 �9�9�E���1��D�����������������������9����9���=
 �A�9�E
 ��b���������������l���e�����9��9���9 �M����	�������������� �Q  �YT
AllowMultiple  �Common.Common.jsD?AjaxControlToolkit.ValidatorCalloutDesigner, AjaxControlToolkitlgSystem.Web.UI.IValidator, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a*%ValidatorCallout.ValidatorCallout.cssZ(Sys.Extended.UI.ValidatorCalloutBehavior,ValidatorCallout.ValidatorCalloutBehavior.jsV+AjaxControlToolkit.ValidatorCalloutExtender%ValidatorCallout.ValidatorCallout.ico
�
��ewarningIconImageUrl
closeImageUrl
cssClasshighlightCssClass
popupPosition5U+AjaxControlToolkit.ValidatorCalloutPosition=8Indicates where you want the ValidatorCallout displayed.smSystem.Web.UI.WebControls.Unit, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
width����0FAAjaxControlToolkit.PagingBulletedListDesigner, AjaxControlToolkit`*Sys.Extended.UI.PagingBulletedListBehavior0PagingBulletedList.PagingBulletedListBehavior.jszuSystem.Web.UI.WebControls.BulletedList, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\-AjaxControlToolkit.PagingBulletedListExtender)PagingBulletedList.PagingBulletedList.ico��
���� - 94AjaxControlToolkit.NoBotDesigner, AjaxControlToolkit!GenerateChallengeAndResponse-AjaxControlToolkit.NoBotNoBot.NoBot.ico�e��  ��
 
 �i
�����D	���� �u������������	���� �m ��
	 ����������	 ��/��������������������

����������������e5Sys.Extended.UI.HTMLEditor.ToolbarButton.SelectButton*HTMLEditor.Toolbar_buttons.SelectButton.js�E���U�U�U��k8Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveAlignment-HTMLEditor.Toolbar_buttons.RemoveAlignment.jse5Sys.Extended.UI.HTMLEditor.ToolbarButton.MethodButton*HTMLEditor.Toolbar_buttons.MethodButton.js_2Sys.Extended.UI.HTMLEditor.ToolbarButton.PasteText'HTMLEditor.Toolbar_buttons.PasteText.jsy?Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeSelectButton4HTMLEditor.Toolbar_buttons.DesignModeSelectButton.js]1Sys.Extended.UI.HTMLEditor.ToolbarButton.FontName&HTMLEditor.Toolbar_buttons.FontName.jsS,Sys.Extended.UI.HTMLEditor.ToolbarButton.Cut!HTMLEditor.Toolbar_buttons.Cut.jsi7Sys.Extended.UI.HTMLEditor.ToolbarButton.BackColorClear,HTMLEditor.Toolbar_buttons.BackColorClear.js_3Sys.Extended.UI.HTMLEditor.Popups.PopupCommonButton&HTMLEditor.Popups.PopupCommonButton.js	nameY0Sys.Extended.UI.HTMLEditor.Popups.PopupBoxButton#HTMLEditor.Popups.PopupBoxButton.jsY0Sys.Extended.UI.HTMLEditor.Popups.PopupBGIButton#HTMLEditor.Popups.PopupBGIButton.js �} ���U�-�1�5�y�M�(#AjaxControlToolkit.AnimationScriptsE!Sys.Extended.UI.AccordionBehaviorAccordion.AccordionBehavior.jsE@AjaxControlToolkit.AccordionExtenderDesigner, AjaxControlToolkit!AjaxControlToolkit.Accordion
�p���%%UAjaxControlToolkit.AutoSize�requireOpenedPanesuppressHeaderPostbacks!Twitter.Twitter_resource.cssTChildrenAsProperties'"AjaxControlToolkit.TwitterDesigner������������(�( ���� ��������������������������������

�� ���Profile/*Twitter Screen Name used when Mode=ProfileSearchTwitter Caption
Twitter TitleTwitter Profile Image Url?:Enable get live content from twitter server at design time����System.Web.UI.WebControls.ListViewItem, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35��|System.Web.UI.WebControls.ListView, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35AjaxControlToolkit.Twitter�y�y���
�U���U�U�U���U�����U�U�U�U���U��	Item ��N$Sys.Extended.UI.PopupControlBehavior$PopupControl.PopupControlBehavior.js@;AjaxControlToolkit.PopupControlDesigner, AjaxControlToolkitJ'AjaxControlToolkit.PopupControlExtenderPopupControl.PopupControl.ico�h �5
�l6U,AjaxControlToolkit.PopupControlPopupPosition��.vSystem.Web.AspNetHostingPermissionAttribute, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089��TUrSystem.Web.AspNetHostingPermissionLevel, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089Level��Ma3Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveLink(HTMLEditor.Toolbar_buttons.RemoveLink.jsi7Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColorClear,HTMLEditor.Toolbar_buttons.ForeColorClear.js�HTMLEditor.HTMLEditor.js���� ��������5'���������E����Eu�!��	�%E�%E@AjaxControlToolkit.AnimationExtenderDesigner, AjaxControlToolkitO+Sys.Extended.UI.Animation.AnimationBehaviorAnimation.AnimationBehavior.jsA$AjaxControlToolkit.AnimationExtenderAnimation.Animation.ico_2Sys.Extended.UI.HTMLEditor.ToolbarButton.SubScript'HTMLEditor.Toolbar_buttons.SubScript.jse5Sys.Extended.UI.HTMLEditor.ToolbarButton.RemoveStyles*HTMLEditor.Toolbar_buttons.RemoveStyles.js_2Sys.Extended.UI.HTMLEditor.ToolbarButton.PasteWord'HTMLEditor.Toolbar_buttons.PasteWord.jsW.Sys.Extended.UI.HTMLEditor.ToolbarButton.Paste#HTMLEditor.Toolbar_buttons.Paste.jsY/Sys.Extended.UI.HTMLEditor.ToolbarButton.Italic$HTMLEditor.Toolbar_buttons.Italic.js_2Sys.Extended.UI.HTMLEditor.ToolbarButton.BoxButton'HTMLEditor.Toolbar_buttons.BoxButton.jss<Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignModeBoxButton1HTMLEditor.Toolbar_buttons.DesignModeBoxButton.js="Sys.Extended.UI.HTMLEditor.ToolbarHTMLEditor.Toolbar.js�E@ �5 ��@
alwaysVisible	buttonIds.)Folder used for toolbar's buttons' images �%���Q&T
AllowMultipleT	Inherited�Common.DateTime.js=Dynamic PopulateDynamicServicePathDynamicServiceMethod��� �� y�� �� �� �����(�����(��	�4�� ���� �� ��
����]�i
�,]�i]�i �
�,�i]��( �(���(
�(��faAjaxControlToolkit.ReorderListDesigner+ReorderListDesignerActionList+ReorderListViewTypeConverter ��O!Sys.Extended.UI.DraggableListItem(ReorderList.DraggableListItemBehavior.js'"AjaxControlToolkit.ReorderListItemhandleMHSets the ID of the control that is bound to the location of this handle.idSets the style of the handle associated with the MultiHandleSliderTarget, if custom styles are used.?:Sets the number of decimal places to store with the value.e`Sets the number of pixels to offset the width of the handle, for handles with transparent space.c4Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyLeft)HTMLEditor.Toolbar_buttons.JustifyLeft.js��CSys.Extended.UI.HTMLEditor.ToolbarButton.DesignModePopupImageButton8HTMLEditor.Toolbar_buttons.DesignModePopupImageButton.jsT]1Sys.Extended.UI.HTMLEditor.ToolbarButton.Selector&HTMLEditor.Toolbar_buttons.Selector.js�\g6Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorSelector+HTMLEditor.Toolbar_buttons.ColorSelector.js��o:Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColorSelector/HTMLEditor.Toolbar_buttons.ForeColorSelector.jsi7Sys.Extended.UI.HTMLEditor.ToolbarButton.DecreaseIndent,HTMLEditor.Toolbar_buttons.DecreaseIndent.js(#AjaxControlToolkit.GravatarDesigner1,<{0}:Gravatar runat="server"></{0}:Gravatar>-$AjaxControlToolkit.ScriptControlBase0'AjaxControlToolkit.CommonToolkitScripts6AjaxControlToolkit.GravatarGravatar.Gravatar.ico �
 ��	�����  �Account email.
emailImage size.	size*%Image, that will be shown by default.defaultImage'"Behavior, that will be by default.
Image rating.rating�!snSystem.Web.UI.WebControls.Panel, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a�Compat.Timer.Timer.js<7AjaxControlToolkit.CalendarDesigner, AjaxControlToolkit0'AjaxControlToolkit.CommonToolkitScripts+"AjaxControlToolkit.DateTimeScripts) AjaxControlToolkit.PopupExtender,#AjaxControlToolkit.AnimationScripts,#AjaxControlToolkit.ThreadingScriptsupSystem.Web.UI.WebControls.TextBox, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a#Calendar.Calendar_resource.cssB Sys.Extended.UI.CalendarBehaviorCalendar.CalendarBehavior.js>#AjaxControlToolkit.CalendarExtenderCalendar.Calendar.ico
��
�$

���������!��������������������
�x
����dformatMMMM d, yyyytodaysDateFormat
MMMM, yyyydaysModeTitleFormat	clearTimeenabled
animated��UwSystem.Web.UI.WebControls.FirstDayOfWeek, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3afirstDayOfWeekbutton-U#AjaxControlToolkit.CalendarPositionSNIndicates where you want the calendar displayed, bottom or top of the textbox.selectedDate0U&AjaxControlToolkit.CalendarDefaultViewdefaultView83Default view of the calendar when it first pops up.showing
shownhidinghiddendateSelectionChanged	startDateendDateC>AjaxControlToolkit.AsyncFileUploadDesigner, AjaxControlToolkitGSys.Extended.UI.AsyncFileUpload"AsyncFileUpload.AsyncFileUpload.js

�������������������� �9 �) ��	�������� 

�5  
�1 �9 �%
�%��	����3�U���U���������������������� �A� 
Server Events
uploadStarteduploadCompleteuploadErrorID of ThrobberzSystem.Web.UI.WebControls.WebColorConverter, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a3.Control's background color on upload complete.qgSystem.Drawing.Color, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aLime>9Control's background color when uploading is in progress.rgSystem.Drawing.Color, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aWhite0+Control's background color on upload error.pgSystem.Drawing.Color, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aRedLayoutCU9AjaxControlToolkit.AsyncFileUpload+PersistedStoreTypeEnum>U4AjaxControlToolkit.AsyncFileUpload+UploaderStyleEnum ��GSys.Extended.UI.DragDropWatcher"ReorderList.DropWatcherBehavior.js'"AjaxControlToolkit.DragDropScripts$AjaxControlToolkit.BulletedListacceptedDataTypesargReplaceStringargSuccessStringargErrorStringargContextStringcallbackCssStyledragDataType
dragModedropCueTemplatepostbackCode;"Get Next" NumericUpDown
ServiceUpPathServiceUpMethodC"Get Previous" NumericUpDownServiceDownPathServiceDownMethodrmSystem.Web.UI.ICheckBoxControl, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3au1Sys.Extended.UI.MutuallyExclusiveCheckBoxBehavior>MutuallyExclusiveCheckBox.MutuallyExclusiveCheckBoxBehavior.jsMHAjaxControlToolkit.MutuallyExclusiveCheckBoxDesigner, AjaxControlToolkitq4AjaxControlToolkit.MutuallyExclusiveCheckBoxExtender7MutuallyExclusiveCheckBox.MutuallyExclusiveCheckBox.ico/&AjaxControlToolkit.ColorPickerExtender`*Sys.Extended.UI.HtmlEditorExtenderBehavior0HtmlEditorExtender.HtmlEditorExtenderBehavior.js72HtmlEditorExtender.HtmlEditorExtender_resource.cssV%AjaxControlToolkit.HtmlEditorExtender+HtmlEditorExtender.html_editor_extender.ico2-AjaxControlToolkit.HtmlEditorExtenderDesigner�l	���l	�����l ���5�����;AjaxControlToolkit.HtmlEditorExtenderButtonCollectionEditoruSystem.Drawing.Design.UITypeEditor, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a?:Costumize visible buttons, leave empty to show all buttons_2Sys.Extended.UI.HTMLEditor.ToolbarButton.Underline'HTMLEditor.Toolbar_buttons.Underline.jss<Sys.Extended.UI.HTMLEditor.ToolbarButton.HorizontalSeparator1HTMLEditor.Toolbar_buttons.HorizontalSeparator.js�Xe5Sys.Extended.UI.HTMLEditor.ToolbarButton.BulletedList*HTMLEditor.Toolbar_buttons.BulletedList.js>!Sys.Extended.UI.HTMLEditor.EditorHTMLEditor.ModePanel.js��
����-(AjaxControlToolkit.HTMLEditor.HTMLEditorG'Sys.Extended.UI.HTMLEditor.PreviewPanelHTMLEditor.PreviewPanel.js����+�%HTMLEditor.DesignPanelEventHandler.js=8AjaxControlToolkit.DragPanelDesigner, AjaxControlToolkitC Sys.Extended.UI.FloatingBehaviorDragPanel.FloatingBehavior.jsA$AjaxControlToolkit.DragPanelExtenderDragPanel.DragPanel.ico#AjaxControlToolkit.TimerScript(�"Compat.DragDrop.DragDropScripts.js=8AjaxControlToolkit.AccordionDesigner, AjaxControlToolkit1,<{0}:Accordion runat=server></{0}:Accordion>9AjaxControlToolkit.AccordionAccordion.Accordion.ico

���\���\���\���\
��������
���������,�����5������ ���M�5��������&
�����������������\ �Q	 ���U������ ��72Length of the transition animation in milliseconds�A<Number of frames per second used in the transition animationE@Whether or not to use a fade effect in the transition animations1,Default CSS class for Accordion Pane Headers>9Default CSS class for the selected Accordion Pane Headers1,Default CSS class for Accordion Pane ContentA<Determine how the growth of the Accordion will be controlled/*Index of the AccordionPane to be displayedwrWhether or not clicking the header will close the currently opened pane (leaving all the Accordion's panes closed)e`Whether or not we suppress the client-side click handlers of any elements in the header sections-(AjaxControlToolkit.AccordionContentPanel	DatasnSystem.Web.UI.DataSourceControl, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ������(��������(���	 �] /�������a�����������������i �e �� �i
��e��i����	���� �������Q:5AjaxControlToolkit.SliderDesigner, AjaxControlToolkitSlider.Slider_resource.cssESys.Extended.UI.SliderBehavior!Slider.SliderBehavior_resource.js8!AjaxControlToolkit.SliderExtenderSlider.Slider.ico


� d��uSystem.Web.UI.Design.ImageUrlEditor, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3auSystem.Drawing.Design.UITypeEditor, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a.U$AjaxControlToolkit.SliderOrientation�KFDetermines if the slider will respond to arrow keys when it has focus.enableKeyboard�.��System.Security.Permissions.SecurityPermissionAttribute, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089��TUSystem.Security.Permissions.SecurityPermissionFlag, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089FlagsA<<{0}:SeadragonControl runat="server"></{0}:SeadragonControl> � �� �� ��defaultProvider	providersAjaxControlToolkit.Rating<Sys.Extended.UI.RatingBehaviorRating.RatingBehavior.js�%_isServerControl>9AjaxControlToolkit.ModalPopupDesigner, AjaxControlToolkitH"Sys.Extended.UI.ModalPopupBehavior ModalPopup.ModalPopupBehavior.js)$AjaxControlToolkit.DragPanelExtender*%AjaxControlToolkit.DropShadowExtenderD%AjaxControlToolkit.ModalPopupExtenderModalPopup.ModalPopup.ico
�T����������The drag feature on modal popup will be automatically turned on if you specify the PopupDragHandleControlID property. Setting the Drag property is a noop5U+AjaxControlToolkit.ModalPopupRepositionModerepositionModes<Sys.Extended.UI.HTMLEditor.ToolbarButton.OkCancelPopupButton1HTMLEditor.Toolbar_buttons.OkCancelPopupButton.js]1Sys.Extended.UI.HTMLEditor.ToolbarButton.InsertHR&HTMLEditor.Toolbar_buttons.InsertHR.jsm9Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedColorButton.HTMLEditor.Toolbar_buttons.FixedColorButton.js 
�u�-�1�5#000000defaultColori7Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedBackColor,HTMLEditor.Toolbar_buttons.FixedBackColor.js(�"HTMLEditor.ExecCommandEmulation.js/Dynamic PopulateServicePath
ServiceMethod9AutoCompleteServicePath
ServiceMethod
UseContextKey����E��������u.�e����u��������u�����������)����U�u�������	Name ����������0
�� �y ��������������� �� �� ��
 �� �� �&��������������� ����������������
������
������ ������ ��
 ������������������
��������������
��	����������	����
�� ����������
�1������������������������������������������
���%������
����
��� �������
�����������e���	�	�	�e���
�
�
�e���t�t�t�M����	���9���9��,
�����������9���9���9�� �� �� �� �� 	 ���� ��'�m�9��������������
 ���� ��7�������
�I�����9���
����#���t�	�t�	 �� � �%�����9�� .�����e�� ��
�� ���% ��	����� ��B=AjaxControlToolkit.RoundedCornersDesigner, AjaxControlToolkitT&Sys.Extended.UI.RoundedCornersBehavior(RoundedCorners.RoundedCornersBehavior.jsP)AjaxControlToolkit.RoundedCornersExtender!RoundedCorners.RoundedCorners.ico
��
��'UAjaxControlToolkit.BoxCornersmgSystem.Drawing.Color, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aytSystem.Web.UI.WebControls.ListControl, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aH"Sys.Extended.UI.ListSearchBehavior ListSearch.ListSearchBehavior.js0'AjaxControlToolkit.PopupControlExtender-$AjaxControlToolkit.AnimationExtender50Lets users search incrementally within ListBoxes*%AjaxControlToolkit.ListSearchDesignerD%AjaxControlToolkit.ListSearchExtenderListSearch.ListSearch.ico
��
�<
promptTextType to search83The prompt text displayed when user clicks the listpromptCssClass61CSS class applied to prompt when user clicks listpromptPosition5U+AjaxControlToolkit.ListSearchPromptPosition\WIndicates where you want the prompt message displayed when the user clicks on the list.queryTimeoutqueryPattern3U)AjaxControlToolkit.ListSearchQueryPattern83Indicates search criteria to be used to find items.
isSortedc4Sys.Extended.UI.HTMLEditor.ToolbarButton.SuperScript)HTMLEditor.Toolbar_buttons.SuperScript.jsg6Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyCenter+HTMLEditor.Toolbar_buttons.JustifyCenter.jsSelectedItem(#AjaxControlToolkit.ComboBoxDesigner �	����System.Web.UI.Design.WebControls.ListControlDataBindingHandler, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSelectedIndexChanged
SelectedValueItems1,<{0}:ComboBox runat="server"></{0}:ComboBox>*ComboBox.ComboBox.cssT	LoadOrder2Sys.Extended.UI.ComboBoxComboBox.ComboBox.js-$AjaxControlToolkit.ScriptControlBase) AjaxControlToolkit.PopupExtender0'AjaxControlToolkit.CommonToolkitScripts6AjaxControlToolkit.ComboBoxComboBox.ComboBox.ico � �e0
� �� �% �e�e �� �� ��
���� �e	�e�e��������1%AjaxControlToolkit.ComboBoxRenderModeInlineHCWhether the ComboBox will render as a block or inline HTML element.. AjaxControlToolkit.ComboBoxStyleDropDownmhWhether the ComboBox requires typed text to match an item in the list or allows new items to be created.5+AjaxControlToolkit.ComboBoxAutoCompleteModeNoneytWhether the ComboBox auto-completes typing by suggesting an item in the list or appending matches as the user types.9-AjaxControlToolkit.ComboBoxItemInsertLocationAppende`Whether a new item will be appended, prepended, or inserted ordinally into the items collection.OJWhether the ComboBox auto-completes user typing on a case-sensitive basis.
caseSensitive
Style:5The CSS class to apply to a hovered item in the list.listItemHoverCssClass
selectedIndexautoPostBack) AjaxControlToolkit.PopupExtender,#AjaxControlToolkit.ThreadingScripts ColorPicker.ColorPicker.cssK#Sys.Extended.UI.ColorPickerBehavior"ColorPicker.ColorPickerBehavior.jsG&AjaxControlToolkit.ColorPickerExtenderColorPicker.ColorPicker.ico+&AjaxControlToolkit.ColorPickerDesigner
��sample,U"AjaxControlToolkit.PositioningModeQLIndicates where you want the color picker displayed relative to the textbox.
selectedColorcolorSelectionChanged=8AjaxControlToolkit.SlideShowDesigner, AjaxControlToolkitE!Sys.Extended.UI.SlideShowBehaviorSlideShow.SlideShowBehavior.jssnSystem.Web.UI.WebControls.Image, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aA$AjaxControlToolkit.SlideShowExtenderSlideShow.SlideShow.icoslideShowServiceMethodslideShowServicePath
contextKey
useContextKeynextButtonIDplayButtonIDplayButtonTextstopButtonText�playIntervalimageTitleLabelIDimageDescriptionLabelIDpreviousButtonID	loop
autoPlayD?AjaxControlToolkit.ResizableControlDesigner, AjaxControlToolkitZ(Sys.Extended.UI.ResizableControlBehavior,ResizableControl.ResizableControlBehavior.jsV+AjaxControlToolkit.ResizableControlExtender%ResizableControl.ResizableControl.ico�A��resize
resizingresizebegin(#AjaxControlToolkit.HTMLEditor.Enumsa3Sys.Extended.UI.HTMLEditor.ToolbarButton.ModeButton(HTMLEditor.Toolbar_buttons.ModeButton.js6U,AjaxControlToolkit.HTMLEditor.ActiveModeType
activeModea3Sys.Extended.UI.HTMLEditor.ToolbarButton.DesignMode(HTMLEditor.Toolbar_buttons.DesignMode.jso:Sys.Extended.UI.HTMLEditor.ToolbarButton.BackColorSelector/HTMLEditor.Toolbar_buttons.BackColorSelector.js�HTMLEditor.Events.jsContent)$AjaxControlToolkit.HTMLEditor.EventsA$Sys.Extended.UI.HTMLEditor.EditPanelHTMLEditor.EditPanel.js�`�D
�%�E�� �m�`	����suppressTabInDesignMode	noUnicode
noScriptinitialCleanUp'"ajax__htmleditor_htmlpanel_defaultdocumentCssPathdesignPanelCssPath
imagePath_1x1imagePath_flashimagePath_mediaimagePath_anchorimagePath_placeHolder	autofocusactiveModeChangedbeforeActiveModeChangedwmSystem.Web.UI.WebControls.Unit, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a100%modePanelIds
toolbarIds72AjaxControlToolkit.HTMLEditor.ExecCommandEmulation:5AjaxControlToolkit.HTMLEditor.DesignPanelEventHandlerE&Sys.Extended.UI.HTMLEditor.DesignPanelHTMLEditor.DesignPanel.js&@T
AllowMultipleT	Inherited�`>CascadingDropDownServicePath
ServiceMethod
UseContextKey&T
AllowMultipleT	Inherited �5E&AjaxControlToolkit.MaskedEditValidatorMaskedEdit.MaskedEdit.ico

���I���I���I���I
�5�
�5�� �) �--�����p	�1�%	���%	�1�11������1�1�����I�p�p
MaskedEdit-(AjaxControlToolkit.MaskedEditTypeConvert����U-Sys.Extended.UI.HTMLEditor.ToolbarButton.Undo"HTMLEditor.Toolbar_buttons.Undo.js]1Sys.Extended.UI.HTMLEditor.ToolbarButton.FontSize&HTMLEditor.Toolbar_buttons.FontSize.js	70pxi7Sys.Extended.UI.HTMLEditor.ToolbarButton.FixedForeColor,HTMLEditor.Toolbar_buttons.FixedForeColor.js��M�	 ���%	����
��
���� ��	�����5������E$AjaxControlToolkit.TabContainerTabs.Tabs_resource.css*Sys.Extended.UI.TabPanelTabs.Tabs.js(#AjaxControlToolkit.TabPanelDesigner �=�5���9���9�5}UsSystem.Web.UI.WebControls.ScrollBars, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
scrollBars
click)UAjaxControlToolkit.OnDemandModeonDemandMode
populating	populated
updatePanelID �A��A�) �QQ���������� �S,Sys.Extended.UI.HTMLEditor.ToolbarButton.Rtl!HTMLEditor.Toolbar_buttons.Rtl.jsc4Sys.Extended.UI.HTMLEditor.ToolbarButton.PreviewMode)HTMLEditor.Toolbar_buttons.PreviewMode.jsS,Sys.Extended.UI.HTMLEditor.ToolbarButton.Ltr!HTMLEditor.Toolbar_buttons.Ltr.js:5AjaxControlToolkit.EditorDesigner, AjaxControlToolkitHTMLEditor.Editor.css;!Sys.Extended.UI.HTMLEditor.EditorHTMLEditor.Editor.js?$AjaxControlToolkit.HTMLEditor.EditorHTMLEditor.Editor.ico��!
�E�������d���<�����������$ajax__htmleditor_editor_defaultA<AjaxControlToolkit.HoverExtenderDesigner, AjaxControlToolkitASys.Extended.UI.HoverBehaviorHoverExtender.HoverBehavior.js
hoverDelayhoverScriptunhoverDelay
unhoverScriptR Sys.Extended.UI.Seadragon.ViewerSeadragon.Seadragon.Utils.jsT	LoadOrderT Sys.Extended.UI.Seadragon.ViewerSeadragon.Seadragon.Buttons.jsT	LoadOrderS Sys.Extended.UI.Seadragon.ViewerSeadragon.Seadragon.Config.jsT	LoadOrderL Sys.Extended.UI.Seadragon.ViewerSeadragon.Seadragon.jsT	LoadOrderY Sys.Extended.UI.Seadragon.Viewer#Seadragon.Seadragon.MouseTracker.jsT	LoadOrderR Sys.Extended.UI.Seadragon.ViewerSeadragon.Seadragon.Point.jsT	LoadOrderT Sys.Extended.UI.Seadragon.ViewerSeadragon.Seadragon.Strings.jsT	LoadOrderS Sys.Extended.UI.Seadragon.ViewerSeadragon.Seadragon.Drawer.jsT	LoadOrderW Sys.Extended.UI.Seadragon.Viewer!Seadragon.Seadragon.TileSource.jsT	LoadOrderU Sys.Extended.UI.Seadragon.ViewerSeadragon.Seadragon.DeepZoom.jsT	LoadOrder	Q Sys.Extended.UI.Seadragon.ViewerSeadragon.Seadragon.Rect.jsT	LoadOrder
X Sys.Extended.UI.Seadragon.Viewer"Seadragon.Seadragon.ImageLoader.jsT	LoadOrderU Sys.Extended.UI.Seadragon.ViewerSeadragon.Seadragon.Profiler.jsT	LoadOrderS Sys.Extended.UI.Seadragon.ViewerSeadragon.Seadragon.Spring.jsT	LoadOrder
U Sys.Extended.UI.Seadragon.ViewerSeadragon.Seadragon.Viewport.jsT	LoadOrderX Sys.Extended.UI.Seadragon.Viewer"Seadragon.Seadragon.DisplayRect.jsT	LoadOrder=8AjaxControlToolkit.SeadragonDesigner, AjaxControlToolkit1,<{0}:Seadragon runat=server></{0}:Seadragon>
�������( �M	�����U	�U �U�� 	  (���U
��	�����9��	�����9����,�$	���(����� �9���9��?
animationTimeshowNavigationControl?	blendTimealwaysBlendautoHideControlsimmediateRenderwrapHorizontalwrapVertical��L?minZoomDimension@maxZoomPixelRatiovisibilityRatio�@springStiffnessimageLoaderLimit�clickTimeThresholdclickDistThresholdzoomPerClick
zoomPerSecondmaxImageCacheCount
minPixelRatio	0pen
errorignoreanimationstartanimationend	animationmouseNavEnabled��%AjaxControlToolkit.SeadragonUrlEditoruSystem.Drawing.Design.UITypeEditor, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a��*AjaxControlToolkit.OverlayCollectionEditoruSystem.Drawing.Design.UITypeEditor, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a��a���>9AjaxControlToolkit.MaskedEditDesigner, AjaxControlToolkitI"Sys.Extended.UI.MaskedEditBehavior!MaskedEdit.MaskedEditValidator.jsH"Sys.Extended.UI.MaskedEditBehavior MaskedEdit.MaskedEditBehavior.jsD%AjaxControlToolkit.MaskedEditExtenderMaskedEdit.MaskedEdit.ico�p
�p
�|
�t
�x
��
���p�p����Your browser security settings don't permit the automatic execution of paste operations. Please use the keyboard shortcut Ctrl+V instead.+U!AjaxControlToolkit.MaskedEditType �e5U+AjaxControlToolkit.MaskedEditInputDirection_MaskedEditFocusMaskedEditError5U+AjaxControlToolkit.MaskedEditUserDateFormat5U+AjaxControlToolkit.MaskedEditUserTimeFormat1U'AjaxControlToolkit.MaskedEditShowSymbolMaskedEditFocusNegativeMaskedEditBlurNegativelw?Sys.Extended.UI.HTMLEditor.Popups.OkCancelAttachedTemplatePopup2HTMLEditor.Popups.OkCancelAttachedTemplatePopup.js�$�$�-�1�5Y0Sys.Extended.UI.HTMLEditor.Popups.LinkProperties#HTMLEditor.Popups.LinkProperties.js�U�U�-�1�5
_self�HTMLEditor.Enums.js�A<AjaxControlToolkit.ConfirmButtonDesigner, AjaxControlToolkitQ%Sys.Extended.UI.ConfirmButtonBehavior&ConfirmButton.confirmButtonBehavior.js|wSystem.Web.UI.WebControls.IButtonControl, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aM(AjaxControlToolkit.ConfirmButtonExtenderConfirmButton.ConfirmButton.ico �5���idisplayModalPopupID*%AjaxControlToolkit.ModalPopupExtenderpostBackScript]+Sys.Extended.UI.BalloonPopupControlBehavior,BalloonPopup.BalloonPopupExtenderBehavior.js50BalloonPopup.Rectangle.BalloonPopup_resource.css1,BalloonPopup.Cloud.BalloonPopup_resource.css@;AjaxControlToolkit.BalloonPopupDesigner, AjaxControlToolkitJ'AjaxControlToolkit.BalloonPopupExtenderBalloonPopup.BalloonPopup.ico
��
�Q�5�!����1U'AjaxControlToolkit.BalloonPopupPositionballoonPopupPosition.U$AjaxControlToolkit.BalloonPopupStyleballoonPopupStyledisplayOnMouseOverdisplayOnFocusdisplayOnClickballoonSize-U#AjaxControlToolkit.BalloonPopupSize	useShadow}UsSystem.Web.UI.WebControls.ScrollBars, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a2-Scroll bars behavior when content is overflowcustomClassName�E �m�!�E������ �q�!�q�!�����������!������HCAjaxControlToolkit.AlwaysVisibleControlDesigner, AjaxControlToolkitf,Sys.Extended.UI.AlwaysVisibleControlBehavior4AlwaysVisibleControl.AlwaysVisibleControlBehavior.jsVerticalOffset[/AjaxControlToolkit.AlwaysVisibleControlExtender&AlwaysVisibleControl.AlwaysVisible.ico
�@
�+U!AjaxControlToolkit.HorizontalSide)UAjaxControlToolkit.VerticalSide���=useAnimation����LGAjaxControlToolkit.TextBoxWatermarkExtenderDesigner, AjaxControlToolkitR(Sys.Extended.UI.TextBoxWatermarkBehavior$TextboxWatermark.TextboxWatermark.jsV+AjaxControlToolkit.TextBoxWatermarkExtender%TextboxWatermark.TextboxWatermark.ico-(<{0}:Rating runat="server"></{0}:Rating>&!AjaxControlToolkit.RatingDesigner0AjaxControlToolkit.RatingRating.Rating.ico���@�D.)True to cause a postback on rating changeRating	MaxRating
BehaviorID
ReadOnlyTagStarCssClassFilledStarCssClassEmptyStarCssClassWaitingStarCssClassRating Align~UtSystem.Web.UI.WebControls.Orientation, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aRating Direction,U"AjaxControlToolkit.RatingDirectionASys.Extended.UI.PopupBehaviorPopupExtender.PopupBehavior.jsA<AjaxControlToolkit.PopupExtenderDesigner, AjaxControlToolkit
parentElementxypositioningMode,U"AjaxControlToolkit.PositioningMode
reparent9Sys.Extended.UI.NoBotBehaviorNoBot.NoBotBehavior.jssnSystem.Web.UI.WebControls.Label, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3ae5Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyRight*HTMLEditor.Toolbar_buttons.JustifyRight.jsi7Sys.Extended.UI.HTMLEditor.ToolbarButton.IncreaseIndent,HTMLEditor.Toolbar_buttons.IncreaseIndent.jsc4Sys.Extended.UI.HTMLEditor.ToolbarButton.ColorButton)HTMLEditor.Toolbar_buttons.ColorButton.js_2Sys.Extended.UI.HTMLEditor.ToolbarButton.ForeColor'HTMLEditor.Toolbar_buttons.ForeColor.js�T	Inherited�t>9AjaxControlToolkit.DropShadowDesigner, AjaxControlToolkitH"Sys.Extended.UI.DropShadowBehavior DropShadow.DropShadowBehavior.js0'AjaxControlToolkit.CommonToolkitScripts2)AjaxControlToolkit.RoundedCornersExtender'AjaxControlToolkit.TimerScriptD%AjaxControlToolkit.DropShadowExtenderDropShadow.DropShadow.ico�?�Common.Threading.js�Animation.Animations.js\WA multi-handled slider allowing selection of multiple point values on a graphical rail.1,AjaxControlToolkit.MultiHandleSliderDesigner50MultiHandleSlider.MultiHandleSlider_resource.css])Sys.Extended.UI.MultiHandleSliderBehavior.MultiHandleSlider.MultiHandleSliderBehavior.jsY,AjaxControlToolkit.MultiHandleSliderExtender'MultiHandleSlider.MultiHandleSlider.ico
��

�E�L$The lowest value on the slider.0minimum% The highest value on the slider.100maximum-(The length of the slider rail in pixels.length_ZDetermines number of discrete locations on the slider; otherwise, the slider is continous.
stepssnDetermines if the slider will show an inner selected range rail; otherwise, it will display as a uniform rail.
showInnerRail4/Determines how the inner rail style is handled.6U,AjaxControlToolkit.MultiHandleInnerRailStyleinnerRailStyleFADetermines if the slider's orientation is horizontal or vertical.orientationzDetermines if changes to the slider's values are raised as an event when dragging; otherwise, they are raised on drag end.raiseChangeOnlyOnMouseUpc^Determines if the inner rail range can be dragged as a whole, moving both handles defining it.enableInnerRangeDragPKDetermines if clicking on the rail will detect and move the closest handle.enableRailClick@;Determines if the slider and its values can be manipulated.
isReadOnlyPKDetermines if the slider will respond to the mouse wheel when it has focus.enableMouseWheel����Determines the number of points to increment or decrement the slider using the keyboard or mousewheel; ignored if steps is used.	incrementgbThe list of controls used to bind slider handle values. These should be Label or TextBox controls.multiHandleSliderTargetsYTDetermines if the slider handles display an animation effect when changing position.enableHandleAnimationZUDetermines if the slider handles will show a style effect when they are hovered over.showHandleHoverStyle[VDetermines if the slider handles will show a style effect when they are being dragged.showHandleDragStyleGBDetermines the total duration of the animation effect, in seconds.
ף<handleAnimationDurationpkDetermines the text to display as the tooltip; {0} denotes the current handle's value in the format string.tooltipText<7The master style to apply to slider graphical elements.GBThe event raised when the slider is completely loaded on the page.	loadMHThe event raised when the user initiates a drag operation on the slider.	dragStart50The event raised when the user drags the slider.	drag50The event raised when the user drops the slider.dragEnd83The event raised when the slider changes its state.valueChangedboundControlID
decimalshandleCssClassrailCssClass��uSystem.Web.UI.Design.ImageUrlEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3auSystem.Drawing.Design.UITypeEditor, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3ahandleImageUrl_2Sys.Extended.UI.HTMLEditor.ToolbarButton.Paragraph'HTMLEditor.Toolbar_buttons.Paragraph.js�1
��	����������~UtSystem.Web.UI.WebControls.BorderStyle, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a���e������ �� ��HCAjaxControlToolkit.UpdatePanelAnimationDesigner, AjaxControlToolkit,#AjaxControlToolkit.AnimationScriptsp6Sys.Extended.UI.Animation.UpdatePanelAnimationBehavior4UpdatePanelAnimation.UpdatePanelAnimationBehavior.jsxsSystem.Web.UI.UpdatePanel, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35b/AjaxControlToolkit.UpdatePanelAnimationExtender-UpdatePanelAnimation.UpdatePanelAnimation.ico������ 
�<�@3System.Resources.Tools.StronglyTypedResourceBuilder4.0.0.0�I ��A<AjaxControlToolkit.NumericUpDownDesigner, AjaxControlToolkitQ%Sys.Extended.UI.NumericUpDownBehavior&NumericUpDown.NumericUpDownBehavior.jsM(AjaxControlToolkit.NumericUpDownExtenderNumericUpDown.NumericUpDown.ico��System.Web.UI.Design.UrlEditoruSystem.Drawing.Design.UITypeEditor, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a�?��2System.ComponentModel.Design.MultilineStringEditoruSystem.Drawing.Design.UITypeEditor, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a �a ���� �� �U�5����]1Sys.Extended.UI.HTMLEditor.ToolbarButton.HtmlMode&HTMLEditor.Toolbar_buttons.HtmlMode.jsU-Sys.Extended.UI.HTMLEditor.ToolbarButton.Bold"HTMLEditor.Toolbar_buttons.Bold.js �� ��
���@;AjaxControlToolkit.AutoCompleteDesigner, AjaxControlToolkitN$Sys.Extended.UI.AutoCompleteBehavior$AutoComplete.AutoCompleteBehavior.jsJ'AjaxControlToolkit.AutoCompleteExtenderAutoComplete.AutoComplete.icominimumPrefixLength�completionInterval
completionSetCountcompletionListElementIDxsInstead of passing in CompletionListElementID, use the default flyout and style that using the CssClass properties.
serviceMethodservicePathcompletionListCssClasscompletionListItemCssClasshighlightedItemCssClass
enableCachingdelimiterCharactersfirstRowSelected,'showOnlyCurrentWordInCompletionListItemitemSelected
itemOveritemOut��� y �� �u:������������������������
��	�5�i��i���5���� ��������
���i]	�Q�Q��Q �� � �9	 �9�i��������i�����Design*%Hide overflow content at design-time. 
��A�A�M@;AjaxControlToolkit.TabContainerDesigner, AjaxControlToolkit AjaxControlToolkit.TabPanel.Sys.Extended.UI.TabContainerTabs.Tabs.js2AjaxControlToolkit.TabContainer
Tabs.Tabs.ico�m�����
�e�e������������������	����activeTabIndexajax__tab_xp.U$AjaxControlToolkit.TabStripPlacementactiveTabChangedautoPostBackIdB=Change tab header placement vertically when value set to truea\Set width of tab strips when UseVerticalStripPlacement is set to true. Size must be in pixelxmSystem.Web.UI.WebControls.Unit, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a120px?:<{0}:SeadragonOverlay runat=server></{0}:SeadragonOverlay>6U,AjaxControlToolkit.SeadragonOverlayPlacementzSystem.ComponentModel.ExpandableObjectConverter, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089?:AjaxControlToolkit.ReorderListDesigner, AjaxControlToolkit?AjaxControlToolkit.ReorderListReorderList.ReorderList.ico�q �U
��
�����������8�9�8�8�9�8 �5+�U�����8�5�5�����9�8����1�5�5�5�����-�5�5�1�1�1�����8����]u�e�� �y	���U���y���� �� �� �� �� ��	�����������q���% �9�q ��������?���q�q�����q�q�������������9�q �q�5���q���������������	�����0 �� �����������q������	 �������q�����������q���������0�� ��������������AjaxControlToolkit.Design.TypedControlIDConverter`1[[System.Web.UI.IDataSource, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]3U)AjaxControlToolkit.ReorderHandleAlignment	 ��xoSystem.Web.UI.IDataItemContainer, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a6U,AjaxControlToolkit.ReorderListInsertLocation6U,AjaxControlToolkit.ReorderListItemLayoutType	truec4Sys.Extended.UI.HTMLEditor.ToolbarButton.JustifyFull)HTMLEditor.Toolbar_buttons.JustifyFull.jsU-Sys.Extended.UI.HTMLEditor.ToolbarButton.Copy"HTMLEditor.Toolbar_buttons.Copy.jsC>AjaxControlToolkit.DynamicPopulateDesigner, AjaxControlToolkitW'Sys.Extended.UI.DynamicPopulateBehavior*DynamicPopulate.DynamicPopulateBehavior.jsS*AjaxControlToolkit.DynamicPopulateExtender#DynamicPopulate.DynamicPopulate.icoPopulateTriggerID#DropDown.DropDown_resource.cssB Sys.Extended.UI.DropDownBehaviorDropDown.DropDownBehavior.js<7AjaxControlToolkit.DropDownDesigner, AjaxControlToolkit>#AjaxControlToolkit.DropDownExtenderDropDown.DropDown.icodropDownControlhighlightBorderColorhighlightBackgroundColordropArrowBackgroundColordropArrowImageUrldropArrowWidth
popup�5����������HCAjaxControlToolkit.ToggleButtonExtenderDesigner, AjaxControlToolkitF$Sys.Extended.UI.ToggleButtonBehaviorToggleButton.ToggleButton.jsJ'AjaxControlToolkit.ToggleButtonExtenderToggleButton.ToggleButton.icoLGAjaxControlToolkit.PasswordStrengthExtenderDesigner, AjaxControlToolkitj0Sys.Extended.UI.PasswordStrengthExtenderBehavior4PasswordStrength.PasswordStrengthExtenderBehavior.jsN#AjaxControlToolkit.PasswordStrength%PasswordStrength.PasswordStrength.ico
�<
�@
,U"AjaxControlToolkit.DisplayPosition
Strength: ,U"AjaxControlToolkit.DisplayPosition3U)AjaxControlToolkit.StrengthIndicatorTypesWRThis property has been deprecated. Please use the StrengthStyles property instead.U-Sys.Extended.UI.HTMLEditor.ToolbarButton.Redo"HTMLEditor.Toolbar_buttons.Redo.jsc4Sys.Extended.UI.HTMLEditor.ToolbarButton.OrderedList)HTMLEditor.Toolbar_buttons.OrderedList.jsa3Sys.Extended.UI.HTMLEditor.ToolbarButton.InsertLink(HTMLEditor.Toolbar_buttons.InsertLink.jsHTMLEditor.HtmlPanel.cssA$Sys.Extended.UI.HTMLEditor.HtmlPanelHTMLEditor.HtmlPanel.jsC>AjaxControlToolkit.FilteredTextBoxDesigner, AjaxControlToolkitW'Sys.Extended.UI.FilteredTextBoxBehavior*FilteredTextBox.FilteredTextBoxBehavior.js
ValidCharsS*AjaxControlToolkit.FilteredTextBoxExtender#FilteredTextBox.FilteredTextBox.ico
�p
�X(UAjaxControlToolkit.FilterTypes(UAjaxControlToolkit.FilterModesD?AjaxControlToolkit.CollapsiblePanelDesigner, AjaxControlToolkitZ(Sys.Extended.UI.CollapsiblePanelBehavior,CollapsiblePanel.CollapsiblePanelBehavior.jsCollapseControlIDV+AjaxControlToolkit.CollapsiblePanelExtender%CollapsiblePanel.CollapsiblePanel.ico
��Q<U2AjaxControlToolkit.CollapsiblePanelExpandDirectionE@AjaxControlToolkit.CascadingDropDownDesigner, AjaxControlToolkit])Sys.Extended.UI.CascadingDropDownBehavior.CascadingDropDown.CascadingDropDownBehavior.jszuSystem.Web.UI.WebControls.DropDownList, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aQ$AjaxControlToolkit.CascadingDropDown'CascadingDropDown.CascadingDropDown.ico	���e������ �� �1������������������;6<{0}:AccordionPane runat="server"></{0}:AccordionPane>= AjaxControlToolkit.AccordionPaneAccordion.Accordion.ico(#CSS class for Accordion Pane HeaderAccordion Pane Header)$CSS class for Accordion Pane ContentAccordion Pane ContentC.CascadingDropDown.CascadingDropDownBehavior.jstext/javascriptI4CascadingDropDown.CascadingDropDownBehavior.debug.jstext/javascriptA,CollapsiblePanel.CollapsiblePanelBehavior.jstext/javascriptG2CollapsiblePanel.CollapsiblePanelBehavior.debug.jstext/javascript?*FilteredTextBox.FilteredTextBoxBehavior.jstext/javascriptE0FilteredTextBox.FilteredTextBoxBehavior.debug.jstext/javascript5HTMLEditor.HtmlPanel.jsapplication/x-javascript;HTMLEditor.HtmlPanel.debug.jsapplication/x-javascript=HTMLEditor.HtmlPanel.csstext/cssTPerformSubstitutionP2HTMLEditor.Popups.OkCancelAttachedTemplatePopup.jsapplication/x-javascriptV8HTMLEditor.Popups.OkCancelAttachedTemplatePopup.debug.jsapplication/x-javascript.HTMLEditor.Images.ed_link_n.gif	image/gif.HTMLEditor.Images.ed_link_a.gif	image/gifF(HTMLEditor.Toolbar_buttons.InsertLink.jsapplication/x-javascriptL.HTMLEditor.Toolbar_buttons.InsertLink.debug.jsapplication/x-javascript2#HTMLEditor.Images.ed_list_num_n.gif	image/gif2#HTMLEditor.Images.ed_list_num_a.gif	image/gifG)HTMLEditor.Toolbar_buttons.OrderedList.jsapplication/x-javascriptM/HTMLEditor.Toolbar_buttons.OrderedList.debug.jsapplication/x-javascript.HTMLEditor.Images.ed_redo_n.gif	image/gif.HTMLEditor.Images.ed_redo_a.gif	image/gif@"HTMLEditor.Toolbar_buttons.Redo.jsapplication/x-javascriptF(HTMLEditor.Toolbar_buttons.Redo.debug.jsapplication/x-javascriptI4PasswordStrength.PasswordStrengthExtenderBehavior.jstext/javascriptO:PasswordStrength.PasswordStrengthExtenderBehavior.debug.jstext/javascript1ToggleButton.ToggleButton.jstext/javascript7"ToggleButton.ToggleButton.debug.jstext/javascript&DropDown.drop-arrow.gif	image/gifCDropDown.DropDown_resource.csstext/cssTPerformSubstitution1DropDown.DropDownBehavior.jstext/javascript7"DropDown.DropDownBehavior.debug.jstext/javascript?*DynamicPopulate.DynamicPopulateBehavior.jstext/javascriptE0DynamicPopulate.DynamicPopulateBehavior.debug.jstext/javascriptH*HTMLEditor.Popups.AttachedTemplatePopup.jsapplication/x-javascriptN0HTMLEditor.Popups.AttachedTemplatePopup.debug.jsapplication/x-javascriptP+HTMLEditor.Popups.AttachedTemplatePopup.csstext/cssTPerformSubstitution.HTMLEditor.Images.BgiButton.gif	image/gifA#HTMLEditor.Popups.PopupBoxButton.jsapplication/x-javascriptG)HTMLEditor.Popups.PopupBoxButton.debug.jsapplication/x-javascriptG)HTMLEditor.Toolbar_buttons.ColorButton.jsapplication/x-javascriptM/HTMLEditor.Toolbar_buttons.ColorButton.debug.jsapplication/x-javascript.HTMLEditor.Images.ed_copy_n.gif	image/gif.HTMLEditor.Images.ed_copy_a.gif	image/gif@"HTMLEditor.Toolbar_buttons.Copy.jsapplication/x-javascriptF(HTMLEditor.Toolbar_buttons.Copy.debug.jsapplication/x-javascript7(HTMLEditor.Images.ed_align_justify_n.gif	image/gif7(HTMLEditor.Images.ed_align_justify_a.gif	image/gifG)HTMLEditor.Toolbar_buttons.JustifyFull.jsapplication/x-javascriptM/HTMLEditor.Toolbar_buttons.JustifyFull.debug.jsapplication/x-javascript*Tabs.Tabs.jsapplication/x-javascript0Tabs.Tabs.debug.jsapplication/x-javascript;Tabs.Tabs_resource.csstext/cssTPerformSubstitution Tabs.tab-line.gif	image/gifTabs.tab.gif	image/gif Tabs.tab-left.gif	image/gif!Tabs.tab-right.gif	image/gif!Tabs.tab-hover.gif	image/gif&Tabs.tab-hover-left.gif	image/gif'Tabs.tab-hover-right.gif	image/gif"Tabs.tab-active.gif	image/gif'Tabs.tab-active-left.gif	image/gif(Tabs.tab-active-right.gif	image/gif"Tabs.tab-bottom.gif	image/gif'Tabs.tab-bottom-left.gif	image/gif(Tabs.tab-bottom-right.gif	image/gif(Tabs.tab-bottom-hover.gif	image/gif-Tabs.tab-bottom-hover-left.gif	image/gif.Tabs.tab-bottom-hover-right.gif	image/gif)Tabs.tab-bottom-active.gif	image/gif.Tabs.tab-bottom-active-left.gif	image/gif/ Tabs.tab-bottom-active-right.gif	image/gif(Tabs.tab-verticalleft.gif	image/gif-Tabs.tab-left-verticalleft.gif	image/gif.Tabs.tab-right-verticalleft.gif	image/gif.Tabs.tab-hover-verticalleft.gif	image/gif3$Tabs.tab-hover-left-verticalleft.gif	image/gif4%Tabs.tab-hover-right-verticalleft.gif	image/gif/ Tabs.tab-active-verticalleft.gif	image/gif4%Tabs.tab-active-left-verticalleft.gif	image/gif5&Tabs.tab-active-right-verticalleft.gif	image/gif)Tabs.tab-verticalright.gif	image/gif.Tabs.tab-left-verticalright.gif	image/gif/ Tabs.tab-right-verticalright.gif	image/gif/ Tabs.tab-hover-verticalright.gif	image/gif4%Tabs.tab-hover-left-verticalright.gif	image/gif5&Tabs.tab-hover-right-verticalright.gif	image/gif0!Tabs.tab-active-verticalright.gif	image/gif5&Tabs.tab-active-left-verticalright.gif	image/gif6'Tabs.tab-active-right-verticalright.gif	image/gif9$AutoComplete.AutoCompleteBehavior.jstext/javascript?*AutoComplete.AutoCompleteBehavior.debug.jstext/javascript9$PopupControl.PopupControlBehavior.jstext/javascript?*PopupControl.PopupControlBehavior.debug.jstext/javascript5&HTMLEditor.Images.ed_format_bold_n.gif	image/gif5&HTMLEditor.Images.ed_format_bold_a.gif	image/gif@"HTMLEditor.Toolbar_buttons.Bold.jsapplication/x-javascriptF(HTMLEditor.Toolbar_buttons.Bold.debug.jsapplication/x-javascriptV8HTMLEditor.Toolbar_buttons.DesignModePopupImageButton.jsapplication/x-javascript\>HTMLEditor.Toolbar_buttons.DesignModePopupImageButton.debug.jsapplication/x-javascript.HTMLEditor.Images.ed_html_n.gif	image/gif.HTMLEditor.Images.ed_html_a.gif	image/gifD&HTMLEditor.Toolbar_buttons.HtmlMode.jsapplication/x-javascriptJ,HTMLEditor.Toolbar_buttons.HtmlMode.debug.jsapplication/x-javascript;&NumericUpDown.NumericUpDownBehavior.jstext/javascriptA,NumericUpDown.NumericUpDownBehavior.debug.jstext/javascriptI4UpdatePanelAnimation.UpdatePanelAnimationBehavior.jstext/javascriptO:UpdatePanelAnimation.UpdatePanelAnimationBehavior.debug.jstext/javascript:+HTMLEditor.Images.ed_format_paragraph_n.gif	image/gif:+HTMLEditor.Images.ed_format_paragraph_a.gif	image/gifE'HTMLEditor.Toolbar_buttons.Paragraph.jsapplication/x-javascriptK-HTMLEditor.Toolbar_buttons.Paragraph.debug.jsapplication/x-javascriptZ.MultiHandleSlider.MultiHandleSliderBehavior.jstext/javascriptTPerformSubstitution`4MultiHandleSlider.MultiHandleSliderBehavior.debug.jstext/javascriptTPerformSubstitutionU0MultiHandleSlider.MultiHandleSlider_resource.csstext/cssTPerformSubstitution9,MultiHandleSlider.Images.slider_h_handle.gifimg/gif?2MultiHandleSlider.Images.slider_h_handle_hover.gifimg/gif>1MultiHandleSlider.Images.slider_h_handle_down.gifimg/gif7*MultiHandleSlider.Images.slider_h_rail.gifimg/gif=0MultiHandleSlider.Images.slider_h_rail_outer.gifimg/gif9,MultiHandleSlider.Images.slider_v_handle.gifimg/gif?2MultiHandleSlider.Images.slider_v_handle_hover.gifimg/gif>1MultiHandleSlider.Images.slider_v_handle_down.gifimg/gif7*MultiHandleSlider.Images.slider_v_rail.gifimg/gif=0MultiHandleSlider.Images.slider_v_rail_outer.gifimg/gif,Animation.Animations.jstext/javascript2Animation.Animations.debug.jstext/javascript1Common.Threading.jsapplication/x-javascript7Common.Threading.debug.jsapplication/x-javascript5 DropShadow.DropShadowBehavior.jstext/javascript;&DropShadow.DropShadowBehavior.debug.jstext/javascript5HTMLEditor.ModePanel.jsapplication/x-javascript;HTMLEditor.ModePanel.debug.jsapplication/x-javascript@"HTMLEditor.Popups.AttachedPopup.jsapplication/x-javascriptF(HTMLEditor.Popups.AttachedPopup.debug.jsapplication/x-javascriptD&HTMLEditor.Popups.PopupCommonButton.jsapplication/x-javascriptJ,HTMLEditor.Popups.PopupCommonButton.debug.jsapplication/x-javascript2#HTMLEditor.Images.ed_color_fg_n.gif	image/gif2#HTMLEditor.Images.ed_color_fg_a.gif	image/gifE'HTMLEditor.Toolbar_buttons.ForeColor.jsapplication/x-javascriptK-HTMLEditor.Toolbar_buttons.ForeColor.debug.jsapplication/x-javascript5&HTMLEditor.Images.ed_indent_more_n.gif	image/gif5&HTMLEditor.Images.ed_indent_more_a.gif	image/gifJ,HTMLEditor.Toolbar_buttons.IncreaseIndent.jsapplication/x-javascriptP2HTMLEditor.Toolbar_buttons.IncreaseIndent.debug.jsapplication/x-javascript5&HTMLEditor.Images.ed_align_right_n.gif	image/gif5&HTMLEditor.Images.ed_align_right_a.gif	image/gifH*HTMLEditor.Toolbar_buttons.JustifyRight.jsapplication/x-javascriptN0HTMLEditor.Toolbar_buttons.JustifyRight.debug.jsapplication/x-javascript2#HTMLEditor.Images.ed_selector_n.gif	image/gif2#HTMLEditor.Images.ed_selector_a.gif	image/gifD&HTMLEditor.Toolbar_buttons.Selector.jsapplication/x-javascriptJ,HTMLEditor.Toolbar_buttons.Selector.debug.jsapplication/x-javascript+NoBot.NoBotBehavior.jstext/javascript1NoBot.NoBotBehavior.debug.jstext/javascript3PopupExtender.PopupBehavior.jstext/javascript9$PopupExtender.PopupBehavior.debug.jstext/javascript9$TextboxWatermark.TextboxWatermark.jstext/javascript?*TextboxWatermark.TextboxWatermark.debug.jstext/javascriptI4AlwaysVisibleControl.AlwaysVisibleControlBehavior.jstext/javascriptO:AlwaysVisibleControl.AlwaysVisibleControlBehavior.debug.jstext/javascriptA,BalloonPopup.BalloonPopupExtenderBehavior.jstext/javascriptG2BalloonPopup.BalloonPopupExtenderBehavior.debug.jstext/javascriptU0BalloonPopup.Rectangle.BalloonPopup_resource.csstext/cssTPerformSubstitution.!BalloonPopup.Rectangle.sprite.pngimg/png.!BalloonPopup.Rectangle.sprite.gifimg/gifQ,BalloonPopup.Cloud.BalloonPopup_resource.csstext/cssTPerformSubstitution*BalloonPopup.Cloud.sprite.pngimg/png*BalloonPopup.Cloud.sprite.gifimg/gif;&ConfirmButton.confirmButtonBehavior.jstext/javascriptA,ConfirmButton.confirmButtonBehavior.debug.jstext/javascript(HTMLEditor.Enums.jstext/javascript.HTMLEditor.Enums.debug.jstext/javascriptA#HTMLEditor.Popups.LinkProperties.jsapplication/x-javascriptG)HTMLEditor.Popups.LinkProperties.debug.jsapplication/x-javascriptF(HTMLEditor.Toolbar_buttons.ModeButton.jsapplication/x-javascriptL.HTMLEditor.Toolbar_buttons.ModeButton.debug.jsapplication/x-javascript5 MaskedEdit.MaskedEditBehavior.jstext/javascript;&MaskedEdit.MaskedEditBehavior.debug.jstext/javascript6!MaskedEdit.MaskedEditValidator.jstext/javascript<'MaskedEdit.MaskedEditValidator.debug.jstext/javascript1Seadragon.Seadragon.Utils.jstext/javascript7"Seadragon.Seadragon.Utils.debug.jstext/javascript3Seadragon.Seadragon.Buttons.jstext/javascript9$Seadragon.Seadragon.Buttons.debug.jstext/javascript7"Seadragon.Seadragon.DisplayRect.jstext/javascript=(Seadragon.Seadragon.DisplayRect.debug.jstext/javascript7"Seadragon.Seadragon.ImageLoader.jstext/javascript=(Seadragon.Seadragon.ImageLoader.debug.jstext/javascript4Seadragon.Seadragon.Profiler.jstext/javascript:%Seadragon.Seadragon.Profiler.debug.jstext/javascript0Seadragon.Seadragon.Rect.jstext/javascript6!Seadragon.Seadragon.Rect.debug.jstext/javascript2Seadragon.Seadragon.Spring.jstext/javascript8#Seadragon.Seadragon.Spring.debug.jstext/javascript2Seadragon.Seadragon.Drawer.jstext/javascript8#Seadragon.Seadragon.Drawer.debug.jstext/javascript6!Seadragon.Seadragon.TileSource.jstext/javascript<'Seadragon.Seadragon.TileSource.debug.jstext/javascript4Seadragon.Seadragon.DeepZoom.jstext/javascript:%Seadragon.Seadragon.DeepZoom.debug.jstext/javascript4Seadragon.Seadragon.Viewport.jstext/javascript:%Seadragon.Seadragon.Viewport.debug.jstext/javascript3Seadragon.Seadragon.Strings.jstext/javascript9$Seadragon.Seadragon.Strings.debug.jstext/javascript+Seadragon.Seadragon.jstext/javascript1Seadragon.Seadragon.debug.jstext/javascriptISeadragon.Seadragon.Config.jstext/javascriptTPerformSubstitutionO#Seadragon.Seadragon.Config.debug.jstext/javascriptTPerformSubstitution8#Seadragon.Seadragon.MouseTracker.jstext/javascript>)Seadragon.Seadragon.MouseTracker.debug.jstext/javascript1Seadragon.Seadragon.Point.jstext/javascript7"Seadragon.Seadragon.Point.debug.jstext/javascript5(Seadragon.images.fullpage_grouphover.pngimg/png0#Seadragon.images.fullpage_hover.pngimg/png2%Seadragon.images.fullpage_pressed.pngimg/png/"Seadragon.images.fullpage_rest.pngimg/png1$Seadragon.images.home_grouphover.pngimg/png,Seadragon.images.home_hover.pngimg/png.!Seadragon.images.home_pressed.pngimg/png+Seadragon.images.home_rest.pngimg/png3&Seadragon.images.zoomin_grouphover.pngimg/png.!Seadragon.images.zoomin_hover.pngimg/png0#Seadragon.images.zoomin_pressed.pngimg/png- Seadragon.images.zoomin_rest.pngimg/png4'Seadragon.images.zoomout_grouphover.pngimg/png/"Seadragon.images.zoomout_hover.pngimg/png1$Seadragon.images.zoomout_pressed.pngimg/png.!Seadragon.images.zoomout_rest.pngimg/png3HoverExtender.HoverBehavior.jstext/javascript9$HoverExtender.HoverBehavior.debug.jstext/javascript2HTMLEditor.Editor.jsapplication/x-javascript8HTMLEditor.Editor.debug.jsapplication/x-javascript:HTMLEditor.Editor.csstext/cssTPerformSubstitutionI+HTMLEditor.Toolbar_buttons.ColorSelector.jsapplication/x-javascriptO1HTMLEditor.Toolbar_buttons.ColorSelector.debug.jsapplication/x-javascriptH*HTMLEditor.Toolbar_buttons.CommonButton.jsapplication/x-javascriptN0HTMLEditor.Toolbar_buttons.CommonButton.debug.jsapplication/x-javascript4%HTMLEditor.Images.ed_format_ltr_n.gif	image/gif4%HTMLEditor.Images.ed_format_ltr_a.gif	image/gif?!HTMLEditor.Toolbar_buttons.Ltr.jsapplication/x-javascriptE'HTMLEditor.Toolbar_buttons.Ltr.debug.jsapplication/x-javascript1"HTMLEditor.Images.ed_preview_n.gif	image/gif1"HTMLEditor.Images.ed_preview_a.gif	image/gifG)HTMLEditor.Toolbar_buttons.PreviewMode.jsapplication/x-javascriptM/HTMLEditor.Toolbar_buttons.PreviewMode.debug.jsapplication/x-javascript4%HTMLEditor.Images.ed_format_rtl_n.gif	image/gif4%HTMLEditor.Images.ed_format_rtl_a.gif	image/gif?!HTMLEditor.Toolbar_buttons.Rtl.jsapplication/x-javascriptE'HTMLEditor.Toolbar_buttons.Rtl.debug.jsapplication/x-javascript3$HTMLEditor.Images.ed_forecolor_n.gif	image/gif3$HTMLEditor.Images.ed_forecolor_a.gif	image/gifJ,HTMLEditor.Toolbar_buttons.FixedForeColor.jsapplication/x-javascriptP2HTMLEditor.Toolbar_buttons.FixedForeColor.debug.jsapplication/x-javascriptD&HTMLEditor.Toolbar_buttons.FontSize.jsapplication/x-javascriptJ,HTMLEditor.Toolbar_buttons.FontSize.debug.jsapplication/x-javascript.HTMLEditor.Images.ed_undo_n.gif	image/gif.HTMLEditor.Images.ed_undo_a.gif	image/gif@"HTMLEditor.Toolbar_buttons.Undo.jsapplication/x-javascriptF(HTMLEditor.Toolbar_buttons.Undo.debug.jsapplication/x-javascript7HTMLEditor.DesignPanel.jsapplication/x-javascript=HTMLEditor.DesignPanel.debug.jsapplication/x-javascript5HTMLEditor.EditPanel.jsapplication/x-javascript;HTMLEditor.EditPanel.debug.jsapplication/x-javascript<HTMLEditor.Document.csstext/cssTPerformSubstitution?HTMLEditor.DesignPanel.csstext/cssTPerformSubstitution.HTMLEditor.Images.ed_anchor.gif	image/gif+HTMLEditor.Images.ed_1x1.gif	image/gif-HTMLEditor.Images.ed_flash.gif	image/gif-HTMLEditor.Images.ed_media.gif	image/gif3$HTMLEditor.Images.ed_placeHolder.gif	image/gif)HTMLEditor.Events.jstext/javascript/HTMLEditor.Events.debug.jstext/javascriptM/HTMLEditor.Toolbar_buttons.BackColorSelector.jsapplication/x-javascriptS5HTMLEditor.Toolbar_buttons.BackColorSelector.debug.jsapplication/x-javascript0!HTMLEditor.Images.ed_design_n.gif	image/gif0!HTMLEditor.Images.ed_design_a.gif	image/gifF(HTMLEditor.Toolbar_buttons.DesignMode.jsapplication/x-javascriptL.HTMLEditor.Toolbar_buttons.DesignMode.debug.jsapplication/x-javascriptQ3HTMLEditor.Toolbar_buttons.DesignModeImageButton.jsapplication/x-javascriptW9HTMLEditor.Toolbar_buttons.DesignModeImageButton.debug.jsapplication/x-javascriptL.HTMLEditor.Toolbar_buttons.FixedColorButton.jsapplication/x-javascriptR4HTMLEditor.Toolbar_buttons.FixedColorButton.debug.jsapplication/x-javascriptA,ResizableControl.ResizableControlBehavior.jstext/javascriptG2ResizableControl.ResizableControlBehavior.debug.jstext/javascript3SlideShow.SlideShowBehavior.jstext/javascript9$SlideShow.SlideShowBehavior.debug.jstext/javascript@ColorPicker.ColorPicker.csstext/cssTPerformSubstitution7"ColorPicker.ColorPickerBehavior.jstext/javascript=(ColorPicker.ColorPickerBehavior.debug.jstext/javascript:ComboBox.ComboBox.csstext/cssTPerformSubstitution&ComboBox.arrow-down.gif	image/gif2ComboBox.ComboBox.jsapplication/x-javascript8ComboBox.ComboBox.debug.jsapplication/x-javascriptR4HTMLEditor.Toolbar_buttons.DesignModeSelectButton.jsapplication/x-javascriptX:HTMLEditor.Toolbar_buttons.DesignModeSelectButton.debug.jsapplication/x-javascriptN0HTMLEditor.Toolbar_buttons.EditorToggleButton.jsapplication/x-javascriptT6HTMLEditor.Toolbar_buttons.EditorToggleButton.debug.jsapplication/x-javascript6'HTMLEditor.Images.ed_align_center_n.gif	image/gif6'HTMLEditor.Images.ed_align_center_a.gif	image/gifI+HTMLEditor.Toolbar_buttons.JustifyCenter.jsapplication/x-javascriptO1HTMLEditor.Toolbar_buttons.JustifyCenter.debug.jsapplication/x-javascript4%HTMLEditor.Images.ed_format_sup_n.gif	image/gif4%HTMLEditor.Images.ed_format_sup_a.gif	image/gifG)HTMLEditor.Toolbar_buttons.SuperScript.jsapplication/x-javascriptM/HTMLEditor.Toolbar_buttons.SuperScript.debug.jsapplication/x-javascript5 ListSearch.ListSearchBehavior.jstext/javascript;&ListSearch.ListSearchBehavior.debug.jstext/javascript=(RoundedCorners.RoundedCornersBehavior.jstext/javascriptC.RoundedCorners.RoundedCornersBehavior.debug.jstext/javascript0ExtenderBase.BaseScripts.jstext/javascript6!ExtenderBase.BaseScripts.debug.jstext/javascriptiExtenderBase.BaseScripts.js.ScriptResources.BaseScriptsResources.resourcesSys.Extended.UI.Resources7"HTMLEditor.ExecCommandEmulation.jstext/javascript=(HTMLEditor.ExecCommandEmulation.debug.jstext/javascriptE'HTMLEditor.Toolbar_buttons.BoxButton.jsapplication/x-javascriptK-HTMLEditor.Toolbar_buttons.BoxButton.debug.jsapplication/x-javascript3$HTMLEditor.Images.ed_backcolor_n.gif	image/gif3$HTMLEditor.Images.ed_backcolor_a.gif	image/gifJ,HTMLEditor.Toolbar_buttons.FixedBackColor.jsapplication/x-javascriptP2HTMLEditor.Toolbar_buttons.FixedBackColor.debug.jsapplication/x-javascript.HTMLEditor.Images.ed_rule_n.gif	image/gif.HTMLEditor.Images.ed_rule_a.gif	image/gifD&HTMLEditor.Toolbar_buttons.InsertHR.jsapplication/x-javascriptJ,HTMLEditor.Toolbar_buttons.InsertHR.debug.jsapplication/x-javascriptO1HTMLEditor.Toolbar_buttons.OkCancelPopupButton.jsapplication/x-javascriptU7HTMLEditor.Toolbar_buttons.OkCancelPopupButton.debug.jsapplication/x-javascript5 ModalPopup.ModalPopupBehavior.jstext/javascript;&ModalPopup.ModalPopupBehavior.debug.jstext/javascript-Rating.RatingBehavior.jstext/javascript3Rating.RatingBehavior.debug.jstext/javascriptM!Slider.SliderBehavior_resource.jstext/javascriptTPerformSubstitutionS'Slider.SliderBehavior_resource.debug.jstext/javascriptTPerformSubstitution?Slider.Slider_resource.csstext/cssTPerformSubstitution.!Slider.Images.slider_h_handle.gifimg/gif,Slider.Images.slider_h_rail.gifimg/gif.!Slider.Images.slider_v_handle.gifimg/gif,Slider.Images.slider_v_rail.gifimg/gif7"Compat.DragDrop.DragDropScripts.jstext/javascript=(Compat.DragDrop.DragDropScripts.debug.jstext/javascript2DragPanel.FloatingBehavior.jstext/javascript8#DragPanel.FloatingBehavior.debug.jstext/javascript:%HTMLEditor.DesignPanelEventHandler.jstext/javascript@+HTMLEditor.DesignPanelEventHandler.debug.jstext/javascript8HTMLEditor.PreviewPanel.jsapplication/x-javascript> HTMLEditor.PreviewPanel.debug.jsapplication/x-javascript5&HTMLEditor.Images.ed_list_bullet_n.gif	image/gif5&HTMLEditor.Images.ed_list_bullet_a.gif	image/gifH*HTMLEditor.Toolbar_buttons.BulletedList.jsapplication/x-javascriptN0HTMLEditor.Toolbar_buttons.BulletedList.debug.jsapplication/x-javascript+HTMLEditor.Images.ed_sep.gif	image/gifO1HTMLEditor.Toolbar_buttons.HorizontalSeparator.jsapplication/x-javascriptU7HTMLEditor.Toolbar_buttons.HorizontalSeparator.debug.jsapplication/x-javascript:+HTMLEditor.Images.ed_format_underline_n.gif	image/gif:+HTMLEditor.Images.ed_format_underline_a.gif	image/gifE'HTMLEditor.Toolbar_buttons.Underline.jsapplication/x-javascriptK-HTMLEditor.Toolbar_buttons.Underline.debug.jsapplication/x-javascriptE0HtmlEditorExtender.HtmlEditorExtenderBehavior.jstext/javascriptK6HtmlEditorExtender.HtmlEditorExtenderBehavior.debug.jstext/javascriptW2HtmlEditorExtender.HtmlEditorExtender_resource.csstext/cssTPerformSubstitution>1HtmlEditorExtender.Images.html-editor-buttons.pngimg/pngS>MutuallyExclusiveCheckBox.MutuallyExclusiveCheckBoxBehavior.jstext/javascriptYDMutuallyExclusiveCheckBox.MutuallyExclusiveCheckBoxBehavior.debug.jstext/javascript7"ReorderList.DropWatcherBehavior.jstext/javascript=(ReorderList.DropWatcherBehavior.debug.jstext/javascript@"AsyncFileUpload.AsyncFileUpload.jsapplication/x-javascriptF(AsyncFileUpload.AsyncFileUpload.debug.jsapplication/x-javascript4%AsyncFileUpload.images.fileupload.png	image/png1Calendar.CalendarBehavior.jstext/javascript7"Calendar.CalendarBehavior.debug.jstext/javascriptCCalendar.Calendar_resource.csstext/cssTPerformSubstitution&Calendar.arrow-left.gif	image/gif'Calendar.arrow-right.gif	image/gif*Compat.Timer.Timer.jstext/javascript0Compat.Timer.Timer.debug.jstext/javascript3&Gravatar.Images.gravatar-anonymous.jpgimg/jpg+Gravatar.Images.gravatar-G.jpgimg/jpg,Gravatar.Images.gravatar-PG.jpgimg/jpg+Gravatar.Images.gravatar-R.jpgimg/jpg+Gravatar.Images.gravatar-X.jpgimg/jpg3HTMLEditor.Toolbar.jsapplication/x-javascript9HTMLEditor.Toolbar.debug.jsapplication/x-javascript5&HTMLEditor.Images.ed_indent_less_n.gif	image/gif5&HTMLEditor.Images.ed_indent_less_a.gif	image/gifJ,HTMLEditor.Toolbar_buttons.DecreaseIndent.jsapplication/x-javascriptP2HTMLEditor.Toolbar_buttons.DecreaseIndent.debug.jsapplication/x-javascriptM/HTMLEditor.Toolbar_buttons.ForeColorSelector.jsapplication/x-javascriptS5HTMLEditor.Toolbar_buttons.ForeColorSelector.debug.jsapplication/x-javascript4%HTMLEditor.Images.ed_align_left_n.gif	image/gif4%HTMLEditor.Images.ed_align_left_a.gif	image/gifG)HTMLEditor.Toolbar_buttons.JustifyLeft.jsapplication/x-javascriptM/HTMLEditor.Toolbar_buttons.JustifyLeft.debug.jsapplication/x-javascript=(ReorderList.DraggableListItemBehavior.jstext/javascriptC.ReorderList.DraggableListItemBehavior.debug.jstext/javascript0Common.DateTime.jsapplication/x-javascript6Common.DateTime.debug.jsapplication/x-javascriptO1HTMLEditor.Toolbar_buttons.DesignModeBoxButton.jsapplication/x-javascriptU7HTMLEditor.Toolbar_buttons.DesignModeBoxButton.debug.jsapplication/x-javascriptG)HTMLEditor.Toolbar_buttons.ImageButton.jsapplication/x-javascriptM/HTMLEditor.Toolbar_buttons.ImageButton.debug.jsapplication/x-javascript7(HTMLEditor.Images.ed_format_italic_n.gif	image/gif7(HTMLEditor.Images.ed_format_italic_a.gif	image/gifB$HTMLEditor.Toolbar_buttons.Italic.jsapplication/x-javascriptH*HTMLEditor.Toolbar_buttons.Italic.debug.jsapplication/x-javascript/ HTMLEditor.Images.ed_paste_n.gif	image/gif/ HTMLEditor.Images.ed_paste_a.gif	image/gifA#HTMLEditor.Toolbar_buttons.Paste.jsapplication/x-javascriptG)HTMLEditor.Toolbar_buttons.Paste.debug.jsapplication/x-javascript3$HTMLEditor.Images.ed_pasteWord_n.gif	image/gif3$HTMLEditor.Images.ed_pasteWord_a.gif	image/gifE'HTMLEditor.Toolbar_buttons.PasteWord.jsapplication/x-javascriptK-HTMLEditor.Toolbar_buttons.PasteWord.debug.jsapplication/x-javascript2#HTMLEditor.Images.ed_unformat_n.gif	image/gif2#HTMLEditor.Images.ed_unformat_a.gif	image/gifH*HTMLEditor.Toolbar_buttons.RemoveStyles.jsapplication/x-javascriptN0HTMLEditor.Toolbar_buttons.RemoveStyles.debug.jsapplication/x-javascript4%HTMLEditor.Images.ed_format_sub_n.gif	image/gif4%HTMLEditor.Images.ed_format_sub_a.gif	image/gifE'HTMLEditor.Toolbar_buttons.SubScript.jsapplication/x-javascriptK-HTMLEditor.Toolbar_buttons.SubScript.debug.jsapplication/x-javascript3Animation.AnimationBehavior.jstext/javascript9$Animation.AnimationBehavior.debug.jstext/javascript-HTMLEditor.HTMLEditor.jstext/javascript3HTMLEditor.HTMLEditor.debug.jstext/javascript8)HTMLEditor.Images.ed_color_fg_clear_n.gif	image/gif8)HTMLEditor.Images.ed_color_fg_clear_a.gif	image/gifJ,HTMLEditor.Toolbar_buttons.ForeColorClear.jsapplication/x-javascriptP2HTMLEditor.Toolbar_buttons.ForeColorClear.debug.jsapplication/x-javascript0!HTMLEditor.Images.ed_unlink_n.gif	image/gif0!HTMLEditor.Images.ed_unlink_a.gif	image/gifF(HTMLEditor.Toolbar_buttons.RemoveLink.jsapplication/x-javascriptL.HTMLEditor.Toolbar_buttons.RemoveLink.debug.jsapplication/x-javascriptAjax Control ToolkitAjaxControlToolkit*%Copyright © CodePlex Foundation 2011System.Web,System.Web.Ajax,System.Web.Extensions,AjaxControlToolkitasp
System.Web.UIasp	4.1.51116
en-USUTExcludeScripts?Slider.SliderBehavior_resource.js,Seadragon.Seadragon.Config.js&Start.jsapplication/x-javascript6MicrosoftAjaxOpenData.jsapplication/x-javascript9MicrosoftAjaxDataContext.jsapplication/x-javascript7MicrosoftAjaxTemplates.jsapplication/x-javascript,Start.debug.jsapplication/x-javascript<MicrosoftAjaxOpenData.debug.jsapplication/x-javascript?!MicrosoftAjaxDataContext.debug.jsapplication/x-javascript=MicrosoftAjaxTemplates.debug.jsapplication/x-javascriptOMicrosoftAjaxOpenData.jsScriptResources.OpenData.ResSys.Data.OpenDataRes[MicrosoftAjaxOpenData.debug.js"ScriptResources.OpenData.Res.debugSys.Data.OpenDataResQMicrosoftAjaxDataContext.jsScriptResources.DataContext.ResSys.Data.DataRes]!MicrosoftAjaxDataContext.debug.js%ScriptResources.DataContext.Res.debugSys.Data.DataResPMicrosoftAjaxTemplates.jsScriptResources.Templates.ResSys.UI.TemplatesRes\MicrosoftAjaxTemplates.debug.js#ScriptResources.Templates.Res.debugSys.UI.TemplatesRes.MicrosoftAjax.jsapplication/x-javascriptA#MicrosoftAjaxApplicationServices.jsapplication/x-javascript<MicrosoftAjaxComponentModel.jsapplication/x-javascript2MicrosoftAjaxCore.jsapplication/x-javascript;MicrosoftAjaxGlobalization.jsapplication/x-javascript5MicrosoftAjaxHistory.jsapplication/x-javascript5MicrosoftAjaxNetwork.jsapplication/x-javascript;MicrosoftAjaxSerialization.jsapplication/x-javascript3MicrosoftAjaxTimer.jsapplication/x-javascript6MicrosoftAjaxWebForms.jsapplication/x-javascript9MicrosoftAjaxWebServices.jsapplication/x-javascript3Date.HijriCalendar.jsapplication/x-javascript6Date.UmAlQuraCalendar.jsapplication/x-javascript4MicrosoftAjax.debug.jsapplication/x-javascriptG)MicrosoftAjaxApplicationServices.debug.jsapplication/x-javascriptB$MicrosoftAjaxComponentModel.debug.jsapplication/x-javascript8MicrosoftAjaxCore.debug.jsapplication/x-javascriptA#MicrosoftAjaxGlobalization.debug.jsapplication/x-javascript;MicrosoftAjaxHistory.debug.jsapplication/x-javascript;MicrosoftAjaxNetwork.debug.jsapplication/x-javascriptA#MicrosoftAjaxSerialization.debug.jsapplication/x-javascript9MicrosoftAjaxTimer.debug.jsapplication/x-javascript<MicrosoftAjaxWebForms.debug.jsapplication/x-javascript?!MicrosoftAjaxWebServices.debug.jsapplication/x-javascript9Date.HijriCalendar.debug.jsapplication/x-javascript<Date.UmAlQuraCalendar.debug.jsapplication/x-javascript1MicrosoftAjax.jsScriptResources.ResSys.Res=MicrosoftAjax.debug.jsScriptResources.Res.debugSys.Res5MicrosoftAjaxCore.jsScriptResources.ResSys.ResAMicrosoftAjaxCore.debug.jsScriptResources.Res.debugSys.ResKMicrosoftAjaxWebForms.jsScriptResources.WebForms.ResSys.WebForms.ResWMicrosoftAjaxWebForms.debug.js"ScriptResources.WebForms.Res.debugSys.WebForms.ResATwitter.Twitter_resource.csstext/cssTPerformSubstitution"Twitter.Twitter32.pngimg/png"Twitter.Twitter24.pngimg/png3Accordion.AccordionBehavior.jstext/javascript9$Accordion.AccordionBehavior.debug.jstext/javascript8HTMLEditor.Popups.Popup.jsapplication/x-javascript> HTMLEditor.Popups.Popup.debug.jsapplication/x-javascriptA#HTMLEditor.Popups.PopupBGIButton.jsapplication/x-javascriptG)HTMLEditor.Popups.PopupBGIButton.debug.jsapplication/x-javascript8)HTMLEditor.Images.ed_color_bg_clear_n.gif	image/gif8)HTMLEditor.Images.ed_color_bg_clear_a.gif	image/gifJ,HTMLEditor.Toolbar_buttons.BackColorClear.jsapplication/x-javascriptP2HTMLEditor.Toolbar_buttons.BackColorClear.debug.jsapplication/x-javascript-HTMLEditor.Images.ed_cut_n.gif	image/gif-HTMLEditor.Images.ed_cut_a.gif	image/gif?!HTMLEditor.Toolbar_buttons.Cut.jsapplication/x-javascriptE'HTMLEditor.Toolbar_buttons.Cut.debug.jsapplication/x-javascriptD&HTMLEditor.Toolbar_buttons.FontName.jsapplication/x-javascriptJ,HTMLEditor.Toolbar_buttons.FontName.debug.jsapplication/x-javascriptH*HTMLEditor.Toolbar_buttons.MethodButton.jsapplication/x-javascriptN0HTMLEditor.Toolbar_buttons.MethodButton.debug.jsapplication/x-javascript3$HTMLEditor.Images.ed_pasteText_n.gif	image/gif3$HTMLEditor.Images.ed_pasteText_a.gif	image/gifE'HTMLEditor.Toolbar_buttons.PasteText.jsapplication/x-javascriptK-HTMLEditor.Toolbar_buttons.PasteText.debug.jsapplication/x-javascript5&HTMLEditor.Images.ed_removealign_n.gif	image/gif5&HTMLEditor.Images.ed_removealign_a.gif	image/gifK-HTMLEditor.Toolbar_buttons.RemoveAlignment.jsapplication/x-javascriptQ3HTMLEditor.Toolbar_buttons.RemoveAlignment.debug.jsapplication/x-javascriptH*HTMLEditor.Toolbar_buttons.SelectButton.jsapplication/x-javascriptN0HTMLEditor.Toolbar_buttons.SelectButton.debug.jsapplication/x-javascriptE0PagingBulletedList.PagingBulletedListBehavior.jstext/javascriptK6PagingBulletedList.PagingBulletedListBehavior.debug.jstext/javascriptA,ValidatorCallout.ValidatorCalloutBehavior.jstext/javascriptG2ValidatorCallout.ValidatorCalloutBehavior.debug.jstext/javascriptJ%ValidatorCallout.ValidatorCallout.csstext/cssTPerformSubstitution/ ValidatorCallout.alert-large.gif	image/gif/ ValidatorCallout.alert-small.gif	image/gif)ValidatorCallout.close.gif	image/gifG.NETFramework,Version=v4.0TFrameworkDisplayName.NET Framework 4%Common.Common.jstext/javascript+Common.Common.debug.jstext/javascript3HoverMenu.HoverMenuBehavior.jstext/javascript9$HoverMenu.HoverMenuBehavior.debug.jstext/javascriptB$HTMLEditor.Popups.BaseColorsPopup.jsapplication/x-javascriptH*HTMLEditor.Popups.BaseColorsPopup.debug.jsapplication/x-javascript7(HTMLEditor.Images.ed_format_strike_n.gif	image/gif7(HTMLEditor.Images.ed_format_strike_a.gif	image/gifI+HTMLEditor.Toolbar_buttons.StrikeThrough.jsapplication/x-javascriptO1HTMLEditor.Toolbar_buttons.StrikeThrough.debug.jsapplication/x-javascriptTWrapNonExceptionThrows��.��System.Security.Permissions.SecurityPermissionAttribute, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089T	Execution�7�N���a��aRSDS��e��0E��T� �/�C:\Users\Stephen\Documents\Repos\Superexpert\AjaxControlToolkit\Server\AjaxControlToolkit\obj\Release\AjaxControlToolkit.pdb��a��a ��a_CorDllMainmscoree.dll�% @�0�HXb<<4VS_VERSION_INFO������?DVarFileInfo$Translation��StringFileInfox000004b0TFileDescriptionAjax Control Toolkit4
FileVersion4.1.51116PInternalNameAjaxControlToolkit.dllp%LegalCopyrightCopyright � CodePlex Foundation 2011XOriginalFilenameAjaxControlToolkit.dllHProductNameAjaxControlToolkit8
ProductVersion4.1.51116@Assembly Version4.1.51116.0�a�7

Youez - 2016 - github.com/yon3zu
LinuXploit